[
  {
    "path": ".devcontainer/docker/devcontainer.json",
    "content": "{\n  \"name\": \"Scrutiny Dev (docker)\",\n  \"dockerComposeFile\": \"../docker-compose.yml\",\n  \"service\": \"app\",\n  \"workspaceFolder\": \"/workspaces/scrutiny\",\n\n  \"features\": {\n    \"ghcr.io/devcontainers/features/go:1\": \"1.25\",\n    \"ghcr.io/devcontainers/features/node:1\": \"lts\"\n  },\n\n  \"onCreateCommand\": \"sudo apt-get update && sudo apt-get install -y smartmontools iputils-ping chromium-browser\",\n\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\n        \"golang.go\",\n        \"dbaeumer.vscode-eslint\",\n        \"esbenp.prettier-vscode\"\n      ]\n    }\n  },\n\n  \"forwardPorts\": [8080, 8086],\n\n  \"postCreateCommand\": \"bash .devcontainer/setup.sh\",\n  \"remoteUser\": \"vscode\"\n}\n"
  },
  {
    "path": ".devcontainer/docker-compose.yml",
    "content": "services:\n  app:\n    image: mcr.microsoft.com/devcontainers/base:ubuntu-22.04\n    volumes:\n      - ..:/workspaces/scrutiny:cached\n    command: sleep infinity\n    network_mode: service:influxdb\n\n  influxdb:\n    image: influxdb:2.8\n    restart: unless-stopped\n    ports:\n      - \"8086:8086\"\n    environment:\n      - DOCKER_INFLUXDB_INIT_MODE=setup\n      - DOCKER_INFLUXDB_INIT_USERNAME=admin\n      - DOCKER_INFLUXDB_INIT_PASSWORD=password12345\n      - DOCKER_INFLUXDB_INIT_ORG=scrutiny\n      - DOCKER_INFLUXDB_INIT_BUCKET=metrics\n      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token\n    volumes:\n      - scrutiny-influxdb-data:/var/lib/influxdb2\n\nvolumes:\n  scrutiny-influxdb-data:\n"
  },
  {
    "path": ".devcontainer/docker-rootless/devcontainer.json",
    "content": "{\n  \"name\": \"Scrutiny Dev (rootless docker)\",\n  \"dockerComposeFile\": \"../docker-compose.yml\",\n  \"service\": \"app\",\n  \"workspaceFolder\": \"/workspaces/scrutiny\",\n\n  \"features\": {\n    \"ghcr.io/devcontainers/features/go:1\": \"1.25\",\n    \"ghcr.io/devcontainers/features/node:1\": \"lts\"\n  },\n\n  \"onCreateCommand\": \"sudo apt-get update && sudo apt-get install -y smartmontools iputils-ping chromium-browser\",\n\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\n        \"golang.go\",\n        \"dbaeumer.vscode-eslint\",\n        \"esbenp.prettier-vscode\"\n      ]\n    }\n  },\n\n  \"forwardPorts\": [8080, 8086],\n\n  \"postCreateCommand\": \"bash .devcontainer/setup.sh\",\n  \"remoteUser\": \"root\",\n  \"containerUser\": \"root\",\n  \"updateRemoteUserUID\": false\n}\n"
  },
  {
    "path": ".devcontainer/podman/devcontainer.json",
    "content": "{\n  \"name\": \"Scrutiny Dev (podman)\",\n  \"dockerComposeFile\": \"../docker-compose.yml\",\n  \"service\": \"app\",\n  \"workspaceFolder\": \"/workspaces/scrutiny\",\n\n  \"features\": {\n    \"ghcr.io/devcontainers/features/go:1\": \"1.25\",\n    \"ghcr.io/devcontainers/features/node:1\": \"lts\"\n  },\n\n  \"onCreateCommand\": \"sudo apt-get update && sudo apt-get install -y smartmontools iputils-ping chromium-browser\",\n\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\n        \"golang.go\",\n        \"dbaeumer.vscode-eslint\",\n        \"esbenp.prettier-vscode\"\n      ]\n    }\n  },\n\n  \"forwardPorts\": [8080, 8086],\n\n  \"postCreateCommand\": \"bash .devcontainer/setup.sh\",\n  \"remoteEnv\": {\n    \"PODMAN_USERNS\": \"keep-id\"\n  },\n  \"containerUser\": \"vscode\",\n  \"updateRemoteUserUID\": true\n}\n"
  },
  {
    "path": ".devcontainer/setup.sh",
    "content": "#!/bin/bash\n\necho \"Starting Scrutiny Setup...\"\n\nif [ ! -f \"scrutiny.yaml\" ]; then\n    echo \"Creating scrutiny.yaml from template...\"\n    cat <<EOF > scrutiny.yaml\nversion: 1\nweb:\n  listen:\n    port: 8080\n    host: 0.0.0.0\n  database:\n    location: ./scrutiny.db\n  src:\n    frontend:\n      path: ./dist\n  influxdb:\n    retention_policy: false\n    token: \"my-super-secret-auth-token\"\n    org: \"scrutiny\"\n    bucket: \"metrics\"\n    host: \"localhost\"\n    port: 8086\nlog:\n  file: 'web.log'\n  level: DEBUG\nEOF\nelse\n    echo \"scrutiny.yaml already exists.\"\nfi\n\necho \"Vendoring Go modules...\"\ngo mod vendor\n\necho \"Installing Node modules...\"\ncd webapp/frontend\nnpm install\n\necho \"Setup Complete! Ready to code.\"\n"
  },
  {
    "path": ".dockerignore",
    "content": "/vendor\n/.idea\n/.github\n/.git\n/webapp/frontend/node_modules\n"
  },
  {
    "path": ".gitattributes",
    "content": "*.css linguist-detectable=false\n*.scss linguist-detectable=false\n*.js linguist-detectable=false\n*.ts linguist-detectable=false\n"
  },
  {
    "path": ".github/DISCUSSION_TEMPLATE/issue-triage.yml",
    "content": "labels: [\"needs-confirmation\"]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        > [!IMPORTANT]\n        > Please read through [the Discussion rules](https://github.com/AnalogJ/scrutiny/discussions/876), review [the docs](https://github.com/AnalogJ/scrutiny/tree/master/docs), and check for both existing [Discussions](https://github.com/AnalogJ/scrutiny/discussions?discussions_q=) and [Issues](https://github.com/AnalogJ/scrutiny/issues?q=sort%3Areactions-desc) prior to opening a new Discussion.\n  - type: markdown\n    attributes:\n      value: \"# Issue Details\"\n  - type: textarea\n    attributes:\n      label: Issue Description\n      description: |\n        Provide a detailed description of the issue.  Include relevant information, such as:\n        - The feature or configuration option you encounter the issue with.\n        - Screenshots, screen recordings, or other supporting media (as needed).\n        - If this is a regression of an existing issue that was closed or resolved, please include the previous item reference (Discussion, Issue, PR, commit) in your description.\n      placeholder: |\n        Temperature data is missing from the plots.        \n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Expected Behavior\n      description: |\n        Describe how you expect scrutiny to behave in this situation.  Include any relevant documentation links.\n      placeholder: |\n        All temperature data uploaded by collectors should make it into the plots.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Actual Behavior\n      description: |\n        Describe how scrutiny actually behaves in this situation.  If it is not immediately obvious how the actual behavior differs from the expected behavior described above, please be sure to mention the deviation specifically.\n      placeholder: |\n        Only half the points appear.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Reproduction Steps\n      description: |\n        Provide a detailed set of step-by-step instructions for reproducing this issue. If you can't, describe what you were doing when the issue occurred.\n      placeholder: |\n        1. Set up the omnibus docker image\n        2. Launch the web dashboard\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: scrutiny debug logs\n      description: |\n        Provide any captured scrutiny logs or panic dumps during your issue reproduction in this field.\n        Make sure to turn on debug logging with the environment variable DEBUG=true\n      render: text\n  - type: input\n    attributes:\n      label: Scrutiny Version\n      description: The version of scrutiny you are using\n      placeholder: v0.8.2\n    validations:\n      required: true\n  - type: input\n    attributes:\n      label: Smartmontools Version\n      description: The version of smartmontools you are using (or \"docker\", if you're using the docker image)\n      placeholder: \"7.2\"\n    validations:\n      required: true\n  - type: input\n    attributes:\n      label: OS Version Information\n      description: |\n        Please tell us what operating system (name and version) you are using.\n      placeholder: Ubuntu 24.04.1 (Noble Numbat)\n    validations:\n      required: true\n  - type: dropdown\n    attributes:\n      label: Component\n      description: Which component of scrutiny has a problem?\n      options:\n        - web\n        - collector\n        - omnibus (docker only)\n    validations:\n      required: true\n  - type: checkboxes\n    attributes:\n      label: Deployment Method\n      description: How are you running scrutiny?\n      options:\n        - label: docker\n        - label: binaries\n        - label: systemd\n    validations:\n      required: true\n  - type: input\n    attributes:\n      label: Hard Drive Information\n      description: |\n        If the problem is related to a specific hard drive, what are the make and model?\n      placeholder: Seagate ST8000DM004-2CX188\n    validations:\n      required: false\n  - type: textarea\n    attributes:\n      label: smartctl output\n      description: |\n        What is the output of smartctl --xall --json <drive>?\n      render: json\n    validations:\n      required: false\n  - type: textarea\n    attributes:\n      label: docker-compose.yml\n      description: |\n        If using docker, please provide your full docker-compose.yml file.\n      render: yaml\n    validations:\n      required: false\n  - type: textarea\n    attributes:\n      label: scrutiny.yaml\n      description: |\n        Please provide your full scrutiny.yaml file.\n      render: yaml\n    validations:\n      required: false\n  - type: textarea\n    attributes:\n      label: collector.yaml\n      description: |\n        Please provide your full collector.yaml file.\n      render: yaml\n    validations:\n      required: false\n  - type: textarea\n    attributes:\n      label: Additional relevant configuration\n      description: |\n        Please any additional relevant configuration (e.g. systemd service definitions, OS configuration)\n      render: text\n    validations:\n      required: false\n  - type: markdown\n    attributes:\n      value: |\n        # User Acknowledgements\n        > [!TIP]\n        > Use these links to review the existing scrutiny [Discussions](https://github.com/AnalogJ/scrutiny/discussions?discussions_q=) and [Issues](https://github.com/AnalogJ/scrutiny/issues?q=sort%3Areactions-desc).\n  - type: checkboxes\n    attributes:\n      label: \"I acknowledge that:\"\n      options:\n        - label: I have reviewed the FAQ and confirm that my issue is NOT among them.\n          required: true\n        - label: I have searched the scrutiny repository (both open and closed Discussions and Issues) and confirm this is not a duplicate of an existing issue or discussion.\n          required: true\n        - label: I have checked the \"Preview\" tab on all text fields to ensure that everything looks right, and have wrapped all configuration and code in code blocks with a group of three backticks (` ``` `) on separate lines.\n          required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Features, Bug Reports, Questions\n    url: https://github.com/AnalogJ/scrutiny/discussions/new/choose\n    about: Our preferred starting point if you have any questions or suggestions about configuration, features or behavior.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/preapproved.md",
    "content": "---\nname: Pre-Discussed and Approved Topics\nabout: |-\n  Only for topics already discussed and approved in the GitHub Discussions section.\n---\n\n**DO NOT OPEN A NEW ISSUE. PLEASE USE THE DISCUSSIONS SECTION.**\n\n**I DIDN'T READ THE ABOVE LINE. PLEASE CLOSE THIS ISSUE.**\n"
  },
  {
    "path": ".github/workflows/ci.yaml",
    "content": "name: CI\n# This workflow is triggered on pushes & pull requests\non:\n  push:\n    branches:\n      -  master\n  pull_request: \n\npermissions:\n  contents: read\n\njobs:\n  test-frontend:\n    name: Test Frontend\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n      - name: Test Frontend\n        run: |\n          make binary-frontend-test-coverage\n      - name: Upload coverage\n        uses: actions/upload-artifact@v4\n        with:\n          name: coverage\n          path: ${{ github.workspace }}/webapp/frontend/coverage/lcov.info\n          retention-days: 1\n  test-backend:\n    name: Test Backend\n    runs-on: ubuntu-latest\n    # Service containers to run with `build` (Required for end-to-end testing)\n    services:\n      influxdb:\n        image: influxdb:2.8\n        env:\n          DOCKER_INFLUXDB_INIT_MODE: setup\n          DOCKER_INFLUXDB_INIT_USERNAME: admin\n          DOCKER_INFLUXDB_INIT_PASSWORD: password12345\n          DOCKER_INFLUXDB_INIT_ORG: scrutiny\n          DOCKER_INFLUXDB_INIT_BUCKET: metrics\n          DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: my-super-secret-auth-token\n        ports:\n          - 8086:8086\n    env:\n      STATIC: true\n    steps:\n      - name: Add influxdb to hosts\n        run: echo \"127.0.0.1 influxdb\" | sudo tee -a /etc/hosts\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: Test Backend\n        run: |\n          make binary-clean binary-test-coverage\n      - name: Upload coverage\n        uses: actions/upload-artifact@v4\n        with:\n          name: coverage\n          path: ${{ github.workspace }}/coverage.txt\n          retention-days: 1\n  test-coverage:\n    name: Test Coverage Upload\n    needs:\n      - test-backend\n      - test-frontend\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n      - name: Download coverage reports\n        uses: actions/download-artifact@v4\n        with:\n          name: coverage\n      - name: Upload coverage reports\n        uses: codecov/codecov-action@v5\n        with:\n          token: ${{ secrets.CODECOV_TOKEN }}\n          files: ${{ github.workspace }}/coverage.txt,${{ github.workspace }}/lcov.info\n          flags: unittests\n          fail_ci_if_error: true\n          verbose: true\n\n  golangci:\n    name: lint\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-go@v6\n        with:\n          go-version: 1.25\n      - name: golangci-lint\n        uses: golangci/golangci-lint-action@v9\n        with:\n          args: --issues-exit-code=0\n\n  build:\n    name: Build ${{ matrix.cfg.goos }}/${{ matrix.cfg.goarch }}\n    runs-on: ${{ matrix.cfg.on }}\n    env:\n      GOOS: ${{ matrix.cfg.goos }}\n      GOARCH: ${{ matrix.cfg.goarch }}\n      GOARM: ${{ matrix.cfg.goarm }}\n      STATIC: true\n    strategy:\n      matrix:\n        cfg:\n          - { on: ubuntu-latest,  goos: linux,      goarch: amd64 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm,    goarm: 5 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm,    goarm: 6 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm,    goarm: 7 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm64 }\n          - { on: macos-latest,   goos: darwin,     goarch: amd64 }\n          - { on: macos-latest,   goos: darwin,     goarch: arm64 }\n          - { on: macos-latest,   goos: freebsd,    goarch: amd64 }\n          - { on: windows-latest, goos: windows,    goarch: amd64 }\n          - { on: windows-latest, goos: windows,    goarch: arm64 }\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v2\n      - uses: actions/setup-go@v3\n        with:\n          go-version: '^1.25'\n      - name: Build Binaries\n        run: |\n          make binary-clean binary-all\n      - name: Archive\n        uses: actions/upload-artifact@v4\n        with:\n          name: binaries-${{ matrix.cfg.on }}-${{ matrix.cfg.goos }}-${{ matrix.cfg.goarch }}-${{ matrix.cfg.goarm || 'na' }}.zip\n          path: |\n            scrutiny-web-*\n            scrutiny-collector-metrics-*\n\n  makefile-docker-omnibus:\n    name: Build Docker Omnibus From Makefile\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: Build\n        run: make docker-omnibus\n\n  makefile-docker-web:\n    name: Build Docker Web From Makefile\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: Build\n        run: make docker-web\n\n  makefile-docker-collector:\n    name: Build Docker Collector From Makefile\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: Build\n        run: make docker-collector\n"
  },
  {
    "path": ".github/workflows/docker-build.yaml",
    "content": "name: Docker\non:\n  push:\n    # Publish semver tags as releases.\n    tags: [ 'v*.*.*' ]\n\nenv:\n  REGISTRY: ghcr.io\n  IMAGE_NAME: ${{ github.repository }}\n\njobs:\n  collector:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      packages: write\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n        with:\n          platforms: 'arm64,arm'\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n      # Login against a Docker registry except on PR\n      # https://github.com/docker/login-action\n      - name: Log into registry ${{ env.REGISTRY }}\n        uses: docker/login-action@v3\n        with:\n          registry: ${{ env.REGISTRY }}\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n      # Extract metadata (tags, labels) for Docker\n      # https://github.com/docker/metadata-action\n      - name: Extract Docker metadata\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          flavor: |\n            latest=true\n            suffix=-collector,onlatest=true\n          tags: |\n            type=semver,pattern=v{{major}}.{{minor}}.{{patch}}\n            type=semver,pattern=v{{major}}.{{minor}}\n            type=semver,pattern=v{{major}}\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n\n      # Build and push Docker image with Buildx\n      # https://github.com/docker/build-push-action\n      - name: Build and push Docker image\n        uses: docker/build-push-action@v6\n        with:\n          platforms: linux/amd64,linux/arm64,linux/arm/v7\n          context: .\n          file: docker/Dockerfile.collector\n          push: true\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n\n  web:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      packages: write\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: \"Populate frontend version information\"\n        run: \"cd webapp/frontend && ./git.version.sh\"\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n        with:\n          platforms: 'arm64,arm'\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n      # Login against a Docker registry except on PR\n      # https://github.com/docker/login-action\n      - name: Log into registry ${{ env.REGISTRY }}\n        uses: docker/login-action@v3\n        with:\n          registry: ${{ env.REGISTRY }}\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n      # Extract metadata (tags, labels) for Docker\n      # https://github.com/docker/metadata-action\n      - name: Extract Docker metadata\n        id: meta\n        uses: docker/metadata-action@v5\n        with:\n          flavor: |\n            latest=true\n            suffix=-web,onlatest=true\n          tags: |\n            type=semver,pattern=v{{major}}.{{minor}}.{{patch}}\n            type=semver,pattern=v{{major}}.{{minor}}\n            type=semver,pattern=v{{major}}\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n\n      # Build and push Docker image with Buildx\n      # https://github.com/docker/build-push-action\n      - name: Build and push Docker image\n        uses: docker/build-push-action@v6\n        with:\n          platforms: linux/amd64,linux/arm64,linux/arm/v7\n          context: .\n          file: docker/Dockerfile.web\n          push: true\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n\n  omnibus:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      packages: write\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: \"Populate frontend version information\"\n        run: \"cd webapp/frontend && ./git.version.sh\"\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n        with:\n          platforms: 'arm64,arm'\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n      # Login against a Docker registry except on PR\n      # https://github.com/docker/login-action\n      - name: Log into registry ${{ env.REGISTRY }}\n        uses: docker/login-action@v3\n        with:\n          registry: ${{ env.REGISTRY }}\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n      # Extract metadata (tags, labels) for Docker\n      # https://github.com/docker/metadata-action\n      - name: Extract Docker metadata\n        id: meta\n        uses: docker/metadata-action@v5\n        # tag latest and latest-omnibus\n        with:\n          flavor: |\n            latest=true\n            suffix=-omnibus,onlatest=false\n          tags: |\n            type=raw,value=latest\n            type=semver,pattern=v{{major}}.{{minor}}.{{patch}}\n            type=semver,pattern=v{{major}}.{{minor}}\n            type=semver,pattern=v{{major}}\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n\n      # Build and push Docker image with Buildx\n      # https://github.com/docker/build-push-action\n      - name: Build and push Docker image\n        uses: docker/build-push-action@v6\n        with:\n          platforms: linux/amd64,linux/arm64\n          context: .\n          file: docker/Dockerfile\n          push: true\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n"
  },
  {
    "path": ".github/workflows/docker-nightly.yaml",
    "content": "name: Docker - Nightly\non:\n  workflow_dispatch:\n  # Note: this only runs on the default branch\n  schedule:\n    - cron: '36 12 * * *'\n\nenv:\n  REGISTRY: ghcr.io\n  IMAGE_NAME: ${{ github.repository }}\n\njobs:\n  build_nightlies:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      packages: write\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: \"Populate frontend version information\"\n        run: \"cd webapp/frontend && ./git.version.sh\"\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v3\n        with:\n          platforms: 'arm64'\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n      # Login against a Docker registry except on PR\n      # https://github.com/docker/login-action\n      - name: Log into registry ${{ env.REGISTRY }}\n        uses: docker/login-action@v3\n        with:\n          registry: ${{ env.REGISTRY }}\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n      # Extract metadata (tags, labels) for Docker\n      # https://github.com/docker/metadata-action\n      - name: Extract Docker metadata for omnibus\n        id: meta_omnibus\n        uses: docker/metadata-action@v5\n        with:\n          tags: |\n            type=raw,enable=true,value=nightly,suffix=-omnibus\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n      # Build and push Docker image with Buildx (don't push on PR)\n      # https://github.com/docker/build-push-action\n      - name: Build and push omnibus Docker image\n        uses: docker/build-push-action@v6\n        with:\n          platforms: linux/amd64,linux/arm64\n          context: .\n          file: docker/Dockerfile\n          push: true\n          tags: ${{ steps.meta_omnibus.outputs.tags }}\n          labels: ${{ steps.meta_omnibus.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n      # Extract metadata (tags, labels) for Docker\n      # https://github.com/docker/metadata-action\n      - name: Extract Docker metadata for collector\n        id: meta_collector\n        uses: docker/metadata-action@v5\n        with:\n          tags: |\n            type=raw,enable=true,value=nightly,suffix=-collector\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n      # Build and push Docker image with Buildx (don't push on PR)\n      # https://github.com/docker/build-push-action\n      - name: Build and push collector Docker image\n        uses: docker/build-push-action@v6\n        with:\n          platforms: linux/amd64,linux/arm64\n          context: .\n          file: docker/Dockerfile.collector\n          push: true\n          tags: ${{ steps.meta_collector.outputs.tags }}\n          labels: ${{ steps.meta_collector.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n      # Extract metadata (tags, labels) for Docker\n      # https://github.com/docker/metadata-action\n      - name: Extract Docker metadata for web\n        id: meta_web\n        uses: docker/metadata-action@v5\n        with:\n          tags: |\n            type=raw,enable=true,value=nightly,suffix=-web\n          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\n      # Build and push Docker image with Buildx (don't push on PR)\n      # https://github.com/docker/build-push-action\n      - name: Build and push web Docker image\n        uses: docker/build-push-action@v6\n        with:\n          platforms: linux/amd64,linux/arm64\n          context: .\n          file: docker/Dockerfile.web\n          push: true\n          tags: ${{ steps.meta_web.outputs.tags }}\n          labels: ${{ steps.meta_web.outputs.labels }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n"
  },
  {
    "path": ".github/workflows/release.yaml",
    "content": "name: Release\n# This workflow is triggered manually\non:\n  workflow_dispatch:\n    inputs:\n      version_bump_type:\n        description: 'Version Bump Type (major, minor, patch)'\n        required: true\n        default: 'patch'\n      version_metadata_path:\n        description: 'Path to file containing Version string'\n        required: true\n        default: 'webapp/backend/pkg/version/version.go'\n\njobs:\n  release:\n    name: Create Release Commit\n    runs-on: ubuntu-latest\n    container: ghcr.io/packagrio/packagr:latest-golang\n    # Service containers to run with `build` (Required for end-to-end testing)\n    services:\n      influxdb:\n        image: influxdb:2.8\n        env:\n          DOCKER_INFLUXDB_INIT_MODE: setup\n          DOCKER_INFLUXDB_INIT_USERNAME: admin\n          DOCKER_INFLUXDB_INIT_PASSWORD: password12345\n          DOCKER_INFLUXDB_INIT_ORG: scrutiny\n          DOCKER_INFLUXDB_INIT_BUCKET: metrics\n          DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: my-super-secret-auth-token\n        ports:\n          - 8086:8086\n    env:\n      STATIC: true\n    steps:\n      - name: Git\n        run: |\n          apt-get update && apt-get install -y software-properties-common\n          add-apt-repository ppa:git-core/ppa && apt-get update && apt-get install -y git\n          git --version\n      - name: Checkout\n        uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n      - name: Bump version\n        id: bump_version\n        uses: packagrio/action-bumpr-go@master\n        with:\n          version_bump_type: ${{ github.event.inputs.version_bump_type }}\n          version_metadata_path: ${{ github.event.inputs.version_metadata_path }}\n        env:\n          GITHUB_TOKEN: ${{ secrets.SCRUTINY_GITHUB_TOKEN }} # Leave this line unchanged\n      - name: Test\n        run: |\n          make binary-clean binary-test-coverage\n      - name: Commit Changes Locally\n        id: commit\n        uses: packagrio/action-releasr-go@master\n        env:\n          GITHUB_TOKEN: ${{ secrets.SCRUTINY_GITHUB_TOKEN }} # Leave this line unchanged\n        with:\n          version_metadata_path: ${{ github.event.inputs.version_metadata_path }}\n      - name: Upload workspace\n        uses: actions/upload-artifact@v4\n        with:\n          name: workspace\n          include-hidden-files: true\n          path: ${{ github.workspace }}/**/*\n          retention-days: 1\n\n  build:\n    name: Build ${{ matrix.cfg.goos }}/${{ matrix.cfg.goarch }}${{ matrix.cfg.goarm }}\n    needs: release\n    runs-on: ${{ matrix.cfg.on }}\n    env:\n      GOOS: ${{ matrix.cfg.goos }}\n      GOARCH: ${{ matrix.cfg.goarch }}\n      GOARM: ${{ matrix.cfg.goarm }}\n      STATIC: true\n    strategy:\n      matrix:\n        cfg:\n          - { on: ubuntu-latest,  goos: linux,      goarch: amd64 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm,    goarm: 5 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm,    goarm: 6 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm,    goarm: 7 }\n          - { on: ubuntu-latest,  goos: linux,      goarch: arm64 }\n          - { on: macos-latest,   goos: darwin,     goarch: amd64 }\n          - { on: macos-latest,   goos: darwin,     goarch: arm64 }\n          - { on: macos-latest,   goos: freebsd,    goarch: amd64 }\n          - { on: windows-latest, goos: windows,    goarch: amd64 }\n          - { on: windows-latest, goos: windows,    goarch: arm64 }\n    steps:\n      - name: Download workspace\n        uses: actions/download-artifact@v7\n        with:\n          name: workspace\n      - uses: actions/setup-go@v6\n        with:\n          go-version: '1.25' # The Go version to download (if necessary) and use.\n      - name: Build Binaries\n        run: |\n          make binary-clean binary-all\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v6\n        with:\n          name: scrutiny-${{ matrix.cfg.goos }}-${{ matrix.cfg.goarch }}${{ case(matrix.cfg.goarm != '', format('-{0}', matrix.cfg.goarm), '') }}.zip\n          path: |\n            scrutiny-web-${{ matrix.cfg.goos }}-${{ matrix.cfg.goarch }}${{ case(matrix.cfg.goarm != '', format('-{0}', matrix.cfg.goarm), '') }}${{ case(matrix.cfg.goos == 'windows', '.exe', '') }}\n            scrutiny-collector-metrics-${{ matrix.cfg.goos }}-${{ matrix.cfg.goarch }}${{ case(matrix.cfg.goarm != '', format('-{0}', matrix.cfg.goarm), '') }}${{ case(matrix.cfg.goos == 'windows', '.exe', '') }}\n  \n  build_frontend:\n    name: Build Frontend\n    needs: release\n    runs-on: ubuntu-latest\n    container: node:lts-slim\n    steps:\n      - name: Download workspace\n        uses: actions/download-artifact@v7\n        with:\n          name: workspace\n      - name: \"Generate frontend version information\"\n        run: \"cd webapp/frontend && chmod +x git.version.sh && ./git.version.sh\"\n      - name: Build Frontend\n        run: |\n          apt-get update && apt-get install -y make\n          make binary-frontend\n          tar -czf scrutiny-web-frontend.tar.gz dist\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v6\n        with:\n          name: scrutiny-web-frontend.zip\n          path: scrutiny-web-frontend.tar.gz\n\n  release-publish:\n    name: Publish Release\n    needs: \n      - build\n      - build_frontend\n    runs-on: ubuntu-latest\n    steps:\n      - name: Download workspace\n        uses: actions/download-artifact@v7\n        with:\n          name: workspace\n      - name: Download binaries\n        uses: actions/download-artifact@v7\n        with:\n          merge-multiple: true\n          pattern: scrutiny-*.zip\n      - name: Download frontend\n        uses: actions/download-artifact@v7\n        with:\n          name: scrutiny-web-frontend.zip\n      - name: List\n        shell: bash\n        run: |\n          ls -alt\n      - name: Publish Release & Assets\n        id: publish\n        uses: packagrio/action-publishr-go@master\n        env:\n          # This is necessary in order to push a commit to the repo\n          GITHUB_TOKEN: ${{ secrets.SCRUTINY_GITHUB_TOKEN }} # Leave this line unchanged\n        with:\n          version_metadata_path: ${{ github.event.inputs.version_metadata_path }}\n          upload_assets:\n            scrutiny-collector-metrics-darwin-amd64\n            scrutiny-collector-metrics-darwin-arm64\n            scrutiny-collector-metrics-freebsd-amd64\n            scrutiny-collector-metrics-linux-amd64\n            scrutiny-collector-metrics-linux-arm-5\n            scrutiny-collector-metrics-linux-arm-6\n            scrutiny-collector-metrics-linux-arm-7\n            scrutiny-collector-metrics-linux-arm64\n            scrutiny-collector-metrics-windows-amd64.exe\n            scrutiny-collector-metrics-windows-arm64.exe\n            scrutiny-web-frontend.tar.gz\n            scrutiny-web-darwin-amd64\n            scrutiny-web-darwin-arm64\n            scrutiny-web-freebsd-amd64\n            scrutiny-web-linux-amd64\n            scrutiny-web-linux-arm-5\n            scrutiny-web-linux-arm-6\n            scrutiny-web-linux-arm-7\n            scrutiny-web-linux-arm64\n            scrutiny-web-windows-amd64.exe\n            scrutiny-web-windows-arm64.exe\n"
  },
  {
    "path": ".github/workflows/sponsors.yaml",
    "content": "name: Label sponsors\non:\n  pull_request:\n    types: [opened]\n  issues:\n    types: [opened]\njobs:\n  build:\n    name: is-sponsor-label\n    runs-on: ubuntu-latest\n    if: ${{ false }}\n    steps:\n      - uses: JasonEtco/is-sponsor-label-action@v1.2.0\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "# Created by .ignore support plugin (hsz.mobi)\n### JetBrains template\n# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm\n# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839\n\n# User-specific stuff\n.idea/**/workspace.xml\n.idea/**/tasks.xml\n.idea/**/dictionaries\n.idea/**/shelf\n\n# Sensitive or high-churn files\n.idea/**/dataSources/\n.idea/**/dataSources.ids\n.idea/**/dataSources.local.xml\n.idea/**/sqlDataSources.xml\n.idea/**/dynamic.xml\n.idea/**/uiDesigner.xml\n.idea/**/dbnavigator.xml\n\n# Gradle\n.idea/**/gradle.xml\n.idea/**/libraries\n\n# CMake\ncmake-build-debug/\ncmake-build-release/\n\n# Mongo Explorer plugin\n.idea/**/mongoSettings.xml\n\n# File-based project format\n*.iws\n\n# IntelliJ\nout/\n\n# mpeltonen/sbt-idea plugin\n.idea_modules/\n\n# JIRA plugin\natlassian-ide-plugin.xml\n\n# Cursive Clojure plugin\n.idea/replstate.xml\n\n# Crashlytics plugin (for Android Studio and IntelliJ)\ncom_crashlytics_export_strings.xml\ncrashlytics.properties\ncrashlytics-build.properties\nfabric.properties\n\n# Editor-based Rest Client\n.idea/httpRequests\n\n\nscrutiny.db\n/dist/\nvendor\n/scrutiny\n/scrutiny-collector-metrics-*\n/scrutiny-web-*\nscrutiny-*.db\nscrutiny_test.db\nscrutiny.yaml\ncoverage.txt\n/config\n/influxdb\n.angular\nweb.log"
  },
  {
    "path": ".golangci.yml",
    "content": "version: \"2\"\nformatters:\n  enable:\n    - gofmt\n    - goimports\nlinters:\n  enable:\n    - bodyclose\n  settings:\n    errcheck:\n      check-blank: true\n"
  },
  {
    "path": ".vscode/launch.json",
    "content": "{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Run Scrutiny\",\n            \"type\": \"go\",\n            \"request\": \"launch\",\n            \"mode\": \"auto\",\n            \"program\": \"${workspaceFolder}/webapp/backend/cmd/scrutiny/scrutiny.go\",\n            \"args\": [\"start\", \"--config\", \"./scrutiny.yaml\"],\n            \"cwd\": \"${workspaceFolder}\",\n            \"env\": {\n                \"DEBUG\": \"true\"\n            },\n            \"console\": \"integratedTerminal\",\n            \"preLaunchTask\": \"Build Frontend\",\n            \"serverReadyAction\": {\n                \"action\": \"openExternally\",\n                \"pattern\": \"Listening and serving HTTP on\",\n                \"uriFormat\": \"http://localhost:8080/web/\"\n            }\n        },\n        {\n            \"name\": \"Run Collector\",\n            \"type\": \"go\",\n            \"request\": \"launch\",\n            \"mode\": \"auto\",\n            \"program\": \"${workspaceFolder}/collector/cmd/collector-metrics/collector-metrics.go\",\n            \"args\": [\"run\", \"--debug\"],\n            \"cwd\": \"${workspaceFolder}\",\n            \"env\": {\n                \"COLLECTOR_DEBUG\": \"true\"\n            },\n            \"console\": \"integratedTerminal\"\n        }\n    ]\n}\n"
  },
  {
    "path": ".vscode/tasks.json",
    "content": "{\n  \"version\": \"2.0.0\",\n  \"tasks\": [\n    {\n      \"label\": \"Build Frontend\",\n      \"type\": \"shell\",\n      \"command\": \"cd webapp/frontend && npm run build:prod -- --output-path=../../dist\"\n    }\n  ]\n}\n"
  },
  {
    "path": "AI_POLICY.md",
    "content": "# AI Usage Policy\n\nscrutiny has strict rules for AI usage:\n\n- **All AI usage in any form must be disclosed.** You must state\n  the tool you used (e.g. Claude Code, Cursor, Amp) along with\n  the extent that the work was AI-assisted.\n\n- **Pull requests created in any way by AI can only be for accepted issues.**\n  Drive-by pull requests that do not reference an accepted issue will be\n  closed. If AI isn't disclosed but a maintainer suspects its use, the\n  PR will be closed. If you want to share code for a non-accepted issue,\n  open a discussion or attach it to an existing discussion.\n\n- **Pull requests created by AI must have been fully verified with\n  human use.** AI must not create hypothetically correct code that\n  hasn't been tested. Importantly, you must not allow AI to write\n  code for platforms or environments you don't have access to manually\n  test on.\n\n- **Issues and discussions can use AI assistance but must have a full\n  human-in-the-loop.** This means that any content generated with AI\n  must have been reviewed _and edited_ by a human before submission.\n  AI is very good at being overly verbose and including noise that\n  distracts from the main point. Humans must do their research and\n  trim this down.\n\n- **No AI-generated media is allowed (art, images, videos, audio, etc.).**\n  Text and code are the only acceptable AI-generated content, per the\n  other rules in this policy.\n\n- **Bad AI drivers will be banned and ridiculed in public.** You've\n  been warned. We love to help junior developers learn and grow, but\n  if you're interested in that then don't use AI, and we'll help you.\n  I'm sorry that bad AI drivers have ruined this for you.\n\nThese rules apply only to outside contributions to scrutiny. Maintainers\nand repeat contributors (with explicit permission) are exempt from these\nrules and may use AI tools at their discretion; they've proven themselves\ntrustworthy to apply good judgment.\n\n## There are Humans Here\n\nPlease remember that scrutiny is maintained by humans.\n\nEvery discussion, issue, and pull request is read and reviewed by\nhumans (and sometimes machines, too). It is a boundary point at which\npeople interact with each other and the work done. It is rude and\ndisrespectful to approach this boundary with low-effort, unqualified\nwork, since it puts the burden of validation on the maintainer.\n\nIn a perfect world, AI would produce high-quality, accurate work\nevery time. But today, that reality depends on the driver of the AI.\nAnd today, most drivers of AI are just not good enough. So, until either\nthe people get better, the AI gets better, or both, we have to have\nstrict rules to protect maintainers.\n\n## AI is Welcome Here\n\nMany maintainers embrace AI tools as a productive tool in their workflow.\nAs a project, scrutiny welcomes AI as a tool!\n\n**Our reason for the strict AI policy is not due to an anti-AI stance**, but\ninstead due to the number of highly unqualified people using AI. It's the\npeople, not the tools, that are the problem.\n\nThis section is included to be transparent about the project's usage about\nAI for people who may disagree with it, and to address the misconception\nthat this policy is anti-AI in nature.\n\n# Credit\n\nAdopted from [ghostty's AI policy](https://github.com/ghostty-org/ghostty/blob/1b7a15899ad40fba4ce020f537055d30eaf99ee8/AI_POLICY.md)\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to scrutiny\n\nThis document describes the process of contributing to scrutiny. It is intended\nfor anyone considering opening an **issue**, **discussion** or **pull request**.\n\n> [!NOTE]\n>\n> The intention of these policies is not to be difficult, and\n> contributions are greatly appreciated. The goal is to streamline\n> and simplify the efforts of both contributers and maintainers.\n\n## AI Usage\n\nscrutiny has strict rules for AI usage. Please see\nthe [AI Usage Policy](AI_POLICY.md). **This is very important.**\n\n## Quick Guide\n\n### I'd like to contribute\n\n[All issues are actionable](#issues-are-actionable). Pick one and start\nworking on it. Thank you. If you need help or guidance, comment on the issue.\nIssues that are extra friendly to new contributors are tagged with\n[\"contributor friendly\"].\n\n[\"contributor friendly\"]: https://github.com/AnalogJ/scrutiny/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22contributor%20friendly%22\n\n### I have a bug! / Something isn't working\n\nFirst, search the issue tracker and discussions for similar issues. Tip: also\nsearch for [closed issues] and [discussions] — your issue might have already\nbeen fixed!\n\n> [!NOTE]\n>\n> If there is an _open_ issue or discussion that matches your problem,\n> **please do not comment on it unless you have valuable insight to add**.\n>\n> GitHub has a very _noisy_ set of default notification settings which\n> sends an email to _every participant_ in an issue/discussion every time\n> someone adds a comment. Instead, use the handy upvote button for discussions,\n> and/or emoji reactions on both discussions and issues, which are a visible\n> yet non-disruptive way to show your support.\n\nIf your issue hasn't been reported already, open an [\"Issue Triage\"] discussion\nand make sure to fill in the template **completely**. They are vital for\nmaintainers to figure out important details about your setup.\n\n> [!WARNING]\n>\n> A _very_ common mistake is to file a bug report either as a Q&A or a Feature\n> Request. **Please don't do this.** Otherwise, maintainers would have to ask\n> for your system information again manually, and sometimes they will even ask\n> you to create a new discussion because of how few detailed information is\n> required for other discussion types compared to Issue Triage.\n>\n> Because of this, please make sure that you _only_ use the \"Issue Triage\"\n> category for reporting bugs — thank you!\n\n[closed issues]: https://github.com/AnalogJ/scrutiny/issues?q=is%3Aissue%20state%3Aclosed\n[discussions]: https://github.com/AnalogJ/scrutiny/discussions?discussions_q=is%3Aclosed\n[\"Issue Triage\"]: https://github.com/AnalogJ/scrutiny/discussions/new?category=issue-triage\n\n### I have an idea for a feature\n\nLike bug reports, first search through both issues and discussions and try to\nfind if your feature has already been requested. Otherwise, open a discussion\nin the [\"Feature Requests, Ideas\"] category.\n\n[\"Feature Requests, Ideas\"]: https://github.com/AnalogJ/scrutiny/discussions/new?category=feature-requests-ideas\n\n### I've implemented a feature\n\n1. If there is an issue for the feature, open a pull request straight away.\n2. If there is no issue, open a discussion and link to your branch.\n3. If you want to live dangerously, open a pull request and\n   [hope for the best](#pull-requests-implement-an-issue).\n\n### I have a question which is neither a bug report nor a feature request\n\nOpen a [Q&A discussion].\n\n> [!NOTE]\n> If your question is about a missing feature, please open a discussion under\n> the [\"Feature Requests, Ideas\"] category. If scrutiny is behaving\n> unexpectedly, use the [\"Issue Triage\"] category.\n>\n> The \"Q&A\" category is strictly for other kinds of discussions and do not\n> require detailed information unlike the two other categories, meaning that\n> maintainers would have to spend the extra effort to ask for basic information\n> if you submit a bug report under this category.\n>\n> Therefore, please **pay attention to the category** before opening\n> discussions to save us all some time and energy. Thank you!\n\n[Q&A discussion]: https://github.com/AnalogJ/scrutiny/discussions/new?category=q-a\n\n## General Patterns\n\n### Issues are Actionable\n\nThe scrutiny [issue tracker](https://github.com/AnalogJ/scrutiny/issues)\nis for _actionable items_.\n\nUnlike some other projects, scrutiny **does not use the issue tracker for\ndiscussion or feature requests**. Instead, we use GitHub\n[discussions](https://github.com/AnalogJ/scrutiny/discussions) for that.\nOnce a discussion reaches a point where a well-understood, actionable\nitem is identified, it is moved to the issue tracker. **This pattern\nmakes it easier for maintainers or contributors to find issues to work on\nsince _every issue_ is ready to be worked on.**\n\nIf you are experiencing a bug and have clear steps to reproduce it, please\nopen an issue. If you are experiencing a bug but you are not sure how to\nreproduce it or aren't sure if it's a bug, please open a discussion.\nIf you have an idea for a feature, please open a discussion.\n\n### Pull Requests Implement an Issue\n\nPull requests should be associated with a previously accepted issue.\n**If you open a pull request for something that wasn't previously discussed,**\nit may be closed or remain stale for an indefinite period of time. I'm not\nsaying it will never be accepted, but the odds are stacked against you.\n\nIssues tagged with \"feature\" represent accepted, well-scoped feature requests.\nIf you implement an issue tagged with feature as described in the issue, your\npull request will be accepted with a high degree of certainty.\n\n> [!NOTE]\n>\n> **Pull requests are NOT a place to discuss feature design.** Please do\n> not open a WIP pull request to discuss a feature. Instead, use a discussion\n> and link to your branch.\n\n# Developer Guide\n\n> [!NOTE]\n>\n> **The remainder of this file is dedicated to developers actively\n> working on scrutiny.** If you're a user reporting an issue, you can\n> ignore the rest of this document.\n\nThe Scrutiny repository is a [monorepo](https://en.wikipedia.org/wiki/Monorepo) containing source code for:\n- Scrutiny Backend Server (API)\n- Scrutiny Frontend Angular SPA\n- S.M.A.R.T Collector\n\nDepending on the functionality you are adding, you may need to setup a development environment for 1 or more projects.\n\n# Devcontainer\nDevcontainer configurations are available to build and run Scrutiny (WebUI and Collector) in a fully isolated environment.\nWhen opening the project with vscode, choose \"Reopen in Container\". Three configurations are available depending on your \ncontainer runtime and setup: docker, docker-rootless, and podman. \n\n# Modifying the Scrutiny Backend Server (API)\n\n1. install the [Go runtime](https://go.dev/doc/install) (v1.25)\n2. download the `scrutiny-web-frontend.tar.gz` for\n   the [latest release](https://github.com/AnalogJ/scrutiny/releases/latest). Extract to a folder named `dist`\n3. create a `scrutiny.yaml` config file\n    ```yaml\n    # config file for local development. store as scrutiny.yaml\n    version: 1\n\n    web:\n      listen:\n        port: 8080\n        host: 0.0.0.0\n      database:\n        # can also set absolute path here\n        location: ./scrutiny.db\n      src:\n        frontend:\n          path: ./dist\n      influxdb:\n        retention_policy: false\n\n    log:\n      file: 'web.log' #absolute or relative paths allowed, eg. web.log\n      level: DEBUG\n\n    ```\n4. start a InfluxDB docker container.\n    ```bash\n    docker run -p 8086:8086 --rm influxdb:2.8\n    ```\n5. start the scrutiny web server\n    ```bash\n    go mod vendor\n    go run webapp/backend/cmd/scrutiny/scrutiny.go start --config ./scrutiny.yaml\n    ```\n6. open your browser to [http://localhost:8080/web](http://localhost:8080/web)\n\n# Modifying the Scrutiny Frontend Angular SPA\n\nThe frontend is written in Angular. If you're working on the frontend and can use mocked data rather than a real backend, you can follow the instructions below:\n\n1. install [NodeJS](https://nodejs.org/en/download/)\n2. start the Angular Frontend Application\n    ```bash\n    cd webapp/frontend\n    npm install\n    npm run start -- --serve-path=\"/web/\" --port 4200\n    ```\n3. open your browser and visit [http://localhost:4200/web](http://localhost:4200/web)\n\n# Modifying both Scrutiny Backend and Frontend Applications\nIf you're developing a feature that requires changes to the backend and the frontend, or a frontend feature that requires real data,\nyou'll need to follow the steps below:\n\n1. install the [Go runtime](https://go.dev/doc/install) (v1.20+)\n2. install [NodeJS](https://nodejs.org/en/download/)\n3. create a `scrutiny.yaml` config file\n    ```yaml\n    # config file for local development. store as scrutiny.yaml\n    version: 1\n\n    web:\n      listen:\n        port: 8080\n        host: 0.0.0.0\n      database:\n        # can also set absolute path here\n        location: ./scrutiny.db\n      src:\n        frontend:\n          path: ./dist\n      influxdb:\n        retention_policy: false\n\n    log:\n      file: 'web.log' #absolute or relative paths allowed, eg. web.log\n      level: DEBUG\n\n    ```\n4. start a InfluxDB docker container.\n    ```bash\n    docker run -p 8086:8086 --rm influxdb:2.8\n    ```\n5. build the Angular Frontend Application\n    ```bash\n    cd webapp/frontend\n    npm install\n    npm run build:prod -- --watch --output-path=../../dist\n    # Note: if you do not add `--prod` flag, app will display mocked data for api calls.\n    ```\n6. start the scrutiny web server\n    ```bash\n    go mod vendor\n    go run webapp/backend/cmd/scrutiny/scrutiny.go start --config ./scrutiny.yaml\n    ```\n7. open your browser to [http://localhost:8080/web](http://localhost:8080/web)\n\n\nIf you'd like to populate the database with some test data,  you can run the following commands:\n\n> NOTE: you may need to update the `local_time` key within the JSON file, any timestamps older than ~3 weeks will be automatically ignored\n> (since the downsampling & retention policy takes effect at 2 weeks)\n> This is done automatically by the `webapp/backend/pkg/models/testdata/helper.go` script\n\n```\ndocker run -p 8086:8086 --rm influxdb:2.8\n\n\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/web/testdata/register-devices-req.json localhost:8080/api/devices/register\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/models/testdata/smart-ata.json localhost:8080/api/device/0x5000cca264eb01d7/smart\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/models/testdata/smart-ata-date.json localhost:8080/api/device/0x5000cca264eb01d7/smart\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/models/testdata/smart-ata-date2.json localhost:8080/api/device/0x5000cca264eb01d7/smart\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/models/testdata/smart-fail2.json localhost:8080/api/device/0x5000cca264ec3183/smart\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/models/testdata/smart-nvme.json localhost:8080/api/device/0x5002538e40a22954/smart\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/models/testdata/smart-scsi.json localhost:8080/api/device/0x5000cca252c859cc/smart\n# curl -X POST -H \"Content-Type: application/json\" -d @webapp/backend/pkg/models/testdata/smart-scsi2.json localhost:8080/api/device/0x5000cca264ebc248/smart\ngo run webapp/backend/pkg/models/testdata/helper.go\n\ncurl localhost:8080/api/summary\n\n```\n\n# Modifying the Collector\n```\nbrew install smartmontools\ngo run collector/cmd/collector-metrics/collector-metrics.go run --debug\n```\n\n\n# Debugging\n\nIf you need more verbose logs for debugging, you can use the following environmental variables:\n\n- `DEBUG=true` - enables debug level logging on both the `collector` and `webapp`\n- `COLLECTOR_DEBUG=true` - enables debug level logging on the `collector`\n- `SCRUTINY_DEBUG=true` - enables debug level logging on the `webapp`\n\nIn addition, you can instruct scrutiny to write its logs to a file using the following environmental variables:\n\n- `COLLECTOR_LOG_FILE=/tmp/collector.log` - write the `collector` logs to a file\n- `SCRUTINY_LOG_FILE=/tmp/web.log` - write the `webapp` logs to a file\n\nFinally, you can copy the files from the scrutiny container to your host using the following command(s)\n\n```\ndocker cp scrutiny:/tmp/collector.log collector.log\ndocker cp scrutiny:/tmp/web.log web.log\n```\n\n# Docker Development\n\n```\ndocker build -f docker/Dockerfile . -t ghcr.io/analogj/scrutiny:master-omnibus\ndocker run -it --rm -p 8080:8080 \\\n-v /run/udev:/run/udev:ro \\\n--cap-add SYS_RAWIO \\\n--device=/dev/sda \\\n--device=/dev/sdb \\\nghcr.io/analogj/scrutiny:master-omnibus\n/opt/scrutiny/bin/scrutiny-collector-metrics run\n```\n\n\n# Running Tests\n\n```bash\ndocker run -p 8086:8086 -d --rm \\\n-e DOCKER_INFLUXDB_INIT_MODE=setup \\\n-e DOCKER_INFLUXDB_INIT_USERNAME=admin \\\n-e DOCKER_INFLUXDB_INIT_PASSWORD=password12345 \\\n-e DOCKER_INFLUXDB_INIT_ORG=scrutiny \\\n-e DOCKER_INFLUXDB_INIT_BUCKET=metrics \\\n-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token \\\ninfluxdb:2.8\ngo test ./...\n\n```\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Jason Kulatunga\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": ".ONESHELL: # Applies to every targets in the file! .ONESHELL instructs make to invoke a single instance of the shell and provide it with the entire recipe, regardless of how many lines it contains.\n.SHELLFLAGS = -ec\nexport GOTOOLCHAIN=go1.25.5\n\n########################################################################################################################\n# Global Env Settings\n########################################################################################################################\n\nGO_WORKSPACE ?= /go/src/github.com/analogj/scrutiny\n\nCOLLECTOR_BINARY_NAME = scrutiny-collector-metrics\nWEB_BINARY_NAME = scrutiny-web\nLD_FLAGS =\n\nSTATIC_TAGS =\n# enable multiarch docker image builds\nDOCKER_TARGETARCH_BUILD_ARG =\nifdef TARGETARCH\nDOCKER_TARGETARCH_BUILD_ARG := $(DOCKER_TARGETARCH_BUILD_ARG) --build-arg TARGETARCH=$(TARGETARCH)\nendif\n\n# enable to build static binaries.\nifdef STATIC\nexport CGO_ENABLED = 0\nLD_FLAGS := $(LD_FLAGS) -extldflags=-static\nSTATIC_TAGS := $(STATIC_TAGS) -tags \"static netgo\"\nendif\nifdef GOOS\nCOLLECTOR_BINARY_NAME := $(COLLECTOR_BINARY_NAME)-$(GOOS)\nWEB_BINARY_NAME := $(WEB_BINARY_NAME)-$(GOOS)\nLD_FLAGS := $(LD_FLAGS) -X main.goos=$(GOOS)\nendif\nifdef GOARCH\nCOLLECTOR_BINARY_NAME := $(COLLECTOR_BINARY_NAME)-$(GOARCH)\nWEB_BINARY_NAME := $(WEB_BINARY_NAME)-$(GOARCH)\nLD_FLAGS := $(LD_FLAGS) -X main.goarch=$(GOARCH)\nendif\nifdef GOARM\nCOLLECTOR_BINARY_NAME := $(COLLECTOR_BINARY_NAME)-$(GOARM)\nWEB_BINARY_NAME := $(WEB_BINARY_NAME)-$(GOARM)\nendif\nifeq ($(OS),Windows_NT)\nCOLLECTOR_BINARY_NAME := $(COLLECTOR_BINARY_NAME).exe\nWEB_BINARY_NAME := $(WEB_BINARY_NAME).exe\nendif\n\n########################################################################################################################\n# Binary\n########################################################################################################################\n.PHONY: all\nall: binary-all\n\n.PHONY: binary-all\nbinary-all: binary-collector binary-web\n\t@echo \"built binary-collector and binary-web targets\"\n\n\n.PHONY: binary-clean\nbinary-clean:\n\tgo clean\n\n.PHONY: binary-dep\nbinary-dep:\n\tgo mod vendor\n\n.PHONY: binary-test\nbinary-test: binary-dep\n\tgo test -v $(STATIC_TAGS) ./...\n\n.PHONY: lint\nlint:\n\tGOTOOLCHAIN=go1.25.5 go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.8.0\n\tgolangci-lint run ./...\n\n.PHONY: binary-test-coverage\nbinary-test-coverage: binary-dep\n\tgo test -coverprofile=coverage.txt -covermode=atomic -v $(STATIC_TAGS) ./...\n\n.PHONY: binary-collector\nbinary-collector: binary-dep\n\tgo build -ldflags \"$(LD_FLAGS)\" -o $(COLLECTOR_BINARY_NAME) $(STATIC_TAGS) ./collector/cmd/collector-metrics/\nifneq ($(OS),Windows_NT)\n\tchmod +x $(COLLECTOR_BINARY_NAME)\n\tfile $(COLLECTOR_BINARY_NAME) || true\n\tldd $(COLLECTOR_BINARY_NAME) || true\n\t./$(COLLECTOR_BINARY_NAME) || true\nendif\n\n.PHONY: binary-web\nbinary-web: binary-dep\n\tgo build -ldflags \"$(LD_FLAGS)\" -o $(WEB_BINARY_NAME) $(STATIC_TAGS) ./webapp/backend/cmd/scrutiny/\nifneq ($(OS),Windows_NT)\n\tchmod +x $(WEB_BINARY_NAME)\n\tfile $(WEB_BINARY_NAME) || true\n\tldd $(WEB_BINARY_NAME) || true\n\t./$(WEB_BINARY_NAME) || true\nendif\n\n########################################################################################################################\n# Binary\n########################################################################################################################\n\n.PHONY: binary-frontend\n# reduce logging, disable angular-cli analytics for ci environment\nbinary-frontend: export NPM_CONFIG_LOGLEVEL = warn\nbinary-frontend: export NG_CLI_ANALYTICS = false\nbinary-frontend:\n\tcd webapp/frontend\n\tnpm install -g @angular/cli@v13-lts\n\tmkdir -p $(CURDIR)/dist\n\tnpm ci\n\tnpm run build:prod -- --output-path=$(CURDIR)/dist\n\n.PHONY: binary-frontend-test-coverage\n# reduce logging, disable angular-cli analytics for ci environment\nbinary-frontend-test-coverage:\n\tcd webapp/frontend\n\tnpm ci\n\tnpx ng test --watch=false --browsers=ChromeHeadless --code-coverage\n\n########################################################################################################################\n# Docker\n# NOTE: these docker make targets are only used for local development (not used by Github Actions/CI)\n########################################################################################################################\n.PHONY: docker-collector\ndocker-collector:\n\t@echo \"building collector docker image\"\n\tdocker build $(DOCKER_TARGETARCH_BUILD_ARG) -f docker/Dockerfile.collector -t ghcr.io/analogj/scrutiny-dev:collector .\n\n.PHONY: docker-web\ndocker-web:\n\t@echo \"building web docker image\"\n\tdocker build $(DOCKER_TARGETARCH_BUILD_ARG) -f docker/Dockerfile.web -t ghcr.io/analogj/scrutiny-dev:web .\n\n.PHONY: docker-omnibus\ndocker-omnibus:\n\t@echo \"building omnibus docker image\"\n\tdocker build $(DOCKER_TARGETARCH_BUILD_ARG) -f docker/Dockerfile -t ghcr.io/analogj/scrutiny-dev:omnibus .\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <a href=\"https://github.com/AnalogJ/scrutiny\">\n  <img width=\"300\" alt=\"scrutiny_view\" src=\"webapp/frontend/src/assets/images/logo/scrutiny-logo-dark.png\">\n  </a>\n</p>\n\n\n# scrutiny\n\n[![CI](https://github.com/AnalogJ/scrutiny/actions/workflows/ci.yaml/badge.svg)](https://github.com/AnalogJ/scrutiny/actions/workflows/ci.yaml)\n[![codecov](https://codecov.io/gh/AnalogJ/scrutiny/branch/master/graph/badge.svg)](https://codecov.io/gh/AnalogJ/scrutiny)\n[![GitHub license](https://img.shields.io/github/license/AnalogJ/scrutiny.svg?style=flat-square)](https://github.com/AnalogJ/scrutiny/blob/master/LICENSE)\n[![Godoc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://godoc.org/github.com/analogj/scrutiny)\n[![Go Report Card](https://goreportcard.com/badge/github.com/AnalogJ/scrutiny?style=flat-square)](https://goreportcard.com/report/github.com/AnalogJ/scrutiny)\n[![GitHub release](http://img.shields.io/github/release/AnalogJ/scrutiny.svg?style=flat-square)](https://github.com/AnalogJ/scrutiny/releases)\n\nWebUI for smartd S.M.A.R.T monitoring\n\n> NOTE: Scrutiny is a Work-in-Progress and still has some rough edges.\n\n[![](docs/dashboard.png)](https://imgur.com/a/5k8qMzS)\n\n# Introduction\n\nIf you run a server with more than a couple of hard drives, you're probably already familiar with S.M.A.R.T and the `smartd` daemon. If not, it's an incredible open source project described as the following:\n\n> smartd is a daemon that monitors the Self-Monitoring, Analysis and Reporting Technology (SMART) system built into many ATA, IDE and SCSI-3 hard drives. The purpose of SMART is to monitor the reliability of the hard drive and predict drive failures, and to carry out different types of drive self-tests.\n\nThese S.M.A.R.T hard drive self-tests can help you detect and replace failing hard drives before they cause permanent data loss. However, there's a couple issues with `smartd`:\n\n- There are more than a hundred S.M.A.R.T attributes, however `smartd` does not differentiate between critical and informational metrics\n- `smartd` does not record S.M.A.R.T attribute history, so it can be hard to determine if an attribute is degrading slowly over time.\n- S.M.A.R.T attribute thresholds are set by the manufacturer. In some cases these thresholds are unset, or are so high that they can only be used to confirm a failed drive, rather than detecting a drive about to fail.\n- `smartd` is a command line only tool. For head-less servers a web UI would be more valuable.\n\n**Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates.**\n\n# Features\n\nScrutiny is a simple but focused application, with a couple of core features:\n\n- Web UI Dashboard - focused on Critical metrics\n- `smartd` integration (no re-inventing the wheel)\n- Auto-detection of all connected hard-drives\n- S.M.A.R.T metric tracking for historical trends\n- Customized thresholds using real world failure rates\n- Temperature tracking\n- Provided as an all-in-one Docker image (but can be installed manually)\n- Configurable Alerting/Notifications via Webhooks\n- (Future) Hard Drive performance testing & tracking\n\n# Getting Started\n\n## RAID/Virtual Drives\n\nScrutiny uses `smartctl --scan` to detect devices/drives.\n\n- All RAID controllers supported by `smartctl` are automatically supported by Scrutiny.\n    - While some RAID controllers support passing through the underlying SMART data to `smartctl` others do not.\n    - In some cases `--scan` does not correctly detect the device type, returning [incomplete SMART data](https://github.com/AnalogJ/scrutiny/issues/45).\n    Scrutiny supports overriding detected device type via the config file: see [example.collector.yaml](https://github.com/AnalogJ/scrutiny/blob/master/example.collector.yaml)\n- If you use docker, you **must** pass though the RAID virtual disk to the container using `--device` (see below)\n    - This device may be in `/dev/*` or `/dev/bus/*`.\n    - If you're unsure, run `smartctl --scan` on your host, and pass all listed devices to the container.\n\nSee [docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md](./docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md) for help\n\n## Docker\n\n> [!IMPORTANT]\n> Using `latest-` tags is dangerous as it can update your image without warning. It is a best practice to pin a specific version. scrutiny pushes releases with semver tags,\n> so you can use tags like `v0.8.2-omnibus`, `v0.8-web`, `v0-collector`, etc. For a list of all image tags see\n> [scrutiny package versions](https://github.com/AnalogJ/scrutiny/pkgs/container/scrutiny/versions?filters%5Bversion_type%5D=tagged)\n\nIf you're using Docker, getting started is as simple as running the following command:\n\n> See [docker/example.omnibus.docker-compose.yml](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.omnibus.docker-compose.yml) for a docker-compose file.\n\n```bash\ndocker run -p 8080:8080 -p 8086:8086 --restart unless-stopped \\\n  -v `pwd`/scrutiny:/opt/scrutiny/config \\\n  -v `pwd`/influxdb2:/opt/scrutiny/influxdb \\\n  -v /run/udev:/run/udev:ro \\\n  --cap-add SYS_RAWIO \\\n  --device=/dev/sda \\\n  --device=/dev/sdb \\\n  --name scrutiny \\\n  ghcr.io/analogj/scrutiny:latest-omnibus\n```\n\n- `/run/udev` is necessary to provide the Scrutiny collector with access to your device metadata\n- `--cap-add SYS_RAWIO` is necessary to allow `smartctl` permission to query your device SMART data\n    - NOTE: If you have **NVMe** drives, you must add `--cap-add SYS_ADMIN` as well. See issue [#26](https://github.com/AnalogJ/scrutiny/issues/26#issuecomment-696817130)\n- `--device` entries are required to ensure that your hard disk devices are accessible within the container.\n- `ghcr.io/analogj/scrutiny:latest-omnibus` is a omnibus image, containing both the webapp server (frontend & api) as well as the S.M.A.R.T metric collector. (see below)\n\n### Hub/Spoke Deployment\n\nIn addition to the Omnibus image (available under the `latest` tag) you can deploy in Hub/Spoke mode, which requires 3\nother Docker images:\n\n- `ghcr.io/analogj/scrutiny:latest-collector` - Contains the Scrutiny data collector, `smartctl` binary and cron-like\n  scheduler. You can run one collector on each server.\n- `ghcr.io/analogj/scrutiny:latest-web` - Contains the Web UI and API. Only one container necessary\n- `influxdb:2.8` - InfluxDB image, used by the Web container to persist SMART data. Only one container necessary\n  See [docs/TROUBLESHOOTING_INFLUXDB.md](./docs/TROUBLESHOOTING_INFLUXDB.md)\n\n> See [docker/example.hubspoke.docker-compose.yml](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml) for a docker-compose file.\n\n```bash\ndocker run -p 8086:8086 --restart unless-stopped \\\n  -v `pwd`/influxdb2:/var/lib/influxdb2 \\\n  --name scrutiny-influxdb \\\n  influxdb:2.8\n\ndocker run -p 8080:8080 --restart unless-stopped \\\n  -v `pwd`/scrutiny:/opt/scrutiny/config \\\n  --name scrutiny-web \\\n  ghcr.io/analogj/scrutiny:latest-web\n\ndocker run --restart unless-stopped \\\n  -v /run/udev:/run/udev:ro \\\n  --cap-add SYS_RAWIO \\\n  --device=/dev/sda \\\n  --device=/dev/sdb \\\n  -e COLLECTOR_API_ENDPOINT=http://SCRUTINY_WEB_IPADDRESS:8080 \\\n  --name scrutiny-collector \\\n  ghcr.io/analogj/scrutiny:latest-collector\n```\n\n### Hub rootless installation using Podman Quadlets\n\nSee [docs/INSTALL_ROOTLESS_PODMAN.md](docs/INSTALL_ROOTLESS_PODMAN.md) for instructions.\n\n## Manual Installation (without-Docker)\n\nWhile the easiest way to get started with [Scrutiny is using Docker](https://github.com/AnalogJ/scrutiny#docker),\nit is possible to run it manually without much work. You can even mix and match, using Docker for one component and\na manual installation for the other.\n\nSee [docs/INSTALL_MANUAL.md](docs/INSTALL_MANUAL.md) for instructions.\n\n## Usage\n\nOnce scrutiny is running, you can open your browser to `http://localhost:8080` and take a look at the dashboard.\n\nIf you're using the omnibus image, the collector should already have run, and your dashboard should be populate with every\ndrive that Scrutiny detected. The collector is configured to run once a day, but you can trigger it manually by running the command below.\n\nFor users of the docker Hub/Spoke deployment or manual install: initially the dashboard will be empty.\nAfter the first collector run, you'll be greeted with a list of all your hard drives and their current smart status.\n\n```bash\ndocker exec scrutiny /opt/scrutiny/bin/scrutiny-collector-metrics run\n```\n\n# Configuration\nBy default Scrutiny looks for its YAML configuration files in `/opt/scrutiny/config`\n\nThere are two configuration files available:\n\n- Webapp/API config via `scrutiny.yaml` - [example.scrutiny.yaml](example.scrutiny.yaml).\n- Collector config via `collector.yaml` - [example.collector.yaml](example.collector.yaml).\n\nNeither file is required, however if provided, it allows you to configure how Scrutiny functions.\n\n## Cron Schedule\nUnfortunately the Cron schedule cannot be configured via the `collector.yaml` (as the collector binary needs to be trigged by a scheduler/cron).\nHowever, if you are using the official `ghcr.io/analogj/scrutiny:latest-collector` or `ghcr.io/analogj/scrutiny:latest-omnibus` docker images,\nyou can use the `COLLECTOR_CRON_SCHEDULE` environmental variable to override the default cron schedule (daily @ midnight - `0 0 * * *`).\n\n`docker run -e COLLECTOR_CRON_SCHEDULE=\"0 0 * * *\" ...`\n\n## Notifications\n\nScrutiny supports sending SMART device failure notifications via the following services:\n- Custom Script (data provided via environmental variables)\n- Email\n- Webhooks\n- Discord\n- Gotify\n- Hangouts\n- IFTTT\n- Join\n- Mattermost\n- ntfy\n- Pushbullet\n- Pushover\n- Slack\n- Teams\n- Telegram\n- Tulip\n\nCheck the `notify.urls` section of [example.scrutiny.yml](example.scrutiny.yaml) for examples.\n\nFor more information and troubleshooting, see the [TROUBLESHOOTING_NOTIFICATIONS.md](./docs/TROUBLESHOOTING_NOTIFICATIONS.md) file\n\n### Testing Notifications\n\nYou can test that your notifications are configured correctly by posting an empty payload to the notifications health check API.\n\n```bash\ncurl -X POST http://localhost:8080/api/health/notify\n```\n\n# Debug mode & Log Files\nScrutiny provides various methods to change the log level to debug and generate log files.\n\n## Web Server/API\n\nYou can use environmental variables to enable debug logging and/or log files for the web server:\n\n```bash\nDEBUG=true\nSCRUTINY_LOG_FILE=/tmp/web.log\n```\n\nYou can configure the log level and log file in the config file:\n\n```yml\nlog:\n  file: '/tmp/web.log'\n  level: DEBUG\n```\n\nOr if you're not using docker, you can pass CLI arguments to the web server during startup:\n\n```bash\nscrutiny start --debug --log-file /tmp/web.log\n```\n\n## Collector\n\nYou can use environmental variables to enable debug logging and/or log files for the collector:\n\n```bash\nDEBUG=true\nCOLLECTOR_LOG_FILE=/tmp/collector.log\n```\n\nOr if you're not using docker, you can pass CLI arguments to the collector during startup:\n\n```bash\nscrutiny-collector-metrics run --debug --log-file /tmp/collector.log\n```\n\n# Supported Architectures\n\n| Architecture Name | Binaries | Docker |\n| --- | --- | --- |\n| linux-amd64 | :white_check_mark: | :white_check_mark: |\n| linux-arm-5 | :white_check_mark: |  |\n| linux-arm-6 | :white_check_mark: |  |\n| linux-arm-7 | :white_check_mark: | web/collector only. see [#236](https://github.com/AnalogJ/scrutiny/issues/236)  |\n| linux-arm64 | :white_check_mark: | :white_check_mark: |\n| freebsd-amd64 | :white_check_mark: |  |\n| macos-amd64 | :white_check_mark: | :white_check_mark: |\n| macos-arm64 | :white_check_mark: | :white_check_mark: |\n| windows-amd64 | :white_check_mark: | WIP, see [#15](https://github.com/AnalogJ/scrutiny/issues/15) |\n| windows-arm64 | :white_check_mark: |  |\n\n\n# Contributing\n\nPlease see the [CONTRIBUTING.md](CONTRIBUTING.md) for instructions for how to develop and contribute to the scrutiny codebase.\n\nWork your magic and then submit a pull request. We love pull requests!\n\nIf you find the documentation lacking, help us out and update this README.md. If you don't have the time to work on Scrutiny, but found something we should know about, please submit an issue.\n\n# Versioning\n\nWe use SemVer for versioning. For the versions available, see the tags on this repository.\n\n# Authors\n\n* Jason Kulatunga - Initial Development - [@AnalogJ](https://github.com/AnalogJ/)\n* Aram Akhavan - Maintenence - [@kaysond](https://github.com/kaysond/)\n\n# Licenses\n\n- MIT\n- Logo: [Glasses by matias porta lezcano](https://thenounproject.com/term/glasses/775232)\n\n# Sponsors\n\nScrutiny is only possible with the help of my [Github Sponsors](https://github.com/sponsors/AnalogJ/).\n\n[![](docs/sponsors.png)](https://github.com/sponsors/AnalogJ/)\n\nThey read a simple [reddit announcement post](https://github.com/sponsors/AnalogJ/) and decided to trust & finance\n a developer they've never met. It's an exciting and incredibly humbling experience.\n\nIf you found Scrutiny valuable, please consider [supporting my work](https://github.com/sponsors/AnalogJ/)\n"
  },
  {
    "path": "REFERENCES.md",
    "content": "\n# Gorm\n- https://www.reddit.com/r/golang/comments/exmwos/golang_gorm_preload_with_last/\n- https://blog.depado.eu/post/gorm-gotchas\n-\n\n\n# Smart Data\n- https://kb.acronis.com/content/9123\n"
  },
  {
    "path": "collector/cmd/collector-metrics/collector-metrics.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/collector/pkg/collector\"\n\t\"github.com/analogj/scrutiny/collector/pkg/config\"\n\t\"github.com/analogj/scrutiny/collector/pkg/errors\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/version\"\n\t\"github.com/sirupsen/logrus\"\n\n\tutils \"github.com/analogj/go-util/utils\"\n\t\"github.com/fatih/color\"\n\t\"github.com/urfave/cli/v2\"\n)\n\nvar goos string\nvar goarch string\n\nfunc main() {\n\n\tconfig, err := config.Create()\n\tif err != nil {\n\t\tfmt.Printf(\"FATAL: %+v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\n\tconfigFilePath := \"/opt/scrutiny/config/collector.yaml\"\n\tconfigFilePathAlternative := \"/opt/scrutiny/config/collector.yml\"\n\tif !utils.FileExists(configFilePath) && utils.FileExists(configFilePathAlternative) {\n\t\tconfigFilePath = configFilePathAlternative\n\t}\n\n\t//we're going to load the config file manually, since we need to validate it.\n\terr = config.ReadConfig(configFilePath)               // Find and read the config file\n\tif _, ok := err.(errors.ConfigFileMissingError); ok { // Handle errors reading the config file\n\t\t//ignore \"could not find config file\"\n\t} else if err != nil {\n\t\tos.Exit(1)\n\t}\n\n\tcli.CommandHelpTemplate = `NAME:\n   {{.HelpName}} - {{.Usage}}\nUSAGE:\n   {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}{{if .Category}}\nCATEGORY:\n   {{.Category}}{{end}}{{if .Description}}\nDESCRIPTION:\n   {{.Description}}{{end}}{{if .VisibleFlags}}\nOPTIONS:\n   {{range .VisibleFlags}}{{.}}\n   {{end}}{{end}}\n`\n\n\tapp := &cli.App{\n\t\tName:     \"scrutiny-collector-metrics\",\n\t\tUsage:    \"smartctl data collector for scrutiny\",\n\t\tVersion:  version.VERSION,\n\t\tCompiled: time.Now(),\n\t\tAuthors: []*cli.Author{\n\t\t\t{\n\t\t\t\tName:  \"Jason Kulatunga\",\n\t\t\t\tEmail: \"jason@thesparktree.com\",\n\t\t\t},\n\t\t},\n\t\tBefore: func(c *cli.Context) error {\n\n\t\t\tcollectorMetrics := \"AnalogJ/scrutiny/metrics\"\n\n\t\t\tvar versionInfo string\n\t\t\tif len(goos) > 0 && len(goarch) > 0 {\n\t\t\t\tversionInfo = fmt.Sprintf(\"%s.%s-%s\", goos, goarch, version.VERSION)\n\t\t\t} else {\n\t\t\t\tversionInfo = fmt.Sprintf(\"dev-%s\", version.VERSION)\n\t\t\t}\n\n\t\t\tsubtitle := collectorMetrics + utils.LeftPad2Len(versionInfo, \" \", 65-len(collectorMetrics))\n\n\t\t\tcolor.New(color.FgGreen).Fprintf(c.App.Writer, utils.StripIndent(\n\t\t\t\t`\n\t\t\t ___   ___  ____  __  __  ____  ____  _  _  _  _\n\t\t\t/ __) / __)(  _ \\(  )(  )(_  _)(_  _)( \\( )( \\/ )\n\t\t\t\\__ \\( (__  )   / )(__)(   )(   _)(_  )  (  \\  /\n\t\t\t(___/ \\___)(_)\\_)(______) (__) (____)(_)\\_) (__)\n\t\t\t%s\n\n\t\t\t`), subtitle)\n\n\t\t\treturn nil\n\t\t},\n\n\t\tCommands: []*cli.Command{\n\t\t\t{\n\t\t\t\tName:  \"run\",\n\t\t\t\tUsage: \"Run the scrutiny smartctl metrics collector\",\n\t\t\t\tAction: func(c *cli.Context) error {\n\t\t\t\t\tif c.IsSet(\"config\") {\n\t\t\t\t\t\terr = config.ReadConfig(c.String(\"config\")) // Find and read the config file\n\t\t\t\t\t\tif err != nil {                             // Handle errors reading the config file\n\t\t\t\t\t\t\t//ignore \"could not find config file\"\n\t\t\t\t\t\t\tfmt.Printf(\"Could not find config file at specified path: %s\", c.String(\"config\"))\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//override config with flags if set\n\t\t\t\t\tif c.IsSet(\"host-id\") {\n\t\t\t\t\t\tconfig.Set(\"host.id\", c.String(\"host-id\")) // set/override the host-id using CLI.\n\t\t\t\t\t}\n\n\t\t\t\t\tif c.Bool(\"debug\") {\n\t\t\t\t\t\tconfig.Set(\"log.level\", \"DEBUG\")\n\t\t\t\t\t}\n\n\t\t\t\t\tif c.IsSet(\"log-file\") {\n\t\t\t\t\t\tconfig.Set(\"log.file\", c.String(\"log-file\"))\n\t\t\t\t\t}\n\n\t\t\t\t\tif c.IsSet(\"api-endpoint\") {\n\t\t\t\t\t\t//if the user is providing an api-endpoint with a basepath (eg. http://localhost:8080/scrutiny),\n\t\t\t\t\t\t//we need to ensure the basepath has a trailing slash, otherwise the url.Parse() path concatenation doesnt work.\n\t\t\t\t\t\tapiEndpoint := strings.TrimSuffix(c.String(\"api-endpoint\"), \"/\") + \"/\"\n\t\t\t\t\t\tconfig.Set(\"api.endpoint\", apiEndpoint)\n\t\t\t\t\t}\n\n\t\t\t\t\tcollectorLogger, logFile, err := CreateLogger(config)\n\t\t\t\t\tif logFile != nil {\n\t\t\t\t\t\tdefer logFile.Close()\n\t\t\t\t\t}\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\n\t\t\t\t\tsettingsData, err := json.MarshalIndent(config.AllSettings(), \"\", \"\\t\")\n\t\t\t\t\tcollectorLogger.Debug(string(settingsData), err)\n\t\t\t\t\tmetricCollector, err := collector.CreateMetricsCollector(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tcollectorLogger,\n\t\t\t\t\t\tconfig.GetString(\"api.endpoint\"),\n\t\t\t\t\t)\n\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\n\t\t\t\t\treturn metricCollector.Run()\n\t\t\t\t},\n\n\t\t\t\tFlags: []cli.Flag{\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:  \"config\",\n\t\t\t\t\t\tUsage: \"Specify the path to the devices file\",\n\t\t\t\t\t},\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:    \"api-endpoint\",\n\t\t\t\t\t\tUsage:   \"The api server endpoint\",\n\t\t\t\t\t\tEnvVars: []string{\"COLLECTOR_API_ENDPOINT\", \"SCRUTINY_API_ENDPOINT\"},\n\t\t\t\t\t\t//SCRUTINY_API_ENDPOINT is deprecated, but kept for backwards compatibility\n\t\t\t\t\t},\n\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:    \"log-file\",\n\t\t\t\t\t\tUsage:   \"Path to file for logging. Leave empty to use STDOUT\",\n\t\t\t\t\t\tEnvVars: []string{\"COLLECTOR_LOG_FILE\"},\n\t\t\t\t\t},\n\n\t\t\t\t\t&cli.BoolFlag{\n\t\t\t\t\t\tName:    \"debug\",\n\t\t\t\t\t\tUsage:   \"Enable debug logging\",\n\t\t\t\t\t\tEnvVars: []string{\"COLLECTOR_DEBUG\", \"DEBUG\"},\n\t\t\t\t\t},\n\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:    \"host-id\",\n\t\t\t\t\t\tUsage:   \"Host identifier/label, used for grouping devices\",\n\t\t\t\t\t\tValue:   \"\",\n\t\t\t\t\t\tEnvVars: []string{\"COLLECTOR_HOST_ID\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\terr = app.Run(os.Args)\n\tif err != nil {\n\t\tlog.Fatal(color.HiRedString(\"ERROR: %v\", err))\n\t}\n}\n\nfunc CreateLogger(appConfig config.Interface) (*logrus.Entry, *os.File, error) {\n\tlogger := logrus.WithFields(logrus.Fields{\n\t\t\"type\": \"metrics\",\n\t})\n\n\tif level, err := logrus.ParseLevel(appConfig.GetString(\"log.level\")); err == nil {\n\t\tlogger.Logger.SetLevel(level)\n\t} else {\n\t\tlogger.Logger.SetLevel(logrus.InfoLevel)\n\t}\n\n\tvar logFile *os.File\n\tvar err error\n\tif appConfig.IsSet(\"log.file\") && len(appConfig.GetString(\"log.file\")) > 0 {\n\t\tlogFile, err = os.OpenFile(appConfig.GetString(\"log.file\"), os.O_CREATE|os.O_WRONLY, 0644)\n\t\tif err != nil {\n\t\t\tlogger.Logger.Errorf(\"Failed to open log file %s for output: %s\", appConfig.GetString(\"log.file\"), err)\n\t\t\treturn nil, logFile, err\n\t\t}\n\t\tlogger.Logger.SetOutput(io.MultiWriter(os.Stderr, logFile))\n\t}\n\treturn logger, logFile, nil\n}\n"
  },
  {
    "path": "collector/cmd/collector-selftest/collector-selftest.go",
    "content": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/collector/pkg/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/version\"\n\t\"github.com/sirupsen/logrus\"\n\n\tutils \"github.com/analogj/go-util/utils\"\n\t\"github.com/fatih/color\"\n\t\"github.com/urfave/cli/v2\"\n)\n\nvar goos string\nvar goarch string\n\nfunc main() {\n\n\tcli.CommandHelpTemplate = `NAME:\n   {{.HelpName}} - {{.Usage}}\nUSAGE:\n   {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}{{if .Category}}\nCATEGORY:\n   {{.Category}}{{end}}{{if .Description}}\nDESCRIPTION:\n   {{.Description}}{{end}}{{if .VisibleFlags}}\nOPTIONS:\n   {{range .VisibleFlags}}{{.}}\n   {{end}}{{end}}\n`\n\n\tapp := &cli.App{\n\t\tName:     \"scrutiny-collector-selftest\",\n\t\tUsage:    \"smartctl self-test data collector for scrutiny\",\n\t\tVersion:  version.VERSION,\n\t\tCompiled: time.Now(),\n\t\tAuthors: []*cli.Author{\n\t\t\t{\n\t\t\t\tName:  \"Jason Kulatunga\",\n\t\t\t\tEmail: \"jason@thesparktree.com\",\n\t\t\t},\n\t\t},\n\t\tBefore: func(c *cli.Context) error {\n\n\t\t\tcollectorSelfTest := \"AnalogJ/scrutiny/selftest\"\n\n\t\t\tvar versionInfo string\n\t\t\tif len(goos) > 0 && len(goarch) > 0 {\n\t\t\t\tversionInfo = fmt.Sprintf(\"%s.%s-%s\", goos, goarch, version.VERSION)\n\t\t\t} else {\n\t\t\t\tversionInfo = fmt.Sprintf(\"dev-%s\", version.VERSION)\n\t\t\t}\n\n\t\t\tsubtitle := collectorSelfTest + utils.LeftPad2Len(versionInfo, \" \", 65-len(collectorSelfTest))\n\n\t\t\tcolor.New(color.FgGreen).Fprintf(c.App.Writer, utils.StripIndent(\n\t\t\t\t`\n\t\t\t ___   ___  ____  __  __  ____  ____  _  _  _  _\n\t\t\t/ __) / __)(  _ \\(  )(  )(_  _)(_  _)( \\( )( \\/ )\n\t\t\t\\__ \\( (__  )   / )(__)(   )(   _)(_  )  (  \\  /\n\t\t\t(___/ \\___)(_)\\_)(______) (__) (____)(_)\\_) (__)\n\t\t\t%s\n\n\t\t\t`), subtitle)\n\n\t\t\treturn nil\n\t\t},\n\n\t\tCommands: []*cli.Command{\n\t\t\t{\n\t\t\t\tName:  \"run\",\n\t\t\t\tUsage: \"Run the scrutiny self-test data collector\",\n\t\t\t\tAction: func(c *cli.Context) error {\n\n\t\t\t\t\tcollectorLogger := logrus.WithFields(logrus.Fields{\n\t\t\t\t\t\t\"type\": \"selftest\",\n\t\t\t\t\t})\n\n\t\t\t\t\tif c.Bool(\"debug\") {\n\t\t\t\t\t\tlogrus.SetLevel(logrus.DebugLevel)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogrus.SetLevel(logrus.InfoLevel)\n\t\t\t\t\t}\n\n\t\t\t\t\tif c.IsSet(\"log-file\") {\n\t\t\t\t\t\tlogFile, err := os.OpenFile(c.String(\"log-file\"), os.O_CREATE|os.O_WRONLY, 0644)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\tlogrus.Errorf(\"Failed to open log file %s for output: %s\", c.String(\"log-file\"), err)\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefer logFile.Close()\n\t\t\t\t\t\tlogrus.SetOutput(io.MultiWriter(os.Stderr, logFile))\n\t\t\t\t\t}\n\n\t\t\t\t\t//TODO: pass in the collector, use configuration from collector-metrics\n\t\t\t\t\tstCollector, err := collector.CreateSelfTestCollector(\n\t\t\t\t\t\tcollectorLogger,\n\t\t\t\t\t\tc.String(\"api-endpoint\"),\n\t\t\t\t\t)\n\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\n\t\t\t\t\treturn stCollector.Run()\n\t\t\t\t},\n\n\t\t\t\tFlags: []cli.Flag{\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:    \"api-endpoint\",\n\t\t\t\t\t\tUsage:   \"The api server endpoint\",\n\t\t\t\t\t\tValue:   \"http://localhost:8080\",\n\t\t\t\t\t\tEnvVars: []string{\"COLLECTOR_API_ENDPOINT\"},\n\t\t\t\t\t},\n\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:    \"log-file\",\n\t\t\t\t\t\tUsage:   \"Path to file for logging. Leave empty to use STDOUT\",\n\t\t\t\t\t\tValue:   \"\",\n\t\t\t\t\t\tEnvVars: []string{\"COLLECTOR_LOG_FILE\"},\n\t\t\t\t\t},\n\n\t\t\t\t\t&cli.BoolFlag{\n\t\t\t\t\t\tName:    \"debug\",\n\t\t\t\t\t\tUsage:   \"Enable debug logging\",\n\t\t\t\t\t\tEnvVars: []string{\"COLLECTOR_DEBUG\", \"DEBUG\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\terr := app.Run(os.Args)\n\tif err != nil {\n\t\tlog.Fatal(color.HiRedString(\"ERROR: %v\", err))\n\t}\n\n}\n"
  },
  {
    "path": "collector/pkg/collector/base.go",
    "content": "package collector\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar httpClient = &http.Client{Timeout: 60 * time.Second}\n\ntype BaseCollector struct {\n\tlogger *logrus.Entry\n}\n\nfunc (c *BaseCollector) postJson(url string, body interface{}, target interface{}) error {\n\trequestBody, err := json.Marshal(body)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tr, err := httpClient.Post(url, \"application/json\", bytes.NewBuffer(requestBody))\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer r.Body.Close()\n\n\treturn json.NewDecoder(r.Body).Decode(target)\n}\n\n// http://www.linuxguide.it/command_line/linux-manpage/do.php?file=smartctl#sect7\nfunc (c *BaseCollector) LogSmartctlExitCode(exitCode int) {\n\tif exitCode&0x01 != 0 {\n\t\tc.logger.Errorln(\"smartctl could not parse commandline\")\n\t} else if exitCode&0x02 != 0 {\n\t\tc.logger.Errorln(\"smartctl could not open device\")\n\t} else if exitCode&0x04 != 0 {\n\t\tc.logger.Errorln(\"smartctl detected a checksum error\")\n\t} else if exitCode&0x08 != 0 {\n\t\tc.logger.Errorln(\"smartctl detected a failing disk \")\n\t} else if exitCode&0x10 != 0 {\n\t\tc.logger.Errorln(\"smartctl detected a disk in pre-fail\")\n\t} else if exitCode&0x20 != 0 {\n\t\tc.logger.Errorln(\"smartctl detected a disk close to failure\")\n\t} else if exitCode&0x40 != 0 {\n\t\tc.logger.Errorln(\"smartctl detected a error log with errors\")\n\t} else if exitCode&0x80 != 0 {\n\t\tc.logger.Errorln(\"smartctl detected a self test log with errors\")\n\t}\n}\n"
  },
  {
    "path": "collector/pkg/collector/metrics.go",
    "content": "package collector\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/collector/pkg/common/shell\"\n\t\"github.com/analogj/scrutiny/collector/pkg/config\"\n\t\"github.com/analogj/scrutiny/collector/pkg/detect\"\n\t\"github.com/analogj/scrutiny/collector/pkg/errors\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/samber/lo\"\n\t\"github.com/sirupsen/logrus\"\n)\n\ntype MetricsCollector struct {\n\tconfig config.Interface\n\tBaseCollector\n\tapiEndpoint *url.URL\n\tshell       shell.Interface\n}\n\nfunc CreateMetricsCollector(appConfig config.Interface, logger *logrus.Entry, apiEndpoint string) (MetricsCollector, error) {\n\tapiEndpointUrl, err := url.Parse(apiEndpoint)\n\tif err != nil {\n\t\treturn MetricsCollector{}, err\n\t}\n\n\tsc := MetricsCollector{\n\t\tconfig:      appConfig,\n\t\tapiEndpoint: apiEndpointUrl,\n\t\tBaseCollector: BaseCollector{\n\t\t\tlogger: logger,\n\t\t},\n\t\tshell: shell.Create(),\n\t}\n\n\treturn sc, nil\n}\n\nfunc (mc *MetricsCollector) Run() error {\n\terr := mc.Validate()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tapiEndpoint, _ := url.Parse(mc.apiEndpoint.String())\n\tapiEndpoint, _ = apiEndpoint.Parse(\"api/devices/register\") //this acts like filepath.Join()\n\n\tdeviceRespWrapper := new(models.DeviceWrapper)\n\n\tdeviceDetector := detect.Detect{\n\t\tLogger: mc.logger,\n\t\tConfig: mc.config,\n\t}\n\trawDetectedStorageDevices, err := deviceDetector.Start()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t//filter any device with empty wwn (they are invalid)\n\tdetectedStorageDevices := lo.Filter[models.Device](rawDetectedStorageDevices, func(dev models.Device, _ int) bool {\n\t\treturn len(dev.WWN) > 0\n\t})\n\n\tmc.logger.Infoln(\"Sending detected devices to API, for filtering & validation\")\n\tjsonObj, _ := json.Marshal(detectedStorageDevices)\n\tmc.logger.Debugf(\"Detected devices: %v\", string(jsonObj))\n\terr = mc.postJson(apiEndpoint.String(), models.DeviceWrapper{\n\t\tData: detectedStorageDevices,\n\t}, &deviceRespWrapper)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !deviceRespWrapper.Success {\n\t\tmc.logger.Errorln(\"An error occurred while retrieving filtered devices\")\n\t\tmc.logger.Debugln(deviceRespWrapper)\n\t\treturn errors.ApiServerCommunicationError(\"An error occurred while retrieving filtered devices\")\n\t} else {\n\t\tmc.logger.Debugln(deviceRespWrapper)\n\t\t//var wg sync.WaitGroup\n\t\tfor _, device := range deviceRespWrapper.Data {\n\t\t\t// execute collection in parallel go-routines\n\t\t\t//wg.Add(1)\n\t\t\t//go mc.Collect(&wg, device.WWN, device.DeviceName, device.DeviceType)\n\t\t\tmc.Collect(device.WWN, device.DeviceName, device.DeviceType)\n\n\t\t\tif mc.config.GetInt(\"commands.metrics_smartctl_wait\") > 0 {\n\t\t\t\ttime.Sleep(time.Duration(mc.config.GetInt(\"commands.metrics_smartctl_wait\")) * time.Second)\n\t\t\t}\n\t\t}\n\n\t\t//mc.logger.Infoln(\"Main: Waiting for workers to finish\")\n\t\t//wg.Wait()\n\t\tmc.logger.Infoln(\"Main: Completed\")\n\t}\n\n\treturn nil\n}\n\nfunc (mc *MetricsCollector) Validate() error {\n\tmc.logger.Infoln(\"Verifying required tools\")\n\t_, lookErr := exec.LookPath(mc.config.GetString(\"commands.metrics_smartctl_bin\"))\n\n\tif lookErr != nil {\n\t\treturn errors.DependencyMissingError(fmt.Sprintf(\"%s binary is missing\", mc.config.GetString(\"commands.metrics_smartctl_bin\")))\n\t}\n\n\treturn nil\n}\n\n// func (mc *MetricsCollector) Collect(wg *sync.WaitGroup, deviceWWN string, deviceName string, deviceType string) {\nfunc (mc *MetricsCollector) Collect(deviceWWN string, deviceName string, deviceType string) {\n\t//defer wg.Done()\n\tif len(deviceWWN) == 0 {\n\t\tmc.logger.Errorf(\"no device WWN detected for %s. Skipping collection for this device (no data association possible).\\n\", deviceName)\n\t\treturn\n\t}\n\tmc.logger.Infof(\"Collecting smartctl results for %s\\n\", deviceName)\n\n\tfullDeviceName := fmt.Sprintf(\"%s%s\", detect.DevicePrefix(), deviceName)\n\targs := strings.Split(mc.config.GetCommandMetricsSmartArgs(fullDeviceName), \" \")\n\t//only include the device type if its a non-standard one. In some cases ata drives are detected as scsi in docker, and metadata is lost.\n\tif len(deviceType) > 0 && deviceType != \"scsi\" && deviceType != \"ata\" {\n\t\targs = append(args, \"--device\", deviceType)\n\t}\n\targs = append(args, fullDeviceName)\n\n\tresult, err := mc.shell.Command(mc.logger, mc.config.GetString(\"commands.metrics_smartctl_bin\"), args, \"\", os.Environ())\n\tresultBytes := []byte(result)\n\tif err != nil {\n\t\tif exitError, ok := err.(*exec.ExitError); ok {\n\t\t\t// smartctl command exited with an error, we should still push the data to the API server\n\t\t\tmc.logger.Errorf(\"smartctl returned an error code (%d) while processing %s\\n\", exitError.ExitCode(), deviceName)\n\t\t\tmc.LogSmartctlExitCode(exitError.ExitCode())\n\t\t\tmc.Publish(deviceWWN, resultBytes)\n\t\t} else {\n\t\t\tmc.logger.Errorf(\"error while attempting to execute smartctl: %s\\n\", deviceName)\n\t\t\tmc.logger.Errorf(\"ERROR MESSAGE: %v\", err)\n\t\t\tmc.logger.Errorf(\"IGNORING RESULT: %v\", result)\n\t\t}\n\t\treturn\n\t} else {\n\t\t//successful run, pass the results directly to webapp backend for parsing and processing.\n\t\tmc.Publish(deviceWWN, resultBytes)\n\t}\n}\n\nfunc (mc *MetricsCollector) Publish(deviceWWN string, payload []byte) error {\n\tmc.logger.Infof(\"Publishing smartctl results for %s\\n\", deviceWWN)\n\n\tapiEndpoint, _ := url.Parse(mc.apiEndpoint.String())\n\tapiEndpoint, _ = apiEndpoint.Parse(fmt.Sprintf(\"api/device/%s/smart\", strings.ToLower(deviceWWN)))\n\n\tresp, err := httpClient.Post(apiEndpoint.String(), \"application/json\", bytes.NewBuffer(payload))\n\tif err != nil {\n\t\tmc.logger.Errorf(\"An error occurred while publishing SMART data for device (%s): %v\", deviceWWN, err)\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n"
  },
  {
    "path": "collector/pkg/collector/metrics_test.go",
    "content": "package collector\n\nimport (\n\t\"github.com/stretchr/testify/require\"\n\t\"net/url\"\n\t\"testing\"\n)\n\nfunc TestApiEndpointParse(t *testing.T) {\n\tbaseURL, _ := url.Parse(\"http://localhost:8080/\")\n\n\turl1, _ := baseURL.Parse(\"d/e\")\n\trequire.Equal(t, \"http://localhost:8080/d/e\", url1.String())\n\n\turl2, _ := baseURL.Parse(\"/d/e\")\n\trequire.Equal(t, \"http://localhost:8080/d/e\", url2.String())\n}\n\nfunc TestApiEndpointParse_WithBasepathWithoutTrailingSlash(t *testing.T) {\n\tbaseURL, _ := url.Parse(\"http://localhost:8080/scrutiny\")\n\n\t//This testcase is unexpected and can cause issues. We need to ensure the apiEndpoint always has a trailing slash.\n\turl1, _ := baseURL.Parse(\"d/e\")\n\trequire.Equal(t, \"http://localhost:8080/d/e\", url1.String())\n\n\turl2, _ := baseURL.Parse(\"/d/e\")\n\trequire.Equal(t, \"http://localhost:8080/d/e\", url2.String())\n}\n\nfunc TestApiEndpointParse_WithBasepathWithTrailingSlash(t *testing.T) {\n\tbaseURL, _ := url.Parse(\"http://localhost:8080/scrutiny/\")\n\n\turl1, _ := baseURL.Parse(\"d/e\")\n\trequire.Equal(t, \"http://localhost:8080/scrutiny/d/e\", url1.String())\n\n\turl2, _ := baseURL.Parse(\"/d/e\")\n\trequire.Equal(t, \"http://localhost:8080/d/e\", url2.String())\n}\n"
  },
  {
    "path": "collector/pkg/collector/selftest.go",
    "content": "package collector\n\nimport (\n\t\"github.com/sirupsen/logrus\"\n\t\"net/url\"\n)\n\ntype SelfTestCollector struct {\n\tBaseCollector\n\n\tapiEndpoint *url.URL\n\tlogger      *logrus.Entry\n}\n\nfunc CreateSelfTestCollector(logger *logrus.Entry, apiEndpoint string) (SelfTestCollector, error) {\n\tapiEndpointUrl, err := url.Parse(apiEndpoint)\n\tif err != nil {\n\t\treturn SelfTestCollector{}, err\n\t}\n\n\tstc := SelfTestCollector{\n\t\tapiEndpoint: apiEndpointUrl,\n\t\tlogger:      logger,\n\t}\n\n\treturn stc, nil\n}\n\nfunc (sc *SelfTestCollector) Run() error {\n\treturn nil\n}\n"
  },
  {
    "path": "collector/pkg/common/shell/factory.go",
    "content": "package shell\n\nfunc Create() Interface {\n\treturn new(localShell)\n}\n"
  },
  {
    "path": "collector/pkg/common/shell/interface.go",
    "content": "package shell\n\nimport (\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Create mock using:\n// mockgen -source=collector/pkg/common/shell/interface.go -destination=collector/pkg/common/shell/mock/mock_shell.go\ntype Interface interface {\n\tCommand(logger *logrus.Entry, cmdName string, cmdArgs []string, workingDir string, environ []string) (string, error)\n}\n"
  },
  {
    "path": "collector/pkg/common/shell/local_shell.go",
    "content": "package shell\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\ntype localShell struct{}\n\nfunc (s *localShell) Command(logger *logrus.Entry, cmdName string, cmdArgs []string, workingDir string, environ []string) (string, error) {\n\tlogger.Infof(\"Executing command: %s %s\", cmdName, strings.Join(cmdArgs, \" \"))\n\n\tcmd := exec.Command(cmdName, cmdArgs...)\n\tvar stdBuffer bytes.Buffer\n\n\tlogWriters := []io.Writer{\n\t\t&stdBuffer,\n\t}\n\tif logger.Logger.Level == logrus.DebugLevel {\n\t\tlogWriters = append(logWriters, logger.Logger.Out)\n\t}\n\n\tmw := io.MultiWriter(logWriters...)\n\n\tcmd.Stdout = mw\n\tcmd.Stderr = mw\n\n\tif environ != nil {\n\t\tcmd.Env = environ\n\t}\n\tif workingDir != \"\" && path.IsAbs(workingDir) {\n\t\tcmd.Dir = workingDir\n\t} else if workingDir != \"\" {\n\t\treturn \"\", errors.New(\"working directory must be an absolute path\")\n\t}\n\n\terr := cmd.Run()\n\treturn stdBuffer.String(), err\n\n}\n"
  },
  {
    "path": "collector/pkg/common/shell/local_shell_test.go",
    "content": "package shell\n\nimport (\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/require\"\n\t\"os/exec\"\n\t\"testing\"\n)\n\nfunc TestLocalShellCommand(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestShell := localShell{}\n\t//test\n\tresult, err := testShell.Command(logrus.WithField(\"exec\", \"test\"), \"echo\", []string{\"hello world\"}, \"\", nil)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"hello world\\n\", result)\n}\n\nfunc TestLocalShellCommand_Date(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestShell := localShell{}\n\n\t//test\n\t_, err := testShell.Command(logrus.WithField(\"exec\", \"test\"), \"date\", []string{}, \"\", nil)\n\n\t//assert\n\trequire.NoError(t, err)\n}\n\n//\n//func TestExecCmd_Error(t *testing.T) {\n//\tt.Parallel()\n//\n//\t//setup\n//\tbc := collector.BaseCollector {}\n//\n//\t//test\n//\t_, err := bc.ExecCmd(\"smartctl\", []string{\"-a\", \"/dev/doesnotexist\"}, \"\", nil)\n//\n//\t//assert\n//\texitError, castOk := err.(*exec.ExitError);\n//\trequire.True(t, castOk)\n//\trequire.Equal(t, 1, exitError.ExitCode())\n//\n//}\n//\n\nfunc TestLocalShellCommand_InvalidCommand(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestShell := localShell{}\n\n\t//test\n\t_, err := testShell.Command(logrus.WithField(\"exec\", \"test\"), \"invalid_binary\", []string{}, \"\", nil)\n\n\t//assert\n\t_, castOk := err.(*exec.ExitError)\n\trequire.False(t, castOk)\n}\n"
  },
  {
    "path": "collector/pkg/common/shell/mock/mock_shell.go",
    "content": "// Code generated by MockGen. DO NOT EDIT.\n// Source: collector/pkg/common/shell/interface.go\n\n// Package mock_shell is a generated GoMock package.\npackage mock_shell\n\nimport (\n\treflect \"reflect\"\n\n\tlogrus \"github.com/sirupsen/logrus\"\n\tgomock \"go.uber.org/mock/gomock\"\n)\n\n// MockInterface is a mock of Interface interface.\ntype MockInterface struct {\n\tctrl     *gomock.Controller\n\trecorder *MockInterfaceMockRecorder\n}\n\n// MockInterfaceMockRecorder is the mock recorder for MockInterface.\ntype MockInterfaceMockRecorder struct {\n\tmock *MockInterface\n}\n\n// NewMockInterface creates a new mock instance.\nfunc NewMockInterface(ctrl *gomock.Controller) *MockInterface {\n\tmock := &MockInterface{ctrl: ctrl}\n\tmock.recorder = &MockInterfaceMockRecorder{mock}\n\treturn mock\n}\n\n// EXPECT returns an object that allows the caller to indicate expected use.\nfunc (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {\n\treturn m.recorder\n}\n\n// Command mocks base method.\nfunc (m *MockInterface) Command(logger *logrus.Entry, cmdName string, cmdArgs []string, workingDir string, environ []string) (string, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Command\", logger, cmdName, cmdArgs, workingDir, environ)\n\tret0, _ := ret[0].(string)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// Command indicates an expected call of Command.\nfunc (mr *MockInterfaceMockRecorder) Command(logger, cmdName, cmdArgs, workingDir, environ interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Command\", reflect.TypeOf((*MockInterface)(nil).Command), logger, cmdName, cmdArgs, workingDir, environ)\n}\n"
  },
  {
    "path": "collector/pkg/config/config.go",
    "content": "package config\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/analogj/go-util/utils\"\n\t\"github.com/analogj/scrutiny/collector/pkg/errors\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/go-viper/mapstructure/v2\"\n\t\"github.com/spf13/viper\"\n)\n\n// When initializing this class the following methods must be called:\n// Config.New\n// Config.Init\n// This is done automatically when created via the Factory.\ntype configuration struct {\n\t*viper.Viper\n\n\tdeviceOverrides []models.ScanOverride\n}\n\n//Viper uses the following precedence order. Each item takes precedence over the item below it:\n// explicit call to Set\n// flag\n// env\n// config\n// key/value store\n// default\n\nfunc (c *configuration) Init() error {\n\tc.Viper = viper.New()\n\t//set defaults\n\tc.SetDefault(\"host.id\", \"\")\n\n\tc.SetDefault(\"devices\", []string{})\n\n\tc.SetDefault(\"log.level\", \"INFO\")\n\tc.SetDefault(\"log.file\", \"\")\n\n\tc.SetDefault(\"api.endpoint\", \"http://localhost:8080\")\n\n\tc.SetDefault(\"commands.metrics_smartctl_bin\", \"smartctl\")\n\tc.SetDefault(\"commands.metrics_scan_args\", \"--scan --json\")\n\tc.SetDefault(\"commands.metrics_info_args\", \"--info --json\")\n\tc.SetDefault(\"commands.metrics_smart_args\", \"--xall --json\")\n\tc.SetDefault(\"commands.metrics_smartctl_wait\", 0)\n\n\t//configure env variable parsing.\n\tc.SetEnvPrefix(\"COLLECTOR\")\n\tc.SetEnvKeyReplacer(strings.NewReplacer(\"-\", \"_\", \".\", \"_\"))\n\tc.AutomaticEnv()\n\n\t//c.SetDefault(\"collect.short.command\", \"-a -o on -S on\")\n\n\tc.SetDefault(\"allow_listed_devices\", []string{})\n\n\t//if you want to load a non-standard location system config file (~/drawbridge.yml), use ReadConfig\n\tc.SetConfigType(\"yaml\")\n\t//c.SetConfigName(\"drawbridge\")\n\t//c.AddConfigPath(\"$HOME/\")\n\n\t//CLI options will be added via the `Set()` function\n\treturn nil\n}\n\nfunc (c *configuration) ReadConfig(configFilePath string) error {\n\tconfigFilePath, err := utils.ExpandPath(configFilePath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !utils.FileExists(configFilePath) {\n\t\tlog.Printf(\"No configuration file found at %v. Using Defaults.\", configFilePath)\n\t\treturn errors.ConfigFileMissingError(\"The configuration file could not be found.\")\n\t}\n\n\t//validate config file contents\n\t//err = c.ValidateConfigFile(configFilePath)\n\t//if err != nil {\n\t//\tlog.Printf(\"Config file at `%v` is invalid: %s\", configFilePath, err)\n\t//\treturn err\n\t//}\n\n\tlog.Printf(\"Loading configuration file: %s\", configFilePath)\n\n\tconfig_data, err := os.Open(configFilePath)\n\tif err != nil {\n\t\tlog.Printf(\"Error reading configuration file: %s\", err)\n\t\treturn err\n\t}\n\n\terr = c.MergeConfig(config_data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn c.ValidateConfig()\n}\n\n// This function ensures that the merged config works correctly.\nfunc (c *configuration) ValidateConfig() error {\n\n\t//TODO:\n\t// check that device prefix matches OS\n\t// check that schema of config file is valid\n\n\t// check that the collector commands are valid\n\tcommandArgStrings := map[string]string{\n\t\t\"commands.metrics_scan_args\":  c.GetString(\"commands.metrics_scan_args\"),\n\t\t\"commands.metrics_info_args\":  c.GetString(\"commands.metrics_info_args\"),\n\t\t\"commands.metrics_smart_args\": c.GetString(\"commands.metrics_smart_args\"),\n\t}\n\n\terrorStrings := []string{}\n\tfor configKey, commandArgString := range commandArgStrings {\n\t\targs := strings.Split(commandArgString, \" \")\n\t\t//ensure that the args string contains `--json` or `-j` flag\n\t\tcontainsJsonFlag := false\n\t\tcontainsDeviceFlag := false\n\t\tfor _, flag := range args {\n\t\t\tif strings.HasPrefix(flag, \"--json\") || strings.HasPrefix(flag, \"-j\") {\n\t\t\t\tcontainsJsonFlag = true\n\t\t\t}\n\t\t\tif strings.HasPrefix(flag, \"--device\") || strings.HasPrefix(flag, \"-d\") {\n\t\t\t\tcontainsDeviceFlag = true\n\t\t\t}\n\t\t}\n\n\t\tif !containsJsonFlag {\n\t\t\terrorStrings = append(errorStrings, fmt.Sprintf(\"configuration key '%s' is missing '--json' flag\", configKey))\n\t\t}\n\n\t\tif containsDeviceFlag {\n\t\t\terrorStrings = append(errorStrings, fmt.Sprintf(\"configuration key '%s' must not contain '--device' or '-d' flag\", configKey))\n\t\t}\n\t}\n\t//sort(errorStrings)\n\tsort.Strings(errorStrings)\n\n\tif len(errorStrings) == 0 {\n\t\treturn nil\n\t} else {\n\t\treturn errors.ConfigValidationError(strings.Join(errorStrings, \", \"))\n\t}\n}\n\nfunc (c *configuration) GetDeviceOverrides() []models.ScanOverride {\n\t// we have to support 2 types of device types.\n\t// - simple device type (device_type: 'sat')\n\t// and list of device types (type: \\n- 3ware,0 \\n- 3ware,1 \\n- 3ware,2)\n\t// GetString will return \"\" if this is a list of device types.\n\n\tif c.deviceOverrides == nil {\n\t\toverrides := []models.ScanOverride{}\n\t\tc.UnmarshalKey(\"devices\", &overrides, func(c *mapstructure.DecoderConfig) { c.WeaklyTypedInput = true })\n\t\tc.deviceOverrides = overrides\n\t}\n\n\treturn c.deviceOverrides\n}\n\nfunc (c *configuration) GetCommandMetricsInfoArgs(deviceName string) string {\n\toverrides := c.GetDeviceOverrides()\n\n\tfor _, deviceOverrides := range overrides {\n\t\tif strings.EqualFold(deviceName, deviceOverrides.Device) {\n\t\t\t//found matching device\n\t\t\tif len(deviceOverrides.Commands.MetricsInfoArgs) > 0 {\n\t\t\t\treturn deviceOverrides.Commands.MetricsInfoArgs\n\t\t\t} else {\n\t\t\t\treturn c.GetString(\"commands.metrics_info_args\")\n\t\t\t}\n\t\t}\n\t}\n\treturn c.GetString(\"commands.metrics_info_args\")\n}\n\nfunc (c *configuration) GetCommandMetricsSmartArgs(deviceName string) string {\n\toverrides := c.GetDeviceOverrides()\n\n\tfor _, deviceOverrides := range overrides {\n\t\tif strings.EqualFold(deviceName, deviceOverrides.Device) {\n\t\t\t//found matching device\n\t\t\tif len(deviceOverrides.Commands.MetricsSmartArgs) > 0 {\n\t\t\t\treturn deviceOverrides.Commands.MetricsSmartArgs\n\t\t\t} else {\n\t\t\t\treturn c.GetString(\"commands.metrics_smart_args\")\n\t\t\t}\n\t\t}\n\t}\n\treturn c.GetString(\"commands.metrics_smart_args\")\n}\n\nfunc (c *configuration) IsAllowlistedDevice(deviceName string) bool {\n\tallowList := c.GetStringSlice(\"allow_listed_devices\")\n\tif len(allowList) == 0 {\n\t\treturn true\n\t}\n\n\tfor _, item := range allowList {\n\t\tif item == deviceName {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "collector/pkg/config/config_test.go",
    "content": "package config_test\n\nimport (\n\t\"github.com/analogj/scrutiny/collector/pkg/config\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/stretchr/testify/require\"\n\t\"path\"\n\t\"testing\"\n)\n\nfunc TestConfiguration_InvalidConfigPath(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(\"does_not_exist.yaml\")\n\n\t//assert\n\trequire.Error(t, err, \"should return an error\")\n}\n\nfunc TestConfiguration_GetScanOverrides_Simple(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"simple_device.yaml\"))\n\trequire.NoError(t, err, \"should correctly load simple device config\")\n\tscanOverrides := testConfig.GetDeviceOverrides()\n\n\t//assert\n\trequire.Equal(t, []models.ScanOverride{{Device: \"/dev/sda\", DeviceType: []string{\"sat\"}, Ignore: false}}, scanOverrides)\n}\n\n// fixes #418\nfunc TestConfiguration_GetScanOverrides_DeviceTypeComma(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"device_type_comma.yaml\"))\n\trequire.NoError(t, err, \"should correctly load simple device config\")\n\tscanOverrides := testConfig.GetDeviceOverrides()\n\n\t//assert\n\trequire.Equal(t, []models.ScanOverride{\n\t\t{Device: \"/dev/sda\", DeviceType: []string{\"sat\", \"auto\"}, Ignore: false},\n\t\t{Device: \"/dev/sdb\", DeviceType: []string{\"sat,auto\"}, Ignore: false},\n\t}, scanOverrides)\n}\n\nfunc TestConfiguration_GetScanOverrides_Ignore(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"ignore_device.yaml\"))\n\trequire.NoError(t, err, \"should correctly load ignore device config\")\n\tscanOverrides := testConfig.GetDeviceOverrides()\n\n\t//assert\n\trequire.Equal(t, []models.ScanOverride{{Device: \"/dev/sda\", DeviceType: nil, Ignore: true}}, scanOverrides)\n}\n\nfunc TestConfiguration_GetScanOverrides_Raid(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"raid_device.yaml\"))\n\trequire.NoError(t, err, \"should correctly load ignore device config\")\n\tscanOverrides := testConfig.GetDeviceOverrides()\n\n\t//assert\n\trequire.Equal(t, []models.ScanOverride{\n\t\t{\n\t\t\tDevice:     \"/dev/bus/0\",\n\t\t\tDeviceType: []string{\"megaraid,14\", \"megaraid,15\", \"megaraid,18\", \"megaraid,19\", \"megaraid,20\", \"megaraid,21\"},\n\t\t\tIgnore:     false,\n\t\t},\n\t\t{\n\t\t\tDevice:     \"/dev/twa0\",\n\t\t\tDeviceType: []string{\"3ware,0\", \"3ware,1\", \"3ware,2\", \"3ware,3\", \"3ware,4\", \"3ware,5\"},\n\t\t\tIgnore:     false,\n\t\t}}, scanOverrides)\n}\n\nfunc TestConfiguration_InvalidCommands_MissingJson(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"invalid_commands_missing_json.yaml\"))\n\trequire.EqualError(t, err, `ConfigValidationError: \"configuration key 'commands.metrics_scan_args' is missing '--json' flag\"`, \"should throw an error because json flag is missing\")\n}\n\nfunc TestConfiguration_InvalidCommands_IncludesDevice(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"invalid_commands_includes_device.yaml\"))\n\trequire.EqualError(t, err, `ConfigValidationError: \"configuration key 'commands.metrics_info_args' must not contain '--device' or '-d' flag, configuration key 'commands.metrics_smart_args' must not contain '--device' or '-d' flag\"`, \"should throw an error because device flags detected\")\n}\n\nfunc TestConfiguration_OverrideCommands(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"override_commands.yaml\"))\n\trequire.NoError(t, err, \"should not throw an error\")\n\trequire.Equal(t, \"--xall --json -T permissive\", testConfig.GetString(\"commands.metrics_smart_args\"))\n}\n\nfunc TestConfiguration_OverrideDeviceCommands_MetricsInfoArgs(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\ttestConfig, _ := config.Create()\n\n\t//test\n\terr := testConfig.ReadConfig(path.Join(\"testdata\", \"override_device_commands.yaml\"))\n\trequire.NoError(t, err, \"should correctly override device command\")\n\n\t//assert\n\trequire.Equal(t, \"--info --json -T permissive\", testConfig.GetCommandMetricsInfoArgs(\"/dev/sda\"))\n\trequire.Equal(t, \"--info --json\", testConfig.GetCommandMetricsInfoArgs(\"/dev/sdb\"))\n\t//require.Equal(t, []models.ScanOverride{{Device: \"/dev/sda\", DeviceType: nil, Commands: {MetricsInfoArgs: \"--info --json -T \"}}}, scanOverrides)\n}\n\nfunc TestConfiguration_DeviceAllowList(t *testing.T) {\n\tt.Parallel()\n\n\tt.Run(\"present\", func(t *testing.T) {\n\t\ttestConfig, err := config.Create()\n\t\trequire.NoError(t, err)\n\n\t\trequire.NoError(t, testConfig.ReadConfig(path.Join(\"testdata\", \"allow_listed_devices_present.yaml\")))\n\n\t\trequire.True(t, testConfig.IsAllowlistedDevice(\"/dev/sda\"), \"/dev/sda should be allow listed\")\n\t\trequire.False(t, testConfig.IsAllowlistedDevice(\"/dev/sdc\"), \"/dev/sda should not be allow listed\")\n\t})\n\n\tt.Run(\"missing\", func(t *testing.T) {\n\t\ttestConfig, err := config.Create()\n\t\trequire.NoError(t, err)\n\n\t\t// Really just any other config where the key is full missing\n\t\trequire.NoError(t, testConfig.ReadConfig(path.Join(\"testdata\", \"override_device_commands.yaml\")))\n\n\t\t// Anything should be allow listed if the key isnt there\n\t\trequire.True(t, testConfig.IsAllowlistedDevice(\"/dev/sda\"), \"/dev/sda should be allow listed\")\n\t\trequire.True(t, testConfig.IsAllowlistedDevice(\"/dev/sdc\"), \"/dev/sda should be allow listed\")\n\t})\n}\n"
  },
  {
    "path": "collector/pkg/config/factory.go",
    "content": "package config\n\nfunc Create() (Interface, error) {\n\tconfig := new(configuration)\n\tif err := config.Init(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn config, nil\n}\n"
  },
  {
    "path": "collector/pkg/config/interface.go",
    "content": "package config\n\nimport (\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/spf13/viper\"\n)\n\n// Create mock using:\n// mockgen -source=collector/pkg/config/interface.go -destination=collector/pkg/config/mock/mock_config.go\ntype Interface interface {\n\tInit() error\n\tReadConfig(configFilePath string) error\n\tSet(key string, value interface{})\n\tSetDefault(key string, value interface{})\n\n\tAllSettings() map[string]interface{}\n\tIsSet(key string) bool\n\tGet(key string) interface{}\n\tGetBool(key string) bool\n\tGetInt(key string) int\n\tGetString(key string) string\n\tGetStringSlice(key string) []string\n\tUnmarshalKey(key string, rawVal interface{}, decoderOpts ...viper.DecoderConfigOption) error\n\n\tGetDeviceOverrides() []models.ScanOverride\n\tGetCommandMetricsInfoArgs(deviceName string) string\n\tGetCommandMetricsSmartArgs(deviceName string) string\n\n\tIsAllowlistedDevice(deviceName string) bool\n}\n"
  },
  {
    "path": "collector/pkg/config/mock/mock_config.go",
    "content": "// Code generated by MockGen. DO NOT EDIT.\n// Source: collector/pkg/config/interface.go\n\n// Package mock_config is a generated GoMock package.\npackage mock_config\n\nimport (\n\treflect \"reflect\"\n\n\tmodels \"github.com/analogj/scrutiny/collector/pkg/models\"\n\tviper \"github.com/spf13/viper\"\n\tgomock \"go.uber.org/mock/gomock\"\n)\n\n// MockInterface is a mock of Interface interface.\ntype MockInterface struct {\n\tctrl     *gomock.Controller\n\trecorder *MockInterfaceMockRecorder\n}\n\n// MockInterfaceMockRecorder is the mock recorder for MockInterface.\ntype MockInterfaceMockRecorder struct {\n\tmock *MockInterface\n}\n\n// NewMockInterface creates a new mock instance.\nfunc NewMockInterface(ctrl *gomock.Controller) *MockInterface {\n\tmock := &MockInterface{ctrl: ctrl}\n\tmock.recorder = &MockInterfaceMockRecorder{mock}\n\treturn mock\n}\n\n// EXPECT returns an object that allows the caller to indicate expected use.\nfunc (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {\n\treturn m.recorder\n}\n\n// AllSettings mocks base method.\nfunc (m *MockInterface) AllSettings() map[string]interface{} {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"AllSettings\")\n\tret0, _ := ret[0].(map[string]interface{})\n\treturn ret0\n}\n\n// AllSettings indicates an expected call of AllSettings.\nfunc (mr *MockInterfaceMockRecorder) AllSettings() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"AllSettings\", reflect.TypeOf((*MockInterface)(nil).AllSettings))\n}\n\n// Get mocks base method.\nfunc (m *MockInterface) Get(key string) interface{} {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Get\", key)\n\tret0, _ := ret[0].(interface{})\n\treturn ret0\n}\n\n// Get indicates an expected call of Get.\nfunc (mr *MockInterfaceMockRecorder) Get(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Get\", reflect.TypeOf((*MockInterface)(nil).Get), key)\n}\n\n// GetBool mocks base method.\nfunc (m *MockInterface) GetBool(key string) bool {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetBool\", key)\n\tret0, _ := ret[0].(bool)\n\treturn ret0\n}\n\n// GetBool indicates an expected call of GetBool.\nfunc (mr *MockInterfaceMockRecorder) GetBool(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetBool\", reflect.TypeOf((*MockInterface)(nil).GetBool), key)\n}\n\n// GetCommandMetricsInfoArgs mocks base method.\nfunc (m *MockInterface) GetCommandMetricsInfoArgs(deviceName string) string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetCommandMetricsInfoArgs\", deviceName)\n\tret0, _ := ret[0].(string)\n\treturn ret0\n}\n\n// GetCommandMetricsInfoArgs indicates an expected call of GetCommandMetricsInfoArgs.\nfunc (mr *MockInterfaceMockRecorder) GetCommandMetricsInfoArgs(deviceName interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetCommandMetricsInfoArgs\", reflect.TypeOf((*MockInterface)(nil).GetCommandMetricsInfoArgs), deviceName)\n}\n\n// GetCommandMetricsSmartArgs mocks base method.\nfunc (m *MockInterface) GetCommandMetricsSmartArgs(deviceName string) string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetCommandMetricsSmartArgs\", deviceName)\n\tret0, _ := ret[0].(string)\n\treturn ret0\n}\n\n// GetCommandMetricsSmartArgs indicates an expected call of GetCommandMetricsSmartArgs.\nfunc (mr *MockInterfaceMockRecorder) GetCommandMetricsSmartArgs(deviceName interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetCommandMetricsSmartArgs\", reflect.TypeOf((*MockInterface)(nil).GetCommandMetricsSmartArgs), deviceName)\n}\n\n// GetDeviceOverrides mocks base method.\nfunc (m *MockInterface) GetDeviceOverrides() []models.ScanOverride {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetDeviceOverrides\")\n\tret0, _ := ret[0].([]models.ScanOverride)\n\treturn ret0\n}\n\n// GetDeviceOverrides indicates an expected call of GetDeviceOverrides.\nfunc (mr *MockInterfaceMockRecorder) GetDeviceOverrides() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetDeviceOverrides\", reflect.TypeOf((*MockInterface)(nil).GetDeviceOverrides))\n}\n\n// GetInt mocks base method.\nfunc (m *MockInterface) GetInt(key string) int {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetInt\", key)\n\tret0, _ := ret[0].(int)\n\treturn ret0\n}\n\n// GetInt indicates an expected call of GetInt.\nfunc (mr *MockInterfaceMockRecorder) GetInt(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetInt\", reflect.TypeOf((*MockInterface)(nil).GetInt), key)\n}\n\n// GetString mocks base method.\nfunc (m *MockInterface) GetString(key string) string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetString\", key)\n\tret0, _ := ret[0].(string)\n\treturn ret0\n}\n\n// GetString indicates an expected call of GetString.\nfunc (mr *MockInterfaceMockRecorder) GetString(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetString\", reflect.TypeOf((*MockInterface)(nil).GetString), key)\n}\n\n// GetStringSlice mocks base method.\nfunc (m *MockInterface) GetStringSlice(key string) []string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetStringSlice\", key)\n\tret0, _ := ret[0].([]string)\n\treturn ret0\n}\n\n// GetStringSlice indicates an expected call of GetStringSlice.\nfunc (mr *MockInterfaceMockRecorder) GetStringSlice(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetStringSlice\", reflect.TypeOf((*MockInterface)(nil).GetStringSlice), key)\n}\n\n// Init mocks base method.\nfunc (m *MockInterface) Init() error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Init\")\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// Init indicates an expected call of Init.\nfunc (mr *MockInterfaceMockRecorder) Init() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Init\", reflect.TypeOf((*MockInterface)(nil).Init))\n}\n\n// IsAllowlistedDevice mocks base method.\nfunc (m *MockInterface) IsAllowlistedDevice(deviceName string) bool {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"IsAllowlistedDevice\", deviceName)\n\tret0, _ := ret[0].(bool)\n\treturn ret0\n}\n\n// IsAllowlistedDevice indicates an expected call of IsAllowlistedDevice.\nfunc (mr *MockInterfaceMockRecorder) IsAllowlistedDevice(deviceName interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"IsAllowlistedDevice\", reflect.TypeOf((*MockInterface)(nil).IsAllowlistedDevice), deviceName)\n}\n\n// IsSet mocks base method.\nfunc (m *MockInterface) IsSet(key string) bool {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"IsSet\", key)\n\tret0, _ := ret[0].(bool)\n\treturn ret0\n}\n\n// IsSet indicates an expected call of IsSet.\nfunc (mr *MockInterfaceMockRecorder) IsSet(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"IsSet\", reflect.TypeOf((*MockInterface)(nil).IsSet), key)\n}\n\n// ReadConfig mocks base method.\nfunc (m *MockInterface) ReadConfig(configFilePath string) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"ReadConfig\", configFilePath)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// ReadConfig indicates an expected call of ReadConfig.\nfunc (mr *MockInterfaceMockRecorder) ReadConfig(configFilePath interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"ReadConfig\", reflect.TypeOf((*MockInterface)(nil).ReadConfig), configFilePath)\n}\n\n// Set mocks base method.\nfunc (m *MockInterface) Set(key string, value interface{}) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"Set\", key, value)\n}\n\n// Set indicates an expected call of Set.\nfunc (mr *MockInterfaceMockRecorder) Set(key, value interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Set\", reflect.TypeOf((*MockInterface)(nil).Set), key, value)\n}\n\n// SetDefault mocks base method.\nfunc (m *MockInterface) SetDefault(key string, value interface{}) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"SetDefault\", key, value)\n}\n\n// SetDefault indicates an expected call of SetDefault.\nfunc (mr *MockInterfaceMockRecorder) SetDefault(key, value interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SetDefault\", reflect.TypeOf((*MockInterface)(nil).SetDefault), key, value)\n}\n\n// UnmarshalKey mocks base method.\nfunc (m *MockInterface) UnmarshalKey(key string, rawVal interface{}, decoderOpts ...viper.DecoderConfigOption) error {\n\tm.ctrl.T.Helper()\n\tvarargs := []interface{}{key, rawVal}\n\tfor _, a := range decoderOpts {\n\t\tvarargs = append(varargs, a)\n\t}\n\tret := m.ctrl.Call(m, \"UnmarshalKey\", varargs...)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// UnmarshalKey indicates an expected call of UnmarshalKey.\nfunc (mr *MockInterfaceMockRecorder) UnmarshalKey(key, rawVal interface{}, decoderOpts ...interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\tvarargs := append([]interface{}{key, rawVal}, decoderOpts...)\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UnmarshalKey\", reflect.TypeOf((*MockInterface)(nil).UnmarshalKey), varargs...)\n}\n"
  },
  {
    "path": "collector/pkg/config/testdata/allow_listed_devices_present.yaml",
    "content": "allow_listed_devices:\n- /dev/sda\n- /dev/sdb\n"
  },
  {
    "path": "collector/pkg/config/testdata/device_type_comma.yaml",
    "content": "version: 1\ndevices:\n  # the scrutiny config parser will detect `sat,auto` as two separate items in a list. If you want to use `-d sat,auto` you must\n  # set 'sat,auto' in a list (see eg. /dev/sbd)\n  - device: /dev/sda\n    type: 'sat,auto'\n  - device: /dev/sdb\n    type:\n      - sat,auto\n"
  },
  {
    "path": "collector/pkg/config/testdata/ignore_device.yaml",
    "content": "version: 1\ndevices:\n  - device: /dev/sda\n    ignore: true\n"
  },
  {
    "path": "collector/pkg/config/testdata/invalid_commands_includes_device.yaml",
    "content": "commands:\n  metrics_scan_args: '--scan --json' # used to detect devices\n  metrics_info_args: '--info --json --device=sat' # used to determine device unique ID & register device with Scrutiny\n  metrics_smart_args: '--xall --json -d sat' # used to retrieve smart data for each device.\n"
  },
  {
    "path": "collector/pkg/config/testdata/invalid_commands_missing_json.yaml",
    "content": "commands:\n  metrics_scan_args: '--scan' # used to detect devices\n  metrics_info_args: '--info -j' # used to determine device unique ID & register device with Scrutiny\n  metrics_smart_args: '--xall --json' # used to retrieve smart data for each device.\n"
  },
  {
    "path": "collector/pkg/config/testdata/override_commands.yaml",
    "content": "commands:\n  metrics_scan_args: '--scan --json' # used to detect devices\n  metrics_info_args: '--info -j' # used to determine device unique ID & register device with Scrutiny\n  metrics_smart_args: '--xall --json -T permissive' # used to retrieve smart data for each device.\n"
  },
  {
    "path": "collector/pkg/config/testdata/override_device_commands.yaml",
    "content": "version: 1\ndevices:\n  - device: /dev/sda\n    commands:\n      metrics_info_args: \"--info --json -T permissive\""
  },
  {
    "path": "collector/pkg/config/testdata/raid_device.yaml",
    "content": "version: 1\ndevices:\n  - device: /dev/bus/0\n    type:\n      - megaraid,14\n      - megaraid,15\n      - megaraid,18\n      - megaraid,19\n      - megaraid,20\n      - megaraid,21\n\n  - device: /dev/twa0\n    type:\n      - 3ware,0\n      - 3ware,1\n      - 3ware,2\n      - 3ware,3\n      - 3ware,4\n      - 3ware,5\n"
  },
  {
    "path": "collector/pkg/config/testdata/simple_device.yaml",
    "content": "version: 1\ndevices:\n  - device: /dev/sda\n    type: 'sat'\n#\n#  # example to show how to ignore a specific disk/device.\n#  - device: /dev/sda\n#    ignore: true\n#\n#  # examples showing how to force smartctl to detect disks inside a raid array/virtual disk\n#  - device: /dev/bus/0\n#    type:\n#      - megaraid,14\n#      - megaraid,15\n#      - megaraid,18\n#      - megaraid,19\n#      - megaraid,20\n#      - megaraid,21\n#\n#  - device: /dev/twa0\n#    type:\n#      - 3ware,0\n#      - 3ware,1\n#      - 3ware,2\n#      - 3ware,3\n#      - 3ware,4\n#      - 3ware,5\n"
  },
  {
    "path": "collector/pkg/detect/detect.go",
    "content": "package detect\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/analogj/scrutiny/collector/pkg/common/shell\"\n\t\"github.com/analogj/scrutiny/collector/pkg/config\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/sirupsen/logrus\"\n)\n\ntype Detect struct {\n\tLogger *logrus.Entry\n\tConfig config.Interface\n\tShell  shell.Interface\n}\n\n//private/common functions\n\n// This function calls smartctl --scan which can be used to detect storage devices.\n// It has a couple of issues however:\n// - --scan does not return any results on mac\n//\n// To handle these issues, we have OS specific wrapper functions that update/modify these detected devices.\n// models.Device returned from this function only contain the minimum data for smartctl to execute: device type and device name (device file).\nfunc (d *Detect) SmartctlScan() ([]models.Device, error) {\n\t//we use smartctl to detect all the drives available.\n\targs := strings.Split(d.Config.GetString(\"commands.metrics_scan_args\"), \" \")\n\tdetectedDeviceConnJson, err := d.Shell.Command(d.Logger, d.Config.GetString(\"commands.metrics_smartctl_bin\"), args, \"\", os.Environ())\n\tif err != nil {\n\t\td.Logger.Errorf(\"Error scanning for devices: %v\", err)\n\t\treturn nil, err\n\t}\n\n\tvar detectedDeviceConns models.Scan\n\terr = json.Unmarshal([]byte(detectedDeviceConnJson), &detectedDeviceConns)\n\tif err != nil {\n\t\td.Logger.Errorf(\"Error decoding detected devices: %v\", err)\n\t\treturn nil, err\n\t}\n\n\tdetectedDevices := d.TransformDetectedDevices(detectedDeviceConns)\n\n\treturn detectedDevices, nil\n}\n\n// updates a device model with information from smartctl --scan\n// It has a couple of issues however:\n// - WWN is provided as component data, rather than a \"string\". We'll have to generate the WWN value ourselves\n// - WWN from smartctl only provided for ATA protocol drives, NVMe and SCSI drives do not include WWN.\nfunc (d *Detect) SmartCtlInfo(device *models.Device) error {\n\tfullDeviceName := fmt.Sprintf(\"%s%s\", DevicePrefix(), device.DeviceName)\n\targs := strings.Split(d.Config.GetCommandMetricsInfoArgs(fullDeviceName), \" \")\n\t//only include the device type if its a non-standard one. In some cases ata drives are detected as scsi in docker, and metadata is lost.\n\tif len(device.DeviceType) > 0 && device.DeviceType != \"scsi\" && device.DeviceType != \"ata\" {\n\t\targs = append(args, \"--device\", device.DeviceType)\n\t}\n\targs = append(args, fullDeviceName)\n\n\tavailableDeviceInfoJson, err := d.Shell.Command(d.Logger, d.Config.GetString(\"commands.metrics_smartctl_bin\"), args, \"\", os.Environ())\n\tif err != nil {\n\t\td.Logger.Errorf(\"Could not retrieve device information for %s: %v\", device.DeviceName, err)\n\t\treturn err\n\t}\n\n\tvar availableDeviceInfo collector.SmartInfo\n\terr = json.Unmarshal([]byte(availableDeviceInfoJson), &availableDeviceInfo)\n\tif err != nil {\n\t\td.Logger.Errorf(\"Could not decode device information for %s: %v\", device.DeviceName, err)\n\t\treturn err\n\t}\n\n\t//WWN: this is a serial number/world-wide number that will not change.\n\t//DeviceType and DeviceName are already populated, however may change between collector runs (eg. config/host restart)\n\t//InterfaceType:\n\tdevice.ModelName = availableDeviceInfo.ModelName\n\tdevice.InterfaceSpeed = availableDeviceInfo.InterfaceSpeed.Current.String\n\tdevice.SerialNumber = availableDeviceInfo.SerialNumber\n\tdevice.Firmware = availableDeviceInfo.FirmwareVersion\n\tdevice.RotationSpeed = availableDeviceInfo.RotationRate\n\tdevice.Capacity = availableDeviceInfo.Capacity()\n\tdevice.FormFactor = availableDeviceInfo.FormFactor.Name\n\tdevice.DeviceType = availableDeviceInfo.Device.Type\n\tdevice.DeviceProtocol = availableDeviceInfo.Device.Protocol\n\tif len(availableDeviceInfo.Vendor) > 0 {\n\t\tdevice.Manufacturer = availableDeviceInfo.Vendor\n\t}\n\n\t//populate WWN is possible if present\n\tif availableDeviceInfo.Wwn.Naa != 0 { //valid values are 1-6 (5 is what we handle correctly)\n\t\td.Logger.Info(\"Generating WWN\")\n\t\twwn := Wwn{\n\t\t\tNaa: availableDeviceInfo.Wwn.Naa,\n\t\t\tOui: availableDeviceInfo.Wwn.Oui,\n\t\t\tId:  availableDeviceInfo.Wwn.ID,\n\t\t}\n\t\tdevice.WWN = strings.ToLower(wwn.ToString())\n\t\td.Logger.Debugf(\"NAA: %d OUI: %d Id: %d => WWN: %s\", wwn.Naa, wwn.Oui, wwn.Id, device.WWN)\n\t} else {\n\t\td.Logger.Info(\"Using WWN Fallback\")\n\t\td.wwnFallback(device)\n\t}\n\tif len(device.WWN) == 0 {\n\t\t// no WWN populated after WWN lookup and fallback. we need to throw an error\n\t\terrMsg := fmt.Sprintf(\"no WWN (or fallback) populated for device: %s. Device will be registered, but no data will be published for this device. \", device.DeviceName)\n\t\td.Logger.Errorf(\"%v\", errMsg)\n\t\treturn fmt.Errorf(\"%v\", errMsg)\n\t}\n\n\treturn nil\n}\n\n// function will remove devices that are marked for \"ignore\" in config file\n// will also add devices that are specified in config file, but \"missing\" from smartctl --scan\n// this function will also update the deviceType to the option specified in config.\nfunc (d *Detect) TransformDetectedDevices(detectedDeviceConns models.Scan) []models.Device {\n\tgroupedDevices := map[string][]models.Device{}\n\n\tfor _, scannedDevice := range detectedDeviceConns.Devices {\n\n\t\tdeviceFile := strings.ToLower(scannedDevice.Name)\n\n\t\t// If the user has defined a device allow list, and this device isnt there, then ignore it\n\t\tif !d.Config.IsAllowlistedDevice(deviceFile) {\n\t\t\tcontinue\n\t\t}\n\n\t\tdetectedDevice := models.Device{\n\t\t\tHostId:     d.Config.GetString(\"host.id\"),\n\t\t\tDeviceType: scannedDevice.Type,\n\t\t\tDeviceName: strings.TrimPrefix(deviceFile, DevicePrefix()),\n\t\t}\n\n\t\t//find (or create) a slice to contain the devices in this group\n\t\tif groupedDevices[deviceFile] == nil {\n\t\t\tgroupedDevices[deviceFile] = []models.Device{}\n\t\t}\n\n\t\t// add this scanned device to the group\n\t\tgroupedDevices[deviceFile] = append(groupedDevices[deviceFile], detectedDevice)\n\t}\n\n\t//now tha we've \"grouped\" all the devices, lets override any groups specified in the config file.\n\n\tfor _, overrideDevice := range d.Config.GetDeviceOverrides() {\n\t\toverrideDeviceFile := strings.ToLower(overrideDevice.Device)\n\n\t\tif overrideDevice.Ignore {\n\t\t\t// this device file should be deleted if it exists\n\t\t\tdelete(groupedDevices, overrideDeviceFile)\n\t\t} else {\n\t\t\t//create a new device group, and replace the one generated by smartctl --scan\n\t\t\toverrideDeviceGroup := []models.Device{}\n\n\t\t\tif overrideDevice.DeviceType != nil {\n\t\t\t\tfor _, overrideDeviceType := range overrideDevice.DeviceType {\n\t\t\t\t\toverrideDeviceGroup = append(overrideDeviceGroup, models.Device{\n\t\t\t\t\t\tHostId:     d.Config.GetString(\"host.id\"),\n\t\t\t\t\t\tDeviceType: overrideDeviceType,\n\t\t\t\t\t\tDeviceName: strings.TrimPrefix(overrideDeviceFile, DevicePrefix()),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t//user may have specified device in config file without device type (default to scanned device type)\n\n\t\t\t\t//check if the device file was detected by the scanner\n\t\t\t\tvar deviceType string\n\t\t\t\tif scannedDevice, foundScannedDevice := groupedDevices[overrideDeviceFile]; foundScannedDevice {\n\t\t\t\t\tif len(scannedDevice) > 0 {\n\t\t\t\t\t\t//take the device type from the first grouped device\n\t\t\t\t\t\tdeviceType = scannedDevice[0].DeviceType\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeviceType = \"ata\"\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\t//fallback to ata if no scanned device detected\n\t\t\t\t\tdeviceType = \"ata\"\n\t\t\t\t}\n\n\t\t\t\toverrideDeviceGroup = append(overrideDeviceGroup, models.Device{\n\t\t\t\t\tHostId:     d.Config.GetString(\"host.id\"),\n\t\t\t\t\tDeviceType: deviceType,\n\t\t\t\t\tDeviceName: strings.TrimPrefix(overrideDeviceFile, DevicePrefix()),\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tgroupedDevices[overrideDeviceFile] = overrideDeviceGroup\n\t\t}\n\t}\n\n\t//flatten map\n\tdetectedDevices := []models.Device{}\n\tfor _, group := range groupedDevices {\n\t\tdetectedDevices = append(detectedDevices, group...)\n\t}\n\n\treturn detectedDevices\n}\n"
  },
  {
    "path": "collector/pkg/detect/detect_test.go",
    "content": "package detect_test\n\nimport (\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\tmock_shell \"github.com/analogj/scrutiny/collector/pkg/common/shell/mock\"\n\tmock_config \"github.com/analogj/scrutiny/collector/pkg/config/mock\"\n\t\"github.com/analogj/scrutiny/collector/pkg/detect\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n\t\"go.uber.org/mock/gomock\"\n)\n\nfunc TestDetect_SmartctlScan(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{})\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\n\tfakeShell := mock_shell.NewMockInterface(mockCtrl)\n\ttestScanResults, err := os.ReadFile(\"testdata/smartctl_scan_simple.json\")\n\tfakeShell.EXPECT().Command(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(string(testScanResults), err)\n\n\td := detect.Detect{\n\t\tLogger: logrus.WithFields(logrus.Fields{}),\n\t\tShell:  fakeShell,\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\tscannedDevices, err := d.SmartctlScan()\n\n\t// assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, 7, len(scannedDevices))\n\trequire.Equal(t, \"scsi\", scannedDevices[0].DeviceType)\n}\n\nfunc TestDetect_SmartctlScan_Megaraid(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{})\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\n\tfakeShell := mock_shell.NewMockInterface(mockCtrl)\n\ttestScanResults, err := os.ReadFile(\"testdata/smartctl_scan_megaraid.json\")\n\tfakeShell.EXPECT().Command(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(string(testScanResults), err)\n\n\td := detect.Detect{\n\t\tLogger: logrus.WithFields(logrus.Fields{}),\n\t\tShell:  fakeShell,\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\tscannedDevices, err := d.SmartctlScan()\n\n\t// assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, 2, len(scannedDevices))\n\trequire.Equal(t, []models.Device{\n\t\t{DeviceName: \"bus/0\", DeviceType: \"megaraid,0\"},\n\t\t{DeviceName: \"bus/0\", DeviceType: \"megaraid,1\"},\n\t}, scannedDevices)\n}\n\nfunc TestDetect_SmartctlScan_Nvme(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{})\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\n\tfakeShell := mock_shell.NewMockInterface(mockCtrl)\n\ttestScanResults, err := os.ReadFile(\"testdata/smartctl_scan_nvme.json\")\n\tfakeShell.EXPECT().Command(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(string(testScanResults), err)\n\n\td := detect.Detect{\n\t\tLogger: logrus.WithFields(logrus.Fields{}),\n\t\tShell:  fakeShell,\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\tscannedDevices, err := d.SmartctlScan()\n\n\t// assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, 1, len(scannedDevices))\n\trequire.Equal(t, []models.Device{\n\t\t{DeviceName: \"nvme0\", DeviceType: \"nvme\"},\n\t}, scannedDevices)\n}\n\nfunc TestDetect_TransformDetectedDevices_Empty(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{})\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\n\tdetectedDevices := models.Scan{\n\t\tDevices: []models.ScanDevice{\n\t\t\t{\n\t\t\t\tName:     \"/dev/sda\",\n\t\t\t\tInfoName: \"/dev/sda\",\n\t\t\t\tProtocol: \"scsi\",\n\t\t\t\tType:     \"scsi\",\n\t\t\t},\n\t\t},\n\t}\n\n\td := detect.Detect{\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\ttransformedDevices := d.TransformDetectedDevices(detectedDevices)\n\n\t// assert\n\trequire.Equal(t, \"sda\", transformedDevices[0].DeviceName)\n\trequire.Equal(t, \"scsi\", transformedDevices[0].DeviceType)\n}\n\nfunc TestDetect_TransformDetectedDevices_Ignore(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{{Device: \"/dev/sda\", DeviceType: nil, Ignore: true}})\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\n\tdetectedDevices := models.Scan{\n\t\tDevices: []models.ScanDevice{\n\t\t\t{\n\t\t\t\tName:     \"/dev/sda\",\n\t\t\t\tInfoName: \"/dev/sda\",\n\t\t\t\tProtocol: \"scsi\",\n\t\t\t\tType:     \"scsi\",\n\t\t\t},\n\t\t},\n\t}\n\n\td := detect.Detect{\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\ttransformedDevices := d.TransformDetectedDevices(detectedDevices)\n\n\t// assert\n\trequire.Equal(t, []models.Device{}, transformedDevices)\n}\n\nfunc TestDetect_TransformDetectedDevices_Raid(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{\n\t\t{\n\t\t\tDevice:     \"/dev/bus/0\",\n\t\t\tDeviceType: []string{\"megaraid,14\", \"megaraid,15\", \"megaraid,18\", \"megaraid,19\", \"megaraid,20\", \"megaraid,21\"},\n\t\t\tIgnore:     false,\n\t\t},\n\t\t{\n\t\t\tDevice:     \"/dev/twa0\",\n\t\t\tDeviceType: []string{\"3ware,0\", \"3ware,1\", \"3ware,2\", \"3ware,3\", \"3ware,4\", \"3ware,5\"},\n\t\t\tIgnore:     false,\n\t\t},\n\t})\n\tdetectedDevices := models.Scan{\n\t\tDevices: []models.ScanDevice{\n\t\t\t{\n\t\t\t\tName:     \"/dev/bus/0\",\n\t\t\t\tInfoName: \"/dev/bus/0\",\n\t\t\t\tProtocol: \"scsi\",\n\t\t\t\tType:     \"scsi\",\n\t\t\t},\n\t\t},\n\t}\n\n\td := detect.Detect{\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\ttransformedDevices := d.TransformDetectedDevices(detectedDevices)\n\n\t// assert\n\trequire.Equal(t, 12, len(transformedDevices))\n}\n\nfunc TestDetect_TransformDetectedDevices_Simple(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{{Device: \"/dev/sda\", DeviceType: []string{\"sat+megaraid\"}}})\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\tdetectedDevices := models.Scan{\n\t\tDevices: []models.ScanDevice{\n\t\t\t{\n\t\t\t\tName:     \"/dev/sda\",\n\t\t\t\tInfoName: \"/dev/sda\",\n\t\t\t\tProtocol: \"ata\",\n\t\t\t\tType:     \"ata\",\n\t\t\t},\n\t\t},\n\t}\n\n\td := detect.Detect{\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\ttransformedDevices := d.TransformDetectedDevices(detectedDevices)\n\n\t// assert\n\trequire.Equal(t, 1, len(transformedDevices))\n\trequire.Equal(t, \"sat+megaraid\", transformedDevices[0].DeviceType)\n}\n\n// test https://github.com/AnalogJ/scrutiny/issues/255#issuecomment-1164024126\nfunc TestDetect_TransformDetectedDevices_WithoutDeviceTypeOverride(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{{Device: \"/dev/sda\"}})\n\tfakeConfig.EXPECT().IsAllowlistedDevice(gomock.Any()).AnyTimes().Return(true)\n\tdetectedDevices := models.Scan{\n\t\tDevices: []models.ScanDevice{\n\t\t\t{\n\t\t\t\tName:     \"/dev/sda\",\n\t\t\t\tInfoName: \"/dev/sda\",\n\t\t\t\tProtocol: \"ata\",\n\t\t\t\tType:     \"scsi\",\n\t\t\t},\n\t\t},\n\t}\n\n\td := detect.Detect{\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\ttransformedDevices := d.TransformDetectedDevices(detectedDevices)\n\n\t// assert\n\trequire.Equal(t, 1, len(transformedDevices))\n\trequire.Equal(t, \"scsi\", transformedDevices[0].DeviceType)\n}\n\nfunc TestDetect_TransformDetectedDevices_WhenDeviceNotDetected(t *testing.T) {\n\t// setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{{Device: \"/dev/sda\"}})\n\tdetectedDevices := models.Scan{}\n\n\td := detect.Detect{\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\ttransformedDevices := d.TransformDetectedDevices(detectedDevices)\n\n\t// assert\n\trequire.Equal(t, 1, len(transformedDevices))\n\trequire.Equal(t, \"ata\", transformedDevices[0].DeviceType)\n}\n\nfunc TestDetect_TransformDetectedDevices_AllowListFilters(t *testing.T) {\n\tmockCtrl := gomock.NewController(t)\n\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"host.id\").AnyTimes().Return(\"\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_smartctl_bin\").AnyTimes().Return(\"smartctl\")\n\tfakeConfig.EXPECT().GetString(\"commands.metrics_scan_args\").AnyTimes().Return(\"--scan --json\")\n\tfakeConfig.EXPECT().GetDeviceOverrides().AnyTimes().Return([]models.ScanOverride{{Device: \"/dev/sda\", DeviceType: []string{\"sat+megaraid\"}}})\n\tfakeConfig.EXPECT().IsAllowlistedDevice(\"/dev/sda\").Return(true)\n\tfakeConfig.EXPECT().IsAllowlistedDevice(\"/dev/sdb\").Return(false)\n\tdetectedDevices := models.Scan{\n\t\tDevices: []models.ScanDevice{\n\t\t\t{\n\t\t\t\tName:     \"/dev/sda\",\n\t\t\t\tInfoName: \"/dev/sda\",\n\t\t\t\tProtocol: \"ata\",\n\t\t\t\tType:     \"ata\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tName:     \"/dev/sdb\",\n\t\t\t\tInfoName: \"/dev/sdb\",\n\t\t\t\tProtocol: \"ata\",\n\t\t\t\tType:     \"ata\",\n\t\t\t},\n\t\t},\n\t}\n\n\td := detect.Detect{\n\t\tConfig: fakeConfig,\n\t}\n\n\t// test\n\ttransformedDevices := d.TransformDetectedDevices(detectedDevices)\n\n\t// assert\n\trequire.Equal(t, 1, len(transformedDevices))\n\trequire.Equal(t, \"sda\", transformedDevices[0].DeviceName)\n}\n\nfunc TestDetect_SmartCtlInfo(t *testing.T) {\n\tt.Run(\"should report nvme info\", func(t *testing.T) {\n\t\tctrl := gomock.NewController(t)\n\n\t\tconst (\n\t\t\tsomeArgs = \"--info --json\"\n\n\t\t\t// device info\n\t\t\tsomeDeviceName           = \"some-device-name\"\n\t\t\tsomeModelName            = \"KCD61LUL3T84\"\n\t\t\tsomeSerialNumber         = \"61Q0A05UT7B8\"\n\t\t\tsomeFirmware             = \"8002\"\n\t\t\tsomeDeviceProtocol       = \"NVMe\"\n\t\t\tsomeDeviceType           = \"nvme\"\n\t\t\tsomeCapacity       int64 = 3840755982336\n\t\t)\n\n\t\tfakeConfig := mock_config.NewMockInterface(ctrl)\n\t\tfakeConfig.EXPECT().\n\t\t\tGetCommandMetricsInfoArgs(\"/dev/\" + someDeviceName).\n\t\t\tReturn(someArgs)\n\t\tfakeConfig.EXPECT().\n\t\t\tGetString(\"commands.metrics_smartctl_bin\").\n\t\t\tReturn(\"smartctl\")\n\n\t\tsomeLogger := logrus.WithFields(logrus.Fields{})\n\n\t\tsmartctlInfoResults, err := os.ReadFile(\"testdata/smartctl_info_nvme.json\")\n\t\trequire.NoError(t, err)\n\n\t\tfakeShell := mock_shell.NewMockInterface(ctrl)\n\t\tfakeShell.EXPECT().\n\t\t\tCommand(someLogger, \"smartctl\", append(strings.Split(someArgs, \" \"), \"/dev/\"+someDeviceName), \"\", gomock.Any()).\n\t\t\tReturn(string(smartctlInfoResults), err)\n\n\t\td := detect.Detect{\n\t\t\tLogger: someLogger,\n\t\t\tShell:  fakeShell,\n\t\t\tConfig: fakeConfig,\n\t\t}\n\n\t\tsomeDevice := &models.Device{\n\t\t\tWWN:        \"some wwn\",\n\t\t\tDeviceName: someDeviceName,\n\t\t}\n\n\t\trequire.NoError(t, d.SmartCtlInfo(someDevice))\n\n\t\tassert.Equal(t, someDeviceName, someDevice.DeviceName)\n\t\tassert.Equal(t, someModelName, someDevice.ModelName)\n\t\tassert.Equal(t, someSerialNumber, someDevice.SerialNumber)\n\t\tassert.Equal(t, someFirmware, someDevice.Firmware)\n\t\tassert.Equal(t, someDeviceProtocol, someDevice.DeviceProtocol)\n\t\tassert.Equal(t, someDeviceType, someDevice.DeviceType)\n\t\tassert.Equal(t, someCapacity, someDevice.Capacity)\n\t})\n}\n"
  },
  {
    "path": "collector/pkg/detect/devices_darwin.go",
    "content": "package detect\n\nimport (\n\t\"github.com/analogj/scrutiny/collector/pkg/common/shell\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/jaypipes/ghw\"\n\t\"strings\"\n)\n\nfunc DevicePrefix() string {\n\treturn \"/dev/\"\n}\n\nfunc (d *Detect) Start() ([]models.Device, error) {\n\td.Shell = shell.Create()\n\t// call the base/common functionality to get a list of devices\n\tdetectedDevices, err := d.SmartctlScan()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t//smartctl --scan doesn't seem to detect mac nvme drives, lets see if we can detect them manually.\n\tmissingDevices, err := d.findMissingDevices(detectedDevices) //we dont care about the error here, just continue retrieving device info.\n\tif err == nil {\n\t\tdetectedDevices = append(detectedDevices, missingDevices...)\n\t}\n\n\t//inflate device info for detected devices.\n\tfor ndx, _ := range detectedDevices {\n\t\td.SmartCtlInfo(&detectedDevices[ndx]) //ignore errors.\n\t}\n\n\treturn detectedDevices, nil\n}\n\nfunc (d *Detect) findMissingDevices(detectedDevices []models.Device) ([]models.Device, error) {\n\n\tmissingDevices := []models.Device{}\n\n\tblock, err := ghw.Block()\n\tif err != nil {\n\t\td.Logger.Errorf(\"Error getting block storage info: %v\", err)\n\t\treturn nil, err\n\t}\n\n\tfor _, disk := range block.Disks {\n\n\t\t// ignore optical drives and floppy disks\n\t\tif disk.DriveType == ghw.DRIVE_TYPE_FDD || disk.DriveType == ghw.DRIVE_TYPE_ODD {\n\t\t\td.Logger.Debugf(\" => Ignore: Optical or floppy disk - (found %s)\\n\", disk.DriveType.String())\n\t\t\tcontinue\n\t\t}\n\n\t\t// ignore removable disks\n\t\tif disk.IsRemovable {\n\t\t\td.Logger.Debugf(\" => Ignore: Removable disk (%v)\\n\", disk.IsRemovable)\n\t\t\tcontinue\n\t\t}\n\n\t\t// ignore virtual disks & mobile phone storage devices\n\t\tif disk.StorageController == ghw.STORAGE_CONTROLLER_VIRTIO || disk.StorageController == ghw.STORAGE_CONTROLLER_MMC {\n\t\t\td.Logger.Debugf(\" => Ignore: Virtual/multi-media storage controller - (found %s)\\n\", disk.StorageController.String())\n\t\t\tcontinue\n\t\t}\n\n\t\t// Skip unknown storage controllers, not usually S.M.A.R.T compatible.\n\t\tif disk.StorageController == ghw.STORAGE_CONTROLLER_UNKNOWN {\n\t\t\td.Logger.Debugf(\" => Ignore: Unknown storage controller - (found %s)\\n\", disk.StorageController.String())\n\t\t\tcontinue\n\t\t}\n\n\t\t//check if device is already detected.\n\t\talreadyDetected := false\n\t\tdiskName := strings.TrimPrefix(disk.Name, DevicePrefix())\n\t\tfor _, detectedDevice := range detectedDevices {\n\n\t\t\tif detectedDevice.DeviceName == diskName {\n\t\t\t\talreadyDetected = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !alreadyDetected {\n\t\t\tmissingDevices = append(missingDevices, models.Device{\n\t\t\t\tDeviceName: diskName,\n\t\t\t\tDeviceType: \"\",\n\t\t\t})\n\t\t}\n\t}\n\treturn missingDevices, nil\n}\n\n//WWN values NVMe and SCSI\nfunc (d *Detect) wwnFallback(detectedDevice *models.Device) {\n\tblock, err := ghw.Block()\n\tif err == nil {\n\t\tfor _, disk := range block.Disks {\n\t\t\tif disk.Name == detectedDevice.DeviceName && strings.ToLower(disk.WWN) != \"unknown\" {\n\t\t\t\td.Logger.Debugf(\"Found matching block device. WWN: %s\", disk.WWN)\n\t\t\t\tdetectedDevice.WWN = disk.WWN\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t//no WWN found, or could not open Block devices. Either way, fallback to serial number\n\tif len(detectedDevice.WWN) == 0 {\n\t\td.Logger.Debugf(\"WWN is empty, falling back to serial number: %s\", detectedDevice.SerialNumber)\n\t\tdetectedDevice.WWN = detectedDevice.SerialNumber\n\t}\n\n\t//wwn must always be lowercase.\n\tdetectedDevice.WWN = strings.ToLower(detectedDevice.WWN)\n}\n"
  },
  {
    "path": "collector/pkg/detect/devices_freebsd.go",
    "content": "package detect\n\nimport (\n\t\"github.com/analogj/scrutiny/collector/pkg/common/shell\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/jaypipes/ghw\"\n\t\"strings\"\n)\n\nfunc DevicePrefix() string {\n\treturn \"/dev/\"\n}\n\nfunc (d *Detect) Start() ([]models.Device, error) {\n\td.Shell = shell.Create()\n\t// call the base/common functionality to get a list of devices\n\tdetectedDevices, err := d.SmartctlScan()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t//inflate device info for detected devices.\n\tfor ndx, _ := range detectedDevices {\n\t\td.SmartCtlInfo(&detectedDevices[ndx]) //ignore errors.\n\t}\n\n\treturn detectedDevices, nil\n}\n\n//WWN values NVMe and SCSI\nfunc (d *Detect) wwnFallback(detectedDevice *models.Device) {\n\tblock, err := ghw.Block()\n\tif err == nil {\n\t\tfor _, disk := range block.Disks {\n\t\t\tif disk.Name == detectedDevice.DeviceName && strings.ToLower(disk.WWN) != \"unknown\" {\n\t\t\t\td.Logger.Debugf(\"Found matching block device. WWN: %s\", disk.WWN)\n\t\t\t\tdetectedDevice.WWN = disk.WWN\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t//no WWN found, or could not open Block devices. Either way, fallback to serial number\n\tif len(detectedDevice.WWN) == 0 {\n\t\td.Logger.Debugf(\"WWN is empty, falling back to serial number: %s\", detectedDevice.SerialNumber)\n\t\tdetectedDevice.WWN = detectedDevice.SerialNumber\n\t}\n\n\t//wwn must always be lowercase.\n\tdetectedDevice.WWN = strings.ToLower(detectedDevice.WWN)\n}\n"
  },
  {
    "path": "collector/pkg/detect/devices_linux.go",
    "content": "package detect\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/analogj/scrutiny/collector/pkg/common/shell\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"github.com/jaypipes/ghw\"\n)\n\nfunc DevicePrefix() string {\n\treturn \"/dev/\"\n}\n\nfunc (d *Detect) Start() ([]models.Device, error) {\n\td.Shell = shell.Create()\n\t// call the base/common functionality to get a list of devices\n\tdetectedDevices, err := d.SmartctlScan()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t//inflate device info for detected devices.\n\tfor ndx := range detectedDevices {\n\t\td.SmartCtlInfo(&detectedDevices[ndx])   //ignore errors.\n\t\tpopulateUdevInfo(&detectedDevices[ndx]) //ignore errors.\n\t}\n\n\treturn detectedDevices, nil\n}\n\n// WWN values NVMe and SCSI\nfunc (d *Detect) wwnFallback(detectedDevice *models.Device) {\n\tblock, err := ghw.Block()\n\tif err == nil {\n\t\tfor _, disk := range block.Disks {\n\t\t\tif disk.Name == detectedDevice.DeviceName && strings.ToLower(disk.WWN) != \"unknown\" {\n\t\t\t\td.Logger.Debugf(\"Found matching block device. WWN: %s\", disk.WWN)\n\t\t\t\tdetectedDevice.WWN = disk.WWN\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t//no WWN found, or could not open Block devices. Either way, fallback to serial number\n\tif len(detectedDevice.WWN) == 0 {\n\t\td.Logger.Debugf(\"WWN is empty, falling back to serial number: %s\", detectedDevice.SerialNumber)\n\t\tdetectedDevice.WWN = detectedDevice.SerialNumber\n\t}\n\n\t//wwn must always be lowercase.\n\tdetectedDevice.WWN = strings.ToLower(detectedDevice.WWN)\n}\n\n// as discussed in\n// - https://github.com/AnalogJ/scrutiny/issues/225\n// - https://github.com/jaypipes/ghw/issues/59#issue-361915216\n// udev exposes its data in a standardized way under /run/udev/data/....\nfunc populateUdevInfo(detectedDevice *models.Device) error {\n\t// Get device major:minor numbers\n\t// `cat /sys/class/block/sda/dev`\n\tdevNo, err := os.ReadFile(filepath.Join(\"/sys/class/block/\", detectedDevice.DeviceName, \"dev\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Look up block device in udev runtime database\n\t// `cat /run/udev/data/b8:0`\n\tudevID := \"b\" + strings.TrimSpace(string(devNo))\n\tudevBytes, err := os.ReadFile(filepath.Join(\"/run/udev/data/\", udevID))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdeviceMountPaths := []string{}\n\tudevInfo := make(map[string]string)\n\tfor _, udevLine := range strings.Split(string(udevBytes), \"\\n\") {\n\t\tif strings.HasPrefix(udevLine, \"E:\") {\n\t\t\tif s := strings.SplitN(udevLine[2:], \"=\", 2); len(s) == 2 {\n\t\t\t\tudevInfo[s[0]] = s[1]\n\t\t\t}\n\t\t} else if strings.HasPrefix(udevLine, \"S:\") {\n\t\t\tdeviceMountPaths = append(deviceMountPaths, udevLine[2:])\n\t\t}\n\t}\n\n\t//Set additional device information.\n\tif deviceLabel, exists := udevInfo[\"ID_FS_LABEL\"]; exists {\n\t\tdetectedDevice.DeviceLabel = deviceLabel\n\t}\n\tif deviceUUID, exists := udevInfo[\"ID_FS_UUID\"]; exists {\n\t\tdetectedDevice.DeviceUUID = deviceUUID\n\t}\n\tif deviceSerialID, exists := udevInfo[\"ID_SERIAL\"]; exists {\n\t\tdetectedDevice.DeviceSerialID = fmt.Sprintf(\"%s-%s\", udevInfo[\"ID_BUS\"], deviceSerialID)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "collector/pkg/detect/devices_linux_test.go",
    "content": "package detect_test\n\nimport (\n\t\"github.com/analogj/scrutiny/collector/pkg/detect\"\n\t\"github.com/stretchr/testify/require\"\n\t\"testing\"\n)\n\nfunc TestDevicePrefix(t *testing.T) {\n\t//setup\n\n\t//test\n\n\t//assert\n\trequire.Equal(t, \"/dev/\", detect.DevicePrefix())\n}\n"
  },
  {
    "path": "collector/pkg/detect/devices_windows.go",
    "content": "package detect\n\nimport (\n\t\"github.com/analogj/scrutiny/collector/pkg/common/shell\"\n\t\"github.com/analogj/scrutiny/collector/pkg/models\"\n\t\"strings\"\n)\n\nfunc DevicePrefix() string {\n\treturn \"\"\n}\n\nfunc (d *Detect) Start() ([]models.Device, error) {\n\td.Shell = shell.Create()\n\t// call the base/common functionality to get a list of devices\n\tdetectedDevices, err := d.SmartctlScan()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t//inflate device info for detected devices.\n\tfor ndx, _ := range detectedDevices {\n\t\td.SmartCtlInfo(&detectedDevices[ndx]) //ignore errors.\n\t}\n\n\treturn detectedDevices, nil\n}\n\n//WWN values NVMe and SCSI\nfunc (d *Detect) wwnFallback(detectedDevice *models.Device) {\n\n\t//fallback to serial number\n\tif len(detectedDevice.WWN) == 0 {\n\t\tdetectedDevice.WWN = detectedDevice.SerialNumber\n\t}\n\n\t//wwn must always be lowercase.\n\tdetectedDevice.WWN = strings.ToLower(detectedDevice.WWN)\n}\n"
  },
  {
    "path": "collector/pkg/detect/testdata/smartctl_info_nvme.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      2\n    ],\n    \"svn_revision\": \"5155\",\n    \"platform_info\": \"x86_64-linux-6.1.69-talos\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"--info\",\n      \"--json\",\n      \"/dev/nvme4\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/nvme4\",\n    \"info_name\": \"/dev/nvme4\",\n    \"type\": \"nvme\",\n    \"protocol\": \"NVMe\"\n  },\n  \"model_name\": \"KCD61LUL3T84\",\n  \"serial_number\": \"61Q0A05UT7B8\",\n  \"firmware_version\": \"8002\",\n  \"nvme_pci_vendor\": {\n    \"id\": 7695,\n    \"subsystem_id\": 7695\n  },\n  \"nvme_ieee_oui_identifier\": 9233294,\n  \"nvme_total_capacity\": 3840755982336,\n  \"nvme_unallocated_capacity\": 0,\n  \"nvme_controller_id\": 1,\n  \"nvme_version\": {\n    \"string\": \"1.4\",\n    \"value\": 66560\n  },\n  \"nvme_number_of_namespaces\": 16,\n  \"local_time\": {\n    \"time_t\": 1706045146,\n    \"asctime\": \"Tue Jan 23 21:25:46 2024 UTC\"\n  }\n}\n"
  },
  {
    "path": "collector/pkg/detect/testdata/smartctl_scan_megaraid.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      1\n    ],\n    \"svn_revision\": \"5022\",\n    \"platform_info\": \"x86_64-linux-5.4.0-45-generic\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-j\",\n      \"--scan\"\n    ],\n    \"exit_status\": 0\n  },\n  \"devices\": [\n    {\n      \"name\": \"/dev/bus/0\",\n      \"info_name\": \"/dev/bus/0 [megaraid_disk_00]\",\n      \"type\": \"megaraid,0\",\n      \"protocol\": \"SCSI\"\n    },\n    {\n      \"name\": \"/dev/bus/0\",\n      \"info_name\": \"/dev/bus/0 [megaraid_disk_01]\",\n      \"type\": \"megaraid,1\",\n      \"protocol\": \"SCSI\"\n    }\n  ]\n}"
  },
  {
    "path": "collector/pkg/detect/testdata/smartctl_scan_nvme.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-4.19.107-Unraid\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-j\",\n      \"--scan\"\n    ],\n    \"exit_status\": 0\n  },\n  \"devices\": [\n    {\n      \"name\": \"/dev/nvme0\",\n      \"info_name\": \"/dev/nvme0\",\n      \"type\": \"nvme\",\n      \"protocol\": \"NVMe\"\n    }\n  ]\n}"
  },
  {
    "path": "collector/pkg/detect/testdata/smartctl_scan_simple.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-5.15.32-flatcar\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"--scan\",\n      \"-j\"\n    ],\n    \"exit_status\": 0\n  },\n  \"devices\": [\n    {\n      \"name\": \"/dev/sda\",\n      \"info_name\": \"/dev/sda\",\n      \"type\": \"scsi\",\n      \"protocol\": \"SCSI\"\n    },\n    {\n      \"name\": \"/dev/sdb\",\n      \"info_name\": \"/dev/sdb\",\n      \"type\": \"scsi\",\n      \"protocol\": \"SCSI\"\n    },\n    {\n      \"name\": \"/dev/sdc\",\n      \"info_name\": \"/dev/sdc\",\n      \"type\": \"scsi\",\n      \"protocol\": \"SCSI\"\n    },\n    {\n      \"name\": \"/dev/sdd\",\n      \"info_name\": \"/dev/sdd\",\n      \"type\": \"scsi\",\n      \"protocol\": \"SCSI\"\n    },\n    {\n      \"name\": \"/dev/sde\",\n      \"info_name\": \"/dev/sde\",\n      \"type\": \"scsi\",\n      \"protocol\": \"SCSI\"\n    },\n    {\n      \"name\": \"/dev/sdf\",\n      \"info_name\": \"/dev/sdf\",\n      \"type\": \"scsi\",\n      \"protocol\": \"SCSI\"\n    },\n    {\n      \"name\": \"/dev/sdg\",\n      \"info_name\": \"/dev/sdg\",\n      \"type\": \"scsi\",\n      \"protocol\": \"SCSI\"\n    }\n  ]\n}"
  },
  {
    "path": "collector/pkg/detect/wwn.go",
    "content": "package detect\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype Wwn struct {\n\tNaa        uint64 `json:\"naa\"`\n\tOui        uint64 `json:\"oui\"`\n\tId         uint64 `json:\"id\"`\n\tVendorCode string `json:\"vendor_code\"`\n}\n\n// this is an incredibly basic converter, that only works for \"Registered\" IEEE format - NAA5\n// https://standards.ieee.org/content/dam/ieee-standards/standards/web/documents/tutorials/fibre.pdf\n// references:\n// - https://metacpan.org/pod/Device::WWN\n// - https://en.wikipedia.org/wiki/World_Wide_Name\n// - https://storagemeat.blogspot.com/2012/08/decoding-wwids-or-how-to-tell-whats-what.html\n// - https://bryanchain.com/2016/01/20/breaking-down-an-naa-id-world-wide-name/\n\n/*\n+----------+---+---+---+---+---+---+---+---+\n| Byte/Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |\n+----------+---+---+---+---+---+---+---+---+\n| 0        | NAA (5h)      | (MSB)         |\n+----------+---------------+               +\n| 1        |                               |\n+----------+            IEEE OUI           |\n| 2        |                               |\n+----------+               +---------------+\n| 3        | (LSB)         | (MSB)         |\n+----------+---------------+               +\n| 4        |                               |\n|          |                               |\n+----------+                               |\n| 5        |            Vendor ID          |\n+----------+                               |\n| 6        |                               |\n+----------+                               |\n| 7        |                         (LSB) |\n+----------+-------------------------------+\n\n\n*/\n\nfunc (wwn *Wwn) ToString() string {\n\n\tvar wwnBuffer uint64\n\n\twwnBuffer = wwn.Id           //start with vendor ID\n\twwnBuffer += (wwn.Oui << 36) //add left-shifted OUI\n\twwnBuffer += (wwn.Naa << 60) //NAA is a number from 1-6, so decimal == hex.\n\n\t//TODO: may need to support additional versions in the future.\n\n\treturn strings.ToLower(fmt.Sprintf(\"%#x\", wwnBuffer))\n}\n"
  },
  {
    "path": "collector/pkg/detect/wwn_test.go",
    "content": "package detect_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/analogj/scrutiny/collector/pkg/detect\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestWwn_FromStringTable(t *testing.T) {\n\n\t//setup\n\tvar tests = []struct {\n\t\twwnStr string\n\t\twwn    detect.Wwn\n\t}{\n\n\t\t{\"0x5002538e40a22954\", detect.Wwn{Naa: 5, Oui: 9528, Id: 61213911380}}, //sda\n\t\t{\"0x5000cca264eb01d7\", detect.Wwn{Naa: 5, Oui: 3274, Id: 10283057623}}, //sdb\n\t\t{\"0x5000cca264ec3183\", detect.Wwn{Naa: 5, Oui: 3274, Id: 10283135363}}, //sdc\n\t\t{\"0x5000cca252c859cc\", detect.Wwn{Naa: 5, Oui: 3274, Id: 9978796492}},  //sdd\n\t\t{\"0x50014ee20b2a72a9\", detect.Wwn{Naa: 5, Oui: 5358, Id: 8777265833}},  //sde\n\t\t{\"0x5000cca264ebc248\", detect.Wwn{Naa: 5, Oui: 3274, Id: 10283106888}}, //sdf\n\t\t{\"0x5000c500673e6b5f\", detect.Wwn{Naa: 5, Oui: 3152, Id: 1732143967}},  //sdg\n\t}\n\t//test\n\tfor _, tt := range tests {\n\t\tt.Run(tt.wwnStr, func(t *testing.T) {\n\t\t\tstr := tt.wwn.ToString()\n\t\t\trequire.Equal(t, tt.wwnStr, str)\n\t\t})\n\t}\n\n}\n"
  },
  {
    "path": "collector/pkg/errors/errors.go",
    "content": "package errors\n\nimport (\n\t\"fmt\"\n)\n\n// Raised when config file is missing\ntype ConfigFileMissingError string\n\nfunc (str ConfigFileMissingError) Error() string {\n\treturn fmt.Sprintf(\"ConfigFileMissingError: %q\", string(str))\n}\n\n// Raised when the config file doesnt match schema\ntype ConfigValidationError string\n\nfunc (str ConfigValidationError) Error() string {\n\treturn fmt.Sprintf(\"ConfigValidationError: %q\", string(str))\n}\n\n// Raised when a dependency (like smartd or ssh-agent) is missing\ntype DependencyMissingError string\n\nfunc (str DependencyMissingError) Error() string {\n\treturn fmt.Sprintf(\"DependencyMissingError: %q\", string(str))\n}\n\n// Raised when there was an error communicating with API server\ntype ApiServerCommunicationError string\n\nfunc (str ApiServerCommunicationError) Error() string {\n\treturn fmt.Sprintf(\"ApiServerCommunicationError: %q\", string(str))\n}\n"
  },
  {
    "path": "collector/pkg/errors/errors_test.go",
    "content": "package errors_test\n\nimport (\n\t\"github.com/analogj/scrutiny/collector/pkg/errors\"\n\t\"github.com/stretchr/testify/require\"\n\t\"testing\"\n)\n\n//func TestCheckErr_WithoutError(t *testing.T) {\n//\tt.Parallel()\n//\n//\t//assert\n//\trequire.NotPanics(t, func() {\n//\t\terrors.CheckErr(nil)\n//\t})\n//}\n\n//func TestCheckErr_Error(t *testing.T) {\n//\tt.Parallel()\n//\n//\t//assert\n//\trequire.Panics(t, func() {\n//\t\terrors.CheckErr(stderrors.New(\"This is an error\"))\n//\t})\n//}\n\nfunc TestErrors(t *testing.T) {\n\tt.Parallel()\n\n\t//assert\n\trequire.Implements(t, (*error)(nil), errors.ConfigFileMissingError(\"test\"), \"should implement the error interface\")\n\trequire.Implements(t, (*error)(nil), errors.ConfigValidationError(\"test\"), \"should implement the error interface\")\n\trequire.Implements(t, (*error)(nil), errors.DependencyMissingError(\"test\"), \"should implement the error interface\")\n}\n"
  },
  {
    "path": "collector/pkg/models/device.go",
    "content": "package models\n\ntype Device struct {\n\tWWN string `json:\"wwn\"`\n\n\tDeviceName     string `json:\"device_name\"`\n\tDeviceUUID\t   string `json:\"device_uuid\"`\n\tDeviceSerialID\t   string `json:\"device_serial_id\"`\n\tDeviceLabel\t   string `json:\"device_label\"`\n\n\tManufacturer   string `json:\"manufacturer\"`\n\tModelName      string `json:\"model_name\"`\n\tInterfaceType  string `json:\"interface_type\"`\n\tInterfaceSpeed string `json:\"interface_speed\"`\n\tSerialNumber   string `json:\"serial_number\"`\n\tFirmware       string `json:\"firmware\"`\n\tRotationSpeed  int    `json:\"rotational_speed\"`\n\tCapacity       int64  `json:\"capacity\"`\n\tFormFactor     string `json:\"form_factor\"`\n\tSmartSupport   bool   `json:\"smart_support\"`\n\tDeviceProtocol string `json:\"device_protocol\"` //protocol determines which smart attribute types are available (ATA, NVMe, SCSI)\n\tDeviceType     string `json:\"device_type\"`     //device type is used for querying with -d/t flag, should only be used by collector.\n\n\t// User provided metadata\n\tLabel  string `json:\"label\"`\n\tHostId string `json:\"host_id\"`\n}\n\ntype DeviceWrapper struct {\n\tSuccess bool     `json:\"success,omitempty\"`\n\tErrors  []error  `json:\"errors,omitempty\"`\n\tData    []Device `json:\"data\"`\n}\n"
  },
  {
    "path": "collector/pkg/models/scan.go",
    "content": "package models\n\ntype Scan struct {\n\tJSONFormatVersion []int `json:\"json_format_version\"`\n\tSmartctl          struct {\n\t\tVersion      []int    `json:\"version\"`\n\t\tSvnRevision  string   `json:\"svn_revision\"`\n\t\tPlatformInfo string   `json:\"platform_info\"`\n\t\tBuildInfo    string   `json:\"build_info\"`\n\t\tArgv         []string `json:\"argv\"`\n\t\tExitStatus   int      `json:\"exit_status\"`\n\t} `json:\"smartctl\"`\n\tDevices []ScanDevice `json:\"devices\"`\n}\ntype ScanDevice struct {\n\tName     string `json:\"name\"`\n\tInfoName string `json:\"info_name\"`\n\tType     string `json:\"type\"`\n\tProtocol string `json:\"protocol\"`\n}\n"
  },
  {
    "path": "collector/pkg/models/scan_override.go",
    "content": "package models\n\ntype ScanOverride struct {\n\tDevice     string   `mapstructure:\"device\"`\n\tDeviceType []string `mapstructure:\"type\"`\n\tIgnore     bool     `mapstructure:\"ignore\"`\n\tCommands   struct {\n\t\tMetricsInfoArgs  string `mapstructure:\"metrics_info_args\"`\n\t\tMetricsSmartArgs string `mapstructure:\"metrics_smart_args\"`\n\t} `mapstructure:\"commands\"`\n}\n"
  },
  {
    "path": "docker/Dockerfile",
    "content": "# syntax=docker/dockerfile:1.4\n########################################################################################################################\n# Omnibus Image\n########################################################################################################################\n\n######## Build the frontend\nFROM --platform=${BUILDPLATFORM} node AS frontendbuild\nWORKDIR /go/src/github.com/analogj/scrutiny\nCOPY --link Makefile /go/src/github.com/analogj/scrutiny/\nCOPY --link webapp/frontend /go/src/github.com/analogj/scrutiny/webapp/frontend\n\nRUN make binary-frontend\n\n\n######## Build the backend\nFROM golang:1.25-trixie as backendbuild\n\nWORKDIR /go/src/github.com/analogj/scrutiny\nCOPY --link Makefile /go/src/github.com/analogj/scrutiny/\nCOPY --link go.mod go.sum /go/src/github.com/analogj/scrutiny/\nCOPY --link collector /go/src/github.com/analogj/scrutiny/collector\nCOPY --link webapp/backend /go/src/github.com/analogj/scrutiny/webapp/backend\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive \\\n    apt-get install -y --no-install-recommends \\\n    file \\\n    && rm -rf /var/lib/apt/lists/*\nRUN make binary-clean binary-all WEB_BINARY_NAME=scrutiny\n\n\n######## Build smartmontools from source\nFROM debian:trixie-slim AS smartmontoolsbuild\nARG SMARTMONTOOLS_VER=7.5\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive \\\n    apt-get install -y --no-install-recommends \\\n    ca-certificates curl gcc g++ gnupg make \\\n    && rm -rf /var/lib/apt/lists/*\nRUN curl -L \"https://github.com/smartmontools/smartmontools/releases/download/RELEASE_$(echo ${SMARTMONTOOLS_VER} | tr '.' '_')/smartmontools-${SMARTMONTOOLS_VER}.tar.gz\" -o /tmp/smartmontools.tar.gz \\\n    && tar -xzf /tmp/smartmontools.tar.gz -C /tmp \\\n    && cd /tmp/smartmontools-${SMARTMONTOOLS_VER} \\\n    && ./configure --prefix=/usr LDFLAGS='-static' --without-libcap-ng --without-libsystemd \\\n    && make -j\"$(nproc)\" \\\n    && make install \\\n    && /usr/sbin/update-smart-drivedb \\\n    && rm -rf /tmp/smartmontools*\n\n\n######## Combine build artifacts in runtime image\nFROM debian:trixie-slim AS runtime\nARG TARGETARCH\nEXPOSE 8080\nWORKDIR /opt/scrutiny\nENV PATH=\"/opt/scrutiny/bin:${PATH}\"\nENV INFLUXD_CONFIG_PATH=/opt/scrutiny/influxdb\nENV S6VER=\"3.1.6.2\"\nENV INFLUXVER=\"2.2.0\"\nENV S6_SERVICES_READYTIME=1000\nSHELL [\"/usr/bin/sh\", \"-c\"]\n\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive \\\n    apt-get install -y --no-install-recommends \\\n    ca-certificates \\\n    cron \\\n    curl \\\n    tzdata \\\n    procps \\\n    xz-utils \\\n    && rm -rf /var/lib/apt/lists/* \\\n    && update-ca-certificates \\\n    && case ${TARGETARCH} in \\\n           \"amd64\")  S6_ARCH=x86_64  ;; \\\n           \"arm64\")  S6_ARCH=aarch64  ;; \\\n       esac \\\n    && curl https://github.com/just-containers/s6-overlay/releases/download/v${S6VER}/s6-overlay-noarch.tar.xz -L -s --output /tmp/s6-overlay-noarch.tar.xz \\\n    && tar -Jxpf /tmp/s6-overlay-noarch.tar.xz -C / \\\n    && rm -rf /tmp/s6-overlay-noarch.tar.xz \\\n    && curl https://github.com/just-containers/s6-overlay/releases/download/v${S6VER}/s6-overlay-${S6_ARCH}.tar.xz -L -s --output /tmp/s6-overlay-${S6_ARCH}.tar.xz \\\n    && tar -Jxpf /tmp/s6-overlay-${S6_ARCH}.tar.xz -C / \\\n    && rm -rf /tmp/s6-overlay-${S6_ARCH}.tar.xz\nRUN curl -L https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXVER}-${TARGETARCH}.deb --output /tmp/influxdb2-${INFLUXVER}-${TARGETARCH}.deb \\\n    && dpkg -i --force-all /tmp/influxdb2-${INFLUXVER}-${TARGETARCH}.deb \\\n    && rm -rf /tmp/influxdb2-${INFLUXVER}-${TARGETARCH}.deb\n\nCOPY /rootfs /\n\nCOPY --from=smartmontoolsbuild /usr/sbin/smartctl /usr/sbin/smartctl\nCOPY --from=smartmontoolsbuild /usr/share/smartmontools/ /usr/share/smartmontools/\n\nCOPY --link --from=backendbuild --chmod=755 /go/src/github.com/analogj/scrutiny/scrutiny /opt/scrutiny/bin/\nCOPY --link --from=backendbuild --chmod=755 /go/src/github.com/analogj/scrutiny/scrutiny-collector-metrics /opt/scrutiny/bin/\nCOPY --link --from=frontendbuild --chmod=644 /go/src/github.com/analogj/scrutiny/dist /opt/scrutiny/web\nRUN chmod 0644 /etc/cron.d/scrutiny && \\\n    rm -f /etc/cron.daily/* && \\\n    mkdir -p /opt/scrutiny/web && \\\n    mkdir -p /opt/scrutiny/config && \\\n    chmod -R ugo+rwx /opt/scrutiny/config && \\\n    chmod +x /etc/cont-init.d/* && \\\n    chmod +x /etc/services.d/*/run && \\\n    chmod +x /etc/services.d/*/finish\n\nCMD [\"/init\"]\n"
  },
  {
    "path": "docker/Dockerfile.collector",
    "content": "########################################################################################################################\n# Collector Image\n########################################################################################################################\n\n\n########\nFROM golang:1.25-trixie AS backendbuild\n\nWORKDIR /go/src/github.com/analogj/scrutiny\n\nCOPY --link Makefile /go/src/github.com/analogj/scrutiny/\nCOPY --link go.mod go.sum /go/src/github.com/analogj/scrutiny/\nCOPY --link collector /go/src/github.com/analogj/scrutiny/collector\nCOPY --link webapp/backend /go/src/github.com/analogj/scrutiny/webapp/backend\n\nRUN apt-get update && apt-get install -y file && rm -rf /var/lib/apt/lists/*\nRUN make binary-clean binary-collector\n\n######## Build smartmontools from source\nFROM debian:trixie-slim AS smartmontoolsbuild\nARG SMARTMONTOOLS_VER=7.5\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive \\\n    apt-get install -y --no-install-recommends \\\n    ca-certificates curl gcc g++ gnupg make \\\n    && rm -rf /var/lib/apt/lists/*\nRUN curl -L \"https://github.com/smartmontools/smartmontools/releases/download/RELEASE_$(echo ${SMARTMONTOOLS_VER} | tr '.' '_')/smartmontools-${SMARTMONTOOLS_VER}.tar.gz\" -o /tmp/smartmontools.tar.gz \\\n    && tar -xzf /tmp/smartmontools.tar.gz -C /tmp \\\n    && cd /tmp/smartmontools-${SMARTMONTOOLS_VER} \\\n    && ./configure --prefix=/usr LDFLAGS='-static' --without-libcap-ng --without-libsystemd \\\n    && make -j\"$(nproc)\" \\\n    && make install \\\n    && /usr/sbin/update-smart-drivedb \\\n    && rm -rf /tmp/smartmontools*\n\n########\nFROM debian:trixie-slim AS runtime\nWORKDIR /opt/scrutiny\nENV PATH=\"/opt/scrutiny/bin:${PATH}\"\n\nRUN apt-get update && apt-get install -y cron ca-certificates tzdata && rm -rf /var/lib/apt/lists/* && update-ca-certificates\n\nCOPY --from=smartmontoolsbuild /usr/sbin/smartctl /usr/sbin/smartctl\nCOPY --from=smartmontoolsbuild /usr/share/smartmontools/ /usr/share/smartmontools/\n\nCOPY /docker/entrypoint-collector.sh /entrypoint-collector.sh\nCOPY /rootfs/etc/cron.d/scrutiny /etc/cron.d/scrutiny\nCOPY --from=backendbuild /go/src/github.com/analogj/scrutiny/scrutiny-collector-metrics /opt/scrutiny/bin/\nRUN chmod +x /opt/scrutiny/bin/scrutiny-collector-metrics && \\\n    chmod +x /entrypoint-collector.sh && \\\n    chmod 0644 /etc/cron.d/scrutiny && \\\n    rm -f /etc/cron.daily/apt /etc/cron.daily/dpkg /etc/cron.daily/passwd\n\nCMD [\"/entrypoint-collector.sh\"]\n"
  },
  {
    "path": "docker/Dockerfile.smartmontools",
    "content": "########################################################################################################################\n# Smartmontools Builder\n# - Builds smartctl from source as a static binary.\n# - Updates the drive database to include the latest drive models since it can change between releases.\n# - Used as a shared build stage by Dockerfile and Dockerfile.collector.\n########################################################################################################################\nFROM debian:trixie-slim\nARG SMARTMONTOOLS_VER=7.5\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive \\\n    apt-get install -y --no-install-recommends \\\n    ca-certificates curl gcc g++ gnupg make \\\n    && rm -rf /var/lib/apt/lists/*\nRUN curl -L \"https://github.com/smartmontools/smartmontools/releases/download/RELEASE_$(echo ${SMARTMONTOOLS_VER} | tr '.' '_')/smartmontools-${SMARTMONTOOLS_VER}.tar.gz\" -o /tmp/smartmontools.tar.gz \\\n    && tar -xzf /tmp/smartmontools.tar.gz -C /tmp \\\n    && cd /tmp/smartmontools-${SMARTMONTOOLS_VER} \\\n    && ./configure --prefix=/usr LDFLAGS='-static' --without-libcap-ng --without-libsystemd \\\n    && make -j\"$(nproc)\" \\\n    && make install \\\n    && /usr/sbin/update-smart-drivedb \\\n    && rm -rf /tmp/smartmontools*\n"
  },
  {
    "path": "docker/Dockerfile.web",
    "content": "# syntax=docker/dockerfile:1.4\n########################################################################################################################\n# Web Image\n########################################################################################################################\n\n######## Build the frontend\nFROM --platform=${BUILDPLATFORM} node AS frontendbuild\nWORKDIR /go/src/github.com/analogj/scrutiny\nCOPY --link Makefile /go/src/github.com/analogj/scrutiny/\nCOPY --link webapp/frontend /go/src/github.com/analogj/scrutiny/webapp/frontend\n\nRUN make binary-frontend\n\n######## Build the backend\nFROM golang:1.25-trixie as backendbuild\n\nWORKDIR /go/src/github.com/analogj/scrutiny\nCOPY --link Makefile /go/src/github.com/analogj/scrutiny/\nCOPY --link go.mod go.sum /go/src/github.com/analogj/scrutiny/\nCOPY --link collector /go/src/github.com/analogj/scrutiny/collector\nCOPY --link webapp/backend /go/src/github.com/analogj/scrutiny/webapp/backend\n\nRUN apt-get update && apt-get install -y file && rm -rf /var/lib/apt/lists/*\nRUN make binary-clean binary-all WEB_BINARY_NAME=scrutiny\n\n\n######## Combine build artifacts in runtime image\nFROM debian:trixie-slim as runtime\nEXPOSE 8080\nWORKDIR /opt/scrutiny\nENV PATH=\"/opt/scrutiny/bin:${PATH}\"\n\nRUN apt-get update && apt-get install -y ca-certificates curl tzdata && rm -rf /var/lib/apt/lists/* && update-ca-certificates\n\nCOPY --link --from=backendbuild --chmod=755 /go/src/github.com/analogj/scrutiny/scrutiny /opt/scrutiny/bin/\nCOPY --link --from=frontendbuild --chmod=644 /go/src/github.com/analogj/scrutiny/dist /opt/scrutiny/web\nRUN mkdir -p /opt/scrutiny/web && \\\n    mkdir -p /opt/scrutiny/config && \\\n    chmod -R a+rX /opt/scrutiny && \\\n    chmod -R a+w /opt/scrutiny/config\nCMD [\"/opt/scrutiny/bin/scrutiny\", \"start\"]\n"
  },
  {
    "path": "docker/README.md",
    "content": "`rootfs`  is only used by Dockerfile and Dockerfile.collector\n"
  },
  {
    "path": "docker/entrypoint-collector.sh",
    "content": "#!/bin/bash\n\n# Cron runs in its own isolated environment (usually using only /etc/environment )\n# So when the container starts up, we will do a dump of the runtime environment into a .env file that we\n# will then source into the crontab file (/etc/cron.d/scrutiny)\n(set -o posix; export -p) > /env.sh\n\n# adding ability to customize the cron schedule.\nCOLLECTOR_CRON_SCHEDULE=${COLLECTOR_CRON_SCHEDULE:-\"0 0 * * *\"}\nCOLLECTOR_RUN_STARTUP=${COLLECTOR_RUN_STARTUP:-\"false\"}\nCOLLECTOR_RUN_STARTUP_SLEEP=${COLLECTOR_RUN_STARTUP_SLEEP:-\"1\"}\n\n# if the cron schedule has been overridden via env variable (eg docker-compose) we should make sure to strip quotes\n[[ \"${COLLECTOR_CRON_SCHEDULE}\" == \\\"*\\\" || \"${COLLECTOR_CRON_SCHEDULE}\" == \\'*\\' ]] && COLLECTOR_CRON_SCHEDULE=\"${COLLECTOR_CRON_SCHEDULE:1:-1}\"\n\n# replace placeholder with correct value\nsed -i 's|{COLLECTOR_CRON_SCHEDULE}|'\"${COLLECTOR_CRON_SCHEDULE}\"'|g' /etc/cron.d/scrutiny\n\nif [[ \"${COLLECTOR_RUN_STARTUP}\" == \"true\" ]]; then\n    sleep ${COLLECTOR_RUN_STARTUP_SLEEP}\n    echo \"starting scrutiny collector (run-once mode. subsequent calls will be triggered via cron service)\"\n    /opt/scrutiny/bin/scrutiny-collector-metrics run\nfi\n\n\n# now that we have the env start cron in the foreground\necho \"starting cron\"\nexec su -c \"cron -f -L 15\" root\n"
  },
  {
    "path": "docker/example.hubspoke.docker-compose.yml",
    "content": "version: '2.4'\n\nservices:\n  influxdb:\n    restart: unless-stopped\n    image: influxdb:2.8\n    ports:\n      - '8086:8086'\n    volumes:\n      - './influxdb:/var/lib/influxdb2'\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8086/health\"]\n      interval: 5s\n      timeout: 10s\n      retries: 20\n\n\n  web:\n    restart: unless-stopped\n    image: 'ghcr.io/analogj/scrutiny:master-web'\n    ports:\n      - '8080:8080'\n    volumes:\n      - './config:/opt/scrutiny/config'\n    environment:\n      SCRUTINY_WEB_INFLUXDB_HOST: 'influxdb'\n    depends_on:\n      influxdb:\n        condition: service_healthy\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8080/api/health\"]\n      interval: 5s\n      timeout: 10s\n      retries: 20\n      start_period: 10s\n\n  collector:\n    restart: unless-stopped\n    image: 'ghcr.io/analogj/scrutiny:master-collector'\n    cap_add:\n      - SYS_RAWIO\n    volumes:\n      - '/run/udev:/run/udev:ro'\n    environment:\n      COLLECTOR_API_ENDPOINT: 'http://web:8080'\n      COLLECTOR_HOST_ID: 'scrutiny-collector-hostname'\n      # If true forces the collector to run on startup (cron will be started after the collector completes)\n      # see: https://github.com/AnalogJ/scrutiny/blob/master/docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md#collector-trigger-on-startup\n      COLLECTOR_RUN_STARTUP: false\n    depends_on:\n      web:\n        condition: service_healthy\n    devices:\n      - \"/dev/sda\"\n      - \"/dev/sdb\"\n"
  },
  {
    "path": "docker/example.omnibus.docker-compose.yml",
    "content": "version: '3.5'\n\nservices:\n  scrutiny:\n    restart: unless-stopped\n    container_name: scrutiny\n    image: ghcr.io/analogj/scrutiny:master-omnibus\n    cap_add:\n      - SYS_RAWIO\n    ports:\n      - \"8080:8080\" # webapp\n      - \"8086:8086\" # influxDB admin\n    volumes:\n      - /run/udev:/run/udev:ro\n      - ./config:/opt/scrutiny/config\n      - ./influxdb:/opt/scrutiny/influxdb\n    devices:\n      - \"/dev/sda\"\n      - \"/dev/sdb\"\n"
  },
  {
    "path": "docs/DOWNSAMPLING.md",
    "content": "# Downsampling\n\nScrutiny collects alot of data, that can cause the database to grow unbounded. \n\n- Smart data\n- Smart test data\n- Temperature data\n- Disk metrics (capacity/usage)\n- etc\n\nThis data must be accurate in the short term, and is useful for doing trend analysis in the long term.\nHowever, for trend analysis we only need aggregate data, individual data points are not as useful.\n\nScrutiny will automatically downsample data on a schedule to ensure that the database size stays reasonable, while still\nensuring historical data is present for comparisons.\n\n\n| Bucket Name | Retention Period | Downsampling Range | Downsampling Aggregation Window | Downsampling Cron | Comments |\n| --- | --- | --- | --- | --- | --- |\n| `metrics` | 15 days | `-2w -1w` | `1w` | main bucket, weekly on Sunday at 1:00am |\n| `metrics_weekly` | 9 weeks | `-2mo -1mo` | `1mo` | monthly on first day of the month at 1:30am\n| `metrics_monthly` | 25 months | `-2y -1y` | `1y` | yearly on the first day of the year at 2:00am\n| `metrics_yearly` | forever | - | - | - | |\n\n\nAfter 5 months, here's how may data points should exist in each bucket for one disk\n\n| Bucket Name | Datapoints | Comments |\n| --- | --- | --- |\n| `metrics` | 15 | 7 daily datapoints , up to 7 pending data, 1 buffer data point |\n| `metrics_weekly` | 9 | 4 aggregated weekly data points, 4 pending datapoints, 1 buffer data point |\n| `metrics_monthly` | 3 | 3 aggregated monthly data points | \n| `metrics_yearly` | 0 | |\n\nAfter 5 years, here's how may data points should exist in each bucket for one disk\n\n| Bucket Name | Datapoints | Comments |\n| --- | --- | --- |\n| `metrics` | - | - |\n| `metrics_weekly` | - | \n| `metrics_monthly` | - |\n| `metrics_yearly` | - |\n\n"
  },
  {
    "path": "docs/INSTALL_ANSIBLE.md",
    "content": "# Ansible Install\n\n[Zorlin](https://github.com/Zorlin) has developed and now maintains [an Ansible playbook](https://github.com/Zorlin/scrutiny-playbook) which automates the steps involved in manually setting up Scrutiny.\n\nUsing it is simple:\n\n* Grab a copy of the playbook\n* Follow the directions in the playbook repository\n* Run `ansible-playbook site.yml`\n* Visit http://your-machine:8080 to see your new Scrutiny installation.\n\nIt will automatically pull metrics from machines once a day, at 1am.\n\nYou can see it in action below.\n\n[![asciicast](https://asciinema.org/a/493531.svg)](https://asciinema.org/a/493531)\n\n"
  },
  {
    "path": "docs/INSTALL_HUB_SPOKE.md",
    "content": ">\nSee [docker/example.hubspoke.docker-compose.yml](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml)\nfor a docker-compose file.\n\n> The following guide was contributed by @TinJoy59 in #417\n> It describes how to deploy the Scrutiny in Hub/Spoke mode, where the Hub is running in Docker, and the Spokes (\n> collectors) are running as binaries.\n> He's using Proxmox & Synology in his guide, however this should be applicable for almost anyone\n\n# S.M.A.R.T. Monitoring with Scrutiny across machines\n\n![drawing-3-1671744407](https://user-images.githubusercontent.com/86809766/209230023-bf1ef9f8-65c4-454e-9e1a-be1293cd737e.png)\n\n### 🤔 The problem:\n\nScrutiny offers a nice Docker package called \"Omnibus\" that can monitor HDDs attached to a Docker host with relative\nease. Scrutiny can also be installed in a Hub-Spoke layout where Web interface, Database and Collector come in 3\nseparate packages. The official documentation assumes that the spokes in the \"Hub-Spokes layout\" run Docker, which is\nnot always the case. The third approach is to install Scrutiny manually, entirely outside of Docker.\n\n### 💡 The solution:\n\nThis tutorial provides a hybrid configuration where the Hub lives in a Docker instance while the spokes have only\nScrutiny Collector installed manually. The Collector periodically send data to the Hub. It's not mind-boggling hard to\nunderstand but someone might struggle with the setup. This is for them.\n\n### 🖥️ My setup:\n\nI have a Proxmox cluster where one VM runs Docker and all monitoring services - Grafana, Prometheus, various exporters,\nInfluxDB and so forth. Another VM runs the NAS - OpenMediaVault v6, where all hard drives reside. The Scrutiny Collector\nis triggered every 30min to collect data on the drives. The data is sent to the Docker VM, running InfluxDB.\n\n## Setting up the Hub\n\n![drawing-3-1671744714](https://user-images.githubusercontent.com/86809766/209230113-c954d834-521b-4555-bcd2-eb6b80f343be.png)\n\nThe Hub consists of Scrutiny Web - a web interface for viewing the SMART data. And InfluxDB, where the smartmon data is\nstored.\n\n[🔗This is the official Hub-Spoke layout in docker-compose.](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml)\nWe are going to reuse parts of it. The ENV variables provide the necessary configuration for the initial setup, both for\nInfluxDB and Scrutiny.\n\nIf you are working with and existing InfluxDB instance, you can forgo all the `INIT` variables as they already exist.\n\nThe official Scrutiny documentation has a\nsample [scrutiny.yaml ](https://github.com/AnalogJ/scrutiny/blob/master/example.scrutiny.yaml)file that normally\ncontains the connection and notification details but I always find it easier to configure as much as possible in the\ndocker-compose.\n\n```yaml\nnetworks:\n  monitoring: # A common network for all monitoring services to communicate into\n  notifications: # To Gotify or another Notification service\n\nservices:\n  influxdb:\n    restart: unless-stopped\n    container_name: influxdb\n    image: influxdb:2.8\n    ports:\n      - 8086:8086\n    volumes:\n      - ${DIR_CONFIG}/influxdb2/db:/var/lib/influxdb2\n      - ${DIR_CONFIG}/influxdb2/config:/etc/influxdb2\n    environment:\n      - DOCKER_INFLUXDB_INIT_MODE=setup\n      - DOCKER_INFLUXDB_INIT_USERNAME=Admin\n      - DOCKER_INFLUXDB_INIT_PASSWORD=${PASSWORD}\n      - DOCKER_INFLUXDB_INIT_ORG=homelab\n      - DOCKER_INFLUXDB_INIT_BUCKET=scrutiny\n      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=SUPER-SECRET-TOKEN\n      - TZ=Europe/Stockholm\n    networks:\n      - monitoring\n\n  scrutiny:\n    restart: unless-stopped\n    container_name: scrutiny\n    # best practice: pin to a specific release instead of latest\n    image: ghcr.io/analogj/scrutiny:latest-web\n    ports:\n      - 8080:8080\n    volumes:\n      - ${DIR_CONFIG}/config:/opt/scrutiny/config\n    environment:\n      - SCRUTINY_WEB_INFLUXDB_HOST=influxdb\n      - SCRUTINY_WEB_INFLUXDB_PORT=8086\n      - SCRUTINY_WEB_INFLUXDB_TOKEN=SUPER-SECRET-TOKEN\n      - SCRUTINY_WEB_INFLUXDB_ORG=homelab\n      - SCRUTINY_WEB_INFLUXDB_BUCKET=scrutiny\n      # Optional but highly recommended to notify you in case of a problem; space-separated list of shoutrrr uri's\n      # https://github.com/AnalogJ/scrutiny/blob/master/docs/TROUBLESHOOTING_NOTIFICATIONS.md\n      - SCRUTINY_NOTIFY_URLS=http://gotify:80/message?token=a-gotify-token ntfy://username:password@host:port/topic\n      - TZ=Europe/Stockholm\n    depends_on:\n      influxdb:\n        condition: service_healthy\n    networks:\n      - notifications\n      - monitoring\n```\n\nA freshly initialized Scrutiny instance can be accessed on port 8080, eg. `192.168.0.100:8080`. The interface will be\nempty because no metrics have been collected yet.\n\n## Setting up a Spoke ***without*** Docker\n\n![drawing-3-1671744208](https://user-images.githubusercontent.com/86809766/209230155-386a8644-b506-497f-8245-0d24e15c9063.png)\n\nA spoke consists of the Scrutiny Collector binary that is run on a set interval via crontab and sends the data to the\nHub. The official\ndocumentation [describes the manual setup of the Collector](https://github.com/AnalogJ/scrutiny/blob/master/docs/INSTALL_MANUAL.md#collector)\n- dependencies and step by step commands. I have a shortened version that does the same thing but in one line of code.\n\n```bash\n# Installing dependencies\napt install smartmontools -y \n\n# 1. Create directory for the binary\n# 2. Download the binary into that directory\n# 3. Make it exacutable\n# 4. List the contents of the library for confirmation\nmkdir -p /opt/scrutiny/bin && \\\ncurl -L https://github.com/AnalogJ/scrutiny/releases/download/v0.8.1/scrutiny-collector-metrics-linux-amd64 > /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 && \\\nchmod +x /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 && \\\nls -lha /opt/scrutiny/bin\n```\n\n<p class=\"callout warning\">When downloading Github Release Assests, make sure that you have the correct version. The provided example is with Release v0.5.0. [The release list can be found here.](https://github.com/analogj/scrutiny/releases) </p>\n\nOnce the Collector is installed, you can run it with the following command. Make sure to add the correct address and\nport of your Hub as `--api-endpoint`.\n\n```bash\n/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint \"http://192.168.0.100:8080\"\n```\n\nThis will run the Collector once and populate the Web interface of your Scrutiny instance. In order to collect metrics\nfor a time series, you need to run the command repeatedly. Here is an example for crontab, running the Collector every\n15min.\n\n```bash\n# open crontab\ncrontab -e\n\n# add a line for Scrutiny\n*/15 * * * * /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint \"http://192.168.0.100:8080\"\n```\n\nThe Collector has its own independent config file that lives in `/opt/scrutiny/config/collector.yaml` but I did not find\na need to modify\nit. [A default collector.yaml can be found in the official documentation.](https://github.com/AnalogJ/scrutiny/blob/master/example.collector.yaml)\n\n## Setting up a Spoke ***with*** Docker\n\n![drawing-3-1671744277](https://user-images.githubusercontent.com/86809766/209230176-87c9e55a-4e3e-4f5f-9609-335d41529f3d.png)\n\nSetting up a remote Spoke in Docker requires you to split\nthe [official Hub-Spoke layout docker-compose.yml](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml)\n. In the following docker-compose you need to provide the `${API_ENDPOINT}`, in my case `http://192.168.0.100:8080`.\nAlso all drives that you wish to monitor need to be presented to the container under `devices`.\n\nThe image handles the periodic scanning of the drives.\n\n```yaml\nservices:\n\n  collector:\n    restart: unless-stopped\n    # best practice: pin to a specific release instead of latest\n    image: 'ghcr.io/analogj/scrutiny:latest-collector'\n    cap_add:\n      - SYS_RAWIO\n    volumes:\n      - '/run/udev:/run/udev:ro'\n    environment:\n      COLLECTOR_API_ENDPOINT: ${API_ENDPOINT}\n    devices:\n      - \"/dev/sda\"\n      - \"/dev/sdb\"\n```\n"
  },
  {
    "path": "docs/INSTALL_MANUAL.md",
    "content": "# Manual Install\n\nWhile the easiest way to get started with [Scrutiny is using Docker](https://github.com/AnalogJ/scrutiny#docker),\nit is possible to run it manually without much work. You can even mix and match, using Docker for one component and\na manual installation for the other. There's also [an installer](INSTALL_ANSIBLE.md) which automates this manual installation procedure.\n\nScrutiny is made up of three components: an influxdb Database, a collector and a webapp/api. Here's how each component can be deployed manually.\n\n> Note: the `/opt/scrutiny` directory is not hardcoded, you can use any directory name/path.\n\n## InfluxDB\n\nPlease follow the official InfluxDB installation guide. Note, you'll need to install v2.8.0+. \n\nhttps://docs.influxdata.com/influxdb/v2/install/\n\n## Webapp/API\n\n### Dependencies\n\nSince the webapp is packaged as a stand alone binary, there isn't really any software you need to install other than `glibc`\nwhich is included by most linux OS's already.\n\n\n### Directory Structure\n\nNow let's create a directory structure to contain the Scrutiny files & binary.\n\n```\nmkdir -p /opt/scrutiny/config\nmkdir -p /opt/scrutiny/web\nmkdir -p /opt/scrutiny/bin\n```\n\n### Config file\n\nWhile it is possible to run the webapp/api without a config file, the defaults are designed for use in a container environment,\nand so will need to be overridden. So the first thing you'll need to do is create a config file that looks like the following:\n\n```\n# stored in /opt/scrutiny/config/scrutiny.yaml\n\nversion: 1\n\nweb:\n  database:\n    # The Scrutiny webapp will create a database for you, however the parent directory must exist.\n    location: /opt/scrutiny/config/scrutiny.db\n  src:\n    frontend:\n      # The path to the Scrutiny frontend files (js, css, images) must be specified.\n      # We'll populate it with files in the next section\n      path: /opt/scrutiny/web\n  \n  # if you're runnning influxdb on a different host (or using a cloud-provider) you'll need to update the host & port below. \n  # token, org, bucket are unnecessary for a new InfluxDB installation, as Scrutiny will automatically run the InfluxDB setup, \n  # and store the information in the config file. If you 're re-using an existing influxdb installation, you'll need to provide\n  # the `token`\n  influxdb:\n    host: localhost\n    port: 8086\n#    token: 'my-token'\n#    org: 'my-org'\n#    bucket: 'bucket'\n```\n\n> Note: for a full list of available configuration options, please check the [example.scrutiny.yaml](https://github.com/AnalogJ/scrutiny/blob/master/example.scrutiny.yaml) file.\n\n### Download Files\n\nNext, we'll download the Scrutiny API binary and frontend files from the [latest Github release](https://github.com/analogj/scrutiny/releases).\nThe files you need to download are named:\n\n- **scrutiny-web-linux-amd64** - save this file to `/opt/scrutiny/bin`\n- **scrutiny-web-frontend.tar.gz** - save this file to `/opt/scrutiny/web`\n\n### Prepare Scrutiny\n\nNow that we have downloaded the required files, let's prepare the filesystem.\n\n```\n# Let's make sure the Scrutiny webapp is executable.\nchmod +x /opt/scrutiny/bin/scrutiny-web-linux-amd64\n\n# Next, lets extract the frontend files.\n# NOTE: after extraction, there **should not** be a `dist` subdirectory in `/opt/scrutiny/web` directory.\ncd /opt/scrutiny/web\ntar xvzf scrutiny-web-frontend.tar.gz --strip-components 1 -C .\n\n\n# Cleanup\nrm -rf scrutiny-web-frontend.tar.gz\n```\n\n### Start Scrutiny Webapp\n\nFinally, we start the Scrutiny webapp:\n\n```\n/opt/scrutiny/bin/scrutiny-web-linux-amd64 start --config /opt/scrutiny/config/scrutiny.yaml\n```\n\nThe webapp listens for traffic on `http://0.0.0.0:8080` by default.\n\n\n## Collector\n\n### Dependencies\n\nUnlike the webapp, the collector does have some dependencies:\n\n- `smartctl`, v7+\n- `cron` (or an alternative process scheduler)\n\nUnfortunately the version of `smartmontools` (which contains `smartctl`) available in some of the base OS repositories is ancient.\nSo you'll need to install the v7+ version using one of the following commands:\n\n- **Ubuntu (22.04/Jammy/LTS):** `apt-get install -y smartmontools`\n- **Ubuntu (18.04/Bionic):** `apt-get install -y smartmontools=7.0-0ubuntu1~ubuntu18.04.1`\n- **Centos8:**\n    - `dnf install https://extras.getpagespeed.com/release-el8-latest.rpm`\n    - `dnf install smartmontools`\n- **FreeBSD:** `pkg install smartmontools`\n\nThe following additional dependencies are needed if you want to run the collector as an unprivileged user:\n\n- systemd version > 235\n- a restricted user account\n\n### Directory Structure\n\nNow let's create a directory structure to contain the Scrutiny collector binary.\n\n```\nmkdir -p /opt/scrutiny/bin\n```\n\n\n### Download Files\n\nNext, we'll download the Scrutiny collector binary from the [latest Github release](https://github.com/analogj/scrutiny/releases). You are looking for the one titled **scrutiny-collector-metrics-linux-amd64** unless you know you are on arm.\n\n```sh\nwget -O /tmp/scrutiny-collector-metrics https://github.com/AnalogJ/scrutiny/releases/latest/download/scrutiny-collector-metrics-linux-amd64\n```\n\nOptional, but recommended: Before continuing it's recommended you compare the sha from the release page with the downloaded file to ensure it's the same file and not corrupted/tampered with. The command to do this is:\n\n`echo \"SHA_GOES_HERE /tmp/scrutiny-collector-metrics\" | sha256sum -c`\n\nexample for the v0.8.6 release:\n\n`echo \"4c163645ce24e5487f4684a25ec73485d77a82a57f084808ff5aad0c11499ad2 /tmp/scrutiny-collector-metrics\" | sha256sum -c`\n\nfollowed by:\n\n`sudo mv /tmp/scrutiny-collector-metrics /opt/scrutiny/bin/`\n\nto move the binary to its final resting place\n\n\n### Prepare Scrutiny\n\nNow that we have downloaded the required files, let's prepare the filesystem.\n\n```sh\n# Let's make sure the Scrutiny collector is executable.\nchmod +x /opt/scrutiny/bin/scrutiny-collector-metrics\n```\n\nif you are using SELinux, you may need to also do the following:\n\n```sh\n# tell SELinux to allow these binaries\nsudo semanage fcontext -a -t bin_t \"/opt/scrutiny/bin(/.*)?\"\n# update labels\nsudo restorecon -Rv /opt/scrutiny/bin\n```\n\n\n### Start Scrutiny Collector, Populate Webapp\n\nNext, we will manually trigger the collector, to populate the Scrutiny dashboard:\n\n> NOTE: if you need to pass a config file to the scrutiny collector, you can provide it using the `--config` flag.\n\n```sh\n/opt/scrutiny/bin/scrutiny-collector-metrics run --api-endpoint \"http://localhost:8080\"\n```\n\n### Schedule Collector with (root) Cron\n\nFinally you need to schedule the collector to run periodically.\nThis may be different depending on your OS/environment, but it may look something like this:\n\n```sh\n# open crontab\nsudo crontab -e\n\n# add a line for Scrutiny\n*/15 * * * * . /etc/profile; /opt/scrutiny/bin/scrutiny-collector-metrics run --api-endpoint \"http://localhost:8080\"\n```\n\n### Schedule Collector with Systemd (rootless)\n\nAlternatively you can run `scrutiny-collector-metrics` as non-root so long as the relevant capabilities and permissions are granted.\n\n\n#### Creating a Restricted Service Account\n\nThis is the account that will run `scrutiny-collector-metrics`. Note this isn't strictly needed for all setups, but is useful from a logging/auditing perspective.\n\n- Debian-based distros:\n    - `sudo adduser --system scrutiny-svc --group --home /opt/scrutiny-svc`\n- RHEL-based distros:\n    - `sudo useradd --system --home-dir /opt/scrutiny-svc --shell /sbin/nologin scrutiny-svc`\n\nNext, add the user to the `disk` group:\n\n```sh\nsudo usermod -aG disk scrutiny-svc\n```\n\n\n#### Creating a Restricted Systemd Service using AmbientCapabilities (easier)\n\nThis is the simpler setup, which allows you to run scrutiny rootless, but depending on what you want, may require granting more permissions to scrutiny than you would like to.\n\n1. go to `/etc/systemd/system`\n2. create scrutiny-collector.service with the following contents:\n\n\n```ini\n[Unit]\nDescription=Daily Restricted Scrutiny Collector\nAfter=network.target\n\n[Service]\n[Unit]\nDescription=Daily Restricted Scrutiny Collector\nAfter=network.target\n\n[Service]\nType=oneshot\nUser=scrutiny-svc\nGroup=disk\nExecStart=/opt/scrutiny/bin/scrutiny-collector-metrics run --api-endpoint \"http://localhost:8080\"\n\n# --- PRIVILEGE LOCKDOWN ---\n## CAP_SYS_RAWIO is needed for SATA drives\nAmbientCapabilities=CAP_SYS_RAWIO\nCapabilityBoundingSet=CAP_SYS_RAWIO\n## unfortunately nvme drives require CAP_SYS_ADMIN\n## if you want nvme drives you must do the following:\n#AmbientCapabilities=CAP_SYS_RAWIO CAP_SYS_ADMIN\n#CapabilityBoundingSet=\n\nNoNewPrivileges=yes\n\n# Security/sandboxing settings\nKeyringMode=private\nLockPersonality=yes\nMemoryDenyWriteExecute=yes\nProtectSystem=strict\nProtectHome=yes\nPrivateDevices=no\n## you can restrict devices using:\n#DevicePolicy=closed\n#DeviceAllow=/dev/sda r\n#DeviceAllow=/dev/nvme0 r\nProtectKernelModules=yes\nProtectKernelTunables=yes\nProtectControlGroups=yes\nProtectClock=yes\nProtectHostname=yes\nProtectKernelLogs=yes\nRemoveIPC=yes\nRestrictSUIDSGID=true\n\n\n# --- NETWORK LOCKDOWN\n## use these to restrict what scrutiny can talk to over the network\n## if using a hub on a different host you will need to change the values accordingly\nRestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX\nIPAddressDeny=any\nIPAddressAllow=localhost\n\n[Install]\nWantedBy=multi-user.target\n\n```\n\nAdditionally, for nvme drives you may need to create a udev rule on many systems, as /dev/nvme* is often owned only by root:\n\n##### add udev rule `/etc/udev/rules.d/99-nvme.rules` with contents:\n\n```\nKERNEL==\"nvme[0-9]*\", GROUP=\"disk\", MODE=\"0640\"\n```\n\nthen run the following commands to load the udev rule:\n\n```sh\nsudo udevadm control --reload-rules\nsudo udevadm trigger --subsystem-match=nvme --action=add\n```\n\n\n##### Pros:\n\n- easy to maintain\n- much better than running as root (especially if you don't need nvme drives)\n- there are no privilege escalations needed\n\n\n##### Cons:\n\nNOTE: These cons basically only apply if a major supply-chain attack happens against scrutiny, and reflect a worst-case scenario that is unlikely to ever occur:\n\n- CAP_SYS_RAWIO allows for data exfiltration/modification from SATA drives (ssh keys, /etc/shadow, etc)\n- CAP_SYS_ADMIN would theoretically allow for significant system compromise\n- nvme drives requires a udev rule for reliable access\n\n\nIf you are happy with that, you can jump to [Create a Systemd Timer to run scrutiny-collector.service](#create-a-systemd-timer-to-run-scrutiny-collectorservice)\n\n\n#### Creating a Restricted Systemd Service using sudo and Shim Script\n\nIf granting scrutiny `CAP_SYS_RAWIO` and/or `CAP_SYS_ADMIN` exceeds your risk appetite, you have another option, though one more complicated and with its own set of pros/cons\n\n1. run `sudo mkdir -p /opt/smartctl-shim/bin`\n2. edit `/opt/smartctl-shim/bin/smartctl` with the following content:\n\n```sh\n#!/bin/bash\n# Shim for accounts to use smartctl without being root\n# for automation requires the account be in sudoers\nexec /usr/bin/sudo /usr/sbin/smartctl \"$@\"\n```\n\n3. create a new `scrutiny-collector` file in `/etc/sudoers.d/`\n4. inside `/etc/sudoers.d/scrutiny-collector` add the following:\n\n```sh\nscrutiny-svc ALL=(root) NOPASSWD: /usr/sbin/smartctl *\n```\n\n5. go to `/etc/systemd/system`\n6. create scrutiny-collector.service with the following contents:\n\n\n```ini\n[Unit]\nDescription=Daily Restricted Scrutiny Collector\nAfter=network.target\n\n[Service]\nType=oneshot\nUser=scrutiny-svc\nEnvironment=\"PATH=/opt/smartctl-shim/bin:/usr/bin:/bin\"\nExecStart=/opt/scrutiny/bin/scrutiny-collector-metrics run --api-endpoint \"http://localhost:8080\"\n\n# --- PRIVILEGE LOCKDOWN ---\n## we use sudo to elevate privileges for smartctl only, so no Ambient Capabilities are needed\nAmbientCapabilities=\n## CAP_SYS_RAWIO is needed for SATA drives\nCapabilityBoundingSet=CAP_SETUID CAP_SETGID CAP_AUDIT_WRITE CAP_SYS_RAWIO CAP_SYS_RESOURCE\n## unfortunately nvme drives require CAP_SYS_ADMIN\n## if you want nvme drives you must do the following:\n# CapabilityBoundingSet=CAP_SETUID CAP_SETGID CAP_AUDIT_WRITE CAP_SYS_RAWIO CAP_SYS_ADMIN CAP_SYS_RESOURCE\n\n## since sudo needs to be used to elevate permissions in this setup, we need to allow new privileges\nNoNewPrivileges=no\n\n# Security/sandboxing settings\nKeyringMode=private\nLockPersonality=yes\nMemoryDenyWriteExecute=yes\nProtectSystem=strict\nProtectHome=yes\nPrivateDevices=no\nProtectKernelModules=yes\nProtectKernelTunables=yes\nProtectControlGroups=yes\nProtectClock=yes\nProtectHostname=yes\nProtectKernelLogs=yes\nRemoveIPC=yes\nRestrictSUIDSGID=true\n\n\n# --- NETWORK LOCKDOWN\n## use these to restrict what scrutiny can talk to over the network\n## if using a hub on a different host you will need to change the values accordingly\nRestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX\nIPAddressDeny=any\nIPAddressAllow=localhost\n\n[Install]\nWantedBy=multi-user.target\n```\n\n\n##### Pros:\n\n- the scrutiny binary itself will not have permissions like CAP_SYS_ADMIN\n- much better than running as root (especially if you don't need nvme drives)\n- `sudo` restricts privilege escalation to just `smartctl`\n- no udev rule needed\n\n\n##### Cons:\n\nNOTE: These cons basically only apply if a major supply-chain attack happens against scrutiny, and reflect a worst-case scenario that is unlikely to ever occur:\n\n- Any sort of privilege escalation attack in sudo could theoretically allow a compromised scrutiny to gain additional privileges, since the process has permission to escelate privileges in general\n- Even though sudo only allows `smartctl`, it still has `CAP_SYS_RAWIO` and `CAP_SYS_ADMIN` so in theory the same attacks from the first method are possible, though now only with an exploit using smartctl instead of scrutiny directly\n- even though you don't need a udev rule, this adds a lot of additional administrative overhead\n- while the scrutiny binary itself isn't elevated, it has a sub-process that is running as root (systemctl)\n\n#### Create a Systemd Timer to run scrutiny-collector.service\n\nFirst, lets test our service. It doesn't matter which method you used above, as either way you need to load and run it.\n\n```sh\n# reload changes for systemd services\nsudo systemctl daemon-reload\n\n# enable the service\nsudo systemctl enable scrutiny-collector.service\n\n# now run the service\nsudo systemctl start scrutiny-collector.service\n```\n\nYou should see the data in your hub instance of scrutiny now. If your run into issues I recommend turning on debug logging for scrutiny and checking your system logs using journalctl. It may be a permission is missing or wrong.\n\nNow that things have been validated, lets create the systemd timer to run the service for us on a schedule:\n\n1. if you are not still there, go to `/etc/systemd/system`\n2. create scrutiny-collector.timer with the following contents:\n\n```ini\n[Unit]\nDescription=Run Scruitiny Collector daily at 2am\n\n[Timer]\n# Standard calendar trigger\nOnCalendar=*-*-* 02:00:00\n# Ensures the job runs if the computer was off at 2am\nPersistent=true\n# Minimizes I/O spikes by staggering start time\nRandomizedDelaySec=30\n\n[Install]\nWantedBy=timers.target\n\n```\n\nUpdate the schedule as you see fit for your needs\n\nOnce you are satisfied with our timer, you'll need to load and enable it:\n\n```sh\n# reload changes for systemd services\nsudo systemctl daemon-reload\n\n# now enable the timer\nsudo systemctl enable --now scrutiny-collector.timer\n```\n\nThat's it! you're done. You can check the status of the timer using `sudo systemctl status scrutiny-collector.timer\n`"
  },
  {
    "path": "docs/INSTALL_MANUAL_WINDOWS.md",
    "content": "# Manual Windows Install\n\nThis guide is specifically for people who are on a Windows machine using [WSL](https://learn.microsoft.com/en-us/windows/wsl/about) with Docker.\n\nScrutiny is made up of three components: an influxdb Database, a collector and a webapp/api. Docker will be used for\nthe influxdb and webapp/API, the collector component will be facilitated by [Windows Task Scheduler](https://learn.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page).\n\n> **NOTE:** If you are **NOT** using WSL with docker, then the easiest way to get started with [Scrutiny is the omnibus Docker image](https://github.com/AnalogJ/scrutiny#docker).\n\n## InfluxDB and Webapp/API (Docker)\n\n1. Copy the [example.hubspoke.docker-compose.yml](https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml) \nfile and delete the collector section near the bottom of the file.\n2. Run `docker-compose up -d` to verify that the DB and webapp are working correctly and once its completed, your webapp\nshould be up and running but the dashboard will be empty (default location is `localhost:8080`)\n\n## Collector (Windows Task Scheduler)\n\n1. Download the latest `scrutiny-collector-metrics-windows-amd64.exe` from the [releases page](https://github.com/AnalogJ/scrutiny/releases) (under assets)\n2. On your windows host, open [Windows Task Scheduler](https://www.wikihow.com/Open-Task-Scheduler-in-Windows-10) as **Administrator**\n   1. In the **Start Menu** (Windows key), type `Task Scheduler` and then right click `Run as Administrator` to open\n3. On the status bar (under the `action` tab), click `Create Task...`\n4. A new window should open with the `General` Tab open, enter relevant information into the `Name` and `Description` fields\n   1. Under **Security Options** check:\n      1. **Run whether user is logged on or not**\n      2. **Run with highest privileges**\n5. Next, click the `Triggers` tab and then click `New...` (bottom left-hand side of the window)\n6. Here you can set how often you want this task to run, example settings are the following:\n   1. **Settings:**\n      1. `Daily`, start at `TODAYS_DATE` `12:00:00 AM`, Recur every `1` days,\n   2. **Advanced Settings:**\n      1. Repeat Task every: `1 hour` for a duration of `Indefinitely`\n      2. Stop task if it runs longer than: `30 minutes`\n   3. Click Ok when satisfied with your schedule\n   > **NOTE:** The above settings will trigger the task **every day at midnight** and then **run every hour after that** (modify as needed)\n7. Next, click the `Actions` tab and then click `New...` (bottom left-hand side of the window)\n   1. **Action Settings:**\n      1. In the **Program/Script** field, put: `scrutiny-collector-metrics-windows-amd64.exe`\n      2. In the **Add arguments (optional)** field, put: `run --api-endpoint \"http://localhost:8080\" --config collector.yaml`\n         > **NOTE:** \n         > * Make sure that you put the correct port number (as specified in the docker-compose file) for the webapp (default is `8080`)\n         > * The `--config` param is optional and is not needed if you just want to use the default collector config, see \n      [example.collector.yaml](https://github.com/AnalogJ/scrutiny/blob/master/example.collector.yaml) for more info on the collector config.\n      3. In the **Start in (optional)** field, put: FOLDER_PATH_TO_YOUR `scrutiny-collector-metrics-windows-amd64.exe` file\n          > **NOTE:** Must be exact and do not include `scrutiny-collector-metrics-windows-amd64.exe` in the path\n      4. Click Ok when finished\n8. Next, click the `Conditions` tab and make sure that everything is unchecked (unless you want to specify otherwise)\n9. Next, click the `Settings` tab and check everything except for the last checkbox\n   1. **Examples for the following settings:**\n      1. If the task fails, restart every: `5 minutes`\n      2. Attempt restart up to: `3` times\n      3. Stop the task if it runs longer than `1 hour`\n10. Next, once satisfied with everything, click Ok\n11. Then, find your newly created task (by its name) in the scheduler task list and then manually run it (right click it and then click `Run`)\n12. Finally, refresh your dashboard after a minute or two and your drive information should have populated the webapp dashboard.\n\n\n\n\n"
  },
  {
    "path": "docs/INSTALL_NAS.md",
    "content": "package docs\n"
  },
  {
    "path": "docs/INSTALL_PFSENSE.md",
    "content": "# pfsense Install\n\nThis bascially follows the [Manual collector instructions](https://github.com/AnalogJ/scrutiny/blob/master/docs/INSTALL_MANUAL.md#collector) and assumes you are running a hub and spoke deployment and already have the web app setup.\n\n\n### Dependencies\n\nSSH into pfsense, hit `8` for the shell and install the required dependencies.\n\n```\npkg install smartmontools\n```\n\nEnsure smartmontools is v7+. This won't be a problem in pfsense 2.6.0+\n\n\n### Directory Structure\n\nNow let's create a directory structure to contain the Scrutiny collector binary.\n\n```\nmkdir -p /opt/scrutiny/bin\n```\n\n\n### Download Files\n\nNext, we'll download the Scrutiny collector binary from the [latest Github release](https://github.com/analogj/scrutiny/releases).\n\n> NOTE: Ensure you have the latest version in the below command\n\n```\nfetch -o /opt/scrutiny/bin https://github.com/AnalogJ/scrutiny/releases/download/vX.X.X/scrutiny-collector-metrics-freebsd-amd64\n```\n\n\n### Prepare Scrutiny\n\nNow that we have downloaded the required files, let's prepare the filesystem.\n\n```\nchmod +x /opt/scrutiny/bin/scrutiny-collector-metrics-freebsd-amd64\n```\n\n\n### Start Scrutiny Collector, Populate Webapp\n\nNext, we will manually trigger the collector, to populate the Scrutiny dashboard:\n\n> NOTE: if you need to pass a config file to the scrutiny collector, you can provide it using the `--config` flag.\n\n```\n/opt/scrutiny/bin/scrutiny-collector-metrics-freebsd-amd64 run --api-endpoint \"http://localhost:8080\"\n```\n> NOTE: change the IP address to that of your web app\n\n### Schedule Collector with Cron\n\nFinally you need to schedule the collector to run periodically.\n\nLogin to the pfsense webGUI and head to `Services/Cron` add an entry with the following details:\n\n```\nMinute: */15\nHour: *\nDay of the Month: *\nMonth of the Year: *\nDay of the Week: *\nUser: root\nCommand: /opt/scrutiny/bin/scrutiny-collector-metrics-freebsd-amd64 run --api-endpoint \"http://localhost:8080\" >/dev/null 2>&1\n```\n> NOTE: `>/dev/null 2>&1` is used to stop cron confirmation emails being sent.\n"
  },
  {
    "path": "docs/INSTALL_ROOTLESS_PODMAN.md",
    "content": "# Rootless Podman Quadlet Install\n\nNote: These instructions are written with Podman 4.9 in mind, as that's what's available on Ubuntu 24.04. Podman 5+ can simplify the process using a .pod file to run both the hub and influxdb instance in the same pod, sharing localhost. This is a fairly trivial change should anyone want to add the documentation for it. While this document isn't Ubuntu-specific, this is being purposefully done to allow it to apply to the vast majority of Podman users, regardless of what Linux distro they use.\n\n\n### Dependencies\n\n- Podman > 4.9\n- Systemd > 250 (for quadlet support)\n- a restricted service account\n\n\n### Creating a Service Account\n\nSee [Creating a Restricted Service Account](INSTALL_MANUAL.md#creating-a-restricted-service-account) for instructions.\n\nWhile you do not need to use the same account as the collector, this guide will assume you will be for all its examples.\n\nIn addition to those steps, you will need to create sub ids and enable lingering for the user:\n\n```sh\n# add sub-uids and sub-gids, you may need to adjust numbers if you have other rootless quadlets running for other users already\n# it is not recommended to go below 100000\n# we choose to start at 500000 in the event you have some other podman accounts\nsudo usermod --add-subuids 500000-565535 scrutiny-svc\nsudo usermod --add-subgids 500000-565535 scrutiny-svc\n\n# We want the quadlets to stay running even if the user isn't logged in\nsudo loginctl enable-linger scrutiny-svc\n```\n\n\n### Directory Structure\n\nOnce the account is created, you will need to grab its id to create a few drectories for the data files and rootless quadlet files:\n\n```sh\n# create folders for config and influxdb\nsudo mkdir -p /opt/scrutiny-svc/scrutiny/{config,influxdb}\n\n# get the config file for scrutiny hub\nsudo wget -O /opt/scrutiny-svc/scrutiny/config/scrutiny.yaml https://raw.githubusercontent.com/AnalogJ/scrutiny/refs/heads/master/example.scrutiny.yaml\n\n# set permissions on everything\nsudo chown -R scrutiny-svc:scrutiny-svc /opt/scrutiny-svc\n\n# Get the ID of scrutiny-svc so you know it for your own record-keeping\nid -u scrutiny-svc\n\n# create a directory\nsudo mkdir -p /etc/containers/systemd/users/$(id -u scrutiny-svc)\n\n## go into the directory you just created for the rest of the guide\ncd /etc/containers/systemd/users/$(id -u scrutiny-svc)\n```\n\n\n### Quadlet Files\n\nNow that everything is set up and configured for the account to run quadlets, we just need to create a few quadlet files.\n\nAll remaining system actions will take place in `/etc/containers/systemd/users/$(id -u scrutiny-svc)` which is why we had you cd into it.\n\n\n#### Networking\n\nWe need the hub and influxdb instances to be able to talk to each other, and in the case of Podman 4.9, they will run separately not sharing a localhost, and as such we need to configure a network for them to share. The file is pretty simple:\n\n\n##### scrutiny-net.network\n\n```ini\n[Network]\nNetworkName=scrutiny-net\n```\n\n\n#### Containers\n\nNow we're ready for creating the containers\n\n\n##### influxdb.container\n\n```ini\n[Unit]\nDescription=influxdb\n\n[Container]\nContainerName=influxdb\nImage=docker.io/library/influxdb:2.8\nAutoUpdate=registry\nTimezone=local\n## not strictly necessary, but keeps file permission sane for influxdb\nPodmanArgs=--group-add keep-groups\n## versions of podman after 5.1 should do the below instead\n#GroupAdd=keep-groups\nVolume=/opt/scrutiny-svc/scrutiny/influxdb:/var/lib/influxdb2:Z\nNetwork=scrutiny-net\n\n[Service]\nRestart=on-failure\n\n[Install]\n# Start by default on boot\nWantedBy=default.target\n```\n\n\n##### scrutiny-web.container\n\n```ini\n[Unit]\nDescription=scrutiny-web\nAfter=influxdb.service\nRequires=influxdb.service\n\n[Container]\nContainerName=scrutiny-web\nImage=ghcr.io/analogj/scrutiny:latest-web\nAutoUpdate=registry\nTimezone=local\nVolume=/opt/scrutiny-svc/scrutiny/config:/opt/scrutiny/config:Z\nNetwork=scrutiny-net\nPublishPort=8080:8080/tcp\n\n[Service]\nRestart=on-failure\n\n[Install]\n# Start by default on boot\nWantedBy=default.target\n```\n\n#### Update scrutiny config\n\nSince our containers are running separately, we need to update `/opt/scrutiny-svc/scrutiny/config/scrutiny.yaml` to the new influxdb host:\n\n1. edit `/opt/scrutiny-svc/scrutiny/config/scrutiny.yaml`\n2. under `influxdb` section, change `host: 0.0.0.0` to `host: influxdb` -- remember that yaml is whitespace-sensitive! so be mindful of the indents\n\n```yaml\n  influxdb:\n#    scheme: 'http'\n    host: influxdb\n    port: 8086\n```\n\n# Running the hub and doing the \n\nWith that done, we're now ready to start up the services:\n\n```sh\n# reload all the systemd user files for scrutiny-svc\nsudo systemctl --user -M scrutiny-svc@ daemon-reload\n\n# start the scrutiny-net network:\nsudo systemctl --user -M scrutiny-svc@ start scrutiny-net-network.service\n\n# start influxdb first and wait for it to come up\nsudo systemctl --user -M scrutiny-svc@ start influxdb.service\n\n# check if it's fully up\nsudo systemctl --user -M scrutiny-svc@ status influxdb.service\n\n# now start scrutiny\nsudo systemctl --user -M scrutiny-svc@ start scrutiny-web.service\n```\n\nYou are now ready to run the collector, if you would like to run that rootless as well, see the guide at [Schedule Collector with Systemd (rootless)](INSTALL_MANUAL.md#schedule-collector-with-systemd-rootless)"
  },
  {
    "path": "docs/INSTALL_SYNOLOGY_COLLECTOR.md",
    "content": "# Install collector on Synology\n\n## Install Entware\n\nThis will allow you to install a newer version of smartmontools on your Synology. Follow the instructions here (This is tested on DSM7) - https://github.com/Entware/Entware/wiki/Install-on-Synology-NAS\n\n**PLEASE NOTE THAT IF YOU UPDATE DSM FIRMWARE YOU MAY BORK THE EXISTING ENTWARE INSTALLATION, FOR ANYTHING THAT MAY RELATE TO ENTWARE PLEASE VISIT THEIR REPO**\n\n## Collector Setup\n\n**1. Run an update**\n\n`sudo opkg update`\n\n**2. Run an upgrade**\n\n`sudo opkg upgrade`\n\n**3. Install smartmontools**\n\n`sudo opkg install smartmontools`\n\n*It should install v7.2-2*\n\n`Installing smartmontools (7.2-2) to root...`\n\n**4. We will now create the directories.**\n\n```\nmkdir -p /volume1/\\@Entware/scrutiny/bin\nmkdir -p /volume1/\\@Entware/scrutiny/conf\n```\n\n**5. change into the bin directory**\n\n`cd /volume1/\\@Entware/scrutiny/bin`\n\n**6. Download the collector binary for your architecture and make it executable**\n\n`wget https://github.com/AnalogJ/scrutiny/releases/download/v0.4.12/scrutiny-collector-metrics-linux-arm64`\n\n`chmod +x /volume1/\\@Entware/scrutiny/bin/scrutiny-collector-metrics-linux-arm64`\n\n**7. Create a config file for the collector**\n\n```\ncd /volume1/\\@Entware/scrutiny/conf\nwget https://raw.githubusercontent.com/AnalogJ/scrutiny/master/example.collector.yaml\nmv example.collector.yaml collector.yaml\n```\n\n**8. Lets make some changes in the [collector config file](../example.collector.yaml), these are what i uncommented/added, please tweak the device paths to your needs**\n\n```\nhost:\n  id: 'Server_Name'\n\n\ndevices:\n#  # example for forcing device type detection for a single disk\n - device: /dev/sda\n   type: 'sat'\n - device: /dev/sdb\n   type: 'sat'\n - device: /dev/sdc\n   type: 'sat'\n - device: /dev/sdd\n   type: 'sat'\n    \napi:\n endpoint: 'http://<url>:8080'\n```\n\n**9. Let's update the smartd db**\n\n```\ncd /volume1/\\@Entware/scrutiny/bin/\nwget https://raw.githubusercontent.com/smartmontools/smartmontools/master/smartmontools/drivedb.h\n```\n\n**10. I ran it like this but you can tweak to your liking, the most important part is the --drivedb, as this loads it into the aplication for future use**\n\n`smartctl -d sat --all /dev/sda  --drivedb=/volume1/\\@Entware/scrutiny/bin/drivedb.h`\n\n**11. Now lets create a small bash script, this will be used for the scheduled task inside Synology**\n\n`vim /volume1/\\@Entware/scrutiny/bin/run_collect.sh`\n\n**The contents are below, copy and paste them in**\n\n```\n#!/bin/bash\n\n/volume1/\\@Entware/scrutiny/bin/scrutiny-collector-metrics-linux-arm64 run --config /volume1/\\@Entware/scrutiny/conf/collector.yaml\n```\n\n**Make `run_collect.sh` executable**\n\n`chmod +x /volume1/\\@Entware/scrutiny/bin/run_collect.sh`\n\n## Set up Synology to run a scheduled task. \n\nLog in to DSM and do the following:\n\nGoto: DSM > Control Panel > Task Scheduler\n\nCreate > Scheduled Task > User Defined Script\n\n###### General\n\n```\nTask: Scrutiny_Collector\nUser: root\nEnabled: yes\n```\n\n###### Schedule\n```\nRun on the following days: Daily\n```\n###### Time:\n\n```\nFrequency: <Your desired frequency>\n```\n\n###### Task Settings\n\n**Run Command**\n\n```\n. /opt/etc/profile; /volume1/\\@Entware/scrutiny/bin/run_collect.sh\n```\n\n\n## Troubleshooting\n\nIf you have any issues with your devices being detected, or incorrect data, please take a look at [TROUBLESHOOTING_DEVICE_COLLECTOR.md](./TROUBLESHOOTING_DEVICE_COLLECTOR.md)\n"
  },
  {
    "path": "docs/INSTALL_UNRAID.md",
    "content": "# UnRAID Install\n\nInstallation of Scrutiny in UnRAID follows the same process as installing any other docker container, utilizing the Community Applications plugin\n\n## Install the 'Community Applications' Plugin\n\nAll docker containers in UnRAID are typically installed utilizing the Community Applications plugin. To get started:\n- Navigate to the plugins tab ( <UnRaid_IP_Address>/Plugins )\n- Select the 'Install Plugin' tab, and enter the following address into the input field\n```\nhttps://raw.githubusercontent.com/Squidly271/community.applications/master/plugins/community.applications.plg\n```\n\nYou're all set with the pre-requisites!\n\n## Installing the Scrutiny docker image\n\nTo install, simply click 'Install'; the configuration parameters should not need modification as the template within CA already defines the necessary parameters.\n\nAs a docker image can be created using various OS bases, the image choice is entirely the users choice. Recommendations of a specific image from a specific maintainer is beyond the scope of this guide. However, to provide some context given the number of questions posed regarding the various versions available:\n\n- **ghcr.io/analogj/scrutiny:master-omnibus**\n    - `Image maintained directly by the application author`\n    - `Debian based docker image`\n- **linuxserver/scrutiny**\n    - `Image maintained by the LinuxServer.io group`\n    - `Alpine based docker image`\n- **hotio/scrutiny**\n    - `Image maintained by hotio`\n    - `DETAILS TBD`\n\nThe support for a given image is provided by that images maintainers, while support for the application itself remains with the developer - i.e. LinuxServer.io supports the docker image of Scrutiny which they create, to the extent an issue is specific to that image. If an issue/enhancement pertains directly to the source code, support would still come directly from this repository's contributors. \n"
  },
  {
    "path": "docs/SUPPORTED_NAS_OS.md",
    "content": "# Officially Supported NAS/OS's\n\nThese are the officially supported NAS OS's (with documentation and setup guides). Once a guide is created (\nin `docs/guides/` or elsewhere) it will be linked here.\n\n- [x] [freenas/truenas](https://blog.stefandroid.com/2022/01/14/smart-scrutiny.html)\n- [x] [unraid](./INSTALL_UNRAID.md)\n- [ ] ESXI\n- [ ] Proxmox\n- [x] Synology \n  - [Hub/Spoke Deployment - Collector](./INSTALL_SYNOLOGY_COLLECTOR.md)\n  - [Omnibus Deployment](https://drfrankenstein.co.uk/2022/07/28/scrutiny-in-docker-on-a-synology-nas) -  Docker Package\n  - [Omnibus Deployment](https://drfrankenstein.co.uk/scrutiny-in-container-manager-on-a-synology-nas/) -  Container Manager Package\n- [ ] OMV\n- [ ] Amahi\n- [ ] Running in a LXC container\n- [x] [PFSense](./INSTALL_PFSENSE.md)\n- [x] QNAP\n- [x] [RockStor](https://rockstor.com/docs/interface/docker-based-rock-ons/scrutiny.html)\n- [ ] Solaris/OmniOS CE Support\n- [ ] Kubernetes\n- [x] [Windows](./INSTALL_MANUAL_WINDOWS.md)\n"
  },
  {
    "path": "docs/TESTERS.md",
    "content": "# Testers\n\nScrutiny supports many operating systems, CPU architectures and runtime environments. Unfortunately that makes it incredibly\ndifficult to test. \nThankfully the following users have been gracious enough to test/validate Scrutiny works on their system.\n\n> NOTE: If you're interested in volunteering to test Scrutiny beta builds on your system, please [open an issue](https://github.com/AnalogJ/scrutiny/issues). \n\n| Architecture Name | Binaries | Docker |\n| --- | --- | --- |\n| linux-amd64 | @TizzAmmazz | @feroxy @rshxyz |\n| linux-arm-5 | -- |  |\n| linux-arm-6 | -- |  |\n| linux-arm-7 | @Zorlin | @martini1992  |\n| linux-arm64 | @SiM22 @Zorlin | @ViRb3 @agneevX @benamajin |\n| freebsd-amd64 | @BadCo-NZ @varunsridharan @martadinata666 @KenwoodFox @FingerlessGlov3s |  |\n| macos-amd64 | -- | -- |\n| macos-arm64 | -- | -- |\n| windows-amd64 | @gabrielv33 | -- |\n| windows-arm64 | -- | -- |\n"
  },
  {
    "path": "docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md",
    "content": "# Scrutiny <-> SmartMonTools \n\nScrutiny uses `smartctl --scan` to detect devices/drives. If your devices are not being detected by Scrutiny, or some \ndata is missing, this is probably due to a `smartctl` issue. \nThe following page will document commonly asked questions and troubleshooting steps for the Scrutiny S.M.A.R.T. data collector.\n\n## WWN vs Device name\nAs discussed in [`#117`](https://github.com/AnalogJ/scrutiny/issues/117), `/dev/sd*` device paths are ephemeral. \n\n> Device paths in Linux aren't guaranteed to be consistent across restarts. Device names consist of major numbers (letters) and minor numbers. When the Linux storage device driver detects a new device, the driver assigns major and minor numbers from the available range to the device. When a device is removed, the device numbers are freed for reuse.\n>\n> The problem occurs because device scanning in Linux is scheduled by the SCSI subsystem to happen asynchronously. As a result, a device path name can vary across restarts.\n>\n> https://docs.microsoft.com/en-us/troubleshoot/azure/virtual-machines/troubleshoot-device-names-problems\n\nWhile the Docker Scrutiny collector does require devices to attached to the docker container by device name (using `--device=/dev/sd..`), internally \nScrutiny stores and references the devices by their `WWN` which is globally unique, and never changes. \n\nAs such, passing devices to the Scrutiny collector container using `/dev/disk/by-id/`, `/dev/disk/by-label/`, `/dev/disk/by-path/` and `/dev/disk/by-uuid/`\npaths are unnecessary, unless you'd like to ensure the docker run command never needs to change.\n\n#### Force /dev/disk/by-id paths\n\nSince Scrutiny uses WWN under the hood, it really doesn't care about `/dev/sd*` vs `/dev/disk/by-id/`. The problem is the interaction between docker and smartmontools when using `--device /dev/disk/by-id` paths. \n\nBasically Scrutiny offloads all device detection to smartmontools, which doesn't seem to detect devices that have been passed into the docker container using `/dev/disk/by-id` paths.\n\nIf you must use \"static\" device references, you can map the host device id/uuid/wwn references to device names within the container:\n\n```\n# --device=<Host Device>:<Container Device Mapping>\n\ndocker run ....\n--device=/dev/disk/by-id/wwn-0x5000xxxxx:/dev/sda\n--device=/dev/disk/by-id/wwn-0x5001xxxxx:/dev/sdb\n--device=/dev/disk/by-id/wwn-0x5003xxxxx:/dev/sdc\n...\n```\n\n\n\n## Device Detection By Smartctl\n\nThe first thing you'll want to do is run `smartctl` locally (not in Docker) and make sure the output shows all your drives as expected.\nSee the `Drive Types` section below for what this output should look like for `NVMe`/`ATA`/`RAID` drives.\n\n```bash\nsmartctl --scan\n\n/dev/sda -d scsi # /dev/sda, SCSI device\n/dev/sdb -d scsi # /dev/sdb, SCSI device\n/dev/sdc -d scsi # /dev/sdc, SCSI device\n/dev/sdd -d scsi # /dev/sdd, SCSI device\n```\n\nOnce you've verified that `smartctl` correctly detects your drives, make sure scrutiny is correctly detecting them as well.\n> NOTE: make sure you specify all the devices you'd like scrutiny to process using `--device=` flags.\n\n```bash\ndocker run -it --rm \\\n  -v /run/udev:/run/udev:ro \\\n  --cap-add SYS_RAWIO \\\n  --device=/dev/sda \\\n  --device=/dev/sdb \\\n  ghcr.io/analogj/scrutiny:master-collector smartctl --scan\n```\n\nIf the output is the same, your devices will be processed by Scrutiny.\n\n### Collector Config File\nIn some cases `--scan` does not correctly detect the device type, returning [incomplete SMART data](https://github.com/AnalogJ/scrutiny/issues/45).\nScrutiny will supports overriding the detected device type via the config file.\n\n[example.collector.yaml](https://github.com/AnalogJ/scrutiny/blob/master/example.collector.yaml)\n\n### RAID Controllers (Megaraid/3ware/HBA/Adaptec/HPE/etc)\nSmartctl has support for a large number of [RAID controllers](https://www.smartmontools.org/wiki/Supported_RAID-Controllers), however this \nsupport is not automatic, and may require some additional device type hinting. You can provide this information to the Scrutiny collector\nusing a collector config file. See [example.collector.yaml](/example.collector.yaml)\n\n> NOTE: If you use docker, you **must** pass though the RAID virtual disk to the container using `--device` (see below)\n>\n> This device may be in `/dev/*` or `/dev/bus/*`.\n> If you do not see a virtual device file `/dev/bus/*` you may need to use the `--privileged` flag. See [#366 for more info](https://github.com/AnalogJ/scrutiny/issues/366#issuecomment-1253196407)\n>\n> If you're unsure, run `smartctl --scan` on your host, and pass all listed devices to the container.\n\n```yaml\n# /opt/scrutiny/config/collector.yaml\ndevices:\n  # Dell PERC/Broadcom Megaraid example: https://github.com/AnalogJ/scrutiny/issues/30\n  - device: /dev/bus/0\n    type:\n      - megaraid,14\n      - megaraid,15\n      - megaraid,18\n      - megaraid,19\n      - megaraid,20\n      - megaraid,21\n\n  - device: /dev/twa0\n    type:\n      - 3ware,0\n      - 3ware,1\n      - 3ware,2\n      - 3ware,3\n      - 3ware,4\n      - 3ware,5\n  \n  # Adapec RAID: https://github.com/AnalogJ/scrutiny/issues/189\n  - device: /dev/sdb\n    type:\n      - aacraid,0,0,0\n      - aacraid,0,0,1\n\n  # HPE Smart Array example:  https://github.com/AnalogJ/scrutiny/issues/213\n  - device: /dev/sda\n    type:\n      - 'cciss,0'\n      - 'cciss,1'\n```\n\n>\n\n### NVMe Drives\n\nAs mentioned in the [README.md](/README.md), NVMe devices require both `--cap-add SYS_RAWIO` and `--cap-add SYS_ADMIN`\nto allow smartctl permission to query your NVMe device SMART data [#26](https://github.com/AnalogJ/scrutiny/issues/26)\n\nWhen attaching NVMe devices using `--device=/dev/nvme..`, make sure to provide the device controller (`/dev/nvme0`)\ninstead of the block device (`/dev/nvme0n1`). See [#209](https://github.com/AnalogJ/scrutiny/issues/209).\n\n> The character device /dev/nvme0 is the NVME device controller, and block devices like /dev/nvme0n1 are the NVME storage namespaces: the devices you use for actual storage, which will behave essentially as disks.\n>\n> In enterprise-grade hardware, there might be support for several namespaces, thin provisioning within namespaces and other features. For now, you could think namespaces as sort of meta-partitions with extra features for enterprise use.\n\n### ATA\n\n### USB Devices\n\nThe following information is extracted from [#266](https://github.com/AnalogJ/scrutiny/issues/266)\n\nExternal HDDs support two modes of operation usb-storage (old, slower, stable) and uas (new, faster, sometimes unstable)\n. On some external HDDs, uas mode does not properly pass through SMART information, or even causes hardware issues, so\nit has been disabled by the kernel. No amount of smartctl parameters will fix this, as it is being rejected by the\nkernel. This is especially true with Seagate HDDs. One solution is to force these devices into usb-storage mode, which\nwill incur some performance penalty, but may work well enough for you. More info:\n\n- https://smartmontools.org/wiki/Supported_USB-Devices\n- https://smartmontools.org/wiki/SAT-with-UAS-Linux\n- https://forums.raspberrypi.com/viewtopic.php?t=245931\n\n### Exit Codes\n\nIf you see an error message similar to `smartctl returned an error code (2) while processing /dev/sda`, this means that\n`smartctl` (not Scrutiny) exited with an error code. Scrutiny will attempt to print a helpful error message to help you\ndebug, but you can look at the table (and associated links) below to debug `smartctl`.\n\n> smartctl Return Values\n> The return values of smartctl are defined by a bitmask. If all is well with the disk, the return value (exit status) of\n> smartctl is 0 (all bits turned off). If a problem occurs, or an error, potential error, or fault is detected, then\n> a non-zero status is returned. In this case, the eight different bits in the return value have the following meanings \n> for ATA disks; some of these values may also be returned for SCSI disks.\n> \n> source: http://www.linuxguide.it/command_line/linux-manpage/do.php?file=smartctl#sect7\n\n\n| Exit Code (Isolated) | Binary | Problem Message |\n| --- | --- | --- |\n| 1 | Bit 0 | Command line did not parse. |\n| 2 | Bit 1 | Device open failed, or device did not return an IDENTIFY DEVICE structure. |\n| 4 | Bit 2 | Some SMART command to the disk failed, or there was a checksum error in a SMART data structure (see В´-bВ´ option above). |\n| 8 | Bit 3 | SMART status check returned “DISK FAILING\". |\n| 16 | Bit 4 | We found prefail Attributes <= threshold. |\n| 32 | Bit 5 | SMART status check returned “DISK OK” but we found that some (usage or prefail) Attributes have been <= threshold at some time in the past. |\n| 64 | Bit 6 | The device error log contains records of errors. |\n| 128 | Bit 7 | The device self-test log contains records of errors. |\n\n#### Standby/Sleeping Disks\n\nDisks in Standby/Sleep can also cause `smartctl` to exit abnormally, usually with `exit code: 2`. \n\n- https://github.com/AnalogJ/scrutiny/issues/221\n- https://github.com/AnalogJ/scrutiny/issues/157\n\n### Volume Mount All Devices (`/dev`) - Privileged\n\n> WARNING: This is an insecure/dangerous workaround. Running Scrutiny (or any Docker image) with `--privileged` is equivalent to running it with root access. \n\nIf you have exhausted all other mechanisms to get your disks working with `smartctl` running within a container, you can try running the docker image with the following additional flags:\n\n- `--privileged` (instead of `--cap-add`) - this gives the docker container full access to your system. Scrutiny does not require this permission, however it can be helpful for `smartctl`\n- `-v /dev:/dev:ro` (instead of `--device`) - this mounts the `/dev` folder (containing all your device files) into the container, allowing `smartctl` to see your disks, exactly as if it were running on your host directly. \n\nWith this workaround your `docker run` command would look similar to the following:\n\n```bash\ndocker run -it --rm -p 8080:8080 -p 8086:8086 \\\n  -v `pwd`/scrutiny:/opt/scrutiny/config \\\n  -v `pwd`/influxdb2:/opt/scrutiny/influxdb \\\n  -v /run/udev:/run/udev:ro \\\n  --privileged \\\n  -v /dev:/dev \\\n  --name scrutiny \\\n  ghcr.io/analogj/scrutiny:master-omnibus\n```\n\n## Scrutiny detects Failure but SMART Passed?\n\nThere's 2 different mechanisms that Scrutiny uses to detect failures.\n\nThe first is simple SMART failures. If SMART thinks an attribute is in a failed state, Scrutiny will display it as failed as well.\n\nThe second is using BackBlaze failure data: [https://backblaze.com/blog-smart-stats-2014-8.html](https://backblaze.com/blog-smart-stats-2014-8.html) \nIf Scrutiny detects that an attribute corresponds with a high rate of failure using BackBlaze's data, it will also mark that attribute (and disk) as failed (even though SMART may think the device is still healthy).\n\nThis can cause some confusion when comparing Scrutiny's dashboard against other SMART analysis tools. \nIf you hover over the \"failed\" label beside an attribute, Scrutiny will tell you if the failure was due to SMART or Scrutiny/BackBlaze data. \n\n### Device failed but Smart & Scrutiny passed\n\nDevice SMART results are the source of truth for Scrutiny, however we don't just take into account the current SMART results, but also historical analysis of a disk.\nThis means that if a device is marked as failed at any point in its history, it will continue to be stored in the database as failed until the device is removed (or status is reset -- see below).\n\nIn some cases, this historical failure may have been due to attribute analysis/thresholds that have since been relaxed:\n\n- NVME - Numb Error Log Entries (v0.4.7)\n- ATA - Power Cycle Count (v0.4.7)\n- ATA - Read Error Rate (v0.4.13)\n- ATA - Seek Error Rate (v0.4.13)\n\nIf you'd like to reset the status of a disk (to healthy) and allow the next run of the collector to determine the actual status, you can run the following command:\n\n```bash\n# connect to scrutiny docker container\ndocker exec -it scrutiny bash\n\n# install sqlite CLI tools (inside container)\napt update && apt install -y sqlite3\n\n# connect to the scrutiny database\nsqlite3 /opt/scrutiny/config/scrutiny.db\n\n# reset/update the devices table, unset the failure status. \nUPDATE devices SET device_status = null;\n\n# exit sqlite CLI\n.exit\n```\n\n### Seagate Drives Failing\n\nAs thoroughly discussed in [#255](https://github.com/AnalogJ/scrutiny/issues/255) and [#522](https://github.com/AnalogJ/scrutiny/issues/522), Seagate (Ironwolf & others) drives are almost always marked as failed by Scrutiny. \n\n#### Seek Error Rate & Read Error Rate (#255)\n> The `Seek Error Rate` & `Read Error Rate` attribute raw values are typically very high, and the \n> normalised values (Current / Worst / Threshold) are usually quite low. Despite this, the numbers in most cases are perfectly OK\n> \n> The anxiety arises because we intuitively expect that the normalised values should reflect a \"health\" score, with \n> 100 being the ideal value. Similarly, we would expect that the raw values should reflect an error count, in \n> which case a value of 0 would be most desirable. However, Seagate calculates and applies these attribute values \n> in a counterintuitive way.\n> \n> http://www.users.on.net/~fzabkar/HDD/Seagate_SER_RRER_HEC.html\n\nSome analysis has been done which shows that Seagate drives break the common SMART conventions, which also causes Scrutiny's\ncomparison against BackBlaze data to detect these drives as failed. \n\n**So what's the Solution?**\n\nAfter taking a look at the BackBlaze data for the relevant Attributes (`Seek Error Rate` & `Read Error Rate`), I've decided\nto disable Scrutiny analysis for them. Both are non-critical, and have low-correlation with failure.\n\n> Please note: SMART failures for these attributes will still cause the drive to be marked as failed. Only BackBlaze analysis has been disabled\n\nIf this is effecting your drives, you'll need to do the following:\n\n1. Upgrade to v0.4.13+\n2. Reset your drive status using the SQLite script\n   in [#device-failed-but-smart--scrutiny-passed](https://github.com/AnalogJ/scrutiny/blob/master/docs/TROUBLESHOOTING_DEVICE_COLLECTOR.md#device-failed-but-smart--scrutiny-passed)\n3. Wait for (or manually start) the collector.\n\nIf you'd like to learn more about how the Seagate Ironwolf SMART attributes work under the hood, and how they differ\nfrom\nother drives, please read the following:\n\n- http://www.users.on.net/~fzabkar/HDD/Seagate_SER_RRER_HEC.html\n- https://www.truenas.com/community/threads/seagate-ironwolf-smart-test-raw_read_error_rate-seek_error_rate.68634/\n\n#### Seagate Raw Values are incorrect (#522)\nBasically Seagate drives are known to use a custom data format for a number of their SMART attributes. This causes issues with Scrutiny's threshold analysis. \n\n- The workaround is to customize the smartctl command that Scrutiny uses for your drive by [creating a collector.yaml file](https://github.com/AnalogJ/scrutiny/issues/522#issuecomment-1766727988) and \"fixing\" each attribute\n- The **real \"fix\"** is to make sure your Seagate drive is correctly supported by smartmontools. See this [PR](https://github.com/smartmontools/smartmontools/pull/247)\n\nSorry for the bad news, but this is a known issue and there's just not much we can do on the Scrutiny side. \n\n\n## Hub & Spoke model, with multiple Hosts.\n\n![multiple-host-ids image](multiple-host-ids.png)\n\nWhen deploying Scrutiny in a hub & spoke model, it can be difficult to determine exactly which node a set of devices are\nassociated with.\nThankfully the collector has a special `--host-id` flag (or `COLLECTOR_HOST_ID` env variable) that can be used to\nassociate devices with a friendly host name.\n\nThe host-id is passed from the collector to the web-api when SMART device data is uploaded. There's 3 ways you can set\nthe host-id:\n\n- using the collector config\n  file: [master/example.collector.yaml#L19-L22](https://github.com/AnalogJ/scrutiny/blob/master/example.collector.yaml?rgh-link-date=2022-05-25T15%3A08%3A56Z#L19-L22)\n- using the `--host-id` collector CLI\n  argument: [master/collector/cmd/collector-metrics/collector-metrics.go#L180-L185](https://github.com/AnalogJ/scrutiny/blob/master/collector/cmd/collector-metrics/collector-metrics.go?rgh-link-date=2022-05-25T15%3A08%3A56Z#L180-L185)\n- using the `COLLECTOR_HOST_ID` environmental variable.\n\nSee the [docs/INSTALL_HUB_SPOKE.md](/docs/INSTALL_HUB_SPOKE.md) guide for more information.\n\n## Collector DEBUG mode\n\nYou can use environmental variables to enable debug logging and/or log files for the collector:\n\n```bash\nDEBUG=true\nCOLLECTOR_LOG_FILE=/tmp/collector.log\n```\n\nOr if you're not using docker, you can pass CLI arguments to the collector during startup:\n\n```bash\nscrutiny-collector-metrics run --debug --log-file /tmp/collector.log\n```\n\n## Collector trigger on startup\n\nWhen the `omnibus` docker image starts up, it will automatically trigger the collector, which will populate the Scrutiny\nWebui with your disks.\nThis is not the case when running the collector docker image in **hub/spoke** mode, as the collector and webui are\nrunning in different containers (and potentially different host machines), so\nthe web container may not be ready for incoming connections. By default the container will only run the collector at the\ntime specified in the cron schedule.\n\nYou can force the collector to run on startup using the following env variables:\n\n- `-e COLLECTOR_RUN_STARTUP=true` - forces the collector to run on startup (cron will be started after the collector\n  completes)\n- `-e COLLECTOR_RUN_STARTUP_SLEEP=10` - if `COLLECTOR_RUN_STARTUP` is enabled, you can use this env variable to\n  configure the delay before the collector is run (default: `1` second). Used to ensure the web container has started\n  successfully.  \n"
  },
  {
    "path": "docs/TROUBLESHOOTING_DOCKER.md",
    "content": "# Docker Images `latest` vs `nightly`\n\n> TL;DR; The `latest-omnibus`, `latest-collector`, and `latest-web` tags point to the most recent release. (`latest` points to `latest-omnibus`)\n> The `nightly-omnibus`, `nightly-collector`, and `nightly-web` tags point to builds that are generated every night from the latest commit on the `master` branch.\n\nThe CD scripts used to orchestrate the docker image builds can be found here:\n* https://github.com/AnalogJ/scrutiny/blob/master/.github/workflows/docker-build.yaml\n* https://github.com/AnalogJ/scrutiny/blob/master/.github/workflows/docker-nightly.yaml\n\nIn general scrutiny follows a feature branch development process, which means that the `master` branch should ideally always be free of bugs \nThis is driven by the requirement that every PR be reviewed and pass all tests.  Unfortunately, bugs do make it through, especially because of the\nenormous number of hard drives that scrutiny must support.. \n\nThis means that while the nightly builds should have the latest features and bug fixes, there may be things that sneak through. Unless you need a particular\nfeature or bug fix, we recommend sticking to releases. Also note that using `latest` tags is generally considered a bad practice; pin a specific version instead.\n\n# Running Docker `rootless`\n\nTo avoid that the container(s) restart when you installed Docker as `rootless` you need to isssue the following commands to allow the session to stay alive even after you close your (SSH) sesssion:\n\n`sudo loginctl enable-linger $(whoami)`\n\n`systemctl --user enable docker`\n"
  },
  {
    "path": "docs/TROUBLESHOOTING_INFLUXDB.md",
    "content": "# InfluxDB Troubleshooting\n\n## Why??\n\nScrutiny has many features, but the relevant one to this conversation is the \"S.M.A.R.T metric tracking for historical\ntrends\". Basically Scrutiny not only shows you the current SMART values, but how they've changed over weeks, months (or\neven years).\n\nTo efficiently handle that data at scale (and to make my life easier as a developer) I decided to add InfluxDB as a\ndependency. It's a dedicated timeseries database, as opposed to the general purpose sqlite DB I used before. I also did\na bunch of testing and analysis before I made the change. With InfluxDB the memory footprint for Scrutiny (at idle) is ~\n100mb, which is still fairly reasonable.\n\n### Data Size\n\nIt's surprisingly easy to reach extremely large database sizes, if you don't use downsampling, or you downsample incorrectly. \nThe growth rate is pretty unintuitive -- see https://github.com/AnalogJ/scrutiny/issues/650#issuecomment-2365174940 \n\n> Fasten stores the SMART metrics in a timeseries database (InfluxDB), and automatically downsamples the data on a schedule.\n>\n> The expectation was that cron would run daily, and there would be:\n>\n>    - 7 daily data points\n>    - 3 weekly data points\n>    - 11 monthly data points\n>    - and infinite yearly data points.\n>\n> These data points would be for each SMART metric, for each device.\n> eg. in one year, (7+3+11)*80ish SMART attributes = 1680 datapoints for one device\n>\n> If you're running cron every 15 minutes, your browser will instead be attempting to display:\n>\n>    - 96*7 daily data points\n>    - 3 weekly\n>    - 11 monthly\n>\n> so (96*7 + 3 + 11)*80 = 54,880 datapoints for each device 😭\n\n\n## Installation\n\nInfluxDB is a required dependency for Scrutiny v0.4.0+.\n\nhttps://docs.influxdata.com/influxdb/v2/install/\n\n## Persistence\n\nTo ensure that all data is correctly stored, you must also persist the InfluxDB database directory\n\n- If you're using the Official Scrutiny Omnibus image (`ghcr.io/analogj/scrutiny:master-omnibus`), the path is `/opt/scrutiny/influxdb`\n- If you're deploying in Hub/Spoke mode with the InfluxDB maintained image (`influxdb:2.8`), the path is `/var/lib/influxdb2`\n\nIf you attempt to restart Scrutiny but you forgot to persist the InfluxDB directory, you will get an error message like follows:\n\n```\nscrutiny    | time=\"2022-05-12T22:54:12Z\" level=info msg=\"Trying to connect to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\\n\"\nscrutiny    | time=\"2022-05-12T22:54:12Z\" level=info msg=\"Successfully connected to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\\n\"\nscrutiny    | ts=2022-05-12T22:54:12.240791Z lvl=info msg=Unauthorized log_id=0aQcVlOW000 error=\"authorization not found\"\nscrutiny    | panic: unauthorized: unauthorized access\n```\n\nUnfortunately this may mean that your database is lost, and the previous Scrutiny data is unavailable. \nYou should fix the docker-compose/docker run command that you're using to ensure that your database folder is persisted correctly, \nthen delete the `web.influxdb.token` field in your `scrutiny.yaml` file, and then restart Scrutiny.\n\n\n## First Start\nThe web/api service will trigger an InfluxDB onboarding process automatically when it first starts. After that, it will store the newly generated influxdb api token in the Scrutiny config file. \n\nIf this Credential is not correctly stored in the scrutiny config file, Scrutiny will fail to start (with an authentication error)\n\n```\nscrutiny    | time=\"2022-05-12T22:52:55Z\" level=info msg=\"Successfully connected to scrutiny sqlite db: /opt/scrutiny/config/scrutiny.db\\n\"\nscrutiny    | ts=2022-05-12T22:52:55.235753Z lvl=error msg=\"failed to onboard user admin\" log_id=0aQcRnc0000 handler=onboard error=\"onboarding has already been completed\" took=0.038ms\nscrutiny    | ts=2022-05-12T22:52:55.235816Z lvl=error msg=\"api error encountered\" log_id=0aQcRnc0000 error=\"onboarding has already been completed\"\nscrutiny    | panic: conflict: onboarding has already been completed\n```\n\nYou can fix this issue by authenticating to the InfluxDB admin portal (the default credentials are username: `admin`, password: `password12345`),\nthen retrieving the API token, and writing it to your `scrutiny.yaml` config file under the `web.influxdb.token` field:\n\n![influx db admin token](./influxdb-admin-token.png)\n\n## Upgrading from v0.3.x to v0.4.x\n\nWhen upgrading from v0.3.x to v0.4.x, some users have noticed problems such as:\n\n```\n2022/05/13 14:38:05 Loading configuration file: /opt/scrutiny/config/scrutiny.yaml\ntime=\"2022-05-13T14:38:05Z\" level=info msg=\"Trying to connect to scrutiny sqlite db:\"\ntime=\"2022-05-13T14:38:05Z\" level=info msg=\"Successfully connected to scrutiny sqlite db:\"\npanic: a username and password is required for a setup\n```\n\nor \n\n```\nStart the scrutiny server\ntime=\"2022-06-11T10:35:04-04:00\" level=info msg=\"Trying to connect to scrutiny sqlite db: \\n\"\ntime=\"2022-06-11T10:35:04-04:00\" level=info msg=\"Successfully connected to scrutiny sqlite db: \\n\"\npanic: failed to check influxdb setup status - parse \"://:\": missing protocol scheme\n```\n\nAs discussed in [#248](https://github.com/AnalogJ/scrutiny/issues/248) and [#234](https://github.com/AnalogJ/scrutiny/issues/234),\nthis usually related to either:\n\n- Upgrading from the LSIO Scrutiny image to the Official Scrutiny image, without removing LSIO specific environmental\n  variables\n  - remove the `SCRUTINY_WEB=true` and `SCRUTINY_COLLECTOR=true` environmental variables. They were used by the LSIO\n    image, but are unnecessary and cause issues with the official Scrutiny image.\n  - Change your volume mappings to `/opt/scrutiny` from `/scrutiny`\n- Updated versions of the [LSIO Scrutiny images are broken](https://github.com/linuxserver/docker-scrutiny/issues/22),\n  as they have not installed InfluxDB which is a required dependency of Scrutiny v0.4.x\n  - You can revert to an earlier version of the LSIO image (`lscr.io/linuxserver/scrutiny:060ac7b8-ls34`), or just\n    change to the official Scrutiny image (`ghcr.io/analogj/scrutiny:master-omnibus`)\n\nHere's a couple of confirmed working docker-compose files that you may want to look at:\n\n- https://github.com/AnalogJ/scrutiny/blob/master/docker/example.hubspoke.docker-compose.yml\n- https://github.com/AnalogJ/scrutiny/blob/master/docker/example.omnibus.docker-compose.yml\n\n## Bring your own InfluxDB\n\n> WARNING: Most users should not follow these steps. This is ONLY for users who have an EXISTING InfluxDB installation which contains data from multiple services.\n> The Scrutiny Docker omnibus image includes an empty InfluxDB instance which it can configure.\n> If you're deploying manually or via Hub/Spoke, you can just follow the installation instructions, Scrutiny knows how\n> to run the first-time setup automatically.\n\nThe goal here is to create an InfluxDB API key with minimal permissions for use by Scrutiny.\n\n- Create Scrutiny buckets (`metrics`, `metrics_weekly`, `metrics_monthly`, `metrics_yearly`) with placeholder config\n- Create Downsampling tasks (`tsk-weekly-aggr`, `tsk-monthly-aggr`, `tsk-yearly-aggr`) with placeholder script.\n- Create API token with restricted scope\n- NOTE: Placeholder bucket & task configuration will be replaced automatically by Scrutiny during startup\n\nThe placeholder buckets and tasks need to be created before the API token can be created, as the resource ID's need to\nexist for the scope restriction to work.\n\nScopes:\n\n- `orgs`: read - required for scrutiny to find it's configured org_id\n- `tasks`: scrutiny specific read/write access - Scrutiny only needs access to the downsampling tasks you created above\n- `buckets`: scrutiny specific read/write access - Scrutiny only needs access to the buckets you created above\n\n### Setup Environmental Variables\n\n```bash\n# replace the following values with correct values for your InfluxDB installation\nexport INFLUXDB_ADMIN_TOKEN=pCqRq7xxxxxx-FZgNLfstIs0w==\nexport INFLUXDB_ORG_ID=b2495xxxxx\nexport INFLUXDB_HOSTNAME=http://localhost:8086\n\n# if you want to change the bucket name prefix below, you'll also need to update the setting in the scrutiny.yaml config file.\nexport INFLUXDB_SCRUTINY_BUCKET_BASENAME=metrics\n```\n\n### Create placeholder buckets\n\n<details>\n  <summary>Click to expand!</summary>\n\n```bash\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/buckets \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n--data-binary @- << EOF\n{\n\"name\": \"${INFLUXDB_SCRUTINY_BUCKET_BASENAME}\",\n\"orgID\": \"${INFLUXDB_ORG_ID}\",\n\"retentionRules\": []\n}\nEOF\n\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/buckets \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n--data-binary @- << EOF\n{\n\"name\": \"${INFLUXDB_SCRUTINY_BUCKET_BASENAME}_weekly\",\n\"orgID\": \"${INFLUXDB_ORG_ID}\",\n\"retentionRules\": []\n}\nEOF\n\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/buckets \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n--data-binary @- << EOF\n{\n\"name\": \"${INFLUXDB_SCRUTINY_BUCKET_BASENAME}_monthly\",\n\"orgID\": \"${INFLUXDB_ORG_ID}\",\n\"retentionRules\": []\n}\nEOF\n\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/buckets \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n--data-binary @- << EOF\n{\n\"name\": \"${INFLUXDB_SCRUTINY_BUCKET_BASENAME}_yearly\",\n\"orgID\": \"${INFLUXDB_ORG_ID}\",\n\"retentionRules\": []\n}\nEOF\n```\n\n</details>\n\n### Create placeholder tasks\n\n<details>\n  <summary>Click to expand!</summary>\n\n```bash\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/tasks \\\n    -H \"Content-Type: application/json\" \\\n    -H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n    --data-binary @- << EOF\n{\n  \"orgID\": \"${INFLUXDB_ORG_ID}\",\n  \"flux\": \"option task = {name: \\\"tsk-weekly-aggr\\\", every: 1y} \\nyield now()\"\n}\nEOF\n\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/tasks \\\n    -H \"Content-Type: application/json\" \\\n    -H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n    --data-binary @- << EOF\n{\n  \"orgID\": \"${INFLUXDB_ORG_ID}\",\n  \"flux\": \"option task = {name: \\\"tsk-monthly-aggr\\\", every: 1y} \\nyield now()\"\n}\nEOF\n\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/tasks \\\n    -H \"Content-Type: application/json\" \\\n    -H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n    --data-binary @- << EOF\n{\n  \"orgID\": \"${INFLUXDB_ORG_ID}\",\n  \"flux\": \"option task = {name: \\\"tsk-yearly-aggr\\\", every: 1y} \\nyield now()\"\n}\nEOF\n\n```\n\n</details>\n\n### Create InfluxDB API Token\n\n<details>\n  <summary>Click to expand!</summary>\n\n```bash\n# replace these values with placeholder bucket and task ids from your InfluxDB installation. \nexport INFLUXDB_SCRUTINY_BASE_BUCKET_ID=1e0709xxxx\nexport INFLUXDB_SCRUTINY_WEEKLY_BUCKET_ID=1af03dexxxxx\nexport INFLUXDB_SCRUTINY_MONTHLY_BUCKET_ID=b3c59c7xxxxx\nexport INFLUXDB_SCRUTINY_YEARLY_BUCKET_ID=f381d8cxxxxx\n\nexport INFLUXDB_SCRUTINY_WEEKLY_TASK_ID=09a64ecxxxxx\nexport INFLUXDB_SCRUTINY_MONTHLY_TASK_ID=09a64xxxxx\nexport INFLUXDB_SCRUTINY_YEARLY_TASK_ID=09a64ecxxxxx\n\n\ncurl -sS -X POST ${INFLUXDB_HOSTNAME}/api/v2/authorizations \\\n    -H \"Content-Type: application/json\" \\\n    -H \"Authorization: Token ${INFLUXDB_ADMIN_TOKEN}\" \\\n    --data-binary @- << EOF\n{\n  \"description\": \"scrutiny - restricted scope token\",\n  \"orgID\": \"${INFLUXDB_ORG_ID}\",\n  \"permissions\": [\n        {\n            \"action\": \"read\",\n            \"resource\": {\n                \"type\": \"orgs\"\n            }\n        },\n        {\n            \"action\": \"read\",\n            \"resource\": {\n                \"type\": \"tasks\"\n            }\n        },\n        {\n            \"action\": \"write\",\n            \"resource\": {\n                \"type\": \"tasks\",\n                \"id\": \"${INFLUXDB_SCRUTINY_WEEKLY_TASK_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n        },\n        {\n            \"action\": \"write\",\n            \"resource\": {\n                \"type\": \"tasks\",\n                \"id\": \"${INFLUXDB_SCRUTINY_MONTHLY_TASK_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n        },\n        {\n            \"action\": \"write\",\n            \"resource\": {\n                \"type\": \"tasks\",\n                \"id\": \"${INFLUXDB_SCRUTINY_YEARLY_TASK_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n        },\n        {\n            \"action\": \"read\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_BASE_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       },\n        {\n            \"action\": \"write\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_BASE_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       },\n        {\n            \"action\": \"read\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_WEEKLY_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       },\n        {\n            \"action\": \"write\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_WEEKLY_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       },\n        {\n            \"action\": \"read\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_MONTHLY_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       },\n        {\n            \"action\": \"write\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_MONTHLY_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       },\n        {\n            \"action\": \"read\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_YEARLY_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       },\n        {\n            \"action\": \"write\",\n            \"resource\": {\n                \"type\": \"buckets\",\n                \"id\": \"${INFLUXDB_SCRUTINY_YEARLY_BUCKET_ID}\",\n                \"orgID\": \"${INFLUXDB_ORG_ID}\"\n            }\n       }\n  ]\n}\nEOF\n```\n\n</details>\n\n### Save InfluxDB API Token\n\nAfter running the Curl command above, you'll see a JSON response that looks like the following:\n\n```json\n{\n  \"token\": \"ksVU2t5SkQwYkvIxxxxxxxYt2xUt0uRKSbSF1Po0UQ==\",\n  \"status\": \"active\",\n  \"description\": \"scrutiny - restricted scope token\",\n  \"orgID\": \"b2495586xxxx\",\n  \"org\": \"my-org\",\n  \"user\": \"admin\",\n  \"permissions\": [\n    {\n      \"action\": \"read\",\n      \"resource\": {\n        \"type\": \"orgs\"\n      }\n    },\n    {\n      \"action\": \"read\",\n      \"resource\": {\n        \"type\": \"tasks\"\n      }\n    },\n    {\n      \"action\": \"write\",\n      \"resource\": {\n        \"type\": \"tasks\",\n        \"id\": \"09a64exxxxx\",\n        \"orgID\": \"b24955860xxxxx\",\n        \"org\": \"my-org\"\n      }\n    },\n    ...\n  ]\n}\n```\n\nYou must copy the token field from the JSON response, and save it in your `scrutiny.yaml` config file. After that's\ndone, you can start the Scrutiny server\n\n## Customize InfluxDB Admin Username & Password\n\nThe full set of InfluxDB configuration options are available\nin [code](https://github.com/AnalogJ/scrutiny/blob/master/webapp/backend/pkg/config/config.go?rgh-link-date=2023-01-19T16%3A23%3A40Z#L49-L51)\n.\n\nDuring first startup Scrutiny will connect to the unprotected InfluxDB server, start the setup process (via API) using a\nusername and password of `admin`:`password12345` and then create an API token of `scrutiny-default-admin-token`.\n\nAfter that's complete, it will use the api token for all subsequent communication with InfluxDB.\n\nYou can configure the values for the Admin username, password and token using the config file, or env variables:\n\n#### Config File Example\n\n```yaml\nweb:\n  influxdb:\n    token: 'my-custom-token'\n    init_username: 'my-custom-username'\n    init_password: 'my-custom-password'\n```\n\n#### Environmental Variables Example\n\n`SCRUTINY_WEB_INFLUXDB_TOKEN` , `SCRUTINY_WEB_INFLUXDB_INIT_USERNAME` and `SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD`\n\nIt's safe to change the InfluxDB Admin username/password after setup has completed, only the API token is used for\nsubsequent communication with InfluxDB.\n"
  },
  {
    "path": "docs/TROUBLESHOOTING_NOTIFICATIONS.md",
    "content": "# Notifications\n\nAs documented in [example.scrutiny.yaml](https://github.com/AnalogJ/scrutiny/blob/master/example.scrutiny.yaml#L59-L75)\nthere are multiple ways to configure notifications for Scrutiny.\n\nUnder the hood we use a library called [Shoutrrr](https://github.com/nicholas-fedor/shoutrrr) to send our notifications, and you should use their documentation if you run into\nany issues: https://shoutrrr.nickfedor.com/services/overview/\n\n\n# Script Notifications\n\nWhile the Shoutrrr library supports many popular providers for sending notifications Scrutiny also supports a \"script\" based\nnotification system, allowing you to execute a custom script whenever a notification needs to be sent. \nData is provided to this script using the following environmental variables:\n\n```\nSCRUTINY_SUBJECT - \teg. \"Scrutiny SMART error (%s) detected on device: %s\"\nSCRUTINY_DATE \nSCRUTINY_FAILURE_TYPE - EmailTest, SmartFail, ScrutinyFail\nSCRUTINY_DEVICE_NAME - eg. /dev/sda\nSCRUTINY_DEVICE_TYPE - ATA/SCSI/NVMe\nSCRUTINY_DEVICE_SERIAL - eg. WDDJ324KSO\nSCRUTINY_MESSAGE - eg. \"Scrutiny SMART error notification for device: %s\\nFailure Type: %s\\nDevice Name: %s\\nDevice Serial: %s\\nDevice Type: %s\\nDate: %s\"\nSCRUTINY_HOST_ID - (optional) eg. \"my-custom-host-id\"\n```\n\n# Special Characters\n\n`Shoutrrr` supports special characters in the username and password fields, however you'll need to url-encode the\nusername and the password separately.\n\n- if your username is: `myname@example.com`\n- if your password is `124@34$1`\n\nThen your `shoutrrr` url will look something like:\n\n- `smtp://myname%40example%2Ecom:124%4034%241@ms.my.domain.com:587`\n\n# Testing Notifications\n\nYou can test that your notifications are configured correctly by posting an empty payload to the notifications health\ncheck API.\n\n```\ncurl -X POST http://localhost:8080/api/health/notify\n```\n"
  },
  {
    "path": "docs/TROUBLESHOOTING_REVERSE_PROXY.md",
    "content": "# Reverse Proxy Support\n\nScrutiny is designed so that it can be used with a reverse proxy, leveraging `domain`, `port` or `path` based matching to correctly route to the Scrutiny service.\n\nFor simple `domain` and/or `port` based routing, this is easy.\n\nIf your domain:port pair is similar to `http://scrutiny.example.com` or `http://localhost:54321`, just update your reverse proxy configuration\nto route traffic to the Scrutiny backend, which is listening on `0.0.0.0:8080` by default.\n\n```yaml\n# default config\nweb:\n  listen:\n    port: 8080\n    host: 0.0.0.0\n```\n\nHowever if you're using `path` based routing to differentiate your reverse proxy protected services, things become more complicated.\n\nIf you'd like to access Scrutiny using a path like: `http://example.com/scrutiny/`, then we need a way to configure Scrutiny so that it\nunderstands `http://example.com/scrutiny/api/health` actually means `http://localhost:8080/api/health`.\n\nThankfully this can be done by changing **two** settings (both are required).\n\n1. The webserver has a `web.listen.basepath` key\n2. The collectors have a `api.endpoint` key.\n\n## Webserver Configuration\n\nWhen setting the `web.listen.basepath` key in the web config file, make sure the `basepath` key is prefixed with `/`.\n\n```yaml\n# customized webserver config\nweb:\n  listen:\n    port: 8080\n    host: 0.0.0.0\n    # if you're using a reverse proxy like apache/nginx, you can override this value to serve scrutiny on a subpath.\n    # eg. http://example.com/custombasepath/* vs http://example.com:8080\n    basepath: '/custombasepath'\n```\n\n## Collector Configuration \n\nHere's how you can update the collector `api.endpoint` key:\n\n```yaml\n# customized collector config\napi:\n  endpoint: 'http://localhost:8080/custombasepath'\n```\n\n# Environmental Variables.\n\nYou may also configure these values using the following environmental variables (both are required).\n\n- `COLLECTOR_API_ENDPOINT=http://localhost:8080/custombasepath`\n- `SCRUTINY_WEB_LISTEN_BASEPATH=/custombasepath`\n\n# Real Examples\n\n## Caddy\n\n1. Create a Caddyfile\n    ```yaml\n    # Caddyfile\n    :9090\n    \n    # The `scrutiny` text in this file must match the service name in the docker-compose file below. \n    # The `/custom/` text is the custom base path scrutiny will be availble on. \n    reverse_proxy /custom/* scrutiny:8080\n\n    ```\n2. Create a `docker-compose.yml` file\n\n    ```yaml\n    # docker-compose.yml\n    version: '3.5'\n    \n    services:\n      scrutiny:\n        container_name: scrutiny\n        image: ghcr.io/analogj/scrutiny:master-omnibus\n        cap_add:\n          - SYS_RAWIO\n        ports:\n          - \"8086:8086\" # influxDB admin\n        volumes:\n          - /run/udev:/run/udev:ro\n          - ./config:/opt/scrutiny/config\n          - ./influxdb:/opt/scrutiny/influxdb\n        devices:\n          - \"/dev/sda\"\n          - \"/dev/sdb\"\n        environment:\n          - SCRUTINY_WEB_LISTEN_BASEPATH=/custom\n          - COLLECTOR_API_ENDPOINT=http://localhost:8080/custom\n      caddy:\n        image: caddy\n        volumes:\n          - ./Caddyfile:/etc/caddy/Caddyfile\n        ports:\n          - \"9090:9090\"\n    ```\n3. run `docker-compose up`\n4. visit [http://localhost:9090/custom/web](http://localhost:9090/custom/web) - access the scrutiny container via caddy reverse proxy\n \n## Traefik\n\nAssuming, that you have Traefik up and running with [AutoDiscovery Using Traefik For Docker ](https://doc.traefik.io/traefik/providers/docker/),\nhere is an example of a `docker-compose.yml` file, with labels to enable Traefik reverse proxy and basic auth\n```yaml\nversion: '3.5'\nservices:\n  scrutiny:\n    container_name: scrutiny\n    image: ghcr.io/analogj/scrutiny:master-omnibus\n    cap_add:\n      - SYS_RAWIO\n      - SYS_ADMIN\n    volumes:\n      - /run/udev:/run/udev:ro\n      - ./config:/opt/scrutiny/config\n      - ./influxdb:/opt/scrutiny/influxdb\n    labels:\n      - traefik.enable=true\n      - traefik.http.routers.scrutiny.rule=Host(`example.com`)\n      - traefik.http.services.scrutiny.loadbalancer.server.port=8080\n        # 2 labels below are optional, in case you want basic auth in Traefik:\n      - traefik.http.routers.scrutiny.middlewares=auth\n      - \"traefik.http.middlewares.auth.basicauth.users=user:$$2y$$05$$G11Wm/dlWpXHENK..m8se.zxvaE8USJBp1Ws56sSCrOcwWDjsYHni\"\n        # Note: when used in docker-compose.yml all dollar signs in the hash need to be doubled for escaping.\n        # To create user:password pair, it's possible to use this command:\n        # echo $(htpasswd -nB user) | sed -e s/\\\\$/\\\\$\\\\$/g\n    devices:\n      - \"/dev/sda\"\n      - \"/dev/sdb\"\n      - \"/dev/nvme0\"\n```\n"
  },
  {
    "path": "docs/TROUBLESHOOTING_UDEV.md",
    "content": "# Operating systems without udev\n\nSome operating systems do not come with `udev` out of the box, for example Alpine Linux. In these instances you will not be able to bind `/run/udev` to the container for sharing device metadata. Some operating systems offer `udev` as a package that can be installed separately, or an alternative (such as `eudev` in the case of Alpine Linux) that provides the same functionality.\n\nTo install `eudev` in Alpine Linux (run as root):\n\n```\napk add eudev\nsetup-udev\n```\n\nOnce your `udev` implementation is installed, create `/run/udev` with the following command:\n\n```\nudevadm trigger\n```\n\nOn Alpine Linux, this also has the benefit of creating symlinks to device serial numbers in `/dev/disk/by-id`.\n"
  },
  {
    "path": "docs/dbdiagram.io.txt",
    "content": "\n// SQLite Table(s)\n\nTable Device  {\n    Archived bool\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tCreatedAt time\n\tUpdatedAt time\n\tDeletedAt time\n\n\tWWN string\n\n\tDeviceName     string\n\tDeviceUUID     string\n\tDeviceSerialID string\n\tDeviceLabel    string\n\n\tManufacturer   string\n\tModelName      string\n\tInterfaceType  string\n\tInterfaceSpeed string\n\tSerialNumber   string\n\tFirmware       string\n\tRotationSpeed  int\n\tCapacity       int64\n\tFormFactor     string\n\tSmartSupport   bool\n\tDeviceProtocol string//protocol determines which smart attribute types are available (ATA, NVMe, SCSI)\n\tDeviceType     string//device type is used for querying with -d/t flag, should only be used by collector.\n\n\t// User provided metadata\n\tLabel  string\n\tHostId string\n\n\t// Data set by Scrutiny\n\tDeviceStatus enum\n}\n\nTable Setting {\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\n\tSettingKeyName  string\n    SettingKeyDescription  string\n\tSettingDataType string\n\n\tSettingValueNumeric int64\n\tSettingValueString  string\n}\n\n\n// InfluxDB Tables\nTable SmartTemperature {\n    Date time\n\tDeviceWWN      string //(tag)\n\tTemp int64\n}\n\n\nTable Smart {\n    Date           time\n\tDeviceWWN      string //(tag)\n\tDeviceProtocol string\n\n\t//Metrics (fields)\n\tTemp            int64\n\tPowerOnHours    int64\n\tPowerCycleCount int64\n\n\t//Smart Status\n\tStatus enum\n\n\t//SMART Attributes (fields)\n\tAttr_ID_AttributeId int\n\tAttr_ID_Value       int64\n\tAttr_ID_Threshold   int64\n\tAttr_ID_Worst       int64\n    Attr_ID_RawValue    int64\n\tAttr_ID_RawString   string\n\tAttr_ID_WhenFailed  string\n\t//Generated data\n\tAttr_ID_TransformedValue int64\n\tAttr_ID_Status           enum\n\tAttr_ID_StatusReason     string\n\tAttr_ID_FailureRate      float64\n\n }\n\nRef: Device.WWN < Smart.DeviceWWN\nRef: Device.WWN < SmartTemperature.DeviceWWN\n"
  },
  {
    "path": "example.collector.yaml",
    "content": "# Commented Scrutiny Configuration File\n#\n# The default location for this file is /opt/scrutiny/config/collector.yaml.\n# In some cases to improve clarity default values are specified,\n# uncommented. Other example values are commented out.\n#\n# When this file is parsed by Scrutiny, all configuration file keys are\n# lowercased automatically. As such, Configuration keys are case-insensitive,\n# and should be lowercase in this file to be consistent with usage.\n\n\n######################################################################\n# Version\n#\n# version specifies the version of this configuration file schema, not\n# the scrutiny binary. There is only 1 version available at the moment\nversion: 1\n\n# The host id is a label used for identifying groups of disks running on the same host\n# Primiarly used for hub/spoke deployments (can be left empty if using all-in-one image).\nhost:\n  id: \"\"\n\n\n# This block allows you to override/customize the settings for devices detected by\n# Scrutiny via `smartctl --scan`\n# See the \"--device=TYPE\" section of https://linux.die.net/man/8/smartctl\n# type can be a 'string' or a 'list'\ndevices:\n#  # example for forcing device type detection for a single disk\n#  - device: /dev/sda\n#    type: 'sat'\n#\n#  # example for using `-d sat,auto`, notice the square brackets (workaround for #418)\n#  - device: /dev/sda\n#    type: ['sat,auto']\n#\n#  # example to show how to ignore a specific disk/device.\n#  - device: /dev/sda\n#    ignore: true\n#\n#  # examples showing how to force smartctl to detect disks inside a raid array/virtual disk\n#  - device: /dev/bus/0\n#    type:\n#      - megaraid,14\n#      - megaraid,15\n#      - megaraid,18\n#      - megaraid,19\n#      - megaraid,20\n#      - megaraid,21\n#\n#  - device: /dev/twa0\n#    type:\n#      - 3ware,0\n#      - 3ware,1\n#      - 3ware,2\n#      - 3ware,3\n#      - 3ware,4\n#      - 3ware,5\n#\n#  # example to show how to override the smartctl command args (per device), see below for how to override these globally.\n#  - device: /dev/sda\n#    commands:\n#      metrics_info_args: '--info --json -T permissive' # used to determine device unique ID & register device with Scrutiny\n#      metrics_smart_args: '--xall --json -T permissive' # used to retrieve smart data for each device.\n\n\n#log:\n#  file: '' #absolute or relative paths allowed, eg. web.log\n#  level: INFO\n#\n#api:\n#  endpoint: 'http://localhost:8080'\n#  endpoint: 'http://localhost:8080/custombasepath'\n# if you need to use a custom base path (for a reverse proxy), you can add a suffix to the endpoint.\n#  See docs/TROUBLESHOOTING_REVERSE_PROXY.md for more info,\n\n# example to show how to override the smartctl command args globally\n#commands:\n#  metrics_smartctl_bin: 'smartctl' # change to provide custom `smartctl` binary path, eg. `/usr/sbin/smartctl`\n#  metrics_scan_args: '--scan --json' # used to detect devices\n#  metrics_info_args: '--info --json' # used to determine device unique ID & register device with Scrutiny\n#  metrics_smart_args: '--xall --json' # used to retrieve smart data for each device.\n#  metrics_smartctl_wait: 0 # time to wait in seconds between each disk's check\n\n\n########################################################################################################################\n# FEATURES COMING SOON\n#\n# The following commented out sections are a preview of additional configuration options that will be available soon.\n#\n########################################################################################################################\n\n#collect:\n#  long:\n#    enable: false\n#    command: ''\n#  short:\n#    enable: false\n#    command: ''\n"
  },
  {
    "path": "example.scrutiny.yaml",
    "content": "# Commented Scrutiny Configuration File\n#\n# The default location for this file is /opt/scrutiny/config/scrutiny.yaml.\n# In some cases to improve clarity default values are specified,\n# uncommented. Other example values are commented out.\n#\n# When this file is parsed by Scrutiny, all configuration file keys are\n# lowercased automatically. As such, Configuration keys are case-insensitive,\n# and should be lowercase in this file to be consistent with usage.\n\n\n######################################################################\n# Version\n#\n# version specifies the version of this configuration file schema, not\n# the scrutiny binary. There is only 1 version available at the moment\nversion: 1\n\nweb:\n  listen:\n    port: 8080\n    host: 0.0.0.0\n\n    # if you're using a reverse proxy like apache/nginx, you can override this value to serve scrutiny on a subpath.\n    # eg. http://example.com/scrutiny/* vs http://example.com:8080\n    # see docs/TROUBLESHOOTING_REVERSE_PROXY.md\n    # basepath: `/scrutiny`\n    # leave empty unless behind a path prefixed proxy\n    basepath: ''\n  database:\n    # can also set absolute path here\n    location: /opt/scrutiny/config/scrutiny.db\n  src:\n    # the location on the filesystem where scrutiny javascript + css is located\n    frontend:\n      path: /opt/scrutiny/web\n\n  # if you're running influxdb on a different host (or using a cloud-provider) you'll need to update the host & port below.\n  # token, org, bucket are unnecessary for a new InfluxDB installation, as Scrutiny will automatically run the InfluxDB setup,\n  # and store the information in the config file. If you 're re-using an existing influxdb installation, you'll need to provide\n  # the `token`\n  influxdb:\n#    scheme: 'http'\n    host: 0.0.0.0\n    port: 8086\n#    token: 'my-token'\n#    org: 'my-org'\n#    bucket: 'bucket'\n    retention_policy: true\n    # if you wish to disable TLS certificate verification,\n    # when using self-signed certificates for example,\n    # then uncomment the lines below and set `insecure_skip_verify: true`\n    # tls:\n    #   insecure_skip_verify: false\n\nlog:\n  file: '' #absolute or relative paths allowed, eg. web.log\n  level: INFO\n\n\n# Notification \"urls\" look like the following. For more information about service specific configuration see\n# Shoutrrr's documentation: https://shoutrrr.nickfedor.com/services/overview/\n#\n# note, usernames and passwords containing special characters will need to be urlencoded.\n# if your username is: \"myname@example.com\" and your password is \"124@34$1\"\n# your shoutrrr url will look like: \"smtp://myname%40example%2Ecom:124%4034%241@ms.my.domain.com:587\"\n\n#notify:\n#  urls:\n#    - discord://token@id[?thread_id=threadid]\n#    - googlechat://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz\n#    - hangouts://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz\n#    - lark://host/token?secret=secret&title=title&link=url\n#    - matrix://username:password@host:port/[?rooms=!roomID1[,roomAlias2]]\n#    - mattermost://[username@]mattermost-host/token[/channel]\n#    - rocketchat://[username@]rocketchat-host/token[/channel|@recipient]\n#    - signal://[user[:password]@]host[:port]/source_phone/recipient1[,recipient2,...]\n#    - slack://[botname@]token-a/token-b/token-c\n#    - teams://group@tenant/altId/groupOwner?host=organization.webhook.office.com\n#    - telegram://token@telegram?chats=@channel-1[,chat-id-1,chat-id-2:message-thread-id,...]\n#    - wecom://key\n#    - zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name\n#    - bark://devicekey@host\n#    - gotify://gotify-host/token\n#    - ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3\n#    - join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]\n#    - ntfy://username:password@ntfy.sh/topic\n#    - pushbullet://api-token[/device/#channel/email]\n#    - pushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...]\n#    - opsgenie://host/token?responders=responder1[,responder2]\n#    - pagerduty://[host[:port]]/integration-key[?query-parameters]\n#    - smtp://username:password@host:port/?fromaddress=fromAddress&toaddresses=recipient1[,recipient2,...][&additional_params]\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/analogj/scrutiny\n\ngo 1.25\n\nrequire (\n\tgithub.com/analogj/go-util v0.0.0-20210417161720-39b497cca03b\n\tgithub.com/fatih/color v1.18.0\n\tgithub.com/gin-gonic/gin v1.11.0\n\tgithub.com/glebarez/sqlite v1.11.0\n\tgithub.com/go-gormigrate/gormigrate/v2 v2.1.5\n\tgithub.com/go-viper/mapstructure/v2 v2.5.0\n\tgithub.com/influxdata/influxdb-client-go/v2 v2.14.0\n\tgithub.com/jaypipes/ghw v0.21.2\n\tgithub.com/nicholas-fedor/shoutrrr v0.13.2\n\tgithub.com/samber/lo v1.52.0\n\tgithub.com/sirupsen/logrus v1.9.4\n\tgithub.com/spf13/viper v1.21.0\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/urfave/cli/v2 v2.27.7\n\tgo.uber.org/mock v0.6.0\n\tgolang.org/x/sync v0.19.0\n\tgorm.io/gorm v1.31.1\n)\n\nrequire (\n\tgithub.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect\n\tgithub.com/bytedance/gopkg v0.1.3 // indirect\n\tgithub.com/bytedance/sonic v1.15.0 // indirect\n\tgithub.com/bytedance/sonic/loader v0.5.0 // indirect\n\tgithub.com/cloudwego/base64x v0.1.6 // indirect\n\tgithub.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/fsnotify/fsnotify v1.9.0 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.13 // indirect\n\tgithub.com/gin-contrib/sse v1.1.0 // indirect\n\tgithub.com/glebarez/go-sqlite v1.22.0 // indirect\n\tgithub.com/go-ole/go-ole v1.3.0 // indirect\n\tgithub.com/go-playground/locales v0.14.1 // indirect\n\tgithub.com/go-playground/universal-translator v0.18.1 // indirect\n\tgithub.com/go-playground/validator/v10 v10.30.1 // indirect\n\tgithub.com/goccy/go-json v0.10.5 // indirect\n\tgithub.com/goccy/go-yaml v1.19.2 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf // indirect\n\tgithub.com/jaypipes/pcidb v1.1.1 // indirect\n\tgithub.com/jinzhu/inflection v1.0.0 // indirect\n\tgithub.com/jinzhu/now v1.1.5 // indirect\n\tgithub.com/json-iterator/go v1.1.12 // indirect\n\tgithub.com/klauspost/cpuid/v2 v2.3.0 // indirect\n\tgithub.com/kvz/logstreamer v0.0.0-20221024075423-bf5cfbd32e39 // indirect\n\tgithub.com/leodido/go-urn v1.4.0 // indirect\n\tgithub.com/mattn/go-colorable v0.1.14 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mitchellh/go-homedir v1.1.0 // indirect\n\tgithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect\n\tgithub.com/modern-go/reflect2 v1.0.2 // indirect\n\tgithub.com/ncruces/go-strftime v1.0.0 // indirect\n\tgithub.com/oapi-codegen/runtime v1.1.2 // indirect\n\tgithub.com/pelletier/go-toml/v2 v2.2.4 // indirect\n\tgithub.com/pkg/errors v0.9.1 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/quic-go/qpack v0.6.0 // indirect\n\tgithub.com/quic-go/quic-go v0.59.0 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/russross/blackfriday/v2 v2.1.0 // indirect\n\tgithub.com/sagikazarmark/locafero v0.12.0 // indirect\n\tgithub.com/spf13/afero v1.15.0 // indirect\n\tgithub.com/spf13/cast v1.10.0 // indirect\n\tgithub.com/spf13/pflag v1.0.10 // indirect\n\tgithub.com/subosito/gotenv v1.6.0 // indirect\n\tgithub.com/twitchyliquid64/golang-asm v0.15.1 // indirect\n\tgithub.com/ugorji/go/codec v1.3.1 // indirect\n\tgithub.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 // indirect\n\tgithub.com/yusufpapurcu/wmi v1.2.4 // indirect\n\tgo.yaml.in/yaml/v3 v3.0.4 // indirect\n\tgolang.org/x/arch v0.23.0 // indirect\n\tgolang.org/x/crypto v0.47.0 // indirect\n\tgolang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect\n\tgolang.org/x/net v0.49.0 // indirect\n\tgolang.org/x/sys v0.40.0 // indirect\n\tgolang.org/x/term v0.39.0 // indirect\n\tgolang.org/x/text v0.33.0 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n\tgopkg.in/yaml.v2 v2.4.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n\thowett.net/plist v1.0.2-0.20250314012144-ee69052608d9 // indirect\n\tmodernc.org/libc v1.67.7 // indirect\n\tmodernc.org/mathutil v1.7.1 // indirect\n\tmodernc.org/memory v1.11.0 // indirect\n\tmodernc.org/sqlite v1.44.3 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=\ngithub.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=\ngithub.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=\ngithub.com/analogj/go-util v0.0.0-20210417161720-39b497cca03b h1:Y/+MfmdKPPpVY7C6ggt/FpltFSitlpUtyJEdcQyFXQg=\ngithub.com/analogj/go-util v0.0.0-20210417161720-39b497cca03b/go.mod h1:bRSzJXgXnT5+Ihah7RSC7Cvp16UmoLn3wq6ROciS1Ow=\ngithub.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=\ngithub.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=\ngithub.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=\ngithub.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=\ngithub.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=\ngithub.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=\ngithub.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=\ngithub.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=\ngithub.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=\ngithub.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=\ngithub.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=\ngithub.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=\ngithub.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=\ngithub.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=\ngithub.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=\ngithub.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=\ngithub.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=\ngithub.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=\ngithub.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=\ngithub.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM=\ngithub.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=\ngithub.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=\ngithub.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM=\ngithub.com/gin-gonic/gin v1.11.0 h1:OW/6PLjyusp2PPXtyxKHU0RbX6I/l28FTdDlae5ueWk=\ngithub.com/gin-gonic/gin v1.11.0/go.mod h1:+iq/FyxlGzII0KHiBGjuNn4UNENUlKbGlNmc+W50Dls=\ngithub.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ=\ngithub.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc=\ngithub.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw=\ngithub.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=\ngithub.com/go-gormigrate/gormigrate/v2 v2.1.5 h1:1OyorA5LtdQw12cyJDEHuTrEV3GiXiIhS4/QTTa/SM8=\ngithub.com/go-gormigrate/gormigrate/v2 v2.1.5/go.mod h1:mj9ekk/7CPF3VjopaFvWKN2v7fN3D9d3eEOAXRhi/+M=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=\ngithub.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=\ngithub.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=\ngithub.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=\ngithub.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=\ngithub.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=\ngithub.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=\ngithub.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=\ngithub.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=\ngithub.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w=\ngithub.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM=\ngithub.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=\ngithub.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=\ngithub.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=\ngithub.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=\ngithub.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=\ngithub.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=\ngithub.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=\ngithub.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc=\ngithub.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=\ngithub.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=\ngithub.com/influxdata/influxdb-client-go/v2 v2.14.0 h1:AjbBfJuq+QoaXNcrova8smSjwJdUHnwvfjMF71M1iI4=\ngithub.com/influxdata/influxdb-client-go/v2 v2.14.0/go.mod h1:Ahpm3QXKMJslpXl3IftVLVezreAUtBOTZssDrjZEFHI=\ngithub.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf h1:7JTmneyiNEwVBOHSjoMxiWAqB992atOeepeFYegn5RU=\ngithub.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=\ngithub.com/jarcoal/httpmock v1.4.1 h1:0Ju+VCFuARfFlhVXFc2HxlcQkfB+Xq12/EotHko+x2A=\ngithub.com/jarcoal/httpmock v1.4.1/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0=\ngithub.com/jaypipes/ghw v0.21.2 h1:woW0lqNMPbYk59sur6thOVM8YFP9Hxxr8PM+JtpUrNU=\ngithub.com/jaypipes/ghw v0.21.2/go.mod h1:GPrvwbtPoxYUenr74+nAnWbardIZq600vJDD5HnPsPE=\ngithub.com/jaypipes/pcidb v1.1.1 h1:QmPhpsbmmnCwZmHeYAATxEaoRuiMAJusKYkUncMC0ro=\ngithub.com/jaypipes/pcidb v1.1.1/go.mod h1:x27LT2krrUgjf875KxQXKB0Ha/YXLdZRVmw6hH0G7g8=\ngithub.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=\ngithub.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=\ngithub.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=\ngithub.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=\ngithub.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=\ngithub.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=\ngithub.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=\ngithub.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=\ngithub.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=\ngithub.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/kvz/logstreamer v0.0.0-20150507115422-a635b98146f0/go.mod h1:8/LTPeDLaklcUjgSQBHbhBF1ibKAFxzS5o+H7USfMSA=\ngithub.com/kvz/logstreamer v0.0.0-20221024075423-bf5cfbd32e39 h1:CBydX6UrnBjwD107XLBGulgvTezrrR38FAufUJr3dsk=\ngithub.com/kvz/logstreamer v0.0.0-20221024075423-bf5cfbd32e39/go.mod h1:8/LTPeDLaklcUjgSQBHbhBF1ibKAFxzS5o+H7USfMSA=\ngithub.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=\ngithub.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=\ngithub.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=\ngithub.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=\ngithub.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=\ngithub.com/mattn/go-isatty v0.0.6/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=\ngithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=\ngithub.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=\ngithub.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=\ngithub.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w=\ngithub.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=\ngithub.com/nicholas-fedor/shoutrrr v0.13.2 h1:hfsYBIqSFYGg92pZP5CXk/g7/OJIkLYmiUnRl+AD1IA=\ngithub.com/nicholas-fedor/shoutrrr v0.13.2/go.mod h1:ZqzV3gY/Wj6AvWs1etlO7+yKbh4iptSbeL8avBpMQbA=\ngithub.com/oapi-codegen/runtime v1.1.2 h1:P2+CubHq8fO4Q6fV1tqDBZHCwpVpvPg7oKiYzQgXIyI=\ngithub.com/oapi-codegen/runtime v1.1.2/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=\ngithub.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI=\ngithub.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE=\ngithub.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28=\ngithub.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg=\ngithub.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=\ngithub.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=\ngithub.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=\ngithub.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=\ngithub.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=\ngithub.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=\ngithub.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=\ngithub.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=\ngithub.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4=\ngithub.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI=\ngithub.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw=\ngithub.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=\ngithub.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=\ngithub.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g=\ngithub.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=\ngithub.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=\ngithub.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY=\ngithub.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo=\ngithub.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=\ngithub.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=\ngithub.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=\ngithub.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=\ngithub.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=\ngithub.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=\ngithub.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=\ngithub.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=\ngithub.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY=\ngithub.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=\ngithub.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU=\ngithub.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4=\ngithub.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342 h1:FnBeRrxr7OU4VvAzt5X7s6266i6cSVkkFPS0TuXWbIg=\ngithub.com/xrash/smetrics v0.0.0-20250705151800-55b8f293f342/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=\ngithub.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=\ngithub.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=\ngo.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=\ngo.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=\ngo.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=\ngo.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=\ngolang.org/x/arch v0.23.0 h1:lKF64A2jF6Zd8L0knGltUnegD62JMFBiCPBmQpToHhg=\ngolang.org/x/arch v0.23.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=\ngolang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=\ngolang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=\ngolang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU=\ngolang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU=\ngolang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=\ngolang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=\ngolang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=\ngolang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=\ngolang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=\ngolang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=\ngolang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY=\ngolang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww=\ngolang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=\ngolang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=\ngolang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=\ngolang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg=\ngorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs=\nhowett.net/plist v1.0.2-0.20250314012144-ee69052608d9 h1:eeH1AIcPvSc0Z25ThsYF+Xoqbn0CI/YnXVYoTLFdGQw=\nhowett.net/plist v1.0.2-0.20250314012144-ee69052608d9/go.mod h1:fyFX5Hj5tP1Mpk8obqA9MZgXT416Q5711SDT7dQLTLk=\nmodernc.org/cc/v4 v4.27.1 h1:9W30zRlYrefrDV2JE2O8VDtJ1yPGownxciz5rrbQZis=\nmodernc.org/cc/v4 v4.27.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=\nmodernc.org/ccgo/v4 v4.30.1 h1:4r4U1J6Fhj98NKfSjnPUN7Ze2c6MnAdL0hWw6+LrJpc=\nmodernc.org/ccgo/v4 v4.30.1/go.mod h1:bIOeI1JL54Utlxn+LwrFyjCx2n2RDiYEaJVSrgdrRfM=\nmodernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA=\nmodernc.org/fileutil v1.3.40/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc=\nmodernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=\nmodernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=\nmodernc.org/gc/v3 v3.1.1 h1:k8T3gkXWY9sEiytKhcgyiZ2L0DTyCQ/nvX+LoCljoRE=\nmodernc.org/gc/v3 v3.1.1/go.mod h1:HFK/6AGESC7Ex+EZJhJ2Gni6cTaYpSMmU/cT9RmlfYY=\nmodernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=\nmodernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=\nmodernc.org/libc v1.67.7 h1:H+gYQw2PyidyxwxQsGTwQw6+6H+xUk+plvOKW7+d3TI=\nmodernc.org/libc v1.67.7/go.mod h1:UjCSJFl2sYbJbReVQeVpq/MgzlbmDM4cRHIYFelnaDk=\nmodernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=\nmodernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=\nmodernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=\nmodernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=\nmodernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=\nmodernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=\nmodernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=\nmodernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=\nmodernc.org/sqlite v1.44.3 h1:+39JvV/HWMcYslAwRxHb8067w+2zowvFOUrOWIy9PjY=\nmodernc.org/sqlite v1.44.3/go.mod h1:CzbrU2lSB1DKUusvwGz7rqEKIq+NUd8GWuBBZDs9/nA=\nmodernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=\nmodernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=\nmodernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=\nmodernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=\n"
  },
  {
    "path": "packagr.yml",
    "content": "---\nengine_enable_code_mutation: true\nmgr_keep_lock_file: true\nengine_version_metadata_path: 'webapp/backend/pkg/version/version.go'\nengine_golang_package_path: 'github.com/analogj/scrutiny'\n\n"
  },
  {
    "path": "rootfs/etc/cont-init.d/01-timezone",
    "content": "#!/command/with-contenv bash\n\nif [ -n \"${TZ}\" ]\nthen\n    ln -snf \"/usr/share/zoneinfo/${TZ}\" /etc/localtime\n    echo \"${TZ}\" > /etc/timezone\nfi\n"
  },
  {
    "path": "rootfs/etc/cont-init.d/50-cron-config",
    "content": "#!/command/with-contenv bash\n\n# Cron runs in its own isolated environment (usually using only /etc/environment )\n# So when the container starts up, we will do a dump of the runtime environment into a .env file that we\n# will then source into the crontab file (/etc/cron.d/scrutiny)\n(set -o posix; export -p) > /env.sh\n\n# adding ability to customize the cron schedule.\nCOLLECTOR_CRON_SCHEDULE=${COLLECTOR_CRON_SCHEDULE:-\"0 0 * * *\"}\n\n# if the cron schedule has been overridden via env variable (eg docker-compose) we should make sure to strip quotes\n[[ \"${COLLECTOR_CRON_SCHEDULE}\" == \\\"*\\\" || \"${COLLECTOR_CRON_SCHEDULE}\" == \\'*\\' ]] && COLLECTOR_CRON_SCHEDULE=\"${COLLECTOR_CRON_SCHEDULE:1:-1}\"\n\n# replace placeholder with correct value\nsed -i 's|{COLLECTOR_CRON_SCHEDULE}|'\"${COLLECTOR_CRON_SCHEDULE}\"'|g' /etc/cron.d/scrutiny\n"
  },
  {
    "path": "rootfs/etc/cron.d/scrutiny",
    "content": "MAILTO=\"\"\n# Example of job definition:\n# .---------------- minute (0 - 59)\n# |  .------------- hour (0 - 23)\n# |  |  .---------- day of month (1 - 31)\n# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...\n# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat\n# |  |  |  |  |\n# *  *  *  *  * user-name command to be executed\n\n# correctly route collector logs (STDOUT & STDERR) to Cron foreground (collectable by Docker STDOUT)\n# cron schedule to run daily at midnight:  '0 0 * * *'\n# System environmental variables are stripped by cron, source our dump of the docker environmental variables before each command (/env.sh)\n{COLLECTOR_CRON_SCHEDULE} root . /env.sh; /opt/scrutiny/bin/scrutiny-collector-metrics run >/proc/1/fd/1 2>/proc/1/fd/2\n# An empty line is required at the end of this file for a valid cron file.\n"
  },
  {
    "path": "rootfs/etc/services.d/collector-once/run",
    "content": "#!/command/with-contenv bash\n\n# ensure not run (successfully) before\nif [ -f /tmp/custom-init-performed ]; then\n  echo 'INFO: custom init already performed'\n  s6-svc -D /run/service/collector-once     # prevent s6 from restarting service\n  exit 0\nfi\n\necho \"waiting for scrutiny service to start\"\ns6-svwait -u /run/service/scrutiny\n\n# wait until scrutiny is \"Ready\"\nuntil $(curl --output /dev/null --silent --head --fail http://localhost:8080/api/health); do echo \"scrutiny api not ready\" && sleep 5; done\n\necho \"starting scrutiny collector (run-once mode. subsequent calls will be triggered via cron service)\"\n/opt/scrutiny/bin/scrutiny-collector-metrics run\n\n# prevent script's core logic from running again\ntouch /tmp/custom-init-performed\n\n# prevent s6 from restarting service\ns6-svc -D /run/service/collector-once\n\nexit 0\n"
  },
  {
    "path": "rootfs/etc/services.d/cron/finish",
    "content": "#!/command/execlineb -S0\n\necho \"cron exiting\"\ns6-svscanctl -t /var/run/s6/services\n"
  },
  {
    "path": "rootfs/etc/services.d/cron/run",
    "content": "#!/command/with-contenv bash\n\necho \"starting cron\"\ncron -f -L 15\n"
  },
  {
    "path": "rootfs/etc/services.d/influxdb/run",
    "content": "#!/command/with-contenv bash\n\nmkdir -p /opt/scrutiny/influxdb/\n\nif [ -f \"/opt/scrutiny/influxdb/config.yaml\" ]; then\n    echo \"influxdb config file already exists. skipping.\"\nelse\ncat << 'EOF' > /opt/scrutiny/influxdb/config.yaml\nbolt-path: /opt/scrutiny/influxdb/influxd.bolt\nengine-path: /opt/scrutiny/influxdb/engine\nhttp-bind-address: \":8086\"\nreporting-disabled: true\nEOF\nfi\n\necho \"starting influxdb\"\ninfluxd run\n"
  },
  {
    "path": "rootfs/etc/services.d/scrutiny/run",
    "content": "#!/command/with-contenv bash\n\necho \"waiting for influxdb\"\nuntil $(curl --output /dev/null --silent --head --fail http://localhost:8086/health); do echo \"influxdb not ready\" && sleep 5; done\n\necho \"starting scrutiny\"\nscrutiny start\n"
  },
  {
    "path": "webapp/backend/cmd/scrutiny/scrutiny.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/errors\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/version\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/web\"\n\t\"github.com/sirupsen/logrus\"\n\n\tutils \"github.com/analogj/go-util/utils\"\n\t\"github.com/fatih/color\"\n\t\"github.com/urfave/cli/v2\"\n)\n\nvar goos string\nvar goarch string\n\nfunc main() {\n\n\tconfig, err := config.Create()\n\tif err != nil {\n\t\tfmt.Printf(\"FATAL: %+v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\n\tconfigFilePath := \"/opt/scrutiny/config/scrutiny.yaml\"\n\tconfigFilePathAlternative := \"/opt/scrutiny/config/scrutiny.yml\"\n\tif !utils.FileExists(configFilePath) && utils.FileExists(configFilePathAlternative) {\n\t\tconfigFilePath = configFilePathAlternative\n\t}\n\n\t//we're going to load the config file manually, since we need to validate it.\n\terr = config.ReadConfig(configFilePath)               // Find and read the config file\n\tif _, ok := err.(errors.ConfigFileMissingError); ok { // Handle errors reading the config file\n\t\t//ignore \"could not find config file\"\n\t} else if err != nil {\n\t\tlog.Print(color.HiRedString(\"CONFIG ERROR: %v\", err))\n\t\tos.Exit(1)\n\t}\n\n\tcli.CommandHelpTemplate = `NAME:\n   {{.HelpName}} - {{.Usage}}\nUSAGE:\n   {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}{{if .Category}}\nCATEGORY:\n   {{.Category}}{{end}}{{if .Description}}\nDESCRIPTION:\n   {{.Description}}{{end}}{{if .VisibleFlags}}\nOPTIONS:\n   {{range .VisibleFlags}}{{.}}\n   {{end}}{{end}}\n`\n\n\tapp := &cli.App{\n\t\tName:     \"scrutiny\",\n\t\tUsage:    \"WebUI for smartd S.M.A.R.T monitoring\",\n\t\tVersion:  version.VERSION,\n\t\tCompiled: time.Now(),\n\t\tAuthors: []*cli.Author{\n\t\t\t{\n\t\t\t\tName:  \"Jason Kulatunga\",\n\t\t\t\tEmail: \"jason@thesparktree.com\",\n\t\t\t},\n\t\t},\n\t\tBefore: func(c *cli.Context) error {\n\n\t\t\tscrutiny := \"github.com/AnalogJ/scrutiny\"\n\n\t\t\tvar versionInfo string\n\t\t\tif len(goos) > 0 && len(goarch) > 0 {\n\t\t\t\tversionInfo = fmt.Sprintf(\"%s.%s-%s\", goos, goarch, version.VERSION)\n\t\t\t} else {\n\t\t\t\tversionInfo = fmt.Sprintf(\"dev-%s\", version.VERSION)\n\t\t\t}\n\n\t\t\tsubtitle := scrutiny + utils.LeftPad2Len(versionInfo, \" \", 65-len(scrutiny))\n\n\t\t\tcolor.New(color.FgGreen).Fprintf(c.App.Writer, utils.StripIndent(\n\t\t\t\t`\n\t\t\t ___   ___  ____  __  __  ____  ____  _  _  _  _\n\t\t\t/ __) / __)(  _ \\(  )(  )(_  _)(_  _)( \\( )( \\/ )\n\t\t\t\\__ \\( (__  )   / )(__)(   )(   _)(_  )  (  \\  /\n\t\t\t(___/ \\___)(_)\\_)(______) (__) (____)(_)\\_) (__)\n\t\t\t%s\n\n\t\t\t`), subtitle)\n\n\t\t\treturn nil\n\t\t},\n\n\t\tCommands: []*cli.Command{\n\t\t\t{\n\t\t\t\tName:  \"start\",\n\t\t\t\tUsage: \"Start the scrutiny server\",\n\t\t\t\tAction: func(c *cli.Context) error {\n\t\t\t\t\tfmt.Fprintln(c.App.Writer, c.Command.Usage)\n\t\t\t\t\tif c.IsSet(\"config\") {\n\t\t\t\t\t\terr = config.ReadConfig(c.String(\"config\")) // Find and read the config file\n\t\t\t\t\t\tif err != nil {                             // Handle errors reading the config file\n\t\t\t\t\t\t\t//ignore \"could not find config file\"\n\t\t\t\t\t\t\tfmt.Printf(\"Could not find config file at specified path: %s\", c.String(\"config\"))\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif c.Bool(\"debug\") {\n\t\t\t\t\t\tconfig.Set(\"log.level\", \"DEBUG\")\n\t\t\t\t\t}\n\n\t\t\t\t\tif c.IsSet(\"log-file\") {\n\t\t\t\t\t\tconfig.Set(\"log.file\", c.String(\"log-file\"))\n\t\t\t\t\t}\n\n\t\t\t\t\twebLogger, logFile, err := CreateLogger(config)\n\t\t\t\t\tif logFile != nil {\n\t\t\t\t\t\tdefer logFile.Close()\n\t\t\t\t\t}\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\n\t\t\t\t\tsettingsData, err := json.Marshal(config.AllSettings())\n\t\t\t\t\twebLogger.Debug(string(settingsData), err)\n\n\t\t\t\t\twebServer := web.AppEngine{Config: config, Logger: webLogger}\n\n\t\t\t\t\treturn webServer.Start()\n\t\t\t\t},\n\n\t\t\t\tFlags: []cli.Flag{\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:  \"config\",\n\t\t\t\t\t\tUsage: \"Specify the path to the config file\",\n\t\t\t\t\t},\n\t\t\t\t\t&cli.StringFlag{\n\t\t\t\t\t\tName:    \"log-file\",\n\t\t\t\t\t\tUsage:   \"Path to file for logging. Leave empty to use STDOUT\",\n\t\t\t\t\t\tValue:   \"\",\n\t\t\t\t\t\tEnvVars: []string{\"SCRUTINY_LOG_FILE\"},\n\t\t\t\t\t},\n\n\t\t\t\t\t&cli.BoolFlag{\n\t\t\t\t\t\tName:    \"debug\",\n\t\t\t\t\t\tUsage:   \"Enable debug logging\",\n\t\t\t\t\t\tEnvVars: []string{\"SCRUTINY_DEBUG\", \"DEBUG\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\n\terr = app.Run(os.Args)\n\tif err != nil {\n\t\tlog.Fatal(color.HiRedString(\"ERROR: %v\", err))\n\t}\n\n}\n\nfunc CreateLogger(appConfig config.Interface) (*logrus.Entry, *os.File, error) {\n\tlogger := logrus.WithFields(logrus.Fields{\n\t\t\"type\": \"web\",\n\t})\n\t//set default log level\n\tif level, err := logrus.ParseLevel(appConfig.GetString(\"log.level\")); err == nil {\n\t\tlogger.Logger.SetLevel(level)\n\t} else {\n\t\tlogger.Logger.SetLevel(logrus.InfoLevel)\n\t}\n\n\tvar logFile *os.File\n\tvar err error\n\tif appConfig.IsSet(\"log.file\") && len(appConfig.GetString(\"log.file\")) > 0 {\n\t\tlogFile, err = os.OpenFile(appConfig.GetString(\"log.file\"), os.O_CREATE|os.O_WRONLY, 0644)\n\t\tif err != nil {\n\t\t\tlogger.Logger.Errorf(\"Failed to open log file %s for output: %s\", appConfig.GetString(\"log.file\"), err)\n\t\t\treturn nil, logFile, err\n\t\t}\n\t\tlogger.Logger.SetOutput(io.MultiWriter(os.Stderr, logFile))\n\t}\n\treturn logger, logFile, nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/config/config.go",
    "content": "package config\n\nimport (\n\t\"github.com/analogj/go-util/utils\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/errors\"\n\t\"github.com/spf13/viper\"\n\t\"log\"\n\t\"os\"\n\t\"strings\"\n)\n\nconst DB_USER_SETTINGS_SUBKEY = \"user\"\n\n// When initializing this class the following methods must be called:\n// Config.New\n// Config.Init\n// This is done automatically when created via the Factory.\ntype configuration struct {\n\t*viper.Viper\n}\n\n//Viper uses the following precedence order. Each item takes precedence over the item below it:\n// explicit call to Set\n// flag\n// env\n// config\n// key/value store\n// default\n\nfunc (c *configuration) Init() error {\n\tc.Viper = viper.New()\n\t//set defaults\n\tc.SetDefault(\"web.listen.port\", \"8080\")\n\tc.SetDefault(\"web.listen.host\", \"0.0.0.0\")\n\tc.SetDefault(\"web.listen.basepath\", \"\")\n\tc.SetDefault(\"web.src.frontend.path\", \"/opt/scrutiny/web\")\n\tc.SetDefault(\"web.database.location\", \"/opt/scrutiny/config/scrutiny.db\")\n\n\tc.SetDefault(\"log.level\", \"INFO\")\n\tc.SetDefault(\"log.file\", \"\")\n\n\tc.SetDefault(\"notify.urls\", []string{})\n\n\tc.SetDefault(\"web.influxdb.scheme\", \"http\")\n\tc.SetDefault(\"web.influxdb.host\", \"localhost\")\n\tc.SetDefault(\"web.influxdb.port\", \"8086\")\n\tc.SetDefault(\"web.influxdb.org\", \"scrutiny\")\n\tc.SetDefault(\"web.influxdb.bucket\", \"metrics\")\n\tc.SetDefault(\"web.influxdb.init_username\", \"admin\")\n\tc.SetDefault(\"web.influxdb.init_password\", \"password12345\")\n\tc.SetDefault(\"web.influxdb.token\", \"scrutiny-default-admin-token\")\n\tc.SetDefault(\"web.influxdb.tls.insecure_skip_verify\", false)\n\tc.SetDefault(\"web.influxdb.retention_policy\", true)\n\n\t//c.SetDefault(\"disks.include\", []string{})\n\t//c.SetDefault(\"disks.exclude\", []string{})\n\n\t//if you want to load a non-standard location system config file (~/drawbridge.yml), use ReadConfig\n\tc.SetConfigType(\"yaml\")\n\t//c.SetConfigName(\"drawbridge\")\n\t//c.AddConfigPath(\"$HOME/\")\n\n\t//configure env variable parsing.\n\tc.SetEnvPrefix(\"SCRUTINY\")\n\tc.SetEnvKeyReplacer(strings.NewReplacer(\"-\", \"_\", \".\", \"_\"))\n\tc.AutomaticEnv()\n\n\t//CLI options will be added via the `Set()` function\n\treturn c.ValidateConfig()\n}\n\nfunc (c *configuration) SubKeys(key string) []string {\n\treturn c.Sub(key).AllKeys()\n}\n\nfunc (c *configuration) Sub(key string) Interface {\n\tconfig := configuration{\n\t\tViper: c.Viper.Sub(key),\n\t}\n\treturn &config\n}\n\nfunc (c *configuration) ReadConfig(configFilePath string) error {\n\t//make sure that we specify that this is the correct config path (for eventual WriteConfig() calls)\n\tc.SetConfigFile(configFilePath)\n\n\tconfigFilePath, err := utils.ExpandPath(configFilePath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !utils.FileExists(configFilePath) {\n\t\tlog.Printf(\"No configuration file found at %v. Using Defaults.\", configFilePath)\n\t\treturn errors.ConfigFileMissingError(\"The configuration file could not be found.\")\n\t}\n\n\t//validate config file contents\n\t//err = c.ValidateConfigFile(configFilePath)\n\t//if err != nil {\n\t//\tlog.Printf(\"Config file at `%v` is invalid: %s\", configFilePath, err)\n\t//\treturn err\n\t//}\n\n\tlog.Printf(\"Loading configuration file: %s\", configFilePath)\n\n\tconfig_data, err := os.Open(configFilePath)\n\tif err != nil {\n\t\tlog.Printf(\"Error reading configuration file: %s\", err)\n\t\treturn err\n\t}\n\n\terr = c.MergeConfig(config_data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn c.ValidateConfig()\n}\n\n// This function ensures that the merged config works correctly.\nfunc (c *configuration) ValidateConfig() error {\n\n\t//the following keys are deprecated, and no longer supported\n\t/*\n\t\t- notify.filter_attributes (replaced by metrics.status.filter_attributes SETTING)\n\t\t- notify.level (replaced by metrics.notify.level and metrics.status.threshold SETTING)\n\t*/\n\t//TODO add docs and upgrade doc.\n\tif c.IsSet(\"notify.filter_attributes\") {\n\t\treturn errors.ConfigValidationError(\"`notify.filter_attributes` configuration option is deprecated. Replaced by option in Dashboard Settings page\")\n\t}\n\tif c.IsSet(\"notify.level\") {\n\t\treturn errors.ConfigValidationError(\"`notify.level` configuration option is deprecated. Replaced by option in Dashboard Settings page\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/config/config_test.go",
    "content": "package config\n\nimport (\n\t\"github.com/spf13/viper\"\n\t\"github.com/stretchr/testify/require\"\n\t\"testing\"\n)\n\nfunc Test_MergeConfigMap(t *testing.T) {\n\t//setup\n\ttestConfig := configuration{\n\t\tViper: viper.New(),\n\t}\n\ttestConfig.Set(\"user.dashboard_display\", \"hello\")\n\ttestConfig.SetDefault(\"user.layout\", \"hello\")\n\n\tmergeSettings := map[string]interface{}{\n\t\t\"user\": map[string]interface{}{\n\t\t\t\"dashboard_display\": \"dashboard_display\",\n\t\t\t\"layout\":            \"layout\",\n\t\t},\n\t}\n\t//test\n\terr := testConfig.MergeConfigMap(mergeSettings)\n\n\t//verify\n\trequire.NoError(t, err)\n\n\t// if using Set, the MergeConfigMap functionality will not override\n\t// if using SetDefault, the MergeConfigMap will override correctly\n\trequire.Equal(t, \"hello\", testConfig.GetString(\"user.dashboard_display\"))\n\trequire.Equal(t, \"layout\", testConfig.GetString(\"user.layout\"))\n\n}\n"
  },
  {
    "path": "webapp/backend/pkg/config/factory.go",
    "content": "package config\n\nfunc Create() (Interface, error) {\n\tconfig := new(configuration)\n\tif err := config.Init(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn config, nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/config/interface.go",
    "content": "package config\n\nimport (\n\t\"github.com/spf13/viper\"\n)\n\n// Create mock using:\n// mockgen -source=webapp/backend/pkg/config/interface.go -destination=webapp/backend/pkg/config/mock/mock_config.go\ntype Interface interface {\n\tInit() error\n\tReadConfig(configFilePath string) error\n\tWriteConfig() error\n\tSet(key string, value interface{})\n\tSetDefault(key string, value interface{})\n\tMergeConfigMap(cfg map[string]interface{}) error\n\n\tSub(key string) Interface\n\tAllSettings() map[string]interface{}\n\tAllKeys() []string\n\tSubKeys(key string) []string\n\tIsSet(key string) bool\n\tGet(key string) interface{}\n\tGetBool(key string) bool\n\tGetInt(key string) int\n\tGetInt64(key string) int64\n\tGetString(key string) string\n\tGetStringSlice(key string) []string\n\tUnmarshalKey(key string, rawVal interface{}, decoderOpts ...viper.DecoderConfigOption) error\n}\n"
  },
  {
    "path": "webapp/backend/pkg/config/mock/mock_config.go",
    "content": "// Code generated by MockGen. DO NOT EDIT.\n// Source: webapp/backend/pkg/config/interface.go\n\n// Package mock_config is a generated GoMock package.\npackage mock_config\n\nimport (\n\treflect \"reflect\"\n\n\tconfig \"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\tviper \"github.com/spf13/viper\"\n\tgomock \"go.uber.org/mock/gomock\"\n)\n\n// MockInterface is a mock of Interface interface.\ntype MockInterface struct {\n\tctrl     *gomock.Controller\n\trecorder *MockInterfaceMockRecorder\n}\n\n// MockInterfaceMockRecorder is the mock recorder for MockInterface.\ntype MockInterfaceMockRecorder struct {\n\tmock *MockInterface\n}\n\n// NewMockInterface creates a new mock instance.\nfunc NewMockInterface(ctrl *gomock.Controller) *MockInterface {\n\tmock := &MockInterface{ctrl: ctrl}\n\tmock.recorder = &MockInterfaceMockRecorder{mock}\n\treturn mock\n}\n\n// EXPECT returns an object that allows the caller to indicate expected use.\nfunc (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {\n\treturn m.recorder\n}\n\n// AllKeys mocks base method.\nfunc (m *MockInterface) AllKeys() []string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"AllKeys\")\n\tret0, _ := ret[0].([]string)\n\treturn ret0\n}\n\n// AllKeys indicates an expected call of AllKeys.\nfunc (mr *MockInterfaceMockRecorder) AllKeys() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"AllKeys\", reflect.TypeOf((*MockInterface)(nil).AllKeys))\n}\n\n// AllSettings mocks base method.\nfunc (m *MockInterface) AllSettings() map[string]interface{} {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"AllSettings\")\n\tret0, _ := ret[0].(map[string]interface{})\n\treturn ret0\n}\n\n// AllSettings indicates an expected call of AllSettings.\nfunc (mr *MockInterfaceMockRecorder) AllSettings() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"AllSettings\", reflect.TypeOf((*MockInterface)(nil).AllSettings))\n}\n\n// Get mocks base method.\nfunc (m *MockInterface) Get(key string) interface{} {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Get\", key)\n\tret0, _ := ret[0].(interface{})\n\treturn ret0\n}\n\n// Get indicates an expected call of Get.\nfunc (mr *MockInterfaceMockRecorder) Get(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Get\", reflect.TypeOf((*MockInterface)(nil).Get), key)\n}\n\n// GetBool mocks base method.\nfunc (m *MockInterface) GetBool(key string) bool {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetBool\", key)\n\tret0, _ := ret[0].(bool)\n\treturn ret0\n}\n\n// GetBool indicates an expected call of GetBool.\nfunc (mr *MockInterfaceMockRecorder) GetBool(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetBool\", reflect.TypeOf((*MockInterface)(nil).GetBool), key)\n}\n\n// GetInt mocks base method.\nfunc (m *MockInterface) GetInt(key string) int {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetInt\", key)\n\tret0, _ := ret[0].(int)\n\treturn ret0\n}\n\n// GetInt indicates an expected call of GetInt.\nfunc (mr *MockInterfaceMockRecorder) GetInt(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetInt\", reflect.TypeOf((*MockInterface)(nil).GetInt), key)\n}\n\n// GetInt64 mocks base method.\nfunc (m *MockInterface) GetInt64(key string) int64 {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetInt64\", key)\n\tret0, _ := ret[0].(int64)\n\treturn ret0\n}\n\n// GetInt64 indicates an expected call of GetInt64.\nfunc (mr *MockInterfaceMockRecorder) GetInt64(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetInt64\", reflect.TypeOf((*MockInterface)(nil).GetInt64), key)\n}\n\n// GetString mocks base method.\nfunc (m *MockInterface) GetString(key string) string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetString\", key)\n\tret0, _ := ret[0].(string)\n\treturn ret0\n}\n\n// GetString indicates an expected call of GetString.\nfunc (mr *MockInterfaceMockRecorder) GetString(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetString\", reflect.TypeOf((*MockInterface)(nil).GetString), key)\n}\n\n// GetStringSlice mocks base method.\nfunc (m *MockInterface) GetStringSlice(key string) []string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetStringSlice\", key)\n\tret0, _ := ret[0].([]string)\n\treturn ret0\n}\n\n// GetStringSlice indicates an expected call of GetStringSlice.\nfunc (mr *MockInterfaceMockRecorder) GetStringSlice(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetStringSlice\", reflect.TypeOf((*MockInterface)(nil).GetStringSlice), key)\n}\n\n// Init mocks base method.\nfunc (m *MockInterface) Init() error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Init\")\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// Init indicates an expected call of Init.\nfunc (mr *MockInterfaceMockRecorder) Init() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Init\", reflect.TypeOf((*MockInterface)(nil).Init))\n}\n\n// IsSet mocks base method.\nfunc (m *MockInterface) IsSet(key string) bool {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"IsSet\", key)\n\tret0, _ := ret[0].(bool)\n\treturn ret0\n}\n\n// IsSet indicates an expected call of IsSet.\nfunc (mr *MockInterfaceMockRecorder) IsSet(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"IsSet\", reflect.TypeOf((*MockInterface)(nil).IsSet), key)\n}\n\n// MergeConfigMap mocks base method.\nfunc (m *MockInterface) MergeConfigMap(cfg map[string]interface{}) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"MergeConfigMap\", cfg)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// MergeConfigMap indicates an expected call of MergeConfigMap.\nfunc (mr *MockInterfaceMockRecorder) MergeConfigMap(cfg interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"MergeConfigMap\", reflect.TypeOf((*MockInterface)(nil).MergeConfigMap), cfg)\n}\n\n// ReadConfig mocks base method.\nfunc (m *MockInterface) ReadConfig(configFilePath string) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"ReadConfig\", configFilePath)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// ReadConfig indicates an expected call of ReadConfig.\nfunc (mr *MockInterfaceMockRecorder) ReadConfig(configFilePath interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"ReadConfig\", reflect.TypeOf((*MockInterface)(nil).ReadConfig), configFilePath)\n}\n\n// Set mocks base method.\nfunc (m *MockInterface) Set(key string, value interface{}) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"Set\", key, value)\n}\n\n// Set indicates an expected call of Set.\nfunc (mr *MockInterfaceMockRecorder) Set(key, value interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Set\", reflect.TypeOf((*MockInterface)(nil).Set), key, value)\n}\n\n// SetDefault mocks base method.\nfunc (m *MockInterface) SetDefault(key string, value interface{}) {\n\tm.ctrl.T.Helper()\n\tm.ctrl.Call(m, \"SetDefault\", key, value)\n}\n\n// SetDefault indicates an expected call of SetDefault.\nfunc (mr *MockInterfaceMockRecorder) SetDefault(key, value interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SetDefault\", reflect.TypeOf((*MockInterface)(nil).SetDefault), key, value)\n}\n\n// Sub mocks base method.\nfunc (m *MockInterface) Sub(key string) config.Interface {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Sub\", key)\n\tret0, _ := ret[0].(config.Interface)\n\treturn ret0\n}\n\n// Sub indicates an expected call of Sub.\nfunc (mr *MockInterfaceMockRecorder) Sub(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Sub\", reflect.TypeOf((*MockInterface)(nil).Sub), key)\n}\n\n// SubKeys mocks base method.\nfunc (m *MockInterface) SubKeys(key string) []string {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SubKeys\", key)\n\tret0, _ := ret[0].([]string)\n\treturn ret0\n}\n\n// SubKeys indicates an expected call of SubKeys.\nfunc (mr *MockInterfaceMockRecorder) SubKeys(key interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SubKeys\", reflect.TypeOf((*MockInterface)(nil).SubKeys), key)\n}\n\n// UnmarshalKey mocks base method.\nfunc (m *MockInterface) UnmarshalKey(key string, rawVal interface{}, decoderOpts ...viper.DecoderConfigOption) error {\n\tm.ctrl.T.Helper()\n\tvarargs := []interface{}{key, rawVal}\n\tfor _, a := range decoderOpts {\n\t\tvarargs = append(varargs, a)\n\t}\n\tret := m.ctrl.Call(m, \"UnmarshalKey\", varargs...)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// UnmarshalKey indicates an expected call of UnmarshalKey.\nfunc (mr *MockInterfaceMockRecorder) UnmarshalKey(key, rawVal interface{}, decoderOpts ...interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\tvarargs := append([]interface{}{key, rawVal}, decoderOpts...)\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UnmarshalKey\", reflect.TypeOf((*MockInterface)(nil).UnmarshalKey), varargs...)\n}\n\n// WriteConfig mocks base method.\nfunc (m *MockInterface) WriteConfig() error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"WriteConfig\")\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// WriteConfig indicates an expected call of WriteConfig.\nfunc (mr *MockInterfaceMockRecorder) WriteConfig() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"WriteConfig\", reflect.TypeOf((*MockInterface)(nil).WriteConfig))\n}\n"
  },
  {
    "path": "webapp/backend/pkg/constants.go",
    "content": "package pkg\n\nconst DeviceProtocolAta = \"ATA\"\nconst DeviceProtocolScsi = \"SCSI\"\nconst DeviceProtocolNvme = \"NVMe\"\n\n//go:generate stringer -type=AttributeStatus\n// AttributeStatus bitwise flag, 1,2,4,8,16,32,etc\ntype AttributeStatus uint8\n\nconst (\n\tAttributeStatusPassed          AttributeStatus = 0\n\tAttributeStatusFailedSmart     AttributeStatus = 1\n\tAttributeStatusWarningScrutiny AttributeStatus = 2\n\tAttributeStatusFailedScrutiny  AttributeStatus = 4\n)\n\nconst AttributeWhenFailedFailingNow = \"FAILING_NOW\"\nconst AttributeWhenFailedInThePast = \"IN_THE_PAST\"\n\nfunc AttributeStatusSet(b, flag AttributeStatus) AttributeStatus    { return b | flag }\nfunc AttributeStatusClear(b, flag AttributeStatus) AttributeStatus  { return b &^ flag }\nfunc AttributeStatusToggle(b, flag AttributeStatus) AttributeStatus { return b ^ flag }\nfunc AttributeStatusHas(b, flag AttributeStatus) bool               { return b&flag != 0 }\n\n//go:generate stringer -type=DeviceStatus\n// DeviceStatus bitwise flag, 1,2,4,8,16,32,etc\ntype DeviceStatus uint8\n\nconst (\n\tDeviceStatusPassed         DeviceStatus = 0\n\tDeviceStatusFailedSmart    DeviceStatus = 1\n\tDeviceStatusFailedScrutiny DeviceStatus = 2\n)\n\nfunc DeviceStatusSet(b, flag DeviceStatus) DeviceStatus    { return b | flag }\nfunc DeviceStatusClear(b, flag DeviceStatus) DeviceStatus  { return b &^ flag }\nfunc DeviceStatusToggle(b, flag DeviceStatus) DeviceStatus { return b ^ flag }\nfunc DeviceStatusHas(b, flag DeviceStatus) bool            { return b&flag != 0 }\n\n// Metrics Specific Filtering & Threshold Constants\ntype MetricsNotifyLevel int64\n\nconst (\n\tMetricsNotifyLevelWarn MetricsNotifyLevel = 1\n\tMetricsNotifyLevelFail MetricsNotifyLevel = 2\n)\n\ntype MetricsStatusFilterAttributes int64\n\nconst (\n\tMetricsStatusFilterAttributesAll      MetricsStatusFilterAttributes = 0\n\tMetricsStatusFilterAttributesCritical MetricsStatusFilterAttributes = 1\n)\n\n// MetricsStatusThreshold bitwise flag, 1,2,4,8,16,32,etc\ntype MetricsStatusThreshold int64\n\nconst (\n\tMetricsStatusThresholdSmart    MetricsStatusThreshold = 1\n\tMetricsStatusThresholdScrutiny MetricsStatusThreshold = 2\n\n\t//shortcut\n\tMetricsStatusThresholdBoth MetricsStatusThreshold = 3\n)\n"
  },
  {
    "path": "webapp/backend/pkg/database/interface.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n)\n\n// Create mock using:\n// mockgen -source=webapp/backend/pkg/database/interface.go -destination=webapp/backend/pkg/database/mock/mock_database.go\ntype DeviceRepo interface {\n\tClose() error\n\tHealthCheck(ctx context.Context) error\n\n\tRegisterDevice(ctx context.Context, dev models.Device) error\n\tGetDevices(ctx context.Context) ([]models.Device, error)\n\tUpdateDevice(ctx context.Context, wwn string, collectorSmartData collector.SmartInfo) (models.Device, error)\n\tUpdateDeviceStatus(ctx context.Context, wwn string, status pkg.DeviceStatus) (models.Device, error)\n\tGetDeviceDetails(ctx context.Context, wwn string) (models.Device, error)\n\tUpdateDeviceArchived(ctx context.Context, wwn string, archived bool) error\n\tDeleteDevice(ctx context.Context, wwn string) error\n\n\tSaveSmartAttributes(ctx context.Context, wwn string, collectorSmartData collector.SmartInfo) (measurements.Smart, error)\n\tGetSmartAttributeHistory(ctx context.Context, wwn string, durationKey string, selectEntries int, selectEntriesOffset int, attributes []string) ([]measurements.Smart, error)\n\n\tSaveSmartTemperature(ctx context.Context, wwn string, deviceProtocol string, collectorSmartData collector.SmartInfo, discardSCTTempHistory bool) error\n\n\tGetSummary(ctx context.Context) (map[string]*models.DeviceSummary, error)\n\tGetSmartTemperatureHistory(ctx context.Context, durationKey string) (map[string][]measurements.SmartTemperature, error)\n\n\tLoadSettings(ctx context.Context) (*models.Settings, error)\n\tSaveSettings(ctx context.Context, settings models.Settings) error\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20201107210306/device.go",
    "content": "package m20201107210306\n\nimport (\n\t\"time\"\n)\n\n// Deprecated: m20201107210306.Device is deprecated, only used by db migrations\ntype Device struct {\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tCreatedAt time.Time\n\tUpdatedAt time.Time\n\tDeletedAt *time.Time\n\n\tWWN    string `json:\"wwn\" gorm:\"primary_key\"`\n\tHostId string `json:\"host_id\"`\n\n\tDeviceName     string  `json:\"device_name\"`\n\tManufacturer   string  `json:\"manufacturer\"`\n\tModelName      string  `json:\"model_name\"`\n\tInterfaceType  string  `json:\"interface_type\"`\n\tInterfaceSpeed string  `json:\"interface_speed\"`\n\tSerialNumber   string  `json:\"serial_number\"`\n\tFirmware       string  `json:\"firmware\"`\n\tRotationSpeed  int     `json:\"rotational_speed\"`\n\tCapacity       int64   `json:\"capacity\"`\n\tFormFactor     string  `json:\"form_factor\"`\n\tSmartSupport   bool    `json:\"smart_support\"`\n\tDeviceProtocol string  `json:\"device_protocol\"` //protocol determines which smart attribute types are available (ATA, NVMe, SCSI)\n\tDeviceType     string  `json:\"device_type\"`     //device type is used for querying with -d/t flag, should only be used by collector.\n\tSmartResults   []Smart `gorm:\"foreignkey:DeviceWWN\" json:\"smart_results\"`\n}\n\nconst DeviceProtocolAta = \"ATA\"\nconst DeviceProtocolScsi = \"SCSI\"\nconst DeviceProtocolNvme = \"NVMe\"\n\nfunc (dv *Device) IsAta() bool {\n\treturn dv.DeviceProtocol == DeviceProtocolAta\n}\n\nfunc (dv *Device) IsScsi() bool {\n\treturn dv.DeviceProtocol == DeviceProtocolScsi\n}\n\nfunc (dv *Device) IsNvme() bool {\n\treturn dv.DeviceProtocol == DeviceProtocolNvme\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20201107210306/smart.go",
    "content": "package m20201107210306\n\nimport (\n\t\"gorm.io/gorm\"\n\t\"time\"\n)\n\n// Deprecated: m20201107210306.Smart is deprecated, only used by db migrations\ntype Smart struct {\n\tgorm.Model\n\n\tDeviceWWN string `json:\"device_wwn\"`\n\tDevice    Device `json:\"-\" gorm:\"foreignkey:DeviceWWN\"` // use DeviceWWN as foreign key\n\n\tTestDate    time.Time `json:\"date\"`\n\tSmartStatus string    `json:\"smart_status\"` // SmartStatusPassed or SmartStatusFailed\n\n\t//Metrics\n\tTemp            int64 `json:\"temp\"`\n\tPowerOnHours    int64 `json:\"power_on_hours\"`\n\tPowerCycleCount int64 `json:\"power_cycle_count\"`\n\n\tAtaAttributes  []SmartAtaAttribute  `json:\"ata_attributes\" gorm:\"foreignkey:SmartId\"`\n\tNvmeAttributes []SmartNvmeAttribute `json:\"nvme_attributes\" gorm:\"foreignkey:SmartId\"`\n\tScsiAttributes []SmartScsiAttribute `json:\"scsi_attributes\" gorm:\"foreignkey:SmartId\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20201107210306/smart_ata_attribute.go",
    "content": "package m20201107210306\n\nimport \"gorm.io/gorm\"\n\n// Deprecated: m20201107210306.SmartAtaAttribute is deprecated, only used by db migrations\ntype SmartAtaAttribute struct {\n\tgorm.Model\n\n\tSmartId int    `json:\"smart_id\"`\n\tSmart   Device `json:\"-\" gorm:\"foreignkey:SmartId\"` // use SmartId as foreign key\n\n\tAttributeId int    `json:\"attribute_id\"`\n\tName        string `json:\"name\"`\n\tValue       int    `json:\"value\"`\n\tWorst       int    `json:\"worst\"`\n\tThreshold   int    `json:\"thresh\"`\n\tRawValue    int64  `json:\"raw_value\"`\n\tRawString   string `json:\"raw_string\"`\n\tWhenFailed  string `json:\"when_failed\"`\n\n\tTransformedValue int64               `json:\"transformed_value\"`\n\tStatus           string              `gorm:\"-\" json:\"status,omitempty\"`\n\tStatusReason     string              `gorm:\"-\" json:\"status_reason,omitempty\"`\n\tFailureRate      float64             `gorm:\"-\" json:\"failure_rate,omitempty\"`\n\tHistory          []SmartAtaAttribute `gorm:\"-\" json:\"history,omitempty\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20201107210306/smart_nvme_attribute.go",
    "content": "package m20201107210306\n\nimport \"gorm.io/gorm\"\n\n// Deprecated: m20201107210306.SmartNvmeAttribute is deprecated, only used by db migrations\ntype SmartNvmeAttribute struct {\n\tgorm.Model\n\n\tSmartId int    `json:\"smart_id\"`\n\tSmart   Device `json:\"-\" gorm:\"foreignkey:SmartId\"` // use SmartId as foreign key\n\n\tAttributeId string `json:\"attribute_id\"` //json string from smartctl\n\tName        string `json:\"name\"`\n\tValue       int    `json:\"value\"`\n\tThreshold   int    `json:\"thresh\"`\n\n\tTransformedValue int64                `json:\"transformed_value\"`\n\tStatus           string               `gorm:\"-\" json:\"status,omitempty\"`\n\tStatusReason     string               `gorm:\"-\" json:\"status_reason,omitempty\"`\n\tFailureRate      float64              `gorm:\"-\" json:\"failure_rate,omitempty\"`\n\tHistory          []SmartNvmeAttribute `gorm:\"-\" json:\"history,omitempty\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20201107210306/smart_scsci_attribute.go",
    "content": "package m20201107210306\n\nimport \"gorm.io/gorm\"\n\n// Deprecated: m20201107210306.SmartScsiAttribute is deprecated, only used by db migrations\ntype SmartScsiAttribute struct {\n\tgorm.Model\n\n\tSmartId int    `json:\"smart_id\"`\n\tSmart   Device `json:\"-\" gorm:\"foreignkey:SmartId\"` // use SmartId as foreign key\n\n\tAttributeId string `json:\"attribute_id\"` //json string from smartctl\n\tName        string `json:\"name\"`\n\tValue       int    `json:\"value\"`\n\tThreshold   int    `json:\"thresh\"`\n\n\tTransformedValue int64                `json:\"transformed_value\"`\n\tStatus           string               `gorm:\"-\" json:\"status,omitempty\"`\n\tStatusReason     string               `gorm:\"-\" json:\"status_reason,omitempty\"`\n\tFailureRate      float64              `gorm:\"-\" json:\"failure_rate,omitempty\"`\n\tHistory          []SmartScsiAttribute `gorm:\"-\" json:\"history,omitempty\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20220503120000/device.go",
    "content": "package m20220503120000\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"time\"\n)\n\n// Deprecated: m20220503120000.Device is deprecated, only used by db migrations\ntype Device struct {\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tCreatedAt time.Time\n\tUpdatedAt time.Time\n\tDeletedAt *time.Time\n\n\tWWN string `json:\"wwn\" gorm:\"primary_key\"`\n\n\tDeviceName     string `json:\"device_name\"`\n\tManufacturer   string `json:\"manufacturer\"`\n\tModelName      string `json:\"model_name\"`\n\tInterfaceType  string `json:\"interface_type\"`\n\tInterfaceSpeed string `json:\"interface_speed\"`\n\tSerialNumber   string `json:\"serial_number\"`\n\tFirmware       string `json:\"firmware\"`\n\tRotationSpeed  int    `json:\"rotational_speed\"`\n\tCapacity       int64  `json:\"capacity\"`\n\tFormFactor     string `json:\"form_factor\"`\n\tSmartSupport   bool   `json:\"smart_support\"`\n\tDeviceProtocol string `json:\"device_protocol\"` //protocol determines which smart attribute types are available (ATA, NVMe, SCSI)\n\tDeviceType     string `json:\"device_type\"`     //device type is used for querying with -d/t flag, should only be used by collector.\n\n\t// User provided metadata\n\tLabel  string `json:\"label\"`\n\tHostId string `json:\"host_id\"`\n\n\t// Data set by Scrutiny\n\tDeviceStatus pkg.DeviceStatus `json:\"device_status\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20220509170100/device.go",
    "content": "package m20220509170100\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"time\"\n)\n\n// Deprecated: m20220509170100.Device is deprecated, only used by db migrations\ntype Device struct {\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tCreatedAt time.Time\n\tUpdatedAt time.Time\n\tDeletedAt *time.Time\n\n\tWWN string `json:\"wwn\" gorm:\"primary_key\"`\n\n\tDeviceName     string `json:\"device_name\"`\n\tDeviceUUID     string `json:\"device_uuid\"`\n\tDeviceSerialID string `json:\"device_serial_id\"`\n\tDeviceLabel    string `json:\"device_label\"`\n\n\tManufacturer   string `json:\"manufacturer\"`\n\tModelName      string `json:\"model_name\"`\n\tInterfaceType  string `json:\"interface_type\"`\n\tInterfaceSpeed string `json:\"interface_speed\"`\n\tSerialNumber   string `json:\"serial_number\"`\n\tFirmware       string `json:\"firmware\"`\n\tRotationSpeed  int    `json:\"rotational_speed\"`\n\tCapacity       int64  `json:\"capacity\"`\n\tFormFactor     string `json:\"form_factor\"`\n\tSmartSupport   bool   `json:\"smart_support\"`\n\tDeviceProtocol string `json:\"device_protocol\"` //protocol determines which smart attribute types are available (ATA, NVMe, SCSI)\n\tDeviceType     string `json:\"device_type\"`     //device type is used for querying with -d/t flag, should only be used by collector.\n\n\t// User provided metadata\n\tLabel  string `json:\"label\"`\n\tHostId string `json:\"host_id\"`\n\n\t// Data set by Scrutiny\n\tDeviceStatus pkg.DeviceStatus `json:\"device_status\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20220716214900/setting.go",
    "content": "package m20220716214900\n\nimport (\n\t\"gorm.io/gorm\"\n)\n\ntype Setting struct {\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tgorm.Model\n\n\tSettingKeyName        string `json:\"setting_key_name\"`\n\tSettingKeyDescription string `json:\"setting_key_description\"`\n\tSettingDataType       string `json:\"setting_data_type\"`\n\n\tSettingValueNumeric int    `json:\"setting_value_numeric\"`\n\tSettingValueString  string `json:\"setting_value_string\"`\n\tSettingValueBool    bool   `json:\"setting_value_bool\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/migrations/m20250221084400/device.go",
    "content": "package m20250221084400\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"time\"\n)\n\ntype Device struct {\n\tArchived bool `json:\"archived\"`\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tCreatedAt time.Time\n\tUpdatedAt time.Time\n\tDeletedAt *time.Time\n\n\tWWN string `json:\"wwn\" gorm:\"primary_key\"`\n\n\tDeviceName     string `json:\"device_name\"`\n\tDeviceUUID     string `json:\"device_uuid\"`\n\tDeviceSerialID string `json:\"device_serial_id\"`\n\tDeviceLabel    string `json:\"device_label\"`\n\n\tManufacturer   string `json:\"manufacturer\"`\n\tModelName      string `json:\"model_name\"`\n\tInterfaceType  string `json:\"interface_type\"`\n\tInterfaceSpeed string `json:\"interface_speed\"`\n\tSerialNumber   string `json:\"serial_number\"`\n\tFirmware       string `json:\"firmware\"`\n\tRotationSpeed  int    `json:\"rotational_speed\"`\n\tCapacity       int64  `json:\"capacity\"`\n\tFormFactor     string `json:\"form_factor\"`\n\tSmartSupport   bool   `json:\"smart_support\"`\n\tDeviceProtocol string `json:\"device_protocol\"` //protocol determines which smart attribute types are available (ATA, NVMe, SCSI)\n\tDeviceType     string `json:\"device_type\"`     //device type is used for querying with -d/t flag, should only be used by collector.\n\n\t// User provided metadata\n\tLabel  string `json:\"label\"`\n\tHostId string `json:\"host_id\"`\n\n\t// Data set by Scrutiny\n\tDeviceStatus pkg.DeviceStatus `json:\"device_status\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/mock/mock_database.go",
    "content": "// Code generated by MockGen. DO NOT EDIT.\n// Source: webapp/backend/pkg/database/interface.go\n\n// Package mock_database is a generated GoMock package.\npackage mock_database\n\nimport (\n\tcontext \"context\"\n\treflect \"reflect\"\n\n\tpkg \"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\tmodels \"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\tcollector \"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\tmeasurements \"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\tgomock \"go.uber.org/mock/gomock\"\n)\n\n// MockDeviceRepo is a mock of DeviceRepo interface.\ntype MockDeviceRepo struct {\n\tctrl     *gomock.Controller\n\trecorder *MockDeviceRepoMockRecorder\n}\n\n// MockDeviceRepoMockRecorder is the mock recorder for MockDeviceRepo.\ntype MockDeviceRepoMockRecorder struct {\n\tmock *MockDeviceRepo\n}\n\n// NewMockDeviceRepo creates a new mock instance.\nfunc NewMockDeviceRepo(ctrl *gomock.Controller) *MockDeviceRepo {\n\tmock := &MockDeviceRepo{ctrl: ctrl}\n\tmock.recorder = &MockDeviceRepoMockRecorder{mock}\n\treturn mock\n}\n\n// EXPECT returns an object that allows the caller to indicate expected use.\nfunc (m *MockDeviceRepo) EXPECT() *MockDeviceRepoMockRecorder {\n\treturn m.recorder\n}\n\n// Close mocks base method.\nfunc (m *MockDeviceRepo) Close() error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"Close\")\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// Close indicates an expected call of Close.\nfunc (mr *MockDeviceRepoMockRecorder) Close() *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"Close\", reflect.TypeOf((*MockDeviceRepo)(nil).Close))\n}\n\n// UpdateDeviceArchived mocks base method.\nfunc (m *MockDeviceRepo) UpdateDeviceArchived(ctx context.Context, wwn string, archived bool) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UpdateDeviceArchived\", ctx, wwn)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// UpdateDeviceArchived indicates an expected call of UpdateDeviceArchived.\nfunc (mr *MockDeviceRepoMockRecorder) UpdateDeviceArchived(ctx, wwn, archived interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UpdateDeviceArchived\", reflect.TypeOf((*MockDeviceRepo)(nil).UpdateDeviceArchived), ctx, wwn, archived)\n}\n\n// DeleteDevice mocks base method.\nfunc (m *MockDeviceRepo) DeleteDevice(ctx context.Context, wwn string) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"DeleteDevice\", ctx, wwn)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// DeleteDevice indicates an expected call of DeleteDevice.\nfunc (mr *MockDeviceRepoMockRecorder) DeleteDevice(ctx, wwn interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"DeleteDevice\", reflect.TypeOf((*MockDeviceRepo)(nil).DeleteDevice), ctx, wwn)\n}\n\n// GetDeviceDetails mocks base method.\nfunc (m *MockDeviceRepo) GetDeviceDetails(ctx context.Context, wwn string) (models.Device, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetDeviceDetails\", ctx, wwn)\n\tret0, _ := ret[0].(models.Device)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// GetDeviceDetails indicates an expected call of GetDeviceDetails.\nfunc (mr *MockDeviceRepoMockRecorder) GetDeviceDetails(ctx, wwn interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetDeviceDetails\", reflect.TypeOf((*MockDeviceRepo)(nil).GetDeviceDetails), ctx, wwn)\n}\n\n// GetDevices mocks base method.\nfunc (m *MockDeviceRepo) GetDevices(ctx context.Context) ([]models.Device, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetDevices\", ctx)\n\tret0, _ := ret[0].([]models.Device)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// GetDevices indicates an expected call of GetDevices.\nfunc (mr *MockDeviceRepoMockRecorder) GetDevices(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetDevices\", reflect.TypeOf((*MockDeviceRepo)(nil).GetDevices), ctx)\n}\n\n// GetSmartAttributeHistory mocks base method.\nfunc (m *MockDeviceRepo) GetSmartAttributeHistory(ctx context.Context, wwn, durationKey string, selectEntries, selectEntriesOffset int, attributes []string) ([]measurements.Smart, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetSmartAttributeHistory\", ctx, wwn, durationKey, selectEntries, selectEntriesOffset, attributes)\n\tret0, _ := ret[0].([]measurements.Smart)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// GetSmartAttributeHistory indicates an expected call of GetSmartAttributeHistory.\nfunc (mr *MockDeviceRepoMockRecorder) GetSmartAttributeHistory(ctx, wwn, durationKey, selectEntries, selectEntriesOffset, attributes interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetSmartAttributeHistory\", reflect.TypeOf((*MockDeviceRepo)(nil).GetSmartAttributeHistory), ctx, wwn, durationKey, selectEntries, selectEntriesOffset, attributes)\n}\n\n// GetSmartTemperatureHistory mocks base method.\nfunc (m *MockDeviceRepo) GetSmartTemperatureHistory(ctx context.Context, durationKey string) (map[string][]measurements.SmartTemperature, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetSmartTemperatureHistory\", ctx, durationKey)\n\tret0, _ := ret[0].(map[string][]measurements.SmartTemperature)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// GetSmartTemperatureHistory indicates an expected call of GetSmartTemperatureHistory.\nfunc (mr *MockDeviceRepoMockRecorder) GetSmartTemperatureHistory(ctx, durationKey interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetSmartTemperatureHistory\", reflect.TypeOf((*MockDeviceRepo)(nil).GetSmartTemperatureHistory), ctx, durationKey)\n}\n\n// GetSummary mocks base method.\nfunc (m *MockDeviceRepo) GetSummary(ctx context.Context) (map[string]*models.DeviceSummary, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"GetSummary\", ctx)\n\tret0, _ := ret[0].(map[string]*models.DeviceSummary)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// GetSummary indicates an expected call of GetSummary.\nfunc (mr *MockDeviceRepoMockRecorder) GetSummary(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"GetSummary\", reflect.TypeOf((*MockDeviceRepo)(nil).GetSummary), ctx)\n}\n\n// HealthCheck mocks base method.\nfunc (m *MockDeviceRepo) HealthCheck(ctx context.Context) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"HealthCheck\", ctx)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// HealthCheck indicates an expected call of HealthCheck.\nfunc (mr *MockDeviceRepoMockRecorder) HealthCheck(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"HealthCheck\", reflect.TypeOf((*MockDeviceRepo)(nil).HealthCheck), ctx)\n}\n\n// LoadSettings mocks base method.\nfunc (m *MockDeviceRepo) LoadSettings(ctx context.Context) (*models.Settings, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"LoadSettings\", ctx)\n\tret0, _ := ret[0].(*models.Settings)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// LoadSettings indicates an expected call of LoadSettings.\nfunc (mr *MockDeviceRepoMockRecorder) LoadSettings(ctx interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"LoadSettings\", reflect.TypeOf((*MockDeviceRepo)(nil).LoadSettings), ctx)\n}\n\n// RegisterDevice mocks base method.\nfunc (m *MockDeviceRepo) RegisterDevice(ctx context.Context, dev models.Device) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"RegisterDevice\", ctx, dev)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// RegisterDevice indicates an expected call of RegisterDevice.\nfunc (mr *MockDeviceRepoMockRecorder) RegisterDevice(ctx, dev interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"RegisterDevice\", reflect.TypeOf((*MockDeviceRepo)(nil).RegisterDevice), ctx, dev)\n}\n\n// SaveSettings mocks base method.\nfunc (m *MockDeviceRepo) SaveSettings(ctx context.Context, settings models.Settings) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SaveSettings\", ctx, settings)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// SaveSettings indicates an expected call of SaveSettings.\nfunc (mr *MockDeviceRepoMockRecorder) SaveSettings(ctx, settings interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SaveSettings\", reflect.TypeOf((*MockDeviceRepo)(nil).SaveSettings), ctx, settings)\n}\n\n// SaveSmartAttributes mocks base method.\nfunc (m *MockDeviceRepo) SaveSmartAttributes(ctx context.Context, wwn string, collectorSmartData collector.SmartInfo) (measurements.Smart, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SaveSmartAttributes\", ctx, wwn, collectorSmartData)\n\tret0, _ := ret[0].(measurements.Smart)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// SaveSmartAttributes indicates an expected call of SaveSmartAttributes.\nfunc (mr *MockDeviceRepoMockRecorder) SaveSmartAttributes(ctx, wwn, collectorSmartData interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SaveSmartAttributes\", reflect.TypeOf((*MockDeviceRepo)(nil).SaveSmartAttributes), ctx, wwn, collectorSmartData)\n}\n\n// SaveSmartTemperature mocks base method.\nfunc (m *MockDeviceRepo) SaveSmartTemperature(ctx context.Context, wwn, deviceProtocol string, collectorSmartData collector.SmartInfo, discardSCTTempHistory bool) error {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"SaveSmartTemperature\", ctx, wwn, deviceProtocol, collectorSmartData, discardSCTTempHistory)\n\tret0, _ := ret[0].(error)\n\treturn ret0\n}\n\n// SaveSmartTemperature indicates an expected call of SaveSmartTemperature.\nfunc (mr *MockDeviceRepoMockRecorder) SaveSmartTemperature(ctx, wwn, deviceProtocol, collectorSmartData, discardSCTTempHistory interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"SaveSmartTemperature\", reflect.TypeOf((*MockDeviceRepo)(nil).SaveSmartTemperature), ctx, wwn, deviceProtocol, collectorSmartData, discardSCTTempHistory)\n}\n\n// UpdateDevice mocks base method.\nfunc (m *MockDeviceRepo) UpdateDevice(ctx context.Context, wwn string, collectorSmartData collector.SmartInfo) (models.Device, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UpdateDevice\", ctx, wwn, collectorSmartData)\n\tret0, _ := ret[0].(models.Device)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// UpdateDevice indicates an expected call of UpdateDevice.\nfunc (mr *MockDeviceRepoMockRecorder) UpdateDevice(ctx, wwn, collectorSmartData interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UpdateDevice\", reflect.TypeOf((*MockDeviceRepo)(nil).UpdateDevice), ctx, wwn, collectorSmartData)\n}\n\n// UpdateDeviceStatus mocks base method.\nfunc (m *MockDeviceRepo) UpdateDeviceStatus(ctx context.Context, wwn string, status pkg.DeviceStatus) (models.Device, error) {\n\tm.ctrl.T.Helper()\n\tret := m.ctrl.Call(m, \"UpdateDeviceStatus\", ctx, wwn, status)\n\tret0, _ := ret[0].(models.Device)\n\tret1, _ := ret[1].(error)\n\treturn ret0, ret1\n}\n\n// UpdateDeviceStatus indicates an expected call of UpdateDeviceStatus.\nfunc (mr *MockDeviceRepoMockRecorder) UpdateDeviceStatus(ctx, wwn, status interface{}) *gomock.Call {\n\tmr.mock.ctrl.T.Helper()\n\treturn mr.mock.ctrl.RecordCallWithMethodType(mr.mock, \"UpdateDeviceStatus\", reflect.TypeOf((*MockDeviceRepo)(nil).UpdateDeviceStatus), ctx, wwn, status)\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/glebarez/sqlite\"\n\tinfluxdb2 \"github.com/influxdata/influxdb-client-go/v2\"\n\t\"github.com/influxdata/influxdb-client-go/v2/api\"\n\t\"github.com/influxdata/influxdb-client-go/v2/domain\"\n\t\"github.com/sirupsen/logrus\"\n\t\"gorm.io/gorm\"\n)\n\nconst (\n\t// 60seconds * 60minutes * 24hours * 15 days\n\tRETENTION_PERIOD_15_DAYS_IN_SECONDS = 1_296_000\n\n\t// 60seconds * 60minutes * 24hours * 7 days * 9 weeks\n\tRETENTION_PERIOD_9_WEEKS_IN_SECONDS = 5_443_200\n\n\t// 60seconds * 60minutes * 24hours * 7 days * (52 + 52 + 4)weeks\n\tRETENTION_PERIOD_25_MONTHS_IN_SECONDS = 65_318_400\n\n\tDURATION_KEY_DAY     = \"day\"\n\tDURATION_KEY_WEEK    = \"week\"\n\tDURATION_KEY_MONTH   = \"month\"\n\tDURATION_KEY_YEAR    = \"year\"\n\tDURATION_KEY_FOREVER = \"forever\"\n)\n\n//// GormLogger is a custom logger for Gorm, making it use logrus.\n//type GormLogger struct{ Logger logrus.FieldLogger }\n//\n//// Print handles log events from Gorm for the custom logger.\n//func (gl *GormLogger) Print(v ...interface{}) {\n//\tswitch v[0] {\n//\tcase \"sql\":\n//\t\tgl.Logger.WithFields(\n//\t\t\tlogrus.Fields{\n//\t\t\t\t\"module\":  \"gorm\",\n//\t\t\t\t\"type\":    \"sql\",\n//\t\t\t\t\"rows\":    v[5],\n//\t\t\t\t\"src_ref\": v[1],\n//\t\t\t\t\"values\":  v[4],\n//\t\t\t},\n//\t\t).Debug(v[3])\n//\tcase \"log\":\n//\t\tgl.Logger.WithFields(logrus.Fields{\"module\": \"gorm\", \"type\": \"log\"}).Print(v[2])\n//\t}\n//}\n\nfunc NewScrutinyRepository(appConfig config.Interface, globalLogger logrus.FieldLogger) (DeviceRepo, error) {\n\tbackgroundContext := context.Background()\n\n\t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\t// Gorm/SQLite setup\n\t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\tglobalLogger.Infof(\"Trying to connect to scrutiny sqlite db: %s\\n\", appConfig.GetString(\"web.database.location\"))\n\n\t// When a transaction cannot lock the database, because it is already locked by another one,\n\t// SQLite by default throws an error: database is locked. This behavior is usually not appropriate when\n\t// concurrent access is needed, typically when multiple processes write to the same database.\n\t// PRAGMA busy_timeout lets you set a timeout or a handler for these events. When setting a timeout,\n\t// SQLite will try the transaction multiple times within this timeout.\n\t// fixes #341\n\t// https://rsqlite.r-dbi.org/reference/sqlitesetbusyhandler\n\t// retrying for 30000 milliseconds, 30seconds - this would be unreasonable for a distributed multi-tenant application,\n\t// but should be fine for local usage.\n\tpragmaStr := sqlitePragmaString(map[string]string{\n\t\t\"busy_timeout\": \"30000\",\n\t})\n\tdatabase, err := gorm.Open(sqlite.Open(appConfig.GetString(\"web.database.location\")+pragmaStr), &gorm.Config{\n\t\t//TODO: figure out how to log database queries again.\n\t\t//Logger: logger\n\t\tDisableForeignKeyConstraintWhenMigrating: true,\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to connect to database! - %v\", err)\n\t}\n\tglobalLogger.Infof(\"Successfully connected to scrutiny sqlite db: %s\\n\", appConfig.GetString(\"web.database.location\"))\n\n\t//database.SetLogger()\n\n\t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\t// InfluxDB setup\n\t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n\t// Create a new client using an InfluxDB server base URL and an authentication token\n\tinfluxdbUrl := fmt.Sprintf(\"%s://%s:%s\", appConfig.GetString(\"web.influxdb.scheme\"), appConfig.GetString(\"web.influxdb.host\"), appConfig.GetString(\"web.influxdb.port\"))\n\tglobalLogger.Debugf(\"InfluxDB url: %s\", influxdbUrl)\n\n\ttlsConfig := &tls.Config{\n\t\tInsecureSkipVerify: appConfig.GetBool(\"web.influxdb.tls.insecure_skip_verify\"),\n\t}\n\tglobalLogger.Infof(\"InfluxDB certificate verification: %t\\n\", !tlsConfig.InsecureSkipVerify)\n\n\tclient := influxdb2.NewClientWithOptions(\n\t\tinfluxdbUrl,\n\t\tappConfig.GetString(\"web.influxdb.token\"),\n\t\tinfluxdb2.DefaultOptions().SetTLSConfig(tlsConfig),\n\t)\n\n\t//if !appConfig.IsSet(\"web.influxdb.token\") {\n\tglobalLogger.Debugf(\"Determine Influxdb setup status...\")\n\tinfluxSetupComplete, err := InfluxSetupComplete(influxdbUrl, tlsConfig)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to check influxdb setup status - %w\", err)\n\t}\n\n\tif !influxSetupComplete {\n\t\tglobalLogger.Debugf(\"Influxdb un-initialized, running first-time setup...\")\n\n\t\t// if no token is provided, but we have a valid server, we're going to assume this is the first setup of our server.\n\t\t// we will initialize with a predetermined username & password, that you should change.\n\n\t\t// metrics bucket will have a retention period of 8 days (since it will be down-sampled once a week)\n\t\t// in seconds (60seconds * 60minutes * 24hours * 15 days) = 1_296_000 (see EnsureBucket() function)\n\t\t_, err := client.SetupWithToken(\n\t\t\tbackgroundContext,\n\t\t\tappConfig.GetString(\"web.influxdb.init_username\"),\n\t\t\tappConfig.GetString(\"web.influxdb.init_password\"),\n\t\t\tappConfig.GetString(\"web.influxdb.org\"),\n\t\t\tappConfig.GetString(\"web.influxdb.bucket\"),\n\t\t\t0,\n\t\t\tappConfig.GetString(\"web.influxdb.token\"),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Use blocking write client for writes to desired bucket\n\twriteAPI := client.WriteAPIBlocking(appConfig.GetString(\"web.influxdb.org\"), appConfig.GetString(\"web.influxdb.bucket\"))\n\n\t// Get query client\n\tqueryAPI := client.QueryAPI(appConfig.GetString(\"web.influxdb.org\"))\n\n\t// Get task client\n\ttaskAPI := client.TasksAPI()\n\n\tif writeAPI == nil || queryAPI == nil || taskAPI == nil {\n\t\treturn nil, fmt.Errorf(\"failed to connect to influxdb\")\n\t}\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig:      appConfig,\n\t\tlogger:         globalLogger,\n\t\tinfluxClient:   client,\n\t\tinfluxWriteApi: writeAPI,\n\t\tinfluxQueryApi: queryAPI,\n\t\tinfluxTaskApi:  taskAPI,\n\t\tgormClient:     database,\n\t}\n\n\torgInfo, err := client.OrganizationsAPI().FindOrganizationByName(backgroundContext, appConfig.GetString(\"web.influxdb.org\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Initialize Buckets (if necessary)\n\terr = deviceRepo.EnsureBuckets(backgroundContext, orgInfo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Initialize Background Tasks\n\terr = deviceRepo.EnsureTasks(backgroundContext, *orgInfo.Id)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\t// InfluxDB & SQLite migrations\n\t////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\t//database.AutoMigrate(&models.Device{})\n\terr = deviceRepo.Migrate(backgroundContext)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &deviceRepo, nil\n}\n\ntype scrutinyRepository struct {\n\tappConfig config.Interface\n\tlogger    logrus.FieldLogger\n\n\tinfluxWriteApi api.WriteAPIBlocking\n\tinfluxQueryApi api.QueryAPI\n\tinfluxTaskApi  api.TasksAPI\n\tinfluxClient   influxdb2.Client\n\n\tgormClient *gorm.DB\n}\n\nfunc (sr *scrutinyRepository) Close() error {\n\tsr.influxClient.Close()\n\treturn nil\n}\n\nfunc (sr *scrutinyRepository) HealthCheck(ctx context.Context) error {\n\t//check influxdb\n\tstatus, err := sr.influxClient.Health(ctx)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"influxdb healthcheck failed: %w\", err)\n\t}\n\tif status.Status != \"pass\" {\n\t\treturn fmt.Errorf(\"influxdb healthcheckf failed: status=%s\", status.Status)\n\t}\n\n\t//check sqlite db.\n\tdatabase, err := sr.gormClient.DB()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"sqlite healthcheck failed: %w\", err)\n\t}\n\terr = database.Ping()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"sqlite healthcheck failed during ping: %w\", err)\n\t}\n\treturn nil\n\n}\n\nfunc InfluxSetupComplete(influxEndpoint string, tlsConfig *tls.Config) (bool, error) {\n\tinfluxUri, err := url.Parse(influxEndpoint)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tinfluxUri, err = influxUri.Parse(\"/api/v2/setup\")\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tclient := &http.Client{Transport: &http.Transport{TLSClientConfig: tlsConfig}}\n\tres, err := client.Get(influxUri.String())\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tbody, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\ttype SetupStatus struct {\n\t\tAllowed bool `json:\"allowed\"`\n\t}\n\tvar data SetupStatus\n\terr = json.Unmarshal(body, &data)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\treturn !data.Allowed, nil\n}\n\nfunc (sr *scrutinyRepository) EnsureBuckets(ctx context.Context, org *domain.Organization) error {\n\n\tvar mainBucketRetentionRule domain.RetentionRule\n\tvar weeklyBucketRetentionRule domain.RetentionRule\n\tvar monthlyBucketRetentionRule domain.RetentionRule\n\tif sr.appConfig.GetBool(\"web.influxdb.retention_policy\") {\n\n\t\t// in tests, we may not want to set a retention policy. If \"false\", we can set data with old timestamps,\n\t\t// then manually run the down sampling scripts. This should be true for production environments.\n\t\tmainBucketRetentionRule = domain.RetentionRule{EverySeconds: RETENTION_PERIOD_15_DAYS_IN_SECONDS}\n\t\tweeklyBucketRetentionRule = domain.RetentionRule{EverySeconds: RETENTION_PERIOD_9_WEEKS_IN_SECONDS}\n\t\tmonthlyBucketRetentionRule = domain.RetentionRule{EverySeconds: RETENTION_PERIOD_25_MONTHS_IN_SECONDS}\n\t}\n\n\tmainBucket := sr.appConfig.GetString(\"web.influxdb.bucket\")\n\tif foundMainBucket, foundErr := sr.influxClient.BucketsAPI().FindBucketByName(ctx, mainBucket); foundErr != nil {\n\t\t// metrics bucket will have a retention period of 15 days (since it will be down-sampled once a week)\n\t\t_, err := sr.influxClient.BucketsAPI().CreateBucketWithName(ctx, org, mainBucket, mainBucketRetentionRule)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if sr.appConfig.GetBool(\"web.influxdb.retention_policy\") {\n\t\t//correctly set the retention period for the main bucket (cant do it during setup/creation)\n\t\tfoundMainBucket.RetentionRules = domain.RetentionRules{mainBucketRetentionRule}\n\t\tsr.influxClient.BucketsAPI().UpdateBucket(ctx, foundMainBucket)\n\t}\n\n\t//create buckets (used for downsampling)\n\tweeklyBucket := fmt.Sprintf(\"%s_weekly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\tif foundWeeklyBucket, foundErr := sr.influxClient.BucketsAPI().FindBucketByName(ctx, weeklyBucket); foundErr != nil {\n\t\t// metrics_weekly bucket will have a retention period of 8+1 weeks (since it will be down-sampled once a month)\n\t\t_, err := sr.influxClient.BucketsAPI().CreateBucketWithName(ctx, org, weeklyBucket, weeklyBucketRetentionRule)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if sr.appConfig.GetBool(\"web.influxdb.retention_policy\") {\n\t\t//correctly set the retention period for the bucket (may not be able to do it during setup/creation)\n\t\tfoundWeeklyBucket.RetentionRules = domain.RetentionRules{weeklyBucketRetentionRule}\n\t\tsr.influxClient.BucketsAPI().UpdateBucket(ctx, foundWeeklyBucket)\n\t}\n\n\tmonthlyBucket := fmt.Sprintf(\"%s_monthly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\tif foundMonthlyBucket, foundErr := sr.influxClient.BucketsAPI().FindBucketByName(ctx, monthlyBucket); foundErr != nil {\n\t\t// metrics_monthly bucket will have a retention period of 24+1 months (since it will be down-sampled once a year)\n\t\t_, err := sr.influxClient.BucketsAPI().CreateBucketWithName(ctx, org, monthlyBucket, monthlyBucketRetentionRule)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if sr.appConfig.GetBool(\"web.influxdb.retention_policy\") {\n\t\t//correctly set the retention period for the bucket (may not be able to do it during setup/creation)\n\t\tfoundMonthlyBucket.RetentionRules = domain.RetentionRules{monthlyBucketRetentionRule}\n\t\tsr.influxClient.BucketsAPI().UpdateBucket(ctx, foundMonthlyBucket)\n\t}\n\n\tyearlyBucket := fmt.Sprintf(\"%s_yearly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\tif _, foundErr := sr.influxClient.BucketsAPI().FindBucketByName(ctx, yearlyBucket); foundErr != nil {\n\t\t// metrics_yearly bucket will have an infinite retention period\n\t\t_, err := sr.influxClient.BucketsAPI().CreateBucketWithName(ctx, org, yearlyBucket)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// DeviceSummary\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// get a map of all devices and associated SMART data\nfunc (sr *scrutinyRepository) GetSummary(ctx context.Context) (map[string]*models.DeviceSummary, error) {\n\tdevices, err := sr.GetDevices(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsummaries := map[string]*models.DeviceSummary{}\n\n\tfor _, device := range devices {\n\t\tsummaries[device.WWN] = &models.DeviceSummary{Device: device}\n\t}\n\n\t// Get parser flux query result\n\t//appConfig.GetString(\"web.influxdb.bucket\")\n\tqueryStr := fmt.Sprintf(`\n  \timport \"influxdata/influxdb/schema\"\n  \tbucketBaseName = \"%s\"\n\n\tdailyData = from(bucket: bucketBaseName)\n\t|> range(start: -10y, stop: now())\n\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t|> filter(fn: (r) => r[\"_field\"] == \"temp\" or r[\"_field\"] == \"power_on_hours\" or r[\"_field\"] == \"date\")\n\t|> last()\n\t|> schema.fieldsAsCols()\n\t|> group(columns: [\"device_wwn\"])\n\t\n\tweeklyData = from(bucket: bucketBaseName + \"_weekly\")\n\t|> range(start: -10y, stop: now())\n\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t|> filter(fn: (r) => r[\"_field\"] == \"temp\" or r[\"_field\"] == \"power_on_hours\" or r[\"_field\"] == \"date\")\n\t|> last()\n\t|> schema.fieldsAsCols()\n\t|> group(columns: [\"device_wwn\"])\n\t\n\tmonthlyData = from(bucket: bucketBaseName + \"_monthly\")\n\t|> range(start: -10y, stop: now())\n\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t|> filter(fn: (r) => r[\"_field\"] == \"temp\" or r[\"_field\"] == \"power_on_hours\" or r[\"_field\"] == \"date\")\n\t|> last()\n\t|> schema.fieldsAsCols()\n\t|> group(columns: [\"device_wwn\"])\n\t\n\tyearlyData = from(bucket: bucketBaseName + \"_yearly\")\n\t|> range(start: -10y, stop: now())\n\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t|> filter(fn: (r) => r[\"_field\"] == \"temp\" or r[\"_field\"] == \"power_on_hours\" or r[\"_field\"] == \"date\")\n\t|> last()\n\t|> schema.fieldsAsCols()\n\t|> group(columns: [\"device_wwn\"])\n\t\n\tunion(tables: [dailyData, weeklyData, monthlyData, yearlyData])\n\t|> sort(columns: [\"_time\"], desc: false)\n\t|> group(columns: [\"device_wwn\"])\n\t|> last(column: \"device_wwn\")\n\t|> yield(name: \"last\")\n\t\t`,\n\t\tsr.appConfig.GetString(\"web.influxdb.bucket\"),\n\t)\n\n\tresult, err := sr.influxQueryApi.Query(ctx, queryStr)\n\tif err == nil {\n\t\t// Use Next() to iterate over query result lines\n\t\tfor result.Next() {\n\t\t\t// Observe when there is new grouping key producing new table\n\t\t\tif result.TableChanged() {\n\t\t\t\t//fmt.Printf(\"table: %s\\n\", result.TableMetadata().String())\n\t\t\t}\n\t\t\t// read result\n\n\t\t\t//get summary data from Influxdb.\n\t\t\t//result.Record().Values()\n\t\t\tif deviceWWN, ok := result.Record().Values()[\"device_wwn\"]; ok {\n\n\t\t\t\t//ensure summaries is intialized for this wwn\n\t\t\t\tif _, exists := summaries[deviceWWN.(string)]; !exists {\n\t\t\t\t\tsummaries[deviceWWN.(string)] = &models.DeviceSummary{}\n\t\t\t\t}\n\n\t\t\t\tsummaries[deviceWWN.(string)].SmartResults = &models.SmartSummary{\n\t\t\t\t\tTemp:          result.Record().Values()[\"temp\"].(int64),\n\t\t\t\t\tPowerOnHours:  result.Record().Values()[\"power_on_hours\"].(int64),\n\t\t\t\t\tCollectorDate: result.Record().Values()[\"_time\"].(time.Time),\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif result.Err() != nil {\n\t\t\tfmt.Printf(\"Query error: %s\\n\", result.Err().Error())\n\t\t}\n\t} else {\n\t\treturn nil, err\n\t}\n\n\tdeviceTempHistory, err := sr.GetSmartTemperatureHistory(ctx, DURATION_KEY_FOREVER)\n\tif err != nil {\n\t\tsr.logger.Printf(\"========================>>>>>>>>======================\")\n\t\tsr.logger.Printf(\"========================>>>>>>>>======================\")\n\t\tsr.logger.Printf(\"========================>>>>>>>>======================\")\n\t\tsr.logger.Printf(\"========================>>>>>>>>======================\")\n\t\tsr.logger.Printf(\"========================>>>>>>>>======================\")\n\t\tsr.logger.Printf(\"Error: %v\", err)\n\t}\n\tfor wwn, tempHistory := range deviceTempHistory {\n\t\tsummaries[wwn].TempHistory = tempHistory\n\t}\n\n\treturn summaries, nil\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Helper Methods\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfunc (sr *scrutinyRepository) lookupBucketName(durationKey string) string {\n\tswitch durationKey {\n\tcase DURATION_KEY_DAY:\n\tcase DURATION_KEY_WEEK:\n\t\t//data stored in the last week\n\t\treturn sr.appConfig.GetString(\"web.influxdb.bucket\")\n\tcase DURATION_KEY_MONTH:\n\t\t// data stored in the last month (after the first week)\n\t\treturn fmt.Sprintf(\"%s_weekly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\tcase DURATION_KEY_YEAR:\n\t\t// data stored in the last year (after the first month)\n\t\treturn fmt.Sprintf(\"%s_monthly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\tcase DURATION_KEY_FOREVER:\n\t\t//data stored before the last year\n\t\treturn fmt.Sprintf(\"%s_yearly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\t}\n\treturn sr.appConfig.GetString(\"web.influxdb.bucket\")\n}\n\nfunc (sr *scrutinyRepository) lookupDuration(durationKey string) []string {\n\tswitch durationKey {\n\tcase DURATION_KEY_DAY:\n\t\t//data stored in the last day\n\t\treturn []string{\"-1d\", \"now()\"}\n\tcase DURATION_KEY_WEEK:\n\t\t//data stored in the last week\n\t\treturn []string{\"-1w\", \"now()\"}\n\tcase DURATION_KEY_MONTH:\n\t\t// data stored in the last month (after the first week)\n\t\treturn []string{\"-1mo\", \"-1w\"}\n\tcase DURATION_KEY_YEAR:\n\t\t// data stored in the last year (after the first month)\n\t\treturn []string{\"-1y\", \"-1mo\"}\n\tcase DURATION_KEY_FOREVER:\n\t\t//data stored before the last year\n\t\treturn []string{\"-10y\", \"-1y\"}\n\t}\n\treturn []string{\"-1w\", \"now()\"}\n}\n\nfunc (sr *scrutinyRepository) lookupResolution(durationKey string) string {\n\tswitch durationKey {\n\tcase DURATION_KEY_DAY:\n\t\t// Return data with higher resolution for daily summaries\n\t\treturn \"10m\"\n\tdefault:\n\t\t// Return data with 1h resolution for other summaries\n\t\treturn \"1h\"\n\t}\n}\n\nfunc (sr *scrutinyRepository) lookupNestedDurationKeys(durationKey string) []string {\n\tswitch durationKey {\n\tcase DURATION_KEY_DAY:\n\t\t//all data is stored in a single bucket, but we want a finer resolution\n\t\treturn []string{DURATION_KEY_DAY}\n\tcase DURATION_KEY_WEEK:\n\t\t//all data is stored in a single bucket\n\t\treturn []string{DURATION_KEY_WEEK}\n\tcase DURATION_KEY_MONTH:\n\t\t//data is stored in the week bucket and the month bucket\n\t\treturn []string{DURATION_KEY_WEEK, DURATION_KEY_MONTH}\n\tcase DURATION_KEY_YEAR:\n\t\t// data stored in the last year (after the first month)\n\t\treturn []string{DURATION_KEY_WEEK, DURATION_KEY_MONTH, DURATION_KEY_YEAR}\n\tcase DURATION_KEY_FOREVER:\n\t\t//data stored before the last year\n\t\treturn []string{DURATION_KEY_WEEK, DURATION_KEY_MONTH, DURATION_KEY_YEAR, DURATION_KEY_FOREVER}\n\t}\n\treturn []string{DURATION_KEY_WEEK}\n}\n\nfunc sqlitePragmaString(pragmas map[string]string) string {\n\tq := url.Values{}\n\tfor key, val := range pragmas {\n\t\tq.Add(\"_pragma\", key+\"=\"+val)\n\t}\n\n\tqueryStr := q.Encode()\n\tif len(queryStr) > 0 {\n\t\treturn \"?\" + queryStr\n\t}\n\treturn \"\"\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_device.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"gorm.io/gorm/clause\"\n)\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Device\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n// insert device into DB (and update specified columns if device is already registered)\n// update device fields that may change: (DeviceType, HostID)\nfunc (sr *scrutinyRepository) RegisterDevice(ctx context.Context, dev models.Device) error {\n\tif err := sr.gormClient.WithContext(ctx).Clauses(clause.OnConflict{\n\t\tColumns:   []clause.Column{{Name: \"wwn\"}},\n\t\tDoUpdates: clause.AssignmentColumns([]string{\"host_id\", \"device_name\", \"device_type\", \"device_uuid\", \"device_serial_id\", \"device_label\"}),\n\t}).Create(&dev).Error; err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// get a list of all devices (only device metadata, no SMART data)\nfunc (sr *scrutinyRepository) GetDevices(ctx context.Context) ([]models.Device, error) {\n\t//Get a list of all the active devices.\n\tdevices := []models.Device{}\n\tif err := sr.gormClient.WithContext(ctx).Find(&devices).Error; err != nil {\n\t\treturn nil, fmt.Errorf(\"could not get device summary from DB: %v\", err)\n\t}\n\treturn devices, nil\n}\n\n// update device (only metadata) from collector\nfunc (sr *scrutinyRepository) UpdateDevice(ctx context.Context, wwn string, collectorSmartData collector.SmartInfo) (models.Device, error) {\n\tvar device models.Device\n\tif err := sr.gormClient.WithContext(ctx).Where(\"wwn = ?\", wwn).First(&device).Error; err != nil {\n\t\treturn device, fmt.Errorf(\"could not get device from DB: %v\", err)\n\t}\n\n\t//TODO catch GormClient err\n\terr := device.UpdateFromCollectorSmartInfo(collectorSmartData)\n\tif err != nil {\n\t\treturn device, err\n\t}\n\treturn device, sr.gormClient.Model(&device).Updates(device).Error\n}\n\n// Update Device Status\nfunc (sr *scrutinyRepository) UpdateDeviceStatus(ctx context.Context, wwn string, status pkg.DeviceStatus) (models.Device, error) {\n\tvar device models.Device\n\tif err := sr.gormClient.WithContext(ctx).Where(\"wwn = ?\", wwn).First(&device).Error; err != nil {\n\t\treturn device, fmt.Errorf(\"could not get device from DB: %v\", err)\n\t}\n\n\tdevice.DeviceStatus = pkg.DeviceStatusSet(device.DeviceStatus, status)\n\treturn device, sr.gormClient.Model(&device).Updates(device).Error\n}\n\nfunc (sr *scrutinyRepository) GetDeviceDetails(ctx context.Context, wwn string) (models.Device, error) {\n\tvar device models.Device\n\n\tfmt.Println(\"GetDeviceDetails from GORM\")\n\n\tif err := sr.gormClient.WithContext(ctx).Where(\"wwn = ?\", wwn).First(&device).Error; err != nil {\n\t\treturn models.Device{}, err\n\t}\n\n\treturn device, nil\n}\n\n// Update Device Archived State\nfunc (sr *scrutinyRepository) UpdateDeviceArchived(ctx context.Context, wwn string, archived bool) error {\n\tvar device models.Device\n\tif err := sr.gormClient.WithContext(ctx).Where(\"wwn = ?\", wwn).First(&device).Error; err != nil {\n\t\treturn fmt.Errorf(\"could not get device from DB: %v\", err)\n\t}\n\n\treturn sr.gormClient.Model(&device).Where(\"wwn = ?\", wwn).Update(\"archived\", archived).Error\n}\n\nfunc (sr *scrutinyRepository) DeleteDevice(ctx context.Context, wwn string) error {\n\tif err := sr.gormClient.WithContext(ctx).Where(\"wwn = ?\", wwn).Delete(&models.Device{}).Error; err != nil {\n\t\treturn err\n\t}\n\n\t//delete data from influxdb.\n\tbuckets := []string{\n\t\tsr.appConfig.GetString(\"web.influxdb.bucket\"),\n\t\tfmt.Sprintf(\"%s_weekly\", sr.appConfig.GetString(\"web.influxdb.bucket\")),\n\t\tfmt.Sprintf(\"%s_monthly\", sr.appConfig.GetString(\"web.influxdb.bucket\")),\n\t\tfmt.Sprintf(\"%s_yearly\", sr.appConfig.GetString(\"web.influxdb.bucket\")),\n\t}\n\n\tfor _, bucket := range buckets {\n\t\tsr.logger.Infof(\"Deleting data for %s in bucket: %s\", wwn, bucket)\n\t\tif err := sr.influxClient.DeleteAPI().DeleteWithName(\n\t\t\tctx,\n\t\t\tsr.appConfig.GetString(\"web.influxdb.org\"),\n\t\t\tbucket,\n\t\t\ttime.Now().AddDate(-10, 0, 0),\n\t\t\ttime.Now(),\n\t\t\tfmt.Sprintf(`device_wwn=\"%s\"`, wwn),\n\t\t); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_device_smart_attributes.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\tinfluxdb2 \"github.com/influxdata/influxdb-client-go/v2\"\n\t\"github.com/influxdata/influxdb-client-go/v2/api\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SMART\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\nfunc (sr *scrutinyRepository) SaveSmartAttributes(ctx context.Context, wwn string, collectorSmartData collector.SmartInfo) (measurements.Smart, error) {\n\tdeviceSmartData := measurements.Smart{}\n\terr := deviceSmartData.FromCollectorSmartInfo(wwn, collectorSmartData)\n\tif err != nil {\n\t\tsr.logger.Errorln(\"Could not process SMART metrics\", err)\n\t\treturn measurements.Smart{}, err\n\t}\n\n\ttags, fields := deviceSmartData.Flatten()\n\n\t// write point immediately\n\treturn deviceSmartData, sr.saveDatapoint(sr.influxWriteApi, \"smart\", tags, fields, deviceSmartData.Date, ctx)\n}\n\n// GetSmartAttributeHistory MUST return in sorted order, where newest entries are at the beginning of the list, and oldest are at the end.\n// When selectEntries is > 0, only the most recent selectEntries database entries are returned, starting from the selectEntriesOffset entry.\n// For example, with selectEntries = 5, selectEntries = 0, the most recent 5 are returned. With selectEntries = 3, selectEntries = 2, entries\n// 2 to 4 are returned (2 being the third newest, since it is zero-indexed)\nfunc (sr *scrutinyRepository) GetSmartAttributeHistory(ctx context.Context, wwn string, durationKey string, selectEntries int, selectEntriesOffset int, attributes []string) ([]measurements.Smart, error) {\n\t// Get SMartResults from InfluxDB\n\n\t//TODO: change the filter startrange to a real number.\n\n\t// Get parser flux query result\n\t//appConfig.GetString(\"web.influxdb.bucket\")\n\tqueryStr := sr.aggregateSmartAttributesQuery(wwn, durationKey, selectEntries, selectEntriesOffset, attributes)\n\tlog.Infoln(queryStr)\n\n\tsmartResults := []measurements.Smart{}\n\n\tresult, err := sr.influxQueryApi.Query(ctx, queryStr)\n\tif err == nil {\n\t\t// Use Next() to iterate over query result lines\n\t\tfor result.Next() {\n\t\t\t// Observe when there is new grouping key producing new table\n\t\t\tif result.TableChanged() {\n\t\t\t\t//fmt.Printf(\"table: %s\\n\", result.TableMetadata().String())\n\t\t\t}\n\n\t\t\tsmartData, err := measurements.NewSmartFromInfluxDB(result.Record().Values())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tsmartResults = append(smartResults, *smartData)\n\n\t\t}\n\t\tif result.Err() != nil {\n\t\t\tfmt.Printf(\"Query error: %s\\n\", result.Err().Error())\n\t\t}\n\t} else {\n\t\treturn nil, err\n\t}\n\n\treturn smartResults, nil\n\n\t//if err := device.SquashHistory(); err != nil {\n\t//\tlogger.Errorln(\"An error occurred while squashing device history\", err)\n\t//\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t//\treturn\n\t//}\n\t//\n\t//if err := device.ApplyMetadataRules(); err != nil {\n\t//\tlogger.Errorln(\"An error occurred while applying scrutiny thresholds & rules\", err)\n\t//\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t//\treturn\n\t//}\n\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Helper Methods\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfunc (sr *scrutinyRepository) saveDatapoint(influxWriteApi api.WriteAPIBlocking, measurement string, tags map[string]string, fields map[string]interface{}, date time.Time, ctx context.Context) error {\n\t//sr.logger.Debugf(\"Storing datapoint in measurement '%s'. tags: %d fields: %d\", measurement, len(tags), len(fields))\n\tp := influxdb2.NewPoint(measurement,\n\t\ttags,\n\t\tfields,\n\t\tdate)\n\n\t// write point immediately\n\treturn influxWriteApi.WritePoint(ctx, p)\n}\n\nfunc (sr *scrutinyRepository) aggregateSmartAttributesQuery(wwn string, durationKey string, selectEntries int, selectEntriesOffset int, attributes []string) string {\n\n\t/*\n\n\t\timport \"influxdata/influxdb/schema\"\n\t\tweekData = from(bucket: \"metrics\")\n\t\t|> range(start: -1w, stop: now())\n\t\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t\t|> filter(fn: (r) => r[\"device_wwn\"] == \"0x5000c5002df89099\" )\n\t\t|> tail(n: 10, offset: 0)\n\t\t|> schema.fieldsAsCols()\n\n\t\tmonthData = from(bucket: \"metrics_weekly\")\n\t\t|> range(start: -1mo, stop: -1w)\n\t\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t\t|> filter(fn: (r) => r[\"device_wwn\"] == \"0x5000c5002df89099\" )\n\t\t|> tail(n: 10, offset: 0)\n\t\t|> schema.fieldsAsCols()\n\n\t\tyearData = from(bucket: \"metrics_monthly\")\n\t\t|> range(start: -1y, stop: -1mo)\n\t\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t\t|> filter(fn: (r) => r[\"device_wwn\"] == \"0x5000c5002df89099\" )\n\t\t|> tail(n: 10, offset: 0)\n\t\t|> schema.fieldsAsCols()\n\n\t\tforeverData = from(bucket: \"metrics_yearly\")\n\t\t|> range(start: -10y, stop: -1y)\n\t\t|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t\t|> filter(fn: (r) => r[\"device_wwn\"] == \"0x5000c5002df89099\" )\n\t\t|> tail(n: 10, offset: 0)\n\t\t|> schema.fieldsAsCols()\n\n\t\tunion(tables: [weekData, monthData, yearData, foreverData])\n\t\t|> group()\n\t\t|> sort(columns: [\"_time\"], desc: true)\n\t\t|> tail(n: 6, offset: 4)\n\t\t|> yield(name: \"last\")\n\n\t*/\n\n\tpartialQueryStr := []string{\n\t\t`import \"influxdata/influxdb/schema\"`,\n\t}\n\n\tnestedDurationKeys := sr.lookupNestedDurationKeys(durationKey)\n\n\tif len(nestedDurationKeys) == 1 {\n\t\t//there's only one bucket being queried, no need to union, just aggregate the dataset and return\n\t\tpartialQueryStr = append(partialQueryStr, []string{\n\t\t\tsr.generateSmartAttributesSubquery(wwn, nestedDurationKeys[0], selectEntries, selectEntriesOffset, attributes),\n\t\t\tfmt.Sprintf(`%sData`, nestedDurationKeys[0]),\n\t\t\t`|> sort(columns: [\"_time\"], desc: true)`,\n\t\t\t`|> yield()`,\n\t\t}...)\n\t\treturn strings.Join(partialQueryStr, \"\\n\")\n\t}\n\n\tsubQueries := []string{}\n\tsubQueryNames := []string{}\n\tfor _, nestedDurationKey := range nestedDurationKeys {\n\t\tsubQueryNames = append(subQueryNames, fmt.Sprintf(`%sData`, nestedDurationKey))\n\t\tif selectEntries > 0 {\n\t\t\t// We only need the last `n + offset` # of entries from each table to guarantee we can\n\t\t\t// get the last `n` # of entries starting from `offset` of the union\n\t\t\tsubQueries = append(subQueries, sr.generateSmartAttributesSubquery(wwn, nestedDurationKey, selectEntries+selectEntriesOffset, 0, attributes))\n\t\t} else {\n\t\t\tsubQueries = append(subQueries, sr.generateSmartAttributesSubquery(wwn, nestedDurationKey, 0, 0, attributes))\n\t\t}\n\t}\n\tpartialQueryStr = append(partialQueryStr, subQueries...)\n\tpartialQueryStr = append(partialQueryStr, []string{\n\t\tfmt.Sprintf(\"union(tables: [%s])\", strings.Join(subQueryNames, \", \")),\n\t\t`|> group()`,\n\t\t`|> sort(columns: [\"_time\"], desc: true)`,\n\t}...)\n\tif selectEntries > 0 {\n\t\tpartialQueryStr = append(partialQueryStr, fmt.Sprintf(`|> limit(n: %d, offset: %d)`, selectEntries, selectEntriesOffset))\n\t}\n\tpartialQueryStr = append(partialQueryStr, `|> yield(name: \"last\")`)\n\n\treturn strings.Join(partialQueryStr, \"\\n\")\n}\n\nfunc (sr *scrutinyRepository) generateSmartAttributesSubquery(wwn string, durationKey string, selectEntries int, selectEntriesOffset int, attributes []string) string {\n\tbucketName := sr.lookupBucketName(durationKey)\n\tdurationRange := sr.lookupDuration(durationKey)\n\n\tpartialQueryStr := []string{\n\t\tfmt.Sprintf(`%sData = from(bucket: \"%s\")`, durationKey, bucketName),\n\t\tfmt.Sprintf(`|> range(start: %s, stop: %s)`, durationRange[0], durationRange[1]),\n\t\t`|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )`,\n\t\tfmt.Sprintf(`|> filter(fn: (r) => r[\"device_wwn\"] == \"%s\" )`, wwn),\n\t}\n\n\tpartialQueryStr = append(partialQueryStr, `|> aggregateWindow(every: 1d, fn: last, createEmpty: false)`)\n\n\t// ensure we are selecting the latest entries when paging\n\tpartialQueryStr = append(partialQueryStr, `|> sort(columns: [\"_time\"], desc: true)`)\n\tif selectEntries > 0 {\n\t\tpartialQueryStr = append(partialQueryStr, fmt.Sprintf(`|> limit(n: %d, offset: %d)`, selectEntries, selectEntriesOffset))\n\t}\n\tpartialQueryStr = append(partialQueryStr, \"|> schema.fieldsAsCols()\")\n\n\treturn strings.Join(partialQueryStr, \"\\n\")\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_migrations.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database/migrations/m20201107210306\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database/migrations/m20220503120000\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database/migrations/m20220509170100\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database/migrations/m20220716214900\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database/migrations/m20250221084400\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\t_ \"github.com/glebarez/sqlite\"\n\t\"github.com/go-gormigrate/gormigrate/v2\"\n\t\"github.com/influxdata/influxdb-client-go/v2/api/http\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"gorm.io/gorm\"\n)\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SQLite migrations\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//database.AutoMigrate(&models.Device{})\n\nfunc (sr *scrutinyRepository) Migrate(ctx context.Context) error {\n\n\tsr.logger.Infoln(\"Database migration starting. Please wait, this process may take a long time....\")\n\n\tgormMigrateOptions := gormigrate.DefaultOptions\n\tgormMigrateOptions.UseTransaction = true\n\n\tm := gormigrate.New(sr.gormClient, gormMigrateOptions, []*gormigrate.Migration{\n\t\t{\n\t\t\tID: \"20201107210306\", // v0.3.13 (pre-influxdb schema). 9fac3c6308dc6cb6cd5bbc43a68cd93e8fb20b87\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t// it's a good practice to copy the struct inside the function,\n\n\t\t\t\treturn tx.AutoMigrate(\n\t\t\t\t\t&m20201107210306.Device{},\n\t\t\t\t\t&m20201107210306.Smart{},\n\t\t\t\t\t&m20201107210306.SmartAtaAttribute{},\n\t\t\t\t\t&m20201107210306.SmartNvmeAttribute{},\n\t\t\t\t\t&m20201107210306.SmartNvmeAttribute{},\n\t\t\t\t)\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"20220503113100\", // backwards compatible - influxdb schema\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t// delete unnecessary table.\n\t\t\t\terr := tx.Migrator().DropTable(\"self_tests\")\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\t//add columns to the Device schema, so we can start adding data to the database & influxdb\n\t\t\t\terr = tx.Migrator().AddColumn(&models.Device{}, \"Label\") //Label  string `json:\"label\"`\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\terr = tx.Migrator().AddColumn(&models.Device{}, \"DeviceStatus\") //DeviceStatus pkg.DeviceStatus `json:\"device_status\"`\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\t//TODO: migrate the data from GORM to influxdb.\n\t\t\t\t//get a list of all devices:\n\t\t\t\t//\tget a list of all smart scans in the last 2 weeks:\n\t\t\t\t//\t\tget a list of associated smart attribute data:\n\t\t\t\t//\t\t\ttranslate to a measurements.Smart{} object\n\t\t\t\t//\t\t\tcall CUSTOM INFLUXDB SAVE FUNCTION (taking bucket as parameter)\n\t\t\t\t//\tget a list of all smart scans in the last 9 weeks:\n\t\t\t\t//\t\tdo same as above (select 1 scan per week)\n\t\t\t\t//\tget a list of all smart scans in the last 25 months:\n\t\t\t\t//\t\tdo same as above (select 1 scan per month)\n\t\t\t\t//\tget a list of all smart scans:\n\t\t\t\t//\t\tdo same as above (select 1 scan per year)\n\n\t\t\t\tpreDevices := []m20201107210306.Device{} //pre-migration device information\n\t\t\t\tif err = tx.Preload(\"SmartResults\", func(db *gorm.DB) *gorm.DB {\n\t\t\t\t\treturn db.Order(\"smarts.created_at ASC\") //OLD: .Limit(devicesCount)\n\t\t\t\t}).Find(&preDevices).Error; err != nil {\n\t\t\t\t\tsr.logger.Errorln(\"Could not get device summary from DB\", err)\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\t//calculate bucket oldest dates\n\t\t\t\ttoday := time.Now()\n\t\t\t\tdailyBucketMax := today.Add(-RETENTION_PERIOD_15_DAYS_IN_SECONDS * time.Second)     //15 days\n\t\t\t\tweeklyBucketMax := today.Add(-RETENTION_PERIOD_9_WEEKS_IN_SECONDS * time.Second)    //9 weeks\n\t\t\t\tmonthlyBucketMax := today.Add(-RETENTION_PERIOD_25_MONTHS_IN_SECONDS * time.Second) //25 weeks\n\n\t\t\t\tfor _, preDevice := range preDevices {\n\t\t\t\t\tsr.logger.Debugf(\"====================================\")\n\t\t\t\t\tsr.logger.Infof(\"begin processing device: %s\", preDevice.WWN)\n\n\t\t\t\t\t//weekly, monthly, yearly lookup storage, so we don't add more data to the buckets than necessary.\n\t\t\t\t\tweeklyLookup := map[string]bool{}\n\t\t\t\t\tmonthlyLookup := map[string]bool{}\n\t\t\t\t\tyearlyLookup := map[string]bool{}\n\t\t\t\t\tfor _, preSmartResult := range preDevice.SmartResults { //pre-migration smart results\n\n\t\t\t\t\t\t//we're looping in ASC mode, so from oldest entry to most current.\n\n\t\t\t\t\t\terr, postSmartResults := m20201107210306_FromPreInfluxDBSmartResultsCreatePostInfluxDBSmartResults(tx, preDevice, preSmartResult)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsmartTags, smartFields := postSmartResults.Flatten()\n\n\t\t\t\t\t\terr, postSmartTemp := m20201107210306_FromPreInfluxDBTempCreatePostInfluxDBTemp(preDevice, preSmartResult)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempTags, tempFields := postSmartTemp.Flatten()\n\t\t\t\t\t\ttempTags[\"device_wwn\"] = preDevice.WWN\n\n\t\t\t\t\t\tyear, week := postSmartResults.Date.ISOWeek()\n\t\t\t\t\t\tmonth := postSmartResults.Date.Month()\n\n\t\t\t\t\t\tyearStr := strconv.Itoa(year)\n\t\t\t\t\t\tyearMonthStr := fmt.Sprintf(\"%d-%d\", year, month)\n\t\t\t\t\t\tyearWeekStr := fmt.Sprintf(\"%d-%d\", year, week)\n\n\t\t\t\t\t\t//write data to daily bucket if in the last 15 days\n\t\t\t\t\t\tif postSmartResults.Date.After(dailyBucketMax) {\n\t\t\t\t\t\t\tsr.logger.Debugf(\"device (%s) smart data added to bucket: daily\", preDevice.WWN)\n\t\t\t\t\t\t\t// write point immediately\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), sr.appConfig.GetString(\"web.influxdb.bucket\")),\n\t\t\t\t\t\t\t\t\"smart\",\n\t\t\t\t\t\t\t\tsmartTags,\n\t\t\t\t\t\t\t\tsmartFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), sr.appConfig.GetString(\"web.influxdb.bucket\")),\n\t\t\t\t\t\t\t\t\"temp\",\n\t\t\t\t\t\t\t\ttempTags,\n\t\t\t\t\t\t\t\ttempFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//write data to the weekly bucket if in the last 9 weeks, and week has not been processed yet\n\t\t\t\t\t\tif _, weekExists := weeklyLookup[yearWeekStr]; !weekExists && postSmartResults.Date.After(weeklyBucketMax) {\n\t\t\t\t\t\t\tsr.logger.Debugf(\"device (%s) smart data added to bucket: weekly\", preDevice.WWN)\n\n\t\t\t\t\t\t\t//this week/year pair has not been processed\n\t\t\t\t\t\t\tweeklyLookup[yearWeekStr] = true\n\t\t\t\t\t\t\t// write point immediately\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), fmt.Sprintf(\"%s_weekly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))),\n\t\t\t\t\t\t\t\t\"smart\",\n\t\t\t\t\t\t\t\tsmartTags,\n\t\t\t\t\t\t\t\tsmartFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), fmt.Sprintf(\"%s_weekly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))),\n\t\t\t\t\t\t\t\t\"temp\",\n\t\t\t\t\t\t\t\ttempTags,\n\t\t\t\t\t\t\t\ttempFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//write data to the monthly bucket if in the last 9 weeks, and week has not been processed yet\n\t\t\t\t\t\tif _, monthExists := monthlyLookup[yearMonthStr]; !monthExists && postSmartResults.Date.After(monthlyBucketMax) {\n\t\t\t\t\t\t\tsr.logger.Debugf(\"device (%s) smart data added to bucket: monthly\", preDevice.WWN)\n\n\t\t\t\t\t\t\t//this month/year pair has not been processed\n\t\t\t\t\t\t\tmonthlyLookup[yearMonthStr] = true\n\t\t\t\t\t\t\t// write point immediately\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), fmt.Sprintf(\"%s_monthly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))),\n\t\t\t\t\t\t\t\t\"smart\",\n\t\t\t\t\t\t\t\tsmartTags,\n\t\t\t\t\t\t\t\tsmartFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), fmt.Sprintf(\"%s_monthly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))),\n\t\t\t\t\t\t\t\t\"temp\",\n\t\t\t\t\t\t\t\ttempTags,\n\t\t\t\t\t\t\t\ttempFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif _, yearExists := yearlyLookup[yearStr]; !yearExists && year != today.Year() {\n\t\t\t\t\t\t\tsr.logger.Debugf(\"device (%s) smart data added to bucket: yearly\", preDevice.WWN)\n\n\t\t\t\t\t\t\t//this year has not been processed\n\t\t\t\t\t\t\tyearlyLookup[yearStr] = true\n\t\t\t\t\t\t\t// write point immediately\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), fmt.Sprintf(\"%s_yearly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))),\n\t\t\t\t\t\t\t\t\"smart\",\n\t\t\t\t\t\t\t\tsmartTags,\n\t\t\t\t\t\t\t\tsmartFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\terr = sr.saveDatapoint(\n\t\t\t\t\t\t\t\tsr.influxClient.WriteAPIBlocking(sr.appConfig.GetString(\"web.influxdb.org\"), fmt.Sprintf(\"%s_yearly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))),\n\t\t\t\t\t\t\t\t\"temp\",\n\t\t\t\t\t\t\t\ttempTags,\n\t\t\t\t\t\t\t\ttempFields,\n\t\t\t\t\t\t\t\tpostSmartResults.Date, ctx)\n\t\t\t\t\t\t\tif ignorePastRetentionPolicyError(err) != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsr.logger.Infof(\"finished processing device %s. weekly: %d, monthly: %d, yearly: %d\", preDevice.WWN, len(weeklyLookup), len(monthlyLookup), len(yearlyLookup))\n\n\t\t\t\t}\n\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"20220503120000\", // cleanup - v0.4.0 - influxdb schema\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t// delete unnecessary tables.\n\t\t\t\terr := tx.Migrator().DropTable(\n\t\t\t\t\t&m20201107210306.Smart{},\n\t\t\t\t\t&m20201107210306.SmartAtaAttribute{},\n\t\t\t\t\t&m20201107210306.SmartNvmeAttribute{},\n\t\t\t\t\t&m20201107210306.SmartScsiAttribute{},\n\t\t\t\t)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\t//migrate the device database\n\t\t\t\treturn tx.AutoMigrate(m20220503120000.Device{})\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20220509170100\", // addl udev device data\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\n\t\t\t\t//migrate the device database.\n\t\t\t\t// adding addl columns (device_label, device_uuid, device_serial_id)\n\t\t\t\treturn tx.AutoMigrate(m20220509170100.Device{})\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20220709181300\",\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\n\t\t\t\t// delete devices with empty `wwn` field (they are impossible to delete manually), and are invalid.\n\t\t\t\treturn tx.Where(\"wwn = ?\", \"\").Delete(&models.Device{}).Error\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20220716214900\", // add settings table.\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\n\t\t\t\t// adding the settings table.\n\t\t\t\terr := tx.AutoMigrate(m20220716214900.Setting{})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\t//add defaults.\n\n\t\t\t\tvar defaultSettings = []m20220716214900.Setting{\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"theme\",\n\t\t\t\t\t\tSettingKeyDescription: \"Frontend theme ('light' | 'dark' | 'system')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"system\", // options: 'light' | 'dark' | 'system'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"layout\",\n\t\t\t\t\t\tSettingKeyDescription: \"Frontend layout ('material')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"material\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"dashboard_display\",\n\t\t\t\t\t\tSettingKeyDescription: \"Frontend device display title ('name' | 'serial_id' | 'uuid' | 'label')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"name\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"dashboard_sort\",\n\t\t\t\t\t\tSettingKeyDescription: \"Frontend device sort by ('status' | 'title' | 'age')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"status\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"temperature_unit\",\n\t\t\t\t\t\tSettingKeyDescription: \"Frontend temperature unit ('celsius' | 'fahrenheit')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"celsius\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"file_size_si_units\",\n\t\t\t\t\t\tSettingKeyDescription: \"File size in SI units (true | false)\",\n\t\t\t\t\t\tSettingDataType:       \"bool\",\n\t\t\t\t\t\tSettingValueBool:      false,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"line_stroke\",\n\t\t\t\t\t\tSettingKeyDescription: \"Temperature chart line stroke ('smooth' | 'straight' | 'stepline')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"smooth\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"metrics.notify_level\",\n\t\t\t\t\t\tSettingKeyDescription: \"Determines which device status will cause a notification (fail or warn)\",\n\t\t\t\t\t\tSettingDataType:       \"numeric\",\n\t\t\t\t\t\tSettingValueNumeric:   int(pkg.MetricsNotifyLevelFail), // options: 'fail' or 'warn'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"metrics.status_filter_attributes\",\n\t\t\t\t\t\tSettingKeyDescription: \"Determines which attributes should impact device status\",\n\t\t\t\t\t\tSettingDataType:       \"numeric\",\n\t\t\t\t\t\tSettingValueNumeric:   int(pkg.MetricsStatusFilterAttributesAll), // options: 'all' or  'critical'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"metrics.status_threshold\",\n\t\t\t\t\t\tSettingKeyDescription: \"Determines which threshold should impact device status\",\n\t\t\t\t\t\tSettingDataType:       \"numeric\",\n\t\t\t\t\t\tSettingValueNumeric:   int(pkg.MetricsStatusThresholdBoth), // options: 'scrutiny', 'smart', 'both'\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn tx.Create(&defaultSettings).Error\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20221115214900\", // add line_stroke setting.\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t//add line_stroke setting default.\n\t\t\t\tvar defaultSettings = []m20220716214900.Setting{\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"line_stroke\",\n\t\t\t\t\t\tSettingKeyDescription: \"Temperature chart line stroke ('smooth' | 'straight' | 'stepline')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"smooth\",\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn tx.Create(&defaultSettings).Error\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20231123123300\", // add repeat_notifications setting.\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t//add repeat_notifications setting default.\n\t\t\t\tvar defaultSettings = []m20220716214900.Setting{\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"metrics.repeat_notifications\",\n\t\t\t\t\t\tSettingKeyDescription: \"Whether to repeat all notifications or just when values change (true | false)\",\n\t\t\t\t\t\tSettingDataType:       \"bool\",\n\t\t\t\t\t\tSettingValueBool:      true,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn tx.Create(&defaultSettings).Error\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20240722082740\", // add powered_on_hours_unit setting.\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t//add powered_on_hours_unit setting default.\n\t\t\t\tvar defaultSettings = []m20220716214900.Setting{\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"powered_on_hours_unit\",\n\t\t\t\t\t\tSettingKeyDescription: \"Presentation format for device powered on time ('humanize' | 'device_hours')\",\n\t\t\t\t\t\tSettingDataType:       \"string\",\n\t\t\t\t\t\tSettingValueString:    \"humanize\",\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn tx.Create(&defaultSettings).Error\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20250221084400\", // add archived to device data\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\n\t\t\t\t//migrate the device database.\n\t\t\t\t// adding column (archived)\n\t\t\t\treturn tx.AutoMigrate(m20250221084400.Device{})\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tID: \"m20260105083200\", // add discard_sct_temp_history setting.\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t//add discard_sct_temp_history setting default.\n\t\t\t\tvar defaultSettings = []m20220716214900.Setting{\n\t\t\t\t\t{\n\t\t\t\t\t\tSettingKeyName:        \"collector.discard_sct_temp_history\",\n\t\t\t\t\t\tSettingKeyDescription: \"Whether to discard SCT Temperature history (true | false)\",\n\t\t\t\t\t\tSettingDataType:       \"bool\",\n\t\t\t\t\t\tSettingValueBool:      false,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\treturn tx.Create(&defaultSettings).Error\n\t\t\t},\n\t\t},\n\t})\n\n\tif err := m.Migrate(); err != nil {\n\t\tsr.logger.Errorf(\"Database migration failed with error. \\n Please open a github issue at https://github.com/AnalogJ/scrutiny and attach a copy of your scrutiny.db file. \\n %v\", err)\n\t\treturn err\n\t}\n\tsr.logger.Infoln(\"Database migration completed successfully\")\n\n\t//these migrations cannot be done within a transaction, so they are done as a separate group, with `UseTransaction = false`\n\tsr.logger.Infoln(\"SQLite global configuration migrations starting. Please wait....\")\n\tglobalMigrateOptions := gormigrate.DefaultOptions\n\tglobalMigrateOptions.UseTransaction = false\n\tgm := gormigrate.New(sr.gormClient, globalMigrateOptions, []*gormigrate.Migration{\n\t\t{\n\t\t\tID: \"g20220802211500\",\n\t\t\tMigrate: func(tx *gorm.DB) error {\n\t\t\t\t//shrink the Database (maybe necessary after 20220503113100)\n\t\t\t\tif err := tx.Exec(\"VACUUM;\").Error; err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t})\n\n\tif err := gm.Migrate(); err != nil {\n\t\tsr.logger.Errorf(\"SQLite global configuration migrations failed with error. \\n Please open a github issue at https://github.com/AnalogJ/scrutiny and attach a copy of your scrutiny.db file. \\n %v\", err)\n\t\treturn err\n\t}\n\tsr.logger.Infoln(\"SQLite global configuration migrations completed successfully\")\n\n\treturn nil\n}\n\n// helpers\n\n// When adding data to influxdb, an error may be returned if the data point is outside the range of the retention policy.\n// This function will ignore retention policy errors, and allow the migration to continue.\nfunc ignorePastRetentionPolicyError(err error) error {\n\tvar influxDbWriteError *http.Error\n\tif errors.As(err, &influxDbWriteError) {\n\t\tif influxDbWriteError.StatusCode == 422 {\n\t\t\tlog.Infoln(\"ignoring error: attempted to writePoint past retention period duration\")\n\t\t\treturn nil\n\t\t}\n\t}\n\treturn err\n}\n\n// Deprecated\nfunc m20201107210306_FromPreInfluxDBTempCreatePostInfluxDBTemp(preDevice m20201107210306.Device, preSmartResult m20201107210306.Smart) (error, measurements.SmartTemperature) {\n\t//extract temperature data for every datapoint\n\tpostSmartTemp := measurements.SmartTemperature{\n\t\tDate: preSmartResult.TestDate,\n\t\tTemp: preSmartResult.Temp,\n\t}\n\n\treturn nil, postSmartTemp\n}\n\n// Deprecated\nfunc m20201107210306_FromPreInfluxDBSmartResultsCreatePostInfluxDBSmartResults(database *gorm.DB, preDevice m20201107210306.Device, preSmartResult m20201107210306.Smart) (error, measurements.Smart) {\n\t//create a measurements.Smart object (which we will then push to the InfluxDB)\n\tpostDeviceSmartData := measurements.Smart{\n\t\tDate:            preSmartResult.TestDate,\n\t\tDeviceWWN:       preDevice.WWN,\n\t\tDeviceProtocol:  preDevice.DeviceProtocol,\n\t\tTemp:            preSmartResult.Temp,\n\t\tPowerOnHours:    preSmartResult.PowerOnHours,\n\t\tPowerCycleCount: preSmartResult.PowerCycleCount,\n\n\t\t// this needs to be populated using measurements.Smart.ProcessAtaSmartInfo, ProcessScsiSmartInfo or ProcessNvmeSmartInfo\n\t\t// because those functions will take into account thresholds (which we didn't consider correctly previously)\n\t\tAttributes: map[string]measurements.SmartAttribute{},\n\t}\n\n\tresult := database.Preload(\"AtaAttributes\").Preload(\"NvmeAttributes\").Preload(\"ScsiAttributes\").Find(&preSmartResult)\n\tif result.Error != nil {\n\t\treturn result.Error, postDeviceSmartData\n\t}\n\n\tif preDevice.IsAta() {\n\t\tpreAtaSmartAttributesTable := []collector.AtaSmartAttributesTableItem{}\n\t\tfor _, preAtaAttribute := range preSmartResult.AtaAttributes {\n\t\t\tpreAtaSmartAttributesTable = append(preAtaSmartAttributesTable, collector.AtaSmartAttributesTableItem{\n\t\t\t\tID:         preAtaAttribute.AttributeId,\n\t\t\t\tName:       preAtaAttribute.Name,\n\t\t\t\tValue:      int64(preAtaAttribute.Value),\n\t\t\t\tWorst:      int64(preAtaAttribute.Worst),\n\t\t\t\tThresh:     int64(preAtaAttribute.Threshold),\n\t\t\t\tWhenFailed: preAtaAttribute.WhenFailed,\n\t\t\t\tFlags: struct {\n\t\t\t\t\tValue         int    `json:\"value\"`\n\t\t\t\t\tString        string `json:\"string\"`\n\t\t\t\t\tPrefailure    bool   `json:\"prefailure\"`\n\t\t\t\t\tUpdatedOnline bool   `json:\"updated_online\"`\n\t\t\t\t\tPerformance   bool   `json:\"performance\"`\n\t\t\t\t\tErrorRate     bool   `json:\"error_rate\"`\n\t\t\t\t\tEventCount    bool   `json:\"event_count\"`\n\t\t\t\t\tAutoKeep      bool   `json:\"auto_keep\"`\n\t\t\t\t}{\n\t\t\t\t\tValue:         0,\n\t\t\t\t\tString:        \"\",\n\t\t\t\t\tPrefailure:    false,\n\t\t\t\t\tUpdatedOnline: false,\n\t\t\t\t\tPerformance:   false,\n\t\t\t\t\tErrorRate:     false,\n\t\t\t\t\tEventCount:    false,\n\t\t\t\t\tAutoKeep:      false,\n\t\t\t\t},\n\t\t\t\tRaw: struct {\n\t\t\t\t\tValue  int64  `json:\"value\"`\n\t\t\t\t\tString string `json:\"string\"`\n\t\t\t\t}{\n\t\t\t\t\tValue:  preAtaAttribute.RawValue,\n\t\t\t\t\tString: preAtaAttribute.RawString,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\n\t\tpostDeviceSmartData.ProcessAtaSmartInfo(preAtaSmartAttributesTable)\n\n\t} else if preDevice.IsNvme() {\n\t\t//info collector.SmartInfo\n\t\tpostNvmeSmartHealthInformation := collector.NvmeSmartHealthInformationLog{}\n\n\t\tfor _, preNvmeAttribute := range preSmartResult.NvmeAttributes {\n\t\t\tswitch preNvmeAttribute.AttributeId {\n\t\t\tcase \"critical_warning\":\n\t\t\t\tpostNvmeSmartHealthInformation.CriticalWarning = int64(preNvmeAttribute.Value)\n\t\t\tcase \"temperature\":\n\t\t\t\tpostNvmeSmartHealthInformation.Temperature = int64(preNvmeAttribute.Value)\n\t\t\tcase \"available_spare\":\n\t\t\t\tpostNvmeSmartHealthInformation.AvailableSpare = int64(preNvmeAttribute.Value)\n\t\t\tcase \"available_spare_threshold\":\n\t\t\t\tpostNvmeSmartHealthInformation.AvailableSpareThreshold = int64(preNvmeAttribute.Value)\n\t\t\tcase \"percentage_used\":\n\t\t\t\tpostNvmeSmartHealthInformation.PercentageUsed = int64(preNvmeAttribute.Value)\n\t\t\tcase \"data_units_read\":\n\t\t\t\tpostNvmeSmartHealthInformation.DataUnitsWritten = int64(preNvmeAttribute.Value)\n\t\t\tcase \"data_units_written\":\n\t\t\t\tpostNvmeSmartHealthInformation.DataUnitsWritten = int64(preNvmeAttribute.Value)\n\t\t\tcase \"host_reads\":\n\t\t\t\tpostNvmeSmartHealthInformation.HostReads = int64(preNvmeAttribute.Value)\n\t\t\tcase \"host_writes\":\n\t\t\t\tpostNvmeSmartHealthInformation.HostWrites = int64(preNvmeAttribute.Value)\n\t\t\tcase \"controller_busy_time\":\n\t\t\t\tpostNvmeSmartHealthInformation.ControllerBusyTime = int64(preNvmeAttribute.Value)\n\t\t\tcase \"power_cycles\":\n\t\t\t\tpostNvmeSmartHealthInformation.PowerCycles = int64(preNvmeAttribute.Value)\n\t\t\tcase \"power_on_hours\":\n\t\t\t\tpostNvmeSmartHealthInformation.PowerOnHours = int64(preNvmeAttribute.Value)\n\t\t\tcase \"unsafe_shutdowns\":\n\t\t\t\tpostNvmeSmartHealthInformation.UnsafeShutdowns = int64(preNvmeAttribute.Value)\n\t\t\tcase \"media_errors\":\n\t\t\t\tpostNvmeSmartHealthInformation.MediaErrors = int64(preNvmeAttribute.Value)\n\t\t\tcase \"num_err_log_entries\":\n\t\t\t\tpostNvmeSmartHealthInformation.NumErrLogEntries = int64(preNvmeAttribute.Value)\n\t\t\tcase \"warning_temp_time\":\n\t\t\t\tpostNvmeSmartHealthInformation.WarningTempTime = int64(preNvmeAttribute.Value)\n\t\t\tcase \"critical_comp_time\":\n\t\t\t\tpostNvmeSmartHealthInformation.CriticalCompTime = int64(preNvmeAttribute.Value)\n\t\t\t}\n\t\t}\n\n\t\tpostDeviceSmartData.ProcessNvmeSmartInfo(postNvmeSmartHealthInformation)\n\n\t} else if preDevice.IsScsi() {\n\t\t//info collector.SmartInfo\n\t\tvar postScsiGrownDefectList int64\n\t\tpostScsiErrorCounterLog := collector.ScsiErrorCounterLog{\n\t\t\tRead: struct {\n\t\t\t\tErrorsCorrectedByEccfast         int64  `json:\"errors_corrected_by_eccfast\"`\n\t\t\t\tErrorsCorrectedByEccdelayed      int64  `json:\"errors_corrected_by_eccdelayed\"`\n\t\t\t\tErrorsCorrectedByRereadsRewrites int64  `json:\"errors_corrected_by_rereads_rewrites\"`\n\t\t\t\tTotalErrorsCorrected             int64  `json:\"total_errors_corrected\"`\n\t\t\t\tCorrectionAlgorithmInvocations   int64  `json:\"correction_algorithm_invocations\"`\n\t\t\t\tGigabytesProcessed               string `json:\"gigabytes_processed\"`\n\t\t\t\tTotalUncorrectedErrors           int64  `json:\"total_uncorrected_errors\"`\n\t\t\t}{},\n\t\t\tWrite: struct {\n\t\t\t\tErrorsCorrectedByEccfast         int64  `json:\"errors_corrected_by_eccfast\"`\n\t\t\t\tErrorsCorrectedByEccdelayed      int64  `json:\"errors_corrected_by_eccdelayed\"`\n\t\t\t\tErrorsCorrectedByRereadsRewrites int64  `json:\"errors_corrected_by_rereads_rewrites\"`\n\t\t\t\tTotalErrorsCorrected             int64  `json:\"total_errors_corrected\"`\n\t\t\t\tCorrectionAlgorithmInvocations   int64  `json:\"correction_algorithm_invocations\"`\n\t\t\t\tGigabytesProcessed               string `json:\"gigabytes_processed\"`\n\t\t\t\tTotalUncorrectedErrors           int64  `json:\"total_uncorrected_errors\"`\n\t\t\t}{},\n\t\t}\n\n\t\tfor _, preScsiAttribute := range preSmartResult.ScsiAttributes {\n\t\t\tswitch preScsiAttribute.AttributeId {\n\t\t\tcase \"scsi_grown_defect_list\":\n\t\t\t\tpostScsiGrownDefectList = int64(preScsiAttribute.Value)\n\t\t\tcase \"read.errors_corrected_by_eccfast\":\n\t\t\t\tpostScsiErrorCounterLog.Read.ErrorsCorrectedByEccfast = int64(preScsiAttribute.Value)\n\t\t\tcase \"read.errors_corrected_by_eccdelayed\":\n\t\t\t\tpostScsiErrorCounterLog.Read.ErrorsCorrectedByEccdelayed = int64(preScsiAttribute.Value)\n\t\t\tcase \"read.errors_corrected_by_rereads_rewrites\":\n\t\t\t\tpostScsiErrorCounterLog.Read.ErrorsCorrectedByRereadsRewrites = int64(preScsiAttribute.Value)\n\t\t\tcase \"read.total_errors_corrected\":\n\t\t\t\tpostScsiErrorCounterLog.Read.TotalErrorsCorrected = int64(preScsiAttribute.Value)\n\t\t\tcase \"read.correction_algorithm_invocations\":\n\t\t\t\tpostScsiErrorCounterLog.Read.CorrectionAlgorithmInvocations = int64(preScsiAttribute.Value)\n\t\t\tcase \"read.total_uncorrected_errors\":\n\t\t\t\tpostScsiErrorCounterLog.Read.TotalUncorrectedErrors = int64(preScsiAttribute.Value)\n\t\t\tcase \"write.errors_corrected_by_eccfast\":\n\t\t\t\tpostScsiErrorCounterLog.Write.ErrorsCorrectedByEccfast = int64(preScsiAttribute.Value)\n\t\t\tcase \"write.errors_corrected_by_eccdelayed\":\n\t\t\t\tpostScsiErrorCounterLog.Write.ErrorsCorrectedByEccdelayed = int64(preScsiAttribute.Value)\n\t\t\tcase \"write.errors_corrected_by_rereads_rewrites\":\n\t\t\t\tpostScsiErrorCounterLog.Write.ErrorsCorrectedByRereadsRewrites = int64(preScsiAttribute.Value)\n\t\t\tcase \"write.total_errors_corrected\":\n\t\t\t\tpostScsiErrorCounterLog.Write.TotalErrorsCorrected = int64(preScsiAttribute.Value)\n\t\t\tcase \"write.correction_algorithm_invocations\":\n\t\t\t\tpostScsiErrorCounterLog.Write.CorrectionAlgorithmInvocations = int64(preScsiAttribute.Value)\n\t\t\tcase \"write.total_uncorrected_errors\":\n\t\t\t\tpostScsiErrorCounterLog.Write.TotalUncorrectedErrors = int64(preScsiAttribute.Value)\n\t\t\t}\n\t\t}\n\t\tpostDeviceSmartData.ProcessScsiSmartInfo(postScsiGrownDefectList, postScsiErrorCounterLog)\n\t} else {\n\t\treturn fmt.Errorf(\"unknown device protocol: %s\", preDevice.DeviceProtocol), postDeviceSmartData\n\t}\n\n\treturn nil, postDeviceSmartData\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_settings.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/go-viper/mapstructure/v2\"\n)\n\n// LoadSettings will retrieve settings from the database, store them in the AppConfig object, and return a Settings struct\nfunc (sr *scrutinyRepository) LoadSettings(ctx context.Context) (*models.Settings, error) {\n\tsettingsEntries := []models.SettingEntry{}\n\tif err := sr.gormClient.WithContext(ctx).Find(&settingsEntries).Error; err != nil {\n\t\treturn nil, fmt.Errorf(\"could not get settings from DB: %v\", err)\n\t}\n\n\t// store retrieved settings in the AppConfig obj\n\tfor _, settingsEntry := range settingsEntries {\n\t\tconfigKey := fmt.Sprintf(\"%s.%s\", config.DB_USER_SETTINGS_SUBKEY, settingsEntry.SettingKeyName)\n\n\t\tif settingsEntry.SettingDataType == \"numeric\" {\n\t\t\tsr.appConfig.SetDefault(configKey, settingsEntry.SettingValueNumeric)\n\t\t} else if settingsEntry.SettingDataType == \"string\" {\n\t\t\tsr.appConfig.SetDefault(configKey, settingsEntry.SettingValueString)\n\t\t} else if settingsEntry.SettingDataType == \"bool\" {\n\t\t\tsr.appConfig.SetDefault(configKey, settingsEntry.SettingValueBool)\n\t\t}\n\t}\n\n\t// unmarshal the dbsetting object data to a settings object.\n\tvar settings models.Settings\n\terr := sr.appConfig.UnmarshalKey(config.DB_USER_SETTINGS_SUBKEY, &settings)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &settings, nil\n}\n\n// testing\n// curl -d '{\"metrics\": { \"notify_level\": 5, \"status_filter_attributes\": 5, \"status_threshold\": 5 }}' -H \"Content-Type: application/json\" -X POST http://localhost:9090/api/settings\n// SaveSettings will update settings in AppConfig object, then save the settings to the database.\nfunc (sr *scrutinyRepository) SaveSettings(ctx context.Context, settings models.Settings) error {\n\t//save the entries to the appconfig\n\tsettingsMap := &map[string]interface{}{}\n\terr := mapstructure.Decode(settings, &settingsMap)\n\tif err != nil {\n\t\treturn err\n\t}\n\tsettingsWrapperMap := map[string]interface{}{}\n\tsettingsWrapperMap[config.DB_USER_SETTINGS_SUBKEY] = *settingsMap\n\terr = sr.appConfig.MergeConfigMap(settingsWrapperMap)\n\tif err != nil {\n\t\treturn err\n\t}\n\tsr.logger.Debugf(\"after merge settings: %v\", sr.appConfig.AllSettings())\n\t//retrieve current settings from the database\n\tsettingsEntries := []models.SettingEntry{}\n\tif err := sr.gormClient.WithContext(ctx).Find(&settingsEntries).Error; err != nil {\n\t\treturn fmt.Errorf(\"could not get settings from DB: %v\", err)\n\t}\n\n\t//update settingsEntries\n\tfor ndx, settingsEntry := range settingsEntries {\n\t\tconfigKey := fmt.Sprintf(\"%s.%s\", config.DB_USER_SETTINGS_SUBKEY, strings.ToLower(settingsEntry.SettingKeyName))\n\n\t\tif settingsEntry.SettingDataType == \"numeric\" {\n\t\t\tsettingsEntries[ndx].SettingValueNumeric = sr.appConfig.GetInt(configKey)\n\t\t} else if settingsEntry.SettingDataType == \"string\" {\n\t\t\tsettingsEntries[ndx].SettingValueString = sr.appConfig.GetString(configKey)\n\t\t} else if settingsEntry.SettingDataType == \"bool\" {\n\t\t\tsettingsEntries[ndx].SettingValueBool = sr.appConfig.GetBool(configKey)\n\t\t}\n\n\t\t// store in database.\n\t\t//TODO: this should be `sr.gormClient.Updates(&settingsEntries).Error`\n\t\terr := sr.gormClient.Model(&models.SettingEntry{}).Where([]uint{settingsEntry.ID}).Select(\"setting_value_numeric\", \"setting_value_string\", \"setting_value_bool\").Updates(settingsEntries[ndx]).Error\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_tasks.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"github.com/influxdata/influxdb-client-go/v2/api\"\n)\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Tasks\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\nfunc (sr *scrutinyRepository) EnsureTasks(ctx context.Context, orgID string) error {\n\tweeklyTaskName := \"tsk-weekly-aggr\"\n\tweeklyTaskScript := sr.DownsampleScript(\"weekly\", weeklyTaskName, \"0 1 * * 0\")\n\tif found, findErr := sr.influxTaskApi.FindTasks(ctx, &api.TaskFilter{Name: weeklyTaskName}); findErr == nil && len(found) == 0 {\n\t\t//weekly on Sunday at 1:00am\n\t\t_, err := sr.influxTaskApi.CreateTaskByFlux(ctx, weeklyTaskScript, orgID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if len(found) == 1 {\n\t\t//check if we should update\n\t\ttask := &found[0]\n\t\tif weeklyTaskScript != task.Flux {\n\t\t\tsr.logger.Infoln(\"updating weekly task script\")\n\t\t\ttask.Flux = weeklyTaskScript\n\t\t\t_, err := sr.influxTaskApi.UpdateTask(ctx, task)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tmonthlyTaskName := \"tsk-monthly-aggr\"\n\tmonthlyTaskScript := sr.DownsampleScript(\"monthly\", monthlyTaskName, \"30 1 1 * *\")\n\tif found, findErr := sr.influxTaskApi.FindTasks(ctx, &api.TaskFilter{Name: monthlyTaskName}); findErr == nil && len(found) == 0 {\n\t\t//monthly on first day of the month at 1:30am\n\t\t_, err := sr.influxTaskApi.CreateTaskByFlux(ctx, monthlyTaskScript, orgID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if len(found) == 1 {\n\t\t//check if we should update\n\t\ttask := &found[0]\n\t\tif monthlyTaskScript != task.Flux {\n\t\t\tsr.logger.Infoln(\"updating monthly task script\")\n\t\t\ttask.Flux = monthlyTaskScript\n\t\t\t_, err := sr.influxTaskApi.UpdateTask(ctx, task)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tyearlyTaskName := \"tsk-yearly-aggr\"\n\tyearlyTaskScript := sr.DownsampleScript(\"yearly\", yearlyTaskName, \"0 2 1 1 *\")\n\tif found, findErr := sr.influxTaskApi.FindTasks(ctx, &api.TaskFilter{Name: yearlyTaskName}); findErr == nil && len(found) == 0 {\n\t\t//yearly on the first day of the year at 2:00am\n\t\t_, err := sr.influxTaskApi.CreateTaskByFlux(ctx, yearlyTaskScript, orgID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t} else if len(found) == 1 {\n\t\t//check if we should update\n\t\ttask := &found[0]\n\t\tif yearlyTaskScript != task.Flux {\n\t\t\tsr.logger.Infoln(\"updating yearly task script\")\n\t\t\ttask.Flux = yearlyTaskScript\n\t\t\t_, err := sr.influxTaskApi.UpdateTask(ctx, task)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (sr *scrutinyRepository) DownsampleScript(aggregationType string, name string, cron string) string {\n\tvar sourceBucket string // the source of the data\n\tvar destBucket string   // the destination for the aggregated data\n\tvar rangeStart string\n\tvar rangeEnd string\n\tvar aggWindow string\n\tswitch aggregationType {\n\tcase \"weekly\":\n\t\tsourceBucket = sr.appConfig.GetString(\"web.influxdb.bucket\")\n\t\tdestBucket = fmt.Sprintf(\"%s_weekly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\t\trangeStart = \"-2w\"\n\t\trangeEnd = \"-1w\"\n\t\taggWindow = \"1w\"\n\tcase \"monthly\":\n\t\tsourceBucket = fmt.Sprintf(\"%s_weekly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\t\tdestBucket = fmt.Sprintf(\"%s_monthly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\t\trangeStart = \"-2mo\"\n\t\trangeEnd = \"-1mo\"\n\t\taggWindow = \"1mo\"\n\tcase \"yearly\":\n\t\tsourceBucket = fmt.Sprintf(\"%s_monthly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\t\tdestBucket = fmt.Sprintf(\"%s_yearly\", sr.appConfig.GetString(\"web.influxdb.bucket\"))\n\t\trangeStart = \"-2y\"\n\t\trangeEnd = \"-1y\"\n\t\taggWindow = \"1y\"\n\t}\n\n\t// TODO: using \"last\" function for aggregation. This should eventually be replaced with a more accurate represenation\n\t/*\n\t  import \"types\"\n\t  smart_data = from(bucket: sourceBucket)\n\t  |> range(start: rangeStart, stop: rangeEnd)\n\t  |> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n\t  |> group(columns: [\"device_wwn\", \"_field\"])\n\n\t  non_numeric_smart_data = smart_data\n\t    |> filter(fn: (r) => types.isType(v: r._value, type: \"string\") or types.isType(v: r._value, type: \"bool\"))\n\t    |> aggregateWindow(every: aggWindow, fn: last, createEmpty: false)\n\n\t  numeric_smart_data = smart_data\n\t    |> filter(fn: (r) => types.isType(v: r._value, type: \"int\") or types.isType(v: r._value, type: \"float\"))\n\t    |> aggregateWindow(every: aggWindow, fn: mean, createEmpty: false)\n\n\t  union(tables: [non_numeric_smart_data, numeric_smart_data])\n\t  |> to(bucket: destBucket, org: destOrg)\n\n\t*/\n\n\treturn fmt.Sprintf(`\noption task = { \n  name: \"%s\",\n  cron: \"%s\",\n}\n\nsourceBucket = \"%s\"\nrangeStart = %s\nrangeEnd = %s\naggWindow = %s\ndestBucket = \"%s\"\ndestOrg = \"%s\"\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n|> group(columns: [\"device_wwn\", \"_field\"])\n|> aggregateWindow(every: aggWindow, fn: last, createEmpty: false)\n|> to(bucket: destBucket, org: destOrg)\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\")\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n|> aggregateWindow(fn: mean, every: aggWindow, createEmpty: false)\n|> set(key: \"_measurement\", value: \"temp\")\n|> set(key: \"_field\", value: \"temp\")\n|> to(bucket: destBucket, org: destOrg)\n\t\t`,\n\t\tname,\n\t\tcron,\n\t\tsourceBucket,\n\t\trangeStart,\n\t\trangeEnd,\n\t\taggWindow,\n\t\tdestBucket,\n\t\tsr.appConfig.GetString(\"web.influxdb.org\"),\n\t)\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_tasks_test.go",
    "content": "package database\n\nimport (\n\t\"testing\"\n\n\tmock_config \"github.com/analogj/scrutiny/webapp/backend/pkg/config/mock\"\n\t\"github.com/stretchr/testify/require\"\n\t\"go.uber.org/mock/gomock\"\n)\n\nfunc Test_DownsampleScript_Weekly(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig: fakeConfig,\n\t}\n\n\taggregationType := \"weekly\"\n\n\t//test\n\tinfluxDbScript := deviceRepo.DownsampleScript(aggregationType, \"tsk-weekly-aggr\", \"0 1 * * 0\")\n\n\t//assert\n\trequire.Equal(t, `\noption task = { \n  name: \"tsk-weekly-aggr\",\n  cron: \"0 1 * * 0\",\n}\n\nsourceBucket = \"metrics\"\nrangeStart = -2w\nrangeEnd = -1w\naggWindow = 1w\ndestBucket = \"metrics_weekly\"\ndestOrg = \"scrutiny\"\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n|> group(columns: [\"device_wwn\", \"_field\"])\n|> aggregateWindow(every: aggWindow, fn: last, createEmpty: false)\n|> to(bucket: destBucket, org: destOrg)\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\")\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n|> aggregateWindow(fn: mean, every: aggWindow, createEmpty: false)\n|> set(key: \"_measurement\", value: \"temp\")\n|> set(key: \"_field\", value: \"temp\")\n|> to(bucket: destBucket, org: destOrg)\n\t\t`, influxDbScript)\n}\n\nfunc Test_DownsampleScript_Monthly(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig: fakeConfig,\n\t}\n\n\taggregationType := \"monthly\"\n\n\t//test\n\tinfluxDbScript := deviceRepo.DownsampleScript(aggregationType, \"tsk-monthly-aggr\", \"30 1 1 * *\")\n\n\t//assert\n\trequire.Equal(t, `\noption task = { \n  name: \"tsk-monthly-aggr\",\n  cron: \"30 1 1 * *\",\n}\n\nsourceBucket = \"metrics_weekly\"\nrangeStart = -2mo\nrangeEnd = -1mo\naggWindow = 1mo\ndestBucket = \"metrics_monthly\"\ndestOrg = \"scrutiny\"\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n|> group(columns: [\"device_wwn\", \"_field\"])\n|> aggregateWindow(every: aggWindow, fn: last, createEmpty: false)\n|> to(bucket: destBucket, org: destOrg)\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\")\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n|> aggregateWindow(fn: mean, every: aggWindow, createEmpty: false)\n|> set(key: \"_measurement\", value: \"temp\")\n|> set(key: \"_field\", value: \"temp\")\n|> to(bucket: destBucket, org: destOrg)\n\t\t`, influxDbScript)\n}\n\nfunc Test_DownsampleScript_Yearly(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig: fakeConfig,\n\t}\n\n\taggregationType := \"yearly\"\n\n\t//test\n\tinfluxDbScript := deviceRepo.DownsampleScript(aggregationType, \"tsk-yearly-aggr\", \"0 2 1 1 *\")\n\n\t//assert\n\trequire.Equal(t, `\noption task = { \n  name: \"tsk-yearly-aggr\",\n  cron: \"0 2 1 1 *\",\n}\n\nsourceBucket = \"metrics_monthly\"\nrangeStart = -2y\nrangeEnd = -1y\naggWindow = 1y\ndestBucket = \"metrics_yearly\"\ndestOrg = \"scrutiny\"\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"smart\" )\n|> group(columns: [\"device_wwn\", \"_field\"])\n|> aggregateWindow(every: aggWindow, fn: last, createEmpty: false)\n|> to(bucket: destBucket, org: destOrg)\n\nfrom(bucket: sourceBucket)\n|> range(start: rangeStart, stop: rangeEnd)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\")\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n|> aggregateWindow(fn: mean, every: aggWindow, createEmpty: false)\n|> set(key: \"_measurement\", value: \"temp\")\n|> set(key: \"_field\", value: \"temp\")\n|> to(bucket: destBucket, org: destOrg)\n\t\t`, influxDbScript)\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_temperature.go",
    "content": "package database\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\tinfluxdb2 \"github.com/influxdata/influxdb-client-go/v2\"\n)\n\n// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Temperature Data\n// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////\nfunc (sr *scrutinyRepository) SaveSmartTemperature(ctx context.Context, wwn string, deviceProtocol string, collectorSmartData collector.SmartInfo, discardSCTTempHistory bool) error {\n\tif len(collectorSmartData.AtaSctTemperatureHistory.Table) > 0 && !discardSCTTempHistory {\n\n\t\tfor ndx, temp := range collectorSmartData.AtaSctTemperatureHistory.Table {\n\t\t\t//temp value may be null, we must skip/ignore them. See #393\n\t\t\tif temp == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tintervalSec := collectorSmartData.AtaSctTemperatureHistory.LoggingIntervalMinutes * 60\n\t\t\tdatapointTime := collectorSmartData.LocalTime.TimeT - int64(ndx) * intervalSec\n\t\t\talignedDatapointTime := datapointTime - datapointTime % intervalSec\n\t\t\tsmartTemp := measurements.SmartTemperature{\n\t\t\t\tDate: time.Unix(alignedDatapointTime, 0),\n\t\t\t\tTemp: temp,\n\t\t\t}\n\n\t\t\ttags, fields := smartTemp.Flatten()\n\t\t\ttags[\"device_wwn\"] = wwn\n\t\t\tp := influxdb2.NewPoint(\"temp\",\n\t\t\t\ttags,\n\t\t\t\tfields,\n\t\t\t\tsmartTemp.Date)\n\t\t\terr := sr.influxWriteApi.WritePoint(ctx, p)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\n\t// Even if ata_sct_temperature_history is present, also add current temperature. See #824\n\tsmartTemp := measurements.SmartTemperature{\n\t\tDate: time.Unix(collectorSmartData.LocalTime.TimeT, 0),\n\t\tTemp: collectorSmartData.Temperature.Current,\n\t}\n\n\ttags, fields := smartTemp.Flatten()\n\ttags[\"device_wwn\"] = wwn\n\tp := influxdb2.NewPoint(\"temp\",\n\t\ttags,\n\t\tfields,\n\t\tsmartTemp.Date)\n\treturn sr.influxWriteApi.WritePoint(ctx, p)\n}\n\nfunc (sr *scrutinyRepository) GetSmartTemperatureHistory(ctx context.Context, durationKey string) (map[string][]measurements.SmartTemperature, error) {\n\t//we can get temp history for \"week\", \"month\", DURATION_KEY_YEAR, \"forever\"\n\n\tdeviceTempHistory := map[string][]measurements.SmartTemperature{}\n\n\t//TODO: change the query range to a variable.\n\tqueryStr := sr.aggregateTempQuery(durationKey)\n\n\tresult, err := sr.influxQueryApi.Query(ctx, queryStr)\n\tif err == nil {\n\t\t// Use Next() to iterate over query result lines\n\t\tfor result.Next() {\n\n\t\t\tif deviceWWN, ok := result.Record().Values()[\"device_wwn\"]; ok {\n\n\t\t\t\t//check if deviceWWN has been seen and initialized already\n\t\t\t\tif _, ok := deviceTempHistory[deviceWWN.(string)]; !ok {\n\t\t\t\t\tdeviceTempHistory[deviceWWN.(string)] = []measurements.SmartTemperature{}\n\t\t\t\t}\n\n\t\t\t\tcurrentTempHistory := deviceTempHistory[deviceWWN.(string)]\n\t\t\t\tsmartTemp := measurements.SmartTemperature{}\n\n\t\t\t\tfor key, val := range result.Record().Values() {\n\t\t\t\t\tsmartTemp.Inflate(key, val)\n\t\t\t\t}\n\t\t\t\tsmartTemp.Date = result.Record().Values()[\"_time\"].(time.Time)\n\t\t\t\tcurrentTempHistory = append(currentTempHistory, smartTemp)\n\t\t\t\tdeviceTempHistory[deviceWWN.(string)] = currentTempHistory\n\t\t\t}\n\t\t}\n\t\tif result.Err() != nil {\n\t\t\tfmt.Printf(\"Query error: %s\\n\", result.Err().Error())\n\t\t}\n\t} else {\n\t\treturn nil, err\n\t}\n\treturn deviceTempHistory, nil\n\n}\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// Helper Methods\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nfunc (sr *scrutinyRepository) aggregateTempQuery(durationKey string) string {\n\n\t/*\n\t\timport \"influxdata/influxdb/schema\"\n\t\tweekData = from(bucket: \"metrics\")\n\t\t  |> range(start: -1w, stop: now())\n\t\t  |> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n\t\t  |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n\t\t  |> group(columns: [\"device_wwn\"])\n\t\t  |> toInt()\n\n\t\tmonthData = from(bucket: \"metrics_weekly\")\n\t\t  |> range(start: -1mo, stop: now())\n\t\t  |> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n\t\t  |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n\t\t  |> group(columns: [\"device_wwn\"])\n\t\t  |> toInt()\n\n\t\tunion(tables: [weekData, monthData])\n\t\t  |> group(columns: [\"device_wwn\"])\n\t\t  |> sort(columns: [\"_time\"], desc: false)\n\t\t  |> schema.fieldsAsCols()\n\n\t*/\n\n\tpartialQueryStr := []string{\n\t\t`import \"influxdata/influxdb/schema\"`,\n\t}\n\n\tnestedDurationKeys := sr.lookupNestedDurationKeys(durationKey)\n\n\tsubQueryNames := []string{}\n\tfor _, nestedDurationKey := range nestedDurationKeys {\n\t\tbucketName := sr.lookupBucketName(nestedDurationKey)\n\t\tdurationRange := sr.lookupDuration(nestedDurationKey)\n\t\tdurationResolution := sr.lookupResolution(nestedDurationKey)\n\n\t\tsubQueryNames = append(subQueryNames, fmt.Sprintf(`%sData`, nestedDurationKey))\n\t\tpartialQueryStr = append(partialQueryStr, []string{\n\t\t\tfmt.Sprintf(`%sData = from(bucket: \"%s\")`, nestedDurationKey, bucketName),\n\t\t\tfmt.Sprintf(`|> range(start: %s, stop: %s)`, durationRange[0], durationRange[1]),\n\t\t\t`|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )`,\n\t\t\tfmt.Sprintf(`|> aggregateWindow(every: %s, fn: mean, createEmpty: false)`, durationResolution),\n\t\t\t`|> group(columns: [\"device_wwn\"])`,\n\t\t\t`|> toInt()`,\n\t\t\t\"\",\n\t\t}...)\n\t}\n\n\tif len(subQueryNames) == 1 {\n\t\t//there's only one bucket being queried, no need to union, just aggregate the dataset and return\n\t\tpartialQueryStr = append(partialQueryStr, []string{\n\t\t\tsubQueryNames[0],\n\t\t\t\"|> schema.fieldsAsCols()\",\n\t\t\t\"|> yield()\",\n\t\t}...)\n\t} else {\n\t\tpartialQueryStr = append(partialQueryStr, []string{\n\t\t\tfmt.Sprintf(\"union(tables: [%s])\", strings.Join(subQueryNames, \", \")),\n\t\t\t`|> group(columns: [\"device_wwn\"])`,\n\t\t\t`|> sort(columns: [\"_time\"], desc: false)`,\n\t\t\t\"|> schema.fieldsAsCols()\",\n\t\t}...)\n\t}\n\n\treturn strings.Join(partialQueryStr, \"\\n\")\n}\n"
  },
  {
    "path": "webapp/backend/pkg/database/scrutiny_repository_temperature_test.go",
    "content": "package database\n\nimport (\n\t\"testing\"\n\n\tmock_config \"github.com/analogj/scrutiny/webapp/backend/pkg/config/mock\"\n\t\"github.com/stretchr/testify/require\"\n\t\"go.uber.org/mock/gomock\"\n)\n\nfunc Test_aggregateTempQuery_Week(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig: fakeConfig,\n\t}\n\n\taggregationType := DURATION_KEY_WEEK\n\n\t//test\n\tinfluxDbScript := deviceRepo.aggregateTempQuery(aggregationType)\n\n\t//assert\n\trequire.Equal(t, `import \"influxdata/influxdb/schema\"\nweekData = from(bucket: \"metrics\")\n|> range(start: -1w, stop: now())\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nweekData\n|> schema.fieldsAsCols()\n|> yield()`, influxDbScript)\n}\n\nfunc Test_aggregateTempQuery_Month(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig: fakeConfig,\n\t}\n\n\taggregationType := DURATION_KEY_MONTH\n\n\t//test\n\tinfluxDbScript := deviceRepo.aggregateTempQuery(aggregationType)\n\n\t//assert\n\trequire.Equal(t, `import \"influxdata/influxdb/schema\"\nweekData = from(bucket: \"metrics\")\n|> range(start: -1w, stop: now())\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nmonthData = from(bucket: \"metrics_weekly\")\n|> range(start: -1mo, stop: -1w)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nunion(tables: [weekData, monthData])\n|> group(columns: [\"device_wwn\"])\n|> sort(columns: [\"_time\"], desc: false)\n|> schema.fieldsAsCols()`, influxDbScript)\n}\n\nfunc Test_aggregateTempQuery_Year(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig: fakeConfig,\n\t}\n\n\taggregationType := DURATION_KEY_YEAR\n\n\t//test\n\tinfluxDbScript := deviceRepo.aggregateTempQuery(aggregationType)\n\n\t//assert\n\trequire.Equal(t, `import \"influxdata/influxdb/schema\"\nweekData = from(bucket: \"metrics\")\n|> range(start: -1w, stop: now())\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nmonthData = from(bucket: \"metrics_weekly\")\n|> range(start: -1mo, stop: -1w)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nyearData = from(bucket: \"metrics_monthly\")\n|> range(start: -1y, stop: -1mo)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nunion(tables: [weekData, monthData, yearData])\n|> group(columns: [\"device_wwn\"])\n|> sort(columns: [\"_time\"], desc: false)\n|> schema.fieldsAsCols()`, influxDbScript)\n}\n\nfunc Test_aggregateTempQuery_Forever(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tmockCtrl := gomock.NewController(t)\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\n\tdeviceRepo := scrutinyRepository{\n\t\tappConfig: fakeConfig,\n\t}\n\n\taggregationType := DURATION_KEY_FOREVER\n\n\t//test\n\tinfluxDbScript := deviceRepo.aggregateTempQuery(aggregationType)\n\n\t//assert\n\trequire.Equal(t, `import \"influxdata/influxdb/schema\"\nweekData = from(bucket: \"metrics\")\n|> range(start: -1w, stop: now())\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nmonthData = from(bucket: \"metrics_weekly\")\n|> range(start: -1mo, stop: -1w)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nyearData = from(bucket: \"metrics_monthly\")\n|> range(start: -1y, stop: -1mo)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nforeverData = from(bucket: \"metrics_yearly\")\n|> range(start: -10y, stop: -1y)\n|> filter(fn: (r) => r[\"_measurement\"] == \"temp\" )\n|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)\n|> group(columns: [\"device_wwn\"])\n|> toInt()\n\nunion(tables: [weekData, monthData, yearData, foreverData])\n|> group(columns: [\"device_wwn\"])\n|> sort(columns: [\"_time\"], desc: false)\n|> schema.fieldsAsCols()`, influxDbScript)\n}\n"
  },
  {
    "path": "webapp/backend/pkg/errors/errors.go",
    "content": "package errors\n\nimport (\n\t\"fmt\"\n)\n\n// Raised when config file is missing\ntype ConfigFileMissingError string\n\nfunc (str ConfigFileMissingError) Error() string {\n\treturn fmt.Sprintf(\"ConfigFileMissingError: %q\", string(str))\n}\n\n// Raised when the config file doesnt match schema\ntype ConfigValidationError string\n\nfunc (str ConfigValidationError) Error() string {\n\treturn fmt.Sprintf(\"ConfigValidationError: %q\", string(str))\n}\n\n// Raised when a dependency (like smartd or ssh-agent) is missing\ntype DependencyMissingError string\n\nfunc (str DependencyMissingError) Error() string {\n\treturn fmt.Sprintf(\"DependencyMissingError: %q\", string(str))\n}\n\n// Raised when the notification system is incorrectly configured\ntype NotificationValidationError string\n\nfunc (str NotificationValidationError) Error() string {\n\treturn fmt.Sprintf(\"NotificationValidationError: %q\", string(str))\n}\n"
  },
  {
    "path": "webapp/backend/pkg/errors/errors_test.go",
    "content": "package errors_test\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/errors\"\n\t\"github.com/stretchr/testify/require\"\n\t\"testing\"\n)\n\n//func TestCheckErr_WithoutError(t *testing.T) {\n//\tt.Parallel()\n//\n//\t//assert\n//\trequire.NotPanics(t, func() {\n//\t\terrors.CheckErr(nil)\n//\t})\n//}\n\n//func TestCheckErr_Error(t *testing.T) {\n//\tt.Parallel()\n//\n//\t//assert\n//\trequire.Panics(t, func() {\n//\t\terrors.CheckErr(stderrors.New(\"This is an error\"))\n//\t})\n//}\n\nfunc TestErrors(t *testing.T) {\n\tt.Parallel()\n\n\t//assert\n\trequire.Implements(t, (*error)(nil), errors.ConfigFileMissingError(\"test\"), \"should implement the error interface\")\n\trequire.Implements(t, (*error)(nil), errors.ConfigValidationError(\"test\"), \"should implement the error interface\")\n\trequire.Implements(t, (*error)(nil), errors.DependencyMissingError(\"test\"), \"should implement the error interface\")\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/collector/smart.go",
    "content": "package collector\n\ntype SmartInfo struct {\n\tJSONFormatVersion []int `json:\"json_format_version\"`\n\tSmartctl          struct {\n\t\tVersion      []int    `json:\"version\"`\n\t\tSvnRevision  string   `json:\"svn_revision\"`\n\t\tPlatformInfo string   `json:\"platform_info\"`\n\t\tBuildInfo    string   `json:\"build_info\"`\n\t\tArgv         []string `json:\"argv\"`\n\t\tExitStatus   int      `json:\"exit_status\"`\n\t\tMessages     []struct {\n\t\t\tString   string `json:\"string\"`\n\t\t\tSeverity string `json:\"severity\"`\n\t\t} `json:\"messages\"`\n\t} `json:\"smartctl\"`\n\tDevice struct {\n\t\tName     string `json:\"name\"`\n\t\tInfoName string `json:\"info_name\"`\n\t\tType     string `json:\"type\"`\n\t\tProtocol string `json:\"protocol\"`\n\t} `json:\"device\"`\n\tModelName    string `json:\"model_name\"`\n\tSerialNumber string `json:\"serial_number\"`\n\tWwn          struct {\n\t\tNaa uint64 `json:\"naa\"`\n\t\tOui uint64 `json:\"oui\"`\n\t\tID  uint64 `json:\"id\"`\n\t} `json:\"wwn\"`\n\tFirmwareVersion   string       `json:\"firmware_version\"`\n\tUserCapacity      UserCapacity `json:\"user_capacity\"`\n\tLogicalBlockSize  int          `json:\"logical_block_size\"`\n\tPhysicalBlockSize int          `json:\"physical_block_size\"`\n\tRotationRate      int          `json:\"rotation_rate\"`\n\tFormFactor        struct {\n\t\tAtaValue int    `json:\"ata_value\"`\n\t\tName     string `json:\"name\"`\n\t} `json:\"form_factor\"`\n\tInSmartctlDatabase bool `json:\"in_smartctl_database\"`\n\tAtaVersion         struct {\n\t\tString     string `json:\"string\"`\n\t\tMajorValue int    `json:\"major_value\"`\n\t\tMinorValue int    `json:\"minor_value\"`\n\t} `json:\"ata_version\"`\n\tSataVersion struct {\n\t\tString string `json:\"string\"`\n\t\tValue  int    `json:\"value\"`\n\t} `json:\"sata_version\"`\n\tInterfaceSpeed struct {\n\t\tMax struct {\n\t\t\tSataValue      int    `json:\"sata_value\"`\n\t\t\tString         string `json:\"string\"`\n\t\t\tUnitsPerSecond int    `json:\"units_per_second\"`\n\t\t\tBitsPerUnit    int    `json:\"bits_per_unit\"`\n\t\t} `json:\"max\"`\n\t\tCurrent struct {\n\t\t\tSataValue      int    `json:\"sata_value\"`\n\t\t\tString         string `json:\"string\"`\n\t\t\tUnitsPerSecond int    `json:\"units_per_second\"`\n\t\t\tBitsPerUnit    int    `json:\"bits_per_unit\"`\n\t\t} `json:\"current\"`\n\t} `json:\"interface_speed\"`\n\tLocalTime struct {\n\t\tTimeT   int64  `json:\"time_t\"`\n\t\tAsctime string `json:\"asctime\"`\n\t} `json:\"local_time\"`\n\tSmartStatus struct {\n\t\tPassed bool `json:\"passed\"`\n\t} `json:\"smart_status\"`\n\n\tPowerOnTime struct {\n\t\tHours int64 `json:\"hours\"`\n\t} `json:\"power_on_time\"`\n\tPowerCycleCount int64 `json:\"power_cycle_count\"`\n\tTemperature     struct {\n\t\tCurrent int64 `json:\"current\"`\n\t} `json:\"temperature\"`\n\n\t// ATA Protocol Specific Fields\n\tAtaSmartData struct {\n\t\tOfflineDataCollection struct {\n\t\t\tStatus struct {\n\t\t\t\tValue  int    `json:\"value\"`\n\t\t\t\tString string `json:\"string\"`\n\t\t\t\tPassed bool   `json:\"passed\"`\n\t\t\t} `json:\"status\"`\n\t\t\tCompletionSeconds int `json:\"completion_seconds\"`\n\t\t} `json:\"offline_data_collection\"`\n\t\tSelfTest struct {\n\t\t\tStatus struct {\n\t\t\t\tValue            int    `json:\"value\"`\n\t\t\t\tString           string `json:\"string\"`\n\t\t\t\tRemainingPercent int    `json:\"remaining_percent\"`\n\t\t\t} `json:\"status\"`\n\t\t\tPollingMinutes struct {\n\t\t\t\tShort    int `json:\"short\"`\n\t\t\t\tExtended int `json:\"extended\"`\n\t\t\t} `json:\"polling_minutes\"`\n\t\t} `json:\"self_test\"`\n\t\tCapabilities struct {\n\t\t\tValues                        []int `json:\"values\"`\n\t\t\tExecOfflineImmediateSupported bool  `json:\"exec_offline_immediate_supported\"`\n\t\t\tOfflineIsAbortedUponNewCmd    bool  `json:\"offline_is_aborted_upon_new_cmd\"`\n\t\t\tOfflineSurfaceScanSupported   bool  `json:\"offline_surface_scan_supported\"`\n\t\t\tSelfTestsSupported            bool  `json:\"self_tests_supported\"`\n\t\t\tConveyanceSelfTestSupported   bool  `json:\"conveyance_self_test_supported\"`\n\t\t\tSelectiveSelfTestSupported    bool  `json:\"selective_self_test_supported\"`\n\t\t\tAttributeAutosaveEnabled      bool  `json:\"attribute_autosave_enabled\"`\n\t\t\tErrorLoggingSupported         bool  `json:\"error_logging_supported\"`\n\t\t\tGpLoggingSupported            bool  `json:\"gp_logging_supported\"`\n\t\t} `json:\"capabilities\"`\n\t} `json:\"ata_smart_data\"`\n\tAtaSctCapabilities struct {\n\t\tValue                         int  `json:\"value\"`\n\t\tErrorRecoveryControlSupported bool `json:\"error_recovery_control_supported\"`\n\t\tFeatureControlSupported       bool `json:\"feature_control_supported\"`\n\t\tDataTableSupported            bool `json:\"data_table_supported\"`\n\t} `json:\"ata_sct_capabilities\"`\n\tAtaSctTemperatureHistory struct {\n\t\tVersion                int   `json:\"version\"`\n\t\tSamplingPeriodMinutes  int64 `json:\"sampling_period_minutes\"`\n\t\tLoggingIntervalMinutes int64 `json:\"logging_interval_minutes\"`\n\t\tTemperature            struct {\n\t\t\tOpLimitMin int `json:\"op_limit_min\"`\n\t\t\tOpLimitMax int `json:\"op_limit_max\"`\n\t\t\tLimitMin   int `json:\"limit_min\"`\n\t\t\tLimitMax   int `json:\"limit_max\"`\n\t\t} `json:\"temperature\"`\n\t\tSize  int     `json:\"size\"`\n\t\tIndex int     `json:\"index\"`\n\t\tTable []int64 `json:\"table\"`\n\t} `json:\"ata_sct_temperature_history\"`\n\tAtaSmartAttributes struct {\n\t\tRevision int                           `json:\"revision\"`\n\t\tTable    []AtaSmartAttributesTableItem `json:\"table\"`\n\t} `json:\"ata_smart_attributes\"`\n\tAtaSmartErrorLog struct {\n\t\tSummary struct {\n\t\t\tRevision    int `json:\"revision\"`\n\t\t\tCount       int `json:\"count\"`\n\t\t\tLoggedCount int `json:\"logged_count\"`\n\t\t\tTable       []struct {\n\t\t\t\tErrorNumber         int `json:\"error_number\"`\n\t\t\t\tLifetimeHours       int `json:\"lifetime_hours\"`\n\t\t\t\tCompletionRegisters struct {\n\t\t\t\t\tError  int    `json:\"error\"`\n\t\t\t\t\tStatus int    `json:\"status\"`\n\t\t\t\t\tCount  int    `json:\"count\"`\n\t\t\t\t\tLba    uint64 `json:\"lba\"`\n\t\t\t\t\tDevice int    `json:\"device\"`\n\t\t\t\t} `json:\"completion_registers\"`\n\t\t\t\tErrorDescription string `json:\"error_description\"`\n\t\t\t\tPreviousCommands []struct {\n\t\t\t\t\tRegisters struct {\n\t\t\t\t\t\tCommand       int    `json:\"command\"`\n\t\t\t\t\t\tFeatures      int    `json:\"features\"`\n\t\t\t\t\t\tCount         int    `json:\"count\"`\n\t\t\t\t\t\tLba           uint64 `json:\"lba\"`\n\t\t\t\t\t\tDevice        int    `json:\"device\"`\n\t\t\t\t\t\tDeviceControl int    `json:\"device_control\"`\n\t\t\t\t\t} `json:\"registers\"`\n\t\t\t\t\tPowerupMilliseconds int    `json:\"powerup_milliseconds\"`\n\t\t\t\t\tCommandName         string `json:\"command_name\"`\n\t\t\t\t} `json:\"previous_commands\"`\n\t\t\t} `json:\"table\"`\n\t\t} `json:\"summary\"`\n\t} `json:\"ata_smart_error_log\"`\n\tAtaSmartSelfTestLog struct {\n\t\tStandard struct {\n\t\t\tRevision int `json:\"revision\"`\n\t\t\tTable    []struct {\n\t\t\t\tType struct {\n\t\t\t\t\tValue  int    `json:\"value\"`\n\t\t\t\t\tString string `json:\"string\"`\n\t\t\t\t} `json:\"type\"`\n\t\t\t\tStatus struct {\n\t\t\t\t\tValue  int    `json:\"value\"`\n\t\t\t\t\tString string `json:\"string\"`\n\t\t\t\t\tPassed bool   `json:\"passed\"`\n\t\t\t\t} `json:\"status\"`\n\t\t\t\tLifetimeHours int `json:\"lifetime_hours\"`\n\t\t\t} `json:\"table\"`\n\t\t\tCount              int `json:\"count\"`\n\t\t\tErrorCountTotal    int `json:\"error_count_total\"`\n\t\t\tErrorCountOutdated int `json:\"error_count_outdated\"`\n\t\t} `json:\"standard\"`\n\t} `json:\"ata_smart_self_test_log\"`\n\tAtaSmartSelectiveSelfTestLog struct {\n\t\tRevision int `json:\"revision\"`\n\t\tTable    []struct {\n\t\t\tLbaMin uint64 `json:\"lba_min\"`\n\t\t\tLbaMax uint64 `json:\"lba_max\"`\n\t\t\tStatus struct {\n\t\t\t\tValue  int    `json:\"value\"`\n\t\t\t\tString string `json:\"string\"`\n\t\t\t} `json:\"status\"`\n\t\t} `json:\"table\"`\n\t\tFlags struct {\n\t\t\tValue                int  `json:\"value\"`\n\t\t\tRemainderScanEnabled bool `json:\"remainder_scan_enabled\"`\n\t\t} `json:\"flags\"`\n\t\tPowerUpScanResumeMinutes int `json:\"power_up_scan_resume_minutes\"`\n\t} `json:\"ata_smart_selective_self_test_log\"`\n\n\t// NVME Protocol Specific Fields\n\tNvmePciVendor struct {\n\t\tID          int `json:\"id\"`\n\t\tSubsystemID int `json:\"subsystem_id\"`\n\t} `json:\"nvme_pci_vendor\"`\n\tNvmeIeeeOuiIdentifier  int   `json:\"nvme_ieee_oui_identifier\"`\n\tNvmeTotalCapacity      int64 `json:\"nvme_total_capacity\"`\n\tNvmeControllerID       int   `json:\"nvme_controller_id\"`\n\tNvmeNumberOfNamespaces int   `json:\"nvme_number_of_namespaces\"`\n\tNvmeNamespaces         []struct {\n\t\tID   int `json:\"id\"`\n\t\tSize struct {\n\t\t\tBlocks int   `json:\"blocks\"`\n\t\t\tBytes  int64 `json:\"bytes\"`\n\t\t} `json:\"size\"`\n\t\tCapacity struct {\n\t\t\tBlocks int   `json:\"blocks\"`\n\t\t\tBytes  int64 `json:\"bytes\"`\n\t\t} `json:\"capacity\"`\n\t\tUtilization struct {\n\t\t\tBlocks int   `json:\"blocks\"`\n\t\t\tBytes  int64 `json:\"bytes\"`\n\t\t} `json:\"utilization\"`\n\t\tFormattedLbaSize int `json:\"formatted_lba_size\"`\n\t} `json:\"nvme_namespaces\"`\n\tNvmeSmartHealthInformationLog NvmeSmartHealthInformationLog `json:\"nvme_smart_health_information_log\"`\n\n\t// SCSI Protocol Specific Fields\n\tVendor              string              `json:\"vendor\"`\n\tProduct             string              `json:\"product\"`\n\tScsiVersion         string              `json:\"scsi_version\"`\n\tScsiGrownDefectList int64               `json:\"scsi_grown_defect_list\"`\n\tScsiErrorCounterLog ScsiErrorCounterLog `json:\"scsi_error_counter_log\"`\n}\n\n// Capacity finds the total capacity of the device in bytes, or 0 if unknown.\nfunc (s *SmartInfo) Capacity() int64 {\n\tswitch {\n\tcase s.NvmeTotalCapacity > 0:\n\t\treturn s.NvmeTotalCapacity\n\tcase s.UserCapacity.Bytes > 0:\n\t\treturn s.UserCapacity.Bytes\n\t}\n\treturn 0\n}\n\ntype UserCapacity struct {\n\tBlocks int64 `json:\"blocks\"`\n\tBytes  int64 `json:\"bytes\"`\n}\n\n// Primary Attribute Structs\ntype AtaSmartAttributesTableItem struct {\n\tID         int    `json:\"id\"`\n\tName       string `json:\"name\"`\n\tValue      int64  `json:\"value\"`\n\tWorst      int64  `json:\"worst\"`\n\tThresh     int64  `json:\"thresh\"`\n\tWhenFailed string `json:\"when_failed\"`\n\tFlags      struct {\n\t\tValue         int    `json:\"value\"`\n\t\tString        string `json:\"string\"`\n\t\tPrefailure    bool   `json:\"prefailure\"`\n\t\tUpdatedOnline bool   `json:\"updated_online\"`\n\t\tPerformance   bool   `json:\"performance\"`\n\t\tErrorRate     bool   `json:\"error_rate\"`\n\t\tEventCount    bool   `json:\"event_count\"`\n\t\tAutoKeep      bool   `json:\"auto_keep\"`\n\t} `json:\"flags\"`\n\tRaw struct {\n\t\tValue  int64  `json:\"value\"`\n\t\tString string `json:\"string\"`\n\t} `json:\"raw\"`\n}\n\ntype NvmeSmartHealthInformationLog struct {\n\tCriticalWarning         int64 `json:\"critical_warning\"`\n\tTemperature             int64 `json:\"temperature\"`\n\tAvailableSpare          int64 `json:\"available_spare\"`\n\tAvailableSpareThreshold int64 `json:\"available_spare_threshold\"`\n\tPercentageUsed          int64 `json:\"percentage_used\"`\n\tDataUnitsRead           int64 `json:\"data_units_read\"`\n\tDataUnitsWritten        int64 `json:\"data_units_written\"`\n\tHostReads               int64 `json:\"host_reads\"`\n\tHostWrites              int64 `json:\"host_writes\"`\n\tControllerBusyTime      int64 `json:\"controller_busy_time\"`\n\tPowerCycles             int64 `json:\"power_cycles\"`\n\tPowerOnHours            int64 `json:\"power_on_hours\"`\n\tUnsafeShutdowns         int64 `json:\"unsafe_shutdowns\"`\n\tMediaErrors             int64 `json:\"media_errors\"`\n\tNumErrLogEntries        int64 `json:\"num_err_log_entries\"`\n\tWarningTempTime         int64 `json:\"warning_temp_time\"`\n\tCriticalCompTime        int64 `json:\"critical_comp_time\"`\n}\n\ntype ScsiErrorCounterLog struct {\n\tRead struct {\n\t\tErrorsCorrectedByEccfast         int64  `json:\"errors_corrected_by_eccfast\"`\n\t\tErrorsCorrectedByEccdelayed      int64  `json:\"errors_corrected_by_eccdelayed\"`\n\t\tErrorsCorrectedByRereadsRewrites int64  `json:\"errors_corrected_by_rereads_rewrites\"`\n\t\tTotalErrorsCorrected             int64  `json:\"total_errors_corrected\"`\n\t\tCorrectionAlgorithmInvocations   int64  `json:\"correction_algorithm_invocations\"`\n\t\tGigabytesProcessed               string `json:\"gigabytes_processed\"`\n\t\tTotalUncorrectedErrors           int64  `json:\"total_uncorrected_errors\"`\n\t} `json:\"read\"`\n\tWrite struct {\n\t\tErrorsCorrectedByEccfast         int64  `json:\"errors_corrected_by_eccfast\"`\n\t\tErrorsCorrectedByEccdelayed      int64  `json:\"errors_corrected_by_eccdelayed\"`\n\t\tErrorsCorrectedByRereadsRewrites int64  `json:\"errors_corrected_by_rereads_rewrites\"`\n\t\tTotalErrorsCorrected             int64  `json:\"total_errors_corrected\"`\n\t\tCorrectionAlgorithmInvocations   int64  `json:\"correction_algorithm_invocations\"`\n\t\tGigabytesProcessed               string `json:\"gigabytes_processed\"`\n\t\tTotalUncorrectedErrors           int64  `json:\"total_uncorrected_errors\"`\n\t} `json:\"write\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/collector/smart_test.go",
    "content": "package collector\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestSmartInfo_Capacity(t *testing.T) {\n\tt.Run(\"should report nvme capacity\", func(t *testing.T) {\n\t\tsmartInfo := SmartInfo{\n\t\t\tUserCapacity: UserCapacity{\n\t\t\t\tBytes: 1234,\n\t\t\t},\n\t\t\tNvmeTotalCapacity: 5678,\n\t\t}\n\t\tassert.Equal(t, int64(5678), smartInfo.Capacity())\n\t})\n\n\tt.Run(\"should report user capacity\", func(t *testing.T) {\n\t\tsmartInfo := SmartInfo{\n\t\t\tUserCapacity: UserCapacity{\n\t\t\t\tBytes: 1234,\n\t\t\t},\n\t\t}\n\t\tassert.Equal(t, int64(1234), smartInfo.Capacity())\n\t})\n\n\tt.Run(\"should report 0 for unknown capacities\", func(t *testing.T) {\n\t\tvar smartInfo SmartInfo\n\t\tassert.Zero(t, smartInfo.Capacity())\n\t})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/device.go",
    "content": "package models\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"time\"\n)\n\ntype DeviceWrapper struct {\n\tSuccess bool     `json:\"success\"`\n\tErrors  []error  `json:\"errors\"`\n\tData    []Device `json:\"data\"`\n}\n\ntype Device struct {\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tArchived  bool `json:\"archived\"`\n\tCreatedAt time.Time\n\tUpdatedAt time.Time\n\tDeletedAt *time.Time\n\n\tWWN string `json:\"wwn\" gorm:\"primary_key\"`\n\n\tDeviceName     string `json:\"device_name\"`\n\tDeviceUUID     string `json:\"device_uuid\"`\n\tDeviceSerialID string `json:\"device_serial_id\"`\n\tDeviceLabel    string `json:\"device_label\"`\n\n\tManufacturer   string `json:\"manufacturer\"`\n\tModelName      string `json:\"model_name\"`\n\tInterfaceType  string `json:\"interface_type\"`\n\tInterfaceSpeed string `json:\"interface_speed\"`\n\tSerialNumber   string `json:\"serial_number\"`\n\tFirmware       string `json:\"firmware\"`\n\tRotationSpeed  int    `json:\"rotational_speed\"`\n\tCapacity       int64  `json:\"capacity\"`\n\tFormFactor     string `json:\"form_factor\"`\n\tSmartSupport   bool   `json:\"smart_support\"`\n\tDeviceProtocol string `json:\"device_protocol\"` //protocol determines which smart attribute types are available (ATA, NVMe, SCSI)\n\tDeviceType     string `json:\"device_type\"`     //device type is used for querying with -d/t flag, should only be used by collector.\n\n\t// User provided metadata\n\tLabel  string `json:\"label\"`\n\tHostId string `json:\"host_id\"`\n\n\t// Data set by Scrutiny\n\tDeviceStatus pkg.DeviceStatus `json:\"device_status\"`\n}\n\nfunc (dv *Device) IsAta() bool {\n\treturn dv.DeviceProtocol == pkg.DeviceProtocolAta\n}\n\nfunc (dv *Device) IsScsi() bool {\n\treturn dv.DeviceProtocol == pkg.DeviceProtocolScsi\n}\n\nfunc (dv *Device) IsNvme() bool {\n\treturn dv.DeviceProtocol == pkg.DeviceProtocolNvme\n}\n\n//\n////This method requires a device with an array of SmartResults.\n////It will remove all SmartResults other than the first (the latest one)\n////All removed SmartResults, will be processed, grouping SmartAtaAttribute by attribute_id\n//// and adding theme to an array called History.\n//func (dv *Device) SquashHistory() error {\n//\tif len(dv.SmartResults) <= 1 {\n//\t\treturn nil //no ataHistory found. ignore\n//\t}\n//\n//\tlatestSmartResultSlice := dv.SmartResults[0:1]\n//\thistoricalSmartResultSlice := dv.SmartResults[1:]\n//\n//\t//re-assign the latest slice to the SmartResults field\n//\tdv.SmartResults = latestSmartResultSlice\n//\n//\t//process the historical slice for ATA data\n//\tif len(dv.SmartResults[0].AtaAttributes) > 0 {\n//\t\tataHistory := map[int][]SmartAtaAttribute{}\n//\t\tfor _, smartResult := range historicalSmartResultSlice {\n//\t\t\tfor _, smartAttribute := range smartResult.AtaAttributes {\n//\t\t\t\tif _, ok := ataHistory[smartAttribute.AttributeId]; !ok {\n//\t\t\t\t\tataHistory[smartAttribute.AttributeId] = []SmartAtaAttribute{}\n//\t\t\t\t}\n//\t\t\t\tataHistory[smartAttribute.AttributeId] = append(ataHistory[smartAttribute.AttributeId], smartAttribute)\n//\t\t\t}\n//\t\t}\n//\n//\t\t//now assign the historical slices to the AtaAttributes in the latest SmartResults\n//\t\tfor sandx, smartAttribute := range dv.SmartResults[0].AtaAttributes {\n//\t\t\tif attributeHistory, ok := ataHistory[smartAttribute.AttributeId]; ok {\n//\t\t\t\tdv.SmartResults[0].AtaAttributes[sandx].History = attributeHistory\n//\t\t\t}\n//\t\t}\n//\t}\n//\n//\t//process the historical slice for Nvme data\n//\tif len(dv.SmartResults[0].NvmeAttributes) > 0 {\n//\t\tnvmeHistory := map[string][]SmartNvmeAttribute{}\n//\t\tfor _, smartResult := range historicalSmartResultSlice {\n//\t\t\tfor _, smartAttribute := range smartResult.NvmeAttributes {\n//\t\t\t\tif _, ok := nvmeHistory[smartAttribute.AttributeId]; !ok {\n//\t\t\t\t\tnvmeHistory[smartAttribute.AttributeId] = []SmartNvmeAttribute{}\n//\t\t\t\t}\n//\t\t\t\tnvmeHistory[smartAttribute.AttributeId] = append(nvmeHistory[smartAttribute.AttributeId], smartAttribute)\n//\t\t\t}\n//\t\t}\n//\n//\t\t//now assign the historical slices to the AtaAttributes in the latest SmartResults\n//\t\tfor sandx, smartAttribute := range dv.SmartResults[0].NvmeAttributes {\n//\t\t\tif attributeHistory, ok := nvmeHistory[smartAttribute.AttributeId]; ok {\n//\t\t\t\tdv.SmartResults[0].NvmeAttributes[sandx].History = attributeHistory\n//\t\t\t}\n//\t\t}\n//\t}\n//\t//process the historical slice for Scsi data\n//\tif len(dv.SmartResults[0].ScsiAttributes) > 0 {\n//\t\tscsiHistory := map[string][]SmartScsiAttribute{}\n//\t\tfor _, smartResult := range historicalSmartResultSlice {\n//\t\t\tfor _, smartAttribute := range smartResult.ScsiAttributes {\n//\t\t\t\tif _, ok := scsiHistory[smartAttribute.AttributeId]; !ok {\n//\t\t\t\t\tscsiHistory[smartAttribute.AttributeId] = []SmartScsiAttribute{}\n//\t\t\t\t}\n//\t\t\t\tscsiHistory[smartAttribute.AttributeId] = append(scsiHistory[smartAttribute.AttributeId], smartAttribute)\n//\t\t\t}\n//\t\t}\n//\n//\t\t//now assign the historical slices to the AtaAttributes in the latest SmartResults\n//\t\tfor sandx, smartAttribute := range dv.SmartResults[0].ScsiAttributes {\n//\t\t\tif attributeHistory, ok := scsiHistory[smartAttribute.AttributeId]; ok {\n//\t\t\t\tdv.SmartResults[0].ScsiAttributes[sandx].History = attributeHistory\n//\t\t\t}\n//\t\t}\n//\t}\n//\treturn nil\n//}\n//\n//func (dv *Device) ApplyMetadataRules() error {\n//\n//\t//embed metadata in the latest smart attributes object\n//\tif len(dv.SmartResults) > 0 {\n//\t\tfor ndx, attr := range dv.SmartResults[0].AtaAttributes {\n//\t\t\tattr.PopulateAttributeStatus()\n//\t\t\tdv.SmartResults[0].AtaAttributes[ndx] = attr\n//\t\t}\n//\n//\t\tfor ndx, attr := range dv.SmartResults[0].NvmeAttributes {\n//\t\t\tattr.PopulateAttributeStatus()\n//\t\t\tdv.SmartResults[0].NvmeAttributes[ndx] = attr\n//\n//\t\t}\n//\n//\t\tfor ndx, attr := range dv.SmartResults[0].ScsiAttributes {\n//\t\t\tattr.PopulateAttributeStatus()\n//\t\t\tdv.SmartResults[0].ScsiAttributes[ndx] = attr\n//\n//\t\t}\n//\t}\n//\treturn nil\n//}\n\n// This function is called every time the collector sends SMART data to the API.\n// It can be used to update device data that can change over time.\nfunc (dv *Device) UpdateFromCollectorSmartInfo(info collector.SmartInfo) error {\n\tdv.Firmware = info.FirmwareVersion\n\tdv.DeviceProtocol = info.Device.Protocol\n\n\tif !info.SmartStatus.Passed {\n\t\tdv.DeviceStatus = pkg.DeviceStatusSet(dv.DeviceStatus, pkg.DeviceStatusFailedSmart)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/device_summary.go",
    "content": "package models\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\t\"time\"\n)\n\ntype DeviceSummaryWrapper struct {\n\tSuccess bool    `json:\"success\"`\n\tErrors  []error `json:\"errors\"`\n\tData    struct {\n\t\tSummary map[string]*DeviceSummary `json:\"summary\"`\n\t} `json:\"data\"`\n}\n\ntype DeviceSummary struct {\n\tDevice Device `json:\"device\"`\n\n\tSmartResults *SmartSummary                   `json:\"smart,omitempty\"`\n\tTempHistory  []measurements.SmartTemperature `json:\"temp_history,omitempty\"`\n}\ntype SmartSummary struct {\n\t// Collector Summary Data\n\tCollectorDate time.Time `json:\"collector_date,omitempty\"`\n\tTemp          int64     `json:\"temp,omitempty\"`\n\tPowerOnHours  int64     `json:\"power_on_hours,omitempty\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/measurements/smart.go",
    "content": "package measurements\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/thresholds\"\n)\n\ntype Smart struct {\n\tDate           time.Time `json:\"date\"`\n\tDeviceWWN      string    `json:\"device_wwn\"` //(tag)\n\tDeviceProtocol string    `json:\"device_protocol\"`\n\n\t//Metrics (fields)\n\tTemp            int64 `json:\"temp\"`\n\tPowerOnHours    int64 `json:\"power_on_hours\"`\n\tPowerCycleCount int64 `json:\"power_cycle_count\"`\n\n\t//Attributes (fields)\n\tAttributes map[string]SmartAttribute `json:\"attrs\"`\n\n\t//status\n\tStatus pkg.DeviceStatus\n}\n\nfunc (sm *Smart) Flatten() (tags map[string]string, fields map[string]interface{}) {\n\ttags = map[string]string{\n\t\t\"device_wwn\":      sm.DeviceWWN,\n\t\t\"device_protocol\": sm.DeviceProtocol,\n\t}\n\n\tfields = map[string]interface{}{\n\t\t\"temp\":              sm.Temp,\n\t\t\"power_on_hours\":    sm.PowerOnHours,\n\t\t\"power_cycle_count\": sm.PowerCycleCount,\n\t}\n\n\tfor _, attr := range sm.Attributes {\n\t\tfor attrKey, attrVal := range attr.Flatten() {\n\t\t\tfields[attrKey] = attrVal\n\t\t}\n\t}\n\n\treturn tags, fields\n}\n\nfunc NewSmartFromInfluxDB(attrs map[string]interface{}) (*Smart, error) {\n\t//go though the massive map returned from influxdb. If a key is associated with the Smart struct, assign it. If it starts with \"attr.*\" group it by attributeId, and pass to attribute inflate.\n\n\tsm := Smart{\n\t\t//required fields\n\t\tDate:           attrs[\"_time\"].(time.Time),\n\t\tDeviceWWN:      attrs[\"device_wwn\"].(string),\n\t\tDeviceProtocol: attrs[\"device_protocol\"].(string),\n\n\t\tAttributes: map[string]SmartAttribute{},\n\t}\n\n\tfor key, val := range attrs {\n\t\tswitch key {\n\t\tcase \"temp\":\n\t\t\ttemp, tempOk := val.(int64)\n\t\t\tif tempOk {\n\t\t\t\tsm.Temp = temp\n\t\t\t} else {\n\t\t\t\tlog.Printf(\"unable to parse temp information: %v\", val)\n\t\t\t}\n\n\t\tcase \"power_on_hours\":\n\t\t\tpowerOn, powerOnOk := val.(int64)\n\t\t\tif powerOnOk {\n\t\t\t\tsm.PowerOnHours = powerOn\n\t\t\t} else {\n\t\t\t\tlog.Printf(\"unable to parse power_on_hours information: %v\", val)\n\t\t\t}\n\t\tcase \"power_cycle_count\":\n\t\t\tpowerCycle, powerCycleOk := val.(int64)\n\t\t\tif powerCycleOk {\n\t\t\t\tsm.PowerCycleCount = powerCycle\n\t\t\t} else {\n\t\t\t\tlog.Printf(\"unable to parse power_cycle_count information: %v\", val)\n\t\t\t}\n\t\tdefault:\n\t\t\t// this key is unknown.\n\t\t\tif !strings.HasPrefix(key, \"attr.\") {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t//this is a attribute, lets group it with its related \"siblings\", populating a SmartAttribute object\n\t\t\tkeyParts := strings.Split(key, \".\")\n\t\t\tattributeId := keyParts[1]\n\t\t\tif _, ok := sm.Attributes[attributeId]; !ok {\n\t\t\t\t// init the attribute group\n\t\t\t\tif sm.DeviceProtocol == pkg.DeviceProtocolAta {\n\t\t\t\t\tsm.Attributes[attributeId] = &SmartAtaAttribute{}\n\t\t\t\t} else if sm.DeviceProtocol == pkg.DeviceProtocolNvme {\n\t\t\t\t\tsm.Attributes[attributeId] = &SmartNvmeAttribute{}\n\t\t\t\t} else if sm.DeviceProtocol == pkg.DeviceProtocolScsi {\n\t\t\t\t\tsm.Attributes[attributeId] = &SmartScsiAttribute{}\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, fmt.Errorf(\"unknown Device Protocol: %s\", sm.DeviceProtocol)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsm.Attributes[attributeId].Inflate(key, val)\n\t\t}\n\n\t}\n\n\tlog.Printf(\"Found Smart Device (%s) Attributes (%v)\", sm.DeviceWWN, len(sm.Attributes))\n\n\treturn &sm, nil\n}\n\n// Parse Collector SMART data results and create Smart object (and associated SmartAtaAttribute entries)\nfunc (sm *Smart) FromCollectorSmartInfo(wwn string, info collector.SmartInfo) error {\n\tsm.DeviceWWN = wwn\n\tsm.Date = time.Unix(info.LocalTime.TimeT, 0)\n\n\t//smart metrics\n\tsm.Temp = info.Temperature.Current\n\tsm.PowerCycleCount = info.PowerCycleCount\n\tsm.PowerOnHours = info.PowerOnTime.Hours\n\tif !info.SmartStatus.Passed {\n\t\tsm.Status = pkg.DeviceStatusSet(sm.Status, pkg.DeviceStatusFailedSmart)\n\t}\n\n\tsm.DeviceProtocol = info.Device.Protocol\n\t// process ATA/NVME/SCSI protocol data\n\tsm.Attributes = map[string]SmartAttribute{}\n\tif sm.DeviceProtocol == pkg.DeviceProtocolAta {\n\t\tsm.ProcessAtaSmartInfo(info.AtaSmartAttributes.Table)\n\t} else if sm.DeviceProtocol == pkg.DeviceProtocolNvme {\n\t\tsm.ProcessNvmeSmartInfo(info.NvmeSmartHealthInformationLog)\n\t} else if sm.DeviceProtocol == pkg.DeviceProtocolScsi {\n\t\tsm.ProcessScsiSmartInfo(info.ScsiGrownDefectList, info.ScsiErrorCounterLog)\n\t}\n\n\treturn nil\n}\n\n// generate SmartAtaAttribute entries from Scrutiny Collector Smart data.\nfunc (sm *Smart) ProcessAtaSmartInfo(tableItems []collector.AtaSmartAttributesTableItem) {\n\tfor _, collectorAttr := range tableItems {\n\t\tattrModel := SmartAtaAttribute{\n\t\t\tAttributeId: collectorAttr.ID,\n\t\t\tValue:       collectorAttr.Value,\n\t\t\tWorst:       collectorAttr.Worst,\n\t\t\tThreshold:   collectorAttr.Thresh,\n\t\t\tRawValue:    collectorAttr.Raw.Value,\n\t\t\tRawString:   collectorAttr.Raw.String,\n\t\t\tWhenFailed:  collectorAttr.WhenFailed,\n\t\t}\n\n\t\t//now that we've parsed the data from the smartctl response, lets match it against our metadata rules and add additional Scrutiny specific data.\n\t\tif smartMetadata, ok := thresholds.AtaMetadata[collectorAttr.ID]; ok {\n\t\t\tif smartMetadata.Transform != nil {\n\t\t\t\tattrModel.TransformedValue = smartMetadata.Transform(attrModel.Value, attrModel.RawValue, attrModel.RawString)\n\t\t\t}\n\t\t}\n\t\tattrModel.PopulateAttributeStatus()\n\t\tsm.Attributes[strconv.Itoa(collectorAttr.ID)] = &attrModel\n\n\t\tif pkg.AttributeStatusHas(attrModel.Status, pkg.AttributeStatusFailedScrutiny) {\n\t\t\tsm.Status = pkg.DeviceStatusSet(sm.Status, pkg.DeviceStatusFailedScrutiny)\n\t\t}\n\t}\n}\n\n// generate SmartNvmeAttribute entries from Scrutiny Collector Smart data.\nfunc (sm *Smart) ProcessNvmeSmartInfo(nvmeSmartHealthInformationLog collector.NvmeSmartHealthInformationLog) {\n\n\tsm.Attributes = map[string]SmartAttribute{\n\t\t\"critical_warning\":     (&SmartNvmeAttribute{AttributeId: \"critical_warning\", Value: nvmeSmartHealthInformationLog.CriticalWarning, Threshold: 0}).PopulateAttributeStatus(),\n\t\t\"temperature\":          (&SmartNvmeAttribute{AttributeId: \"temperature\", Value: nvmeSmartHealthInformationLog.Temperature, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"available_spare\":      (&SmartNvmeAttribute{AttributeId: \"available_spare\", Value: nvmeSmartHealthInformationLog.AvailableSpare, Threshold: nvmeSmartHealthInformationLog.AvailableSpareThreshold}).PopulateAttributeStatus(),\n\t\t\"percentage_used\":      (&SmartNvmeAttribute{AttributeId: \"percentage_used\", Value: nvmeSmartHealthInformationLog.PercentageUsed, Threshold: 100}).PopulateAttributeStatus(),\n\t\t\"data_units_read\":      (&SmartNvmeAttribute{AttributeId: \"data_units_read\", Value: nvmeSmartHealthInformationLog.DataUnitsRead, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"data_units_written\":   (&SmartNvmeAttribute{AttributeId: \"data_units_written\", Value: nvmeSmartHealthInformationLog.DataUnitsWritten, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"host_reads\":           (&SmartNvmeAttribute{AttributeId: \"host_reads\", Value: nvmeSmartHealthInformationLog.HostReads, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"host_writes\":          (&SmartNvmeAttribute{AttributeId: \"host_writes\", Value: nvmeSmartHealthInformationLog.HostWrites, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"controller_busy_time\": (&SmartNvmeAttribute{AttributeId: \"controller_busy_time\", Value: nvmeSmartHealthInformationLog.ControllerBusyTime, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"power_cycles\":         (&SmartNvmeAttribute{AttributeId: \"power_cycles\", Value: nvmeSmartHealthInformationLog.PowerCycles, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"power_on_hours\":       (&SmartNvmeAttribute{AttributeId: \"power_on_hours\", Value: nvmeSmartHealthInformationLog.PowerOnHours, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"unsafe_shutdowns\":     (&SmartNvmeAttribute{AttributeId: \"unsafe_shutdowns\", Value: nvmeSmartHealthInformationLog.UnsafeShutdowns, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"media_errors\":         (&SmartNvmeAttribute{AttributeId: \"media_errors\", Value: nvmeSmartHealthInformationLog.MediaErrors, Threshold: 0}).PopulateAttributeStatus(),\n\t\t\"num_err_log_entries\":  (&SmartNvmeAttribute{AttributeId: \"num_err_log_entries\", Value: nvmeSmartHealthInformationLog.NumErrLogEntries, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"warning_temp_time\":    (&SmartNvmeAttribute{AttributeId: \"warning_temp_time\", Value: nvmeSmartHealthInformationLog.WarningTempTime, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"critical_comp_time\":   (&SmartNvmeAttribute{AttributeId: \"critical_comp_time\", Value: nvmeSmartHealthInformationLog.CriticalCompTime, Threshold: -1}).PopulateAttributeStatus(),\n\t}\n\n\t//find analyzed attribute status\n\tfor _, val := range sm.Attributes {\n\t\tif pkg.AttributeStatusHas(val.GetStatus(), pkg.AttributeStatusFailedScrutiny) {\n\t\t\tsm.Status = pkg.DeviceStatusSet(sm.Status, pkg.DeviceStatusFailedScrutiny)\n\t\t}\n\t}\n}\n\n// generate SmartScsiAttribute entries from Scrutiny Collector Smart data.\nfunc (sm *Smart) ProcessScsiSmartInfo(defectGrownList int64, scsiErrorCounterLog collector.ScsiErrorCounterLog) {\n\tsm.Attributes = map[string]SmartAttribute{\n\t\t\"scsi_grown_defect_list\":                     (&SmartScsiAttribute{AttributeId: \"scsi_grown_defect_list\", Value: defectGrownList, Threshold: 0}).PopulateAttributeStatus(),\n\t\t\"read_errors_corrected_by_eccfast\":           (&SmartScsiAttribute{AttributeId: \"read_errors_corrected_by_eccfast\", Value: scsiErrorCounterLog.Read.ErrorsCorrectedByEccfast, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"read_errors_corrected_by_eccdelayed\":        (&SmartScsiAttribute{AttributeId: \"read_errors_corrected_by_eccdelayed\", Value: scsiErrorCounterLog.Read.ErrorsCorrectedByEccdelayed, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"read_errors_corrected_by_rereads_rewrites\":  (&SmartScsiAttribute{AttributeId: \"read_errors_corrected_by_rereads_rewrites\", Value: scsiErrorCounterLog.Read.ErrorsCorrectedByRereadsRewrites, Threshold: 0}).PopulateAttributeStatus(),\n\t\t\"read_total_errors_corrected\":                (&SmartScsiAttribute{AttributeId: \"read_total_errors_corrected\", Value: scsiErrorCounterLog.Read.TotalErrorsCorrected, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"read_correction_algorithm_invocations\":      (&SmartScsiAttribute{AttributeId: \"read_correction_algorithm_invocations\", Value: scsiErrorCounterLog.Read.CorrectionAlgorithmInvocations, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"read_total_uncorrected_errors\":              (&SmartScsiAttribute{AttributeId: \"read_total_uncorrected_errors\", Value: scsiErrorCounterLog.Read.TotalUncorrectedErrors, Threshold: 0}).PopulateAttributeStatus(),\n\t\t\"write_errors_corrected_by_eccfast\":          (&SmartScsiAttribute{AttributeId: \"write_errors_corrected_by_eccfast\", Value: scsiErrorCounterLog.Write.ErrorsCorrectedByEccfast, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"write_errors_corrected_by_eccdelayed\":       (&SmartScsiAttribute{AttributeId: \"write_errors_corrected_by_eccdelayed\", Value: scsiErrorCounterLog.Write.ErrorsCorrectedByEccdelayed, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"write_errors_corrected_by_rereads_rewrites\": (&SmartScsiAttribute{AttributeId: \"write_errors_corrected_by_rereads_rewrites\", Value: scsiErrorCounterLog.Write.ErrorsCorrectedByRereadsRewrites, Threshold: 0}).PopulateAttributeStatus(),\n\t\t\"write_total_errors_corrected\":               (&SmartScsiAttribute{AttributeId: \"write_total_errors_corrected\", Value: scsiErrorCounterLog.Write.TotalErrorsCorrected, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"write_correction_algorithm_invocations\":     (&SmartScsiAttribute{AttributeId: \"write_correction_algorithm_invocations\", Value: scsiErrorCounterLog.Write.CorrectionAlgorithmInvocations, Threshold: -1}).PopulateAttributeStatus(),\n\t\t\"write_total_uncorrected_errors\":             (&SmartScsiAttribute{AttributeId: \"write_total_uncorrected_errors\", Value: scsiErrorCounterLog.Write.TotalUncorrectedErrors, Threshold: 0}).PopulateAttributeStatus(),\n\t}\n\n\t//find analyzed attribute status\n\tfor _, val := range sm.Attributes {\n\t\tif pkg.AttributeStatusHas(val.GetStatus(), pkg.AttributeStatusFailedScrutiny) {\n\t\t\tsm.Status = pkg.DeviceStatusSet(sm.Status, pkg.DeviceStatusFailedScrutiny)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/measurements/smart_ata_attribute.go",
    "content": "package measurements\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/thresholds\"\n)\n\ntype SmartAtaAttribute struct {\n\tAttributeId int    `json:\"attribute_id\"`\n\tValue       int64  `json:\"value\"`\n\tThreshold   int64  `json:\"thresh\"`\n\tWorst       int64  `json:\"worst\"`\n\tRawValue    int64  `json:\"raw_value\"`\n\tRawString   string `json:\"raw_string\"`\n\tWhenFailed  string `json:\"when_failed\"`\n\n\t//Generated data\n\tTransformedValue int64               `json:\"transformed_value\"`\n\tStatus           pkg.AttributeStatus `json:\"status\"`\n\tStatusReason     string              `json:\"status_reason,omitempty\"`\n\tFailureRate      float64             `json:\"failure_rate,omitempty\"`\n}\n\nfunc (sa *SmartAtaAttribute) GetTransformedValue() int64 {\n\treturn sa.TransformedValue\n}\n\nfunc (sa *SmartAtaAttribute) GetStatus() pkg.AttributeStatus {\n\treturn sa.Status\n}\n\nfunc (sa *SmartAtaAttribute) Flatten() map[string]interface{} {\n\n\tidString := strconv.Itoa(sa.AttributeId)\n\n\treturn map[string]interface{}{\n\t\tfmt.Sprintf(\"attr.%s.attribute_id\", idString): idString,\n\t\tfmt.Sprintf(\"attr.%s.value\", idString):        sa.Value,\n\t\tfmt.Sprintf(\"attr.%s.worst\", idString):        sa.Worst,\n\t\tfmt.Sprintf(\"attr.%s.thresh\", idString):       sa.Threshold,\n\t\tfmt.Sprintf(\"attr.%s.raw_value\", idString):    sa.RawValue,\n\t\tfmt.Sprintf(\"attr.%s.raw_string\", idString):   sa.RawString,\n\t\tfmt.Sprintf(\"attr.%s.when_failed\", idString):  sa.WhenFailed,\n\n\t\t//Generated Data\n\t\tfmt.Sprintf(\"attr.%s.transformed_value\", idString): sa.TransformedValue,\n\t\tfmt.Sprintf(\"attr.%s.status\", idString):            int64(sa.Status),\n\t\tfmt.Sprintf(\"attr.%s.status_reason\", idString):     sa.StatusReason,\n\t\tfmt.Sprintf(\"attr.%s.failure_rate\", idString):      sa.FailureRate,\n\t}\n}\nfunc (sa *SmartAtaAttribute) Inflate(key string, val interface{}) {\n\tif val == nil {\n\t\treturn\n\t}\n\tkeyParts := strings.Split(key, \".\")\n\n\tswitch keyParts[2] {\n\tcase \"attribute_id\":\n\t\tattrId, err := strconv.Atoi(val.(string))\n\t\tif err == nil {\n\t\t\tsa.AttributeId = attrId\n\t\t}\n\tcase \"value\":\n\t\tsa.Value = val.(int64)\n\tcase \"worst\":\n\t\tsa.Worst = val.(int64)\n\tcase \"thresh\":\n\t\tsa.Threshold = val.(int64)\n\tcase \"raw_value\":\n\t\tsa.RawValue = val.(int64)\n\tcase \"raw_string\":\n\t\tsa.RawString = val.(string)\n\tcase \"when_failed\":\n\t\tsa.WhenFailed = val.(string)\n\n\t//generated\n\tcase \"transformed_value\":\n\t\tsa.TransformedValue = val.(int64)\n\tcase \"status\":\n\t\tsa.Status = pkg.AttributeStatus(val.(int64))\n\tcase \"status_reason\":\n\t\tsa.StatusReason = val.(string)\n\tcase \"failure_rate\":\n\t\tsa.FailureRate = val.(float64)\n\n\t}\n}\n\n// populate attribute status, using SMART Thresholds & Observed Metadata\n// Chainable\nfunc (sa *SmartAtaAttribute) PopulateAttributeStatus() *SmartAtaAttribute {\n\tif strings.ToUpper(sa.WhenFailed) == pkg.AttributeWhenFailedFailingNow {\n\t\t//this attribute has previously failed\n\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusFailedSmart)\n\t\tsa.StatusReason += \"Attribute is failing manufacturer SMART threshold\"\n\t\t//if the Smart Status is failed, we should exit early, no need to look at thresholds.\n\t\treturn sa\n\n\t} else if strings.ToUpper(sa.WhenFailed) == pkg.AttributeWhenFailedInThePast {\n\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusWarningScrutiny)\n\t\tsa.StatusReason += \"Attribute has previously failed manufacturer SMART threshold\"\n\t}\n\n\tif smartMetadata, ok := thresholds.AtaMetadata[sa.AttributeId]; ok {\n\t\tsa.ValidateThreshold(smartMetadata)\n\t}\n\n\treturn sa\n}\n\n// compare the attribute (raw, normalized, transformed) value to observed thresholds, and update status if necessary\nfunc (sa *SmartAtaAttribute) ValidateThreshold(smartMetadata thresholds.AtaAttributeMetadata) {\n\t//TODO: multiple rules\n\t// try to predict the failure rates for observed thresholds that have 0 failure rate and error bars.\n\t// - if the attribute is critical\n\t//\t\t- the failure rate is over 10 - set to failed\n\t//\t\t- the attribute does not match any threshold, set to warn\n\t// - if the attribute is not critical\n\t//\t\t- if failure rate is above 20 - set to failed\n\t// \t\t- if failure rate is above 10 but below 20 - set to warn\n\n\t//update the smart attribute status based on Observed thresholds.\n\tvar value int64\n\tif smartMetadata.DisplayType == thresholds.AtaSmartAttributeDisplayTypeNormalized {\n\t\tvalue = int64(sa.Value)\n\t} else if smartMetadata.DisplayType == thresholds.AtaSmartAttributeDisplayTypeTransformed {\n\t\tvalue = sa.TransformedValue\n\t} else {\n\t\tvalue = sa.RawValue\n\t}\n\n\tfor _, obsThresh := range smartMetadata.ObservedThresholds {\n\n\t\t//check if \"value\" is in this bucket\n\t\tif ((obsThresh.Low == obsThresh.High) && value == obsThresh.Low) ||\n\t\t\t(obsThresh.Low < value && value <= obsThresh.High) {\n\t\t\tsa.FailureRate = obsThresh.AnnualFailureRate\n\n\t\t\tif smartMetadata.Critical {\n\t\t\t\tif obsThresh.AnnualFailureRate >= 0.10 {\n\t\t\t\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusFailedScrutiny)\n\t\t\t\t\tsa.StatusReason += \"Observed Failure Rate for Critical Attribute is greater than 10%\"\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif obsThresh.AnnualFailureRate >= 0.20 {\n\t\t\t\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusFailedScrutiny)\n\t\t\t\t\tsa.StatusReason += \"Observed Failure Rate for Non-Critical Attribute is greater than 20%\"\n\t\t\t\t} else if obsThresh.AnnualFailureRate >= 0.10 {\n\t\t\t\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusWarningScrutiny)\n\t\t\t\t\tsa.StatusReason += \"Observed Failure Rate for Non-Critical Attribute is greater than 10%\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//we've found the correct bucket, we can drop out of this loop\n\t\t\treturn\n\t\t}\n\t}\n\t// no bucket found\n\tif smartMetadata.Critical {\n\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusWarningScrutiny)\n\t\tsa.StatusReason = \"Could not determine Observed Failure Rate for Critical Attribute\"\n\t}\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/measurements/smart_attribute.go",
    "content": "package measurements\n\nimport \"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\ntype SmartAttribute interface {\n\tFlatten() (fields map[string]interface{})\n\tInflate(key string, val interface{})\n\tGetStatus() pkg.AttributeStatus\n\tGetTransformedValue() int64\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/measurements/smart_nvme_attribute.go",
    "content": "package measurements\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/thresholds\"\n)\n\ntype SmartNvmeAttribute struct {\n\tAttributeId string `json:\"attribute_id\"` //json string from smartctl\n\tValue       int64  `json:\"value\"`\n\tThreshold   int64  `json:\"thresh\"`\n\n\tTransformedValue int64               `json:\"transformed_value\"`\n\tStatus           pkg.AttributeStatus `json:\"status\"`\n\tStatusReason     string              `json:\"status_reason,omitempty\"`\n\tFailureRate      float64             `json:\"failure_rate,omitempty\"`\n}\n\nfunc (sa *SmartNvmeAttribute) GetTransformedValue() int64 {\n\treturn sa.TransformedValue\n}\n\nfunc (sa *SmartNvmeAttribute) GetStatus() pkg.AttributeStatus {\n\treturn sa.Status\n}\n\nfunc (sa *SmartNvmeAttribute) Flatten() map[string]interface{} {\n\treturn map[string]interface{}{\n\t\tfmt.Sprintf(\"attr.%s.attribute_id\", sa.AttributeId): sa.AttributeId,\n\t\tfmt.Sprintf(\"attr.%s.value\", sa.AttributeId):        sa.Value,\n\t\tfmt.Sprintf(\"attr.%s.thresh\", sa.AttributeId):       sa.Threshold,\n\n\t\t//Generated Data\n\t\tfmt.Sprintf(\"attr.%s.transformed_value\", sa.AttributeId): sa.TransformedValue,\n\t\tfmt.Sprintf(\"attr.%s.status\", sa.AttributeId):            int64(sa.Status),\n\t\tfmt.Sprintf(\"attr.%s.status_reason\", sa.AttributeId):     sa.StatusReason,\n\t\tfmt.Sprintf(\"attr.%s.failure_rate\", sa.AttributeId):      sa.FailureRate,\n\t}\n}\nfunc (sa *SmartNvmeAttribute) Inflate(key string, val interface{}) {\n\tif val == nil {\n\t\treturn\n\t}\n\n\tkeyParts := strings.Split(key, \".\")\n\n\tswitch keyParts[2] {\n\tcase \"attribute_id\":\n\t\tsa.AttributeId = val.(string)\n\tcase \"value\":\n\t\tsa.Value = val.(int64)\n\tcase \"thresh\":\n\t\tsa.Threshold = val.(int64)\n\n\t//generated\n\tcase \"transformed_value\":\n\t\tsa.TransformedValue = val.(int64)\n\tcase \"status\":\n\t\tsa.Status = pkg.AttributeStatus(val.(int64))\n\tcase \"status_reason\":\n\t\tsa.StatusReason = val.(string)\n\tcase \"failure_rate\":\n\t\tsa.FailureRate = val.(float64)\n\t}\n}\n\n//populate attribute status, using SMART Thresholds & Observed Metadata\n// Chainable\nfunc (sa *SmartNvmeAttribute) PopulateAttributeStatus() *SmartNvmeAttribute {\n\n\t//-1 is a special number meaning no threshold.\n\tif sa.Threshold != -1 {\n\t\tif smartMetadata, ok := thresholds.NmveMetadata[sa.AttributeId]; ok {\n\t\t\t//check what the ideal is. Ideal tells us if we our recorded value needs to be above, or below the threshold\n\t\t\tif (smartMetadata.Ideal == \"low\" && sa.Value > sa.Threshold) ||\n\t\t\t\t(smartMetadata.Ideal == \"high\" && sa.Value < sa.Threshold) {\n\t\t\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusFailedScrutiny)\n\t\t\t\tsa.StatusReason += \"Attribute is failing recommended SMART threshold\"\n\t\t\t}\n\t\t}\n\t}\n\t//TODO: eventually figure out the critical_warning bits and determine correct error messages here.\n\n\treturn sa\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/measurements/smart_scsci_attribute.go",
    "content": "package measurements\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/thresholds\"\n)\n\ntype SmartScsiAttribute struct {\n\tAttributeId string `json:\"attribute_id\"` //json string from smartctl\n\tValue       int64  `json:\"value\"`\n\tThreshold   int64  `json:\"thresh\"`\n\n\tTransformedValue int64               `json:\"transformed_value\"`\n\tStatus           pkg.AttributeStatus `json:\"status\"`\n\tStatusReason     string              `json:\"status_reason,omitempty\"`\n\tFailureRate      float64             `json:\"failure_rate,omitempty\"`\n}\n\nfunc (sa *SmartScsiAttribute) GetTransformedValue() int64 {\n\treturn sa.TransformedValue\n}\n\nfunc (sa *SmartScsiAttribute) GetStatus() pkg.AttributeStatus {\n\treturn sa.Status\n}\n\nfunc (sa *SmartScsiAttribute) Flatten() map[string]interface{} {\n\treturn map[string]interface{}{\n\t\tfmt.Sprintf(\"attr.%s.attribute_id\", sa.AttributeId): sa.AttributeId,\n\t\tfmt.Sprintf(\"attr.%s.value\", sa.AttributeId):        sa.Value,\n\t\tfmt.Sprintf(\"attr.%s.thresh\", sa.AttributeId):       sa.Threshold,\n\n\t\t//Generated Data\n\t\tfmt.Sprintf(\"attr.%s.transformed_value\", sa.AttributeId): sa.TransformedValue,\n\t\tfmt.Sprintf(\"attr.%s.status\", sa.AttributeId):            int64(sa.Status),\n\t\tfmt.Sprintf(\"attr.%s.status_reason\", sa.AttributeId):     sa.StatusReason,\n\t\tfmt.Sprintf(\"attr.%s.failure_rate\", sa.AttributeId):      sa.FailureRate,\n\t}\n}\nfunc (sa *SmartScsiAttribute) Inflate(key string, val interface{}) {\n\tif val == nil {\n\t\treturn\n\t}\n\n\tkeyParts := strings.Split(key, \".\")\n\n\tswitch keyParts[2] {\n\tcase \"attribute_id\":\n\t\tsa.AttributeId = val.(string)\n\tcase \"value\":\n\t\tsa.Value = val.(int64)\n\tcase \"thresh\":\n\t\tsa.Threshold = val.(int64)\n\n\t//generated\n\tcase \"transformed_value\":\n\t\tsa.TransformedValue = val.(int64)\n\tcase \"status\":\n\t\tsa.Status = pkg.AttributeStatus(val.(int64))\n\tcase \"status_reason\":\n\t\tsa.StatusReason = val.(string)\n\tcase \"failure_rate\":\n\t\tsa.FailureRate = val.(float64)\n\t}\n}\n\n//\n//populate attribute status, using SMART Thresholds & Observed Metadata\n//Chainable\nfunc (sa *SmartScsiAttribute) PopulateAttributeStatus() *SmartScsiAttribute {\n\n\t//-1 is a special number meaning no threshold.\n\tif sa.Threshold != -1 {\n\t\tif smartMetadata, ok := thresholds.NmveMetadata[sa.AttributeId]; ok {\n\t\t\t//check what the ideal is. Ideal tells us if we our recorded value needs to be above, or below the threshold\n\t\t\tif (smartMetadata.Ideal == \"low\" && sa.Value > sa.Threshold) ||\n\t\t\t\t(smartMetadata.Ideal == \"high\" && sa.Value < sa.Threshold) {\n\t\t\t\tsa.Status = pkg.AttributeStatusSet(sa.Status, pkg.AttributeStatusFailedScrutiny)\n\t\t\t\tsa.StatusReason = \"Attribute is failing recommended SMART threshold\"\n\t\t\t}\n\t\t}\n\t}\n\n\treturn sa\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/measurements/smart_temperature.go",
    "content": "package measurements\n\nimport (\n\t\"time\"\n)\n\ntype SmartTemperature struct {\n\tDate time.Time `json:\"date\"`\n\tTemp int64     `json:\"temp\"`\n}\n\nfunc (st *SmartTemperature) Flatten() (tags map[string]string, fields map[string]interface{}) {\n\tfields = map[string]interface{}{\n\t\t\"temp\": st.Temp,\n\t}\n\ttags = map[string]string{}\n\n\treturn tags, fields\n}\n\nfunc (st *SmartTemperature) Inflate(key string, val interface{}) {\n\tif val == nil {\n\t\treturn\n\t}\n\n\tif key == \"temp\" {\n\t\tswitch t := val.(type) {\n\t\tcase int64:\n\t\t\tst.Temp = t\n\t\tcase float64:\n\t\t\tst.Temp = int64(t)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/measurements/smart_test.go",
    "content": "package measurements_test\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestSmart_Flatten(t *testing.T) {\n\t//setup\n\ttimeNow := time.Now()\n\tsmart := measurements.Smart{\n\t\tDate:            timeNow,\n\t\tDeviceWWN:       \"test-wwn\",\n\t\tDeviceProtocol:  pkg.DeviceProtocolAta,\n\t\tTemp:            50,\n\t\tPowerOnHours:    10,\n\t\tPowerCycleCount: 10,\n\t\tAttributes:      nil,\n\t\tStatus:          0,\n\t}\n\n\t//test\n\ttags, fields := smart.Flatten()\n\n\t//assert\n\trequire.Equal(t, map[string]string{\"device_protocol\": \"ATA\", \"device_wwn\": \"test-wwn\"}, tags)\n\trequire.Equal(t, map[string]interface{}{\"power_cycle_count\": int64(10), \"power_on_hours\": int64(10), \"temp\": int64(50)}, fields)\n}\n\nfunc TestSmart_Flatten_ATA(t *testing.T) {\n\t//setup\n\ttimeNow := time.Now()\n\tsmart := measurements.Smart{\n\t\tDate:            timeNow,\n\t\tDeviceWWN:       \"test-wwn\",\n\t\tDeviceProtocol:  pkg.DeviceProtocolAta,\n\t\tTemp:            50,\n\t\tPowerOnHours:    10,\n\t\tPowerCycleCount: 10,\n\t\tStatus:          0,\n\t\tAttributes: map[string]measurements.SmartAttribute{\n\t\t\t\"1\": &measurements.SmartAtaAttribute{\n\t\t\t\tAttributeId: 1,\n\t\t\t\tValue:       100,\n\t\t\t\tThreshold:   1,\n\t\t\t\tWorst:       100,\n\t\t\t\tRawValue:    0,\n\t\t\t\tRawString:   \"0\",\n\t\t\t\tWhenFailed:  \"\",\n\t\t\t},\n\t\t\t\"2\": &measurements.SmartAtaAttribute{\n\t\t\t\tAttributeId: 2,\n\t\t\t\tValue:       135,\n\t\t\t\tThreshold:   54,\n\t\t\t\tWorst:       135,\n\t\t\t\tRawValue:    108,\n\t\t\t\tRawString:   \"108\",\n\t\t\t\tWhenFailed:  \"\",\n\t\t\t},\n\t\t},\n\t}\n\n\t//test\n\ttags, fields := smart.Flatten()\n\n\t//assert\n\trequire.Equal(t, map[string]string{\"device_protocol\": \"ATA\", \"device_wwn\": \"test-wwn\"}, tags)\n\trequire.Equal(t, map[string]interface{}{\n\t\t\"attr.1.attribute_id\":      \"1\",\n\t\t\"attr.1.failure_rate\":      float64(0),\n\t\t\"attr.1.raw_string\":        \"0\",\n\t\t\"attr.1.raw_value\":         int64(0),\n\t\t\"attr.1.status\":            int64(0),\n\t\t\"attr.1.status_reason\":     \"\",\n\t\t\"attr.1.thresh\":            int64(1),\n\t\t\"attr.1.transformed_value\": int64(0),\n\t\t\"attr.1.value\":             int64(100),\n\t\t\"attr.1.when_failed\":       \"\",\n\t\t\"attr.1.worst\":             int64(100),\n\n\t\t\"attr.2.attribute_id\":      \"2\",\n\t\t\"attr.2.failure_rate\":      float64(0),\n\t\t\"attr.2.raw_string\":        \"108\",\n\t\t\"attr.2.raw_value\":         int64(108),\n\t\t\"attr.2.status\":            int64(0),\n\t\t\"attr.2.status_reason\":     \"\",\n\t\t\"attr.2.thresh\":            int64(54),\n\t\t\"attr.2.transformed_value\": int64(0),\n\t\t\"attr.2.value\":             int64(135),\n\t\t\"attr.2.when_failed\":       \"\",\n\t\t\"attr.2.worst\":             int64(135),\n\n\t\t\"power_cycle_count\": int64(10),\n\t\t\"power_on_hours\":    int64(10),\n\t\t\"temp\":              int64(50),\n\t}, fields)\n}\n\nfunc TestSmart_Flatten_SCSI(t *testing.T) {\n\t//setup\n\ttimeNow := time.Now()\n\tsmart := measurements.Smart{\n\t\tDate:            timeNow,\n\t\tDeviceWWN:       \"test-wwn\",\n\t\tDeviceProtocol:  pkg.DeviceProtocolScsi,\n\t\tTemp:            50,\n\t\tPowerOnHours:    10,\n\t\tPowerCycleCount: 10,\n\t\tStatus:          0,\n\t\tAttributes: map[string]measurements.SmartAttribute{\n\t\t\t\"read_errors_corrected_by_eccfast\": &measurements.SmartScsiAttribute{\n\t\t\t\tAttributeId: \"read_errors_corrected_by_eccfast\",\n\t\t\t\tValue:       int64(300357663),\n\t\t\t},\n\t\t},\n\t}\n\n\t//test\n\ttags, fields := smart.Flatten()\n\n\t//assert\n\trequire.Equal(t, map[string]string{\"device_protocol\": \"SCSI\", \"device_wwn\": \"test-wwn\"}, tags)\n\trequire.Equal(t, map[string]interface{}{\n\t\t\"attr.read_errors_corrected_by_eccfast.attribute_id\":      \"read_errors_corrected_by_eccfast\",\n\t\t\"attr.read_errors_corrected_by_eccfast.failure_rate\":      float64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.status\":            int64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.status_reason\":     \"\",\n\t\t\"attr.read_errors_corrected_by_eccfast.thresh\":            int64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.transformed_value\": int64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.value\":             int64(300357663),\n\t\t\"power_cycle_count\": int64(10),\n\t\t\"power_on_hours\":    int64(10),\n\t\t\"temp\":              int64(50)},\n\t\tfields)\n}\n\nfunc TestSmart_Flatten_NVMe(t *testing.T) {\n\t//setup\n\ttimeNow := time.Now()\n\tsmart := measurements.Smart{\n\t\tDate:            timeNow,\n\t\tDeviceWWN:       \"test-wwn\",\n\t\tDeviceProtocol:  pkg.DeviceProtocolNvme,\n\t\tTemp:            50,\n\t\tPowerOnHours:    10,\n\t\tPowerCycleCount: 10,\n\t\tStatus:          0,\n\t\tAttributes: map[string]measurements.SmartAttribute{\n\t\t\t\"available_spare\": &measurements.SmartNvmeAttribute{\n\t\t\t\tAttributeId: \"available_spare\",\n\t\t\t\tValue:       int64(100),\n\t\t\t},\n\t\t},\n\t}\n\n\t//test\n\ttags, fields := smart.Flatten()\n\n\t//assert\n\trequire.Equal(t, map[string]string{\"device_protocol\": \"NVMe\", \"device_wwn\": \"test-wwn\"}, tags)\n\trequire.Equal(t, map[string]interface{}{\n\t\t\"attr.available_spare.attribute_id\":      \"available_spare\",\n\t\t\"attr.available_spare.failure_rate\":      float64(0),\n\t\t\"attr.available_spare.status\":            int64(0),\n\t\t\"attr.available_spare.status_reason\":     \"\",\n\t\t\"attr.available_spare.thresh\":            int64(0),\n\t\t\"attr.available_spare.transformed_value\": int64(0),\n\t\t\"attr.available_spare.value\":             int64(100),\n\t\t\"power_cycle_count\":                      int64(10),\n\t\t\"power_on_hours\":                         int64(10),\n\t\t\"temp\":                                   int64(50)}, fields)\n}\n\nfunc TestNewSmartFromInfluxDB_ATA(t *testing.T) {\n\t//setup\n\ttimeNow := time.Now()\n\tattrs := map[string]interface{}{\n\t\t\"_time\":                    timeNow,\n\t\t\"device_wwn\":               \"test-wwn\",\n\t\t\"device_protocol\":          pkg.DeviceProtocolAta,\n\t\t\"attr.1.attribute_id\":      \"1\",\n\t\t\"attr.1.failure_rate\":      float64(0),\n\t\t\"attr.1.raw_string\":        \"108\",\n\t\t\"attr.1.raw_value\":         int64(108),\n\t\t\"attr.1.status\":            int64(0),\n\t\t\"attr.1.status_reason\":     \"\",\n\t\t\"attr.1.thresh\":            int64(54),\n\t\t\"attr.1.transformed_value\": int64(0),\n\t\t\"attr.1.value\":             int64(135),\n\t\t\"attr.1.when_failed\":       \"\",\n\t\t\"attr.1.worst\":             int64(135),\n\t\t\"power_cycle_count\":        int64(10),\n\t\t\"power_on_hours\":           int64(10),\n\t\t\"temp\":                     int64(50),\n\t}\n\n\t//test\n\tsmart, err := measurements.NewSmartFromInfluxDB(attrs)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, &measurements.Smart{\n\t\tDate:            timeNow,\n\t\tDeviceWWN:       \"test-wwn\",\n\t\tDeviceProtocol:  \"ATA\",\n\t\tTemp:            50,\n\t\tPowerOnHours:    10,\n\t\tPowerCycleCount: 10,\n\t\tAttributes: map[string]measurements.SmartAttribute{\n\t\t\t\"1\": &measurements.SmartAtaAttribute{\n\t\t\t\tAttributeId: 1,\n\t\t\t\tValue:       135,\n\t\t\t\tThreshold:   54,\n\t\t\t\tWorst:       135,\n\t\t\t\tRawValue:    108,\n\t\t\t\tRawString:   \"108\",\n\t\t\t\tWhenFailed:  \"\",\n\t\t\t},\n\t\t}, Status: 0}, smart)\n}\n\nfunc TestNewSmartFromInfluxDB_NVMe(t *testing.T) {\n\t//setup\n\ttimeNow := time.Now()\n\tattrs := map[string]interface{}{\n\t\t\"_time\":                                  timeNow,\n\t\t\"device_wwn\":                             \"test-wwn\",\n\t\t\"device_protocol\":                        pkg.DeviceProtocolNvme,\n\t\t\"attr.available_spare.attribute_id\":      \"available_spare\",\n\t\t\"attr.available_spare.failure_rate\":      float64(0),\n\t\t\"attr.available_spare.status\":            int64(0),\n\t\t\"attr.available_spare.status_reason\":     \"\",\n\t\t\"attr.available_spare.thresh\":            int64(0),\n\t\t\"attr.available_spare.transformed_value\": int64(0),\n\t\t\"attr.available_spare.value\":             int64(100),\n\t\t\"power_cycle_count\":                      int64(10),\n\t\t\"power_on_hours\":                         int64(10),\n\t\t\"temp\":                                   int64(50),\n\t}\n\n\t//test\n\tsmart, err := measurements.NewSmartFromInfluxDB(attrs)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, &measurements.Smart{\n\t\tDate:            timeNow,\n\t\tDeviceWWN:       \"test-wwn\",\n\t\tDeviceProtocol:  \"NVMe\",\n\t\tTemp:            50,\n\t\tPowerOnHours:    10,\n\t\tPowerCycleCount: 10,\n\t\tAttributes: map[string]measurements.SmartAttribute{\n\t\t\t\"available_spare\": &measurements.SmartNvmeAttribute{\n\t\t\t\tAttributeId: \"available_spare\",\n\t\t\t\tValue:       int64(100),\n\t\t\t},\n\t\t}, Status: 0}, smart)\n}\n\nfunc TestNewSmartFromInfluxDB_SCSI(t *testing.T) {\n\t//setup\n\ttimeNow := time.Now()\n\tattrs := map[string]interface{}{\n\t\t\"_time\":           timeNow,\n\t\t\"device_wwn\":      \"test-wwn\",\n\t\t\"device_protocol\": pkg.DeviceProtocolScsi,\n\t\t\"attr.read_errors_corrected_by_eccfast.attribute_id\":      \"read_errors_corrected_by_eccfast\",\n\t\t\"attr.read_errors_corrected_by_eccfast.failure_rate\":      float64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.status\":            int64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.status_reason\":     \"\",\n\t\t\"attr.read_errors_corrected_by_eccfast.thresh\":            int64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.transformed_value\": int64(0),\n\t\t\"attr.read_errors_corrected_by_eccfast.value\":             int64(300357663),\n\t\t\"power_cycle_count\": int64(10),\n\t\t\"power_on_hours\":    int64(10),\n\t\t\"temp\":              int64(50),\n\t}\n\n\t//test\n\tsmart, err := measurements.NewSmartFromInfluxDB(attrs)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, &measurements.Smart{\n\t\tDate:            timeNow,\n\t\tDeviceWWN:       \"test-wwn\",\n\t\tDeviceProtocol:  \"SCSI\",\n\t\tTemp:            50,\n\t\tPowerOnHours:    10,\n\t\tPowerCycleCount: 10,\n\t\tAttributes: map[string]measurements.SmartAttribute{\n\t\t\t\"read_errors_corrected_by_eccfast\": &measurements.SmartScsiAttribute{\n\t\t\t\tAttributeId: \"read_errors_corrected_by_eccfast\",\n\t\t\t\tValue:       int64(300357663),\n\t\t\t},\n\t\t}, Status: 0}, smart)\n}\n\nfunc TestFromCollectorSmartInfo(t *testing.T) {\n\t//setup\n\tsmartDataFile, err := os.Open(\"../testdata/smart-ata.json\")\n\trequire.NoError(t, err)\n\tdefer smartDataFile.Close()\n\n\tvar smartJson collector.SmartInfo\n\n\tsmartDataBytes, err := io.ReadAll(smartDataFile)\n\trequire.NoError(t, err)\n\terr = json.Unmarshal(smartDataBytes, &smartJson)\n\trequire.NoError(t, err)\n\n\t//test\n\tsmartMdl := measurements.Smart{}\n\terr = smartMdl.FromCollectorSmartInfo(\"WWN-test\", smartJson)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"WWN-test\", smartMdl.DeviceWWN)\n\trequire.Equal(t, pkg.DeviceStatusPassed, smartMdl.Status)\n\trequire.Equal(t, 18, len(smartMdl.Attributes))\n\n\t//check that temperature was correctly parsed\n\trequire.Equal(t, int64(163210330144), smartMdl.Attributes[\"194\"].(*measurements.SmartAtaAttribute).RawValue)\n\trequire.Equal(t, int64(32), smartMdl.Attributes[\"194\"].(*measurements.SmartAtaAttribute).TransformedValue)\n\n\t//ensure that Scrutiny warning for a non critical attribute does not set device status to failed.\n\trequire.Equal(t, pkg.AttributeStatusWarningScrutiny, smartMdl.Attributes[\"3\"].GetStatus())\n\n}\n\nfunc TestFromCollectorSmartInfo_Fail_Smart(t *testing.T) {\n\t//setup\n\tsmartDataFile, err := os.Open(\"../testdata/smart-fail.json\")\n\trequire.NoError(t, err)\n\tdefer smartDataFile.Close()\n\n\tvar smartJson collector.SmartInfo\n\n\tsmartDataBytes, err := io.ReadAll(smartDataFile)\n\trequire.NoError(t, err)\n\terr = json.Unmarshal(smartDataBytes, &smartJson)\n\trequire.NoError(t, err)\n\n\t//test\n\tsmartMdl := measurements.Smart{}\n\terr = smartMdl.FromCollectorSmartInfo(\"WWN-test\", smartJson)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"WWN-test\", smartMdl.DeviceWWN)\n\trequire.Equal(t, pkg.DeviceStatusFailedSmart, smartMdl.Status)\n\trequire.Equal(t, 0, len(smartMdl.Attributes))\n}\n\nfunc TestFromCollectorSmartInfo_Fail_ScrutinySmart(t *testing.T) {\n\t//setup\n\tsmartDataFile, err := os.Open(\"../testdata/smart-fail2.json\")\n\trequire.NoError(t, err)\n\tdefer smartDataFile.Close()\n\n\tvar smartJson collector.SmartInfo\n\n\tsmartDataBytes, err := io.ReadAll(smartDataFile)\n\trequire.NoError(t, err)\n\terr = json.Unmarshal(smartDataBytes, &smartJson)\n\trequire.NoError(t, err)\n\n\t//test\n\tsmartMdl := measurements.Smart{}\n\terr = smartMdl.FromCollectorSmartInfo(\"WWN-test\", smartJson)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"WWN-test\", smartMdl.DeviceWWN)\n\trequire.Equal(t, pkg.DeviceStatusFailedScrutiny|pkg.DeviceStatusFailedSmart, smartMdl.Status)\n\trequire.Equal(t, 17, len(smartMdl.Attributes))\n}\n\nfunc TestFromCollectorSmartInfo_Fail_ScrutinyNonCriticalFailed(t *testing.T) {\n\t//setup\n\tsmartDataFile, err := os.Open(\"../testdata/smart-ata-failed-scrutiny.json\")\n\trequire.NoError(t, err)\n\tdefer smartDataFile.Close()\n\n\tvar smartJson collector.SmartInfo\n\n\tsmartDataBytes, err := io.ReadAll(smartDataFile)\n\trequire.NoError(t, err)\n\terr = json.Unmarshal(smartDataBytes, &smartJson)\n\trequire.NoError(t, err)\n\n\t//test\n\tsmartMdl := measurements.Smart{}\n\terr = smartMdl.FromCollectorSmartInfo(\"WWN-test\", smartJson)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"WWN-test\", smartMdl.DeviceWWN)\n\trequire.Equal(t, pkg.DeviceStatusFailedScrutiny, smartMdl.Status)\n\trequire.Equal(t, pkg.AttributeStatusFailedScrutiny, smartMdl.Attributes[\"199\"].GetStatus(),\n\t\t\"scrutiny should detect that %d failed (status: %d, %s)\",\n\t\tsmartMdl.Attributes[\"199\"].(*measurements.SmartAtaAttribute).AttributeId,\n\t\tsmartMdl.Attributes[\"199\"].GetStatus(), smartMdl.Attributes[\"199\"].(*measurements.SmartAtaAttribute).StatusReason,\n\t)\n\n\trequire.Equal(t, 14, len(smartMdl.Attributes))\n}\n\n//TODO: Scrutiny Warn\n//TODO: Smart + Scrutiny Warn\n\nfunc TestFromCollectorSmartInfo_NVMe_Fail_Scrutiny(t *testing.T) {\n\t//setup\n\tsmartDataFile, err := os.Open(\"../testdata/smart-nvme-failed.json\")\n\trequire.NoError(t, err)\n\tdefer smartDataFile.Close()\n\n\tvar smartJson collector.SmartInfo\n\n\tsmartDataBytes, err := io.ReadAll(smartDataFile)\n\trequire.NoError(t, err)\n\terr = json.Unmarshal(smartDataBytes, &smartJson)\n\trequire.NoError(t, err)\n\n\t//test\n\tsmartMdl := measurements.Smart{}\n\terr = smartMdl.FromCollectorSmartInfo(\"WWN-test\", smartJson)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"WWN-test\", smartMdl.DeviceWWN)\n\trequire.Equal(t, pkg.DeviceStatusFailedScrutiny, smartMdl.Status)\n\trequire.Equal(t, pkg.AttributeStatusFailedScrutiny, smartMdl.Attributes[\"media_errors\"].GetStatus(),\n\t\t\"scrutiny should detect that %s failed (status: %d, %s)\",\n\t\tsmartMdl.Attributes[\"media_errors\"].(*measurements.SmartNvmeAttribute).AttributeId,\n\t\tsmartMdl.Attributes[\"media_errors\"].GetStatus(),\n\t\tsmartMdl.Attributes[\"media_errors\"].(*measurements.SmartNvmeAttribute).StatusReason,\n\t)\n\n\trequire.Equal(t, 16, len(smartMdl.Attributes))\n}\n\nfunc TestFromCollectorSmartInfo_Nvme(t *testing.T) {\n\t//setup\n\tsmartDataFile, err := os.Open(\"../testdata/smart-nvme.json\")\n\trequire.NoError(t, err)\n\tdefer smartDataFile.Close()\n\n\tvar smartJson collector.SmartInfo\n\n\tsmartDataBytes, err := io.ReadAll(smartDataFile)\n\trequire.NoError(t, err)\n\terr = json.Unmarshal(smartDataBytes, &smartJson)\n\trequire.NoError(t, err)\n\n\t//test\n\tsmartMdl := measurements.Smart{}\n\terr = smartMdl.FromCollectorSmartInfo(\"WWN-test\", smartJson)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"WWN-test\", smartMdl.DeviceWWN)\n\trequire.Equal(t, pkg.DeviceStatusPassed, smartMdl.Status)\n\trequire.Equal(t, 16, len(smartMdl.Attributes))\n\n\trequire.Equal(t, int64(111303174), smartMdl.Attributes[\"host_reads\"].(*measurements.SmartNvmeAttribute).Value)\n\trequire.Equal(t, int64(83170961), smartMdl.Attributes[\"host_writes\"].(*measurements.SmartNvmeAttribute).Value)\n}\n\nfunc TestFromCollectorSmartInfo_Scsi(t *testing.T) {\n\t//setup\n\tsmartDataFile, err := os.Open(\"../testdata/smart-scsi.json\")\n\trequire.NoError(t, err)\n\tdefer smartDataFile.Close()\n\n\tvar smartJson collector.SmartInfo\n\n\tsmartDataBytes, err := io.ReadAll(smartDataFile)\n\trequire.NoError(t, err)\n\terr = json.Unmarshal(smartDataBytes, &smartJson)\n\trequire.NoError(t, err)\n\n\t//test\n\tsmartMdl := measurements.Smart{}\n\terr = smartMdl.FromCollectorSmartInfo(\"WWN-test\", smartJson)\n\n\t//assert\n\trequire.NoError(t, err)\n\trequire.Equal(t, \"WWN-test\", smartMdl.DeviceWWN)\n\trequire.Equal(t, pkg.DeviceStatusPassed, smartMdl.Status)\n\trequire.Equal(t, 13, len(smartMdl.Attributes))\n\n\trequire.Equal(t, int64(56), smartMdl.Attributes[\"scsi_grown_defect_list\"].(*measurements.SmartScsiAttribute).Value)\n\trequire.Equal(t, int64(300357663), smartMdl.Attributes[\"read_errors_corrected_by_eccfast\"].(*measurements.SmartScsiAttribute).Value) //total_errors_corrected\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/setting_entry.go",
    "content": "package models\n\nimport (\n\t\"gorm.io/gorm\"\n)\n\n// SettingEntry matches a setting row in the database\ntype SettingEntry struct {\n\t//GORM attributes, see: http://gorm.io/docs/conventions.html\n\tgorm.Model\n\n\tSettingKeyName        string `json:\"setting_key_name\" gorm:\"unique;not null\"`\n\tSettingKeyDescription string `json:\"setting_key_description\"`\n\tSettingDataType       string `json:\"setting_data_type\"`\n\n\tSettingValueNumeric int    `json:\"setting_value_numeric\"`\n\tSettingValueString  string `json:\"setting_value_string\"`\n\tSettingValueBool    bool   `json:\"setting_value_bool\"`\n}\n\nfunc (s SettingEntry) TableName() string {\n\treturn \"settings\"\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/settings.go",
    "content": "package models\n\n// Settings is made up of parsed SettingEntry objects retrieved from the database\n//type Settings struct {\n//\tMetricsNotifyLevel            pkg.MetricsNotifyLevel            `json:\"metrics.notify.level\" mapstructure:\"metrics.notify.level\"`\n//\tMetricsStatusFilterAttributes pkg.MetricsStatusFilterAttributes `json:\"metrics.status.filter_attributes\" mapstructure:\"metrics.status.filter_attributes\"`\n//\tMetricsStatusThreshold        pkg.MetricsStatusThreshold        `json:\"metrics.status.threshold\" mapstructure:\"metrics.status.threshold\"`\n//}\n\ntype Settings struct {\n\tTheme              string `json:\"theme\" mapstructure:\"theme\"`\n\tLayout             string `json:\"layout\" mapstructure:\"layout\"`\n\tDashboardDisplay   string `json:\"dashboard_display\" mapstructure:\"dashboard_display\"`\n\tDashboardSort      string `json:\"dashboard_sort\" mapstructure:\"dashboard_sort\"`\n\tTemperatureUnit    string `json:\"temperature_unit\" mapstructure:\"temperature_unit\"`\n\tFileSizeSIUnits    bool   `json:\"file_size_si_units\" mapstructure:\"file_size_si_units\"`\n\tLineStroke         string `json:\"line_stroke\" mapstructure:\"line_stroke\"`\n\tPoweredOnHoursUnit string `json:\"powered_on_hours_unit\" mapstructure:\"powered_on_hours_unit\"`\n\n\tCollector struct {\n\t\tDiscardSCTTempHistory bool `json:\"discard_sct_temp_history\" mapstructure:\"discard_sct_temp_history\"`\n\t} `json:\"collector\" mapstructure:\"collector\"`\n\n\tMetrics struct {\n\t\tNotifyLevel            int  `json:\"notify_level\" mapstructure:\"notify_level\"`\n\t\tStatusFilterAttributes int  `json:\"status_filter_attributes\" mapstructure:\"status_filter_attributes\"`\n\t\tStatusThreshold        int  `json:\"status_threshold\" mapstructure:\"status_threshold\"`\n\t\tRepeatNotifications    bool `json:\"repeat_notifications\" mapstructure:\"repeat_notifications\"`\n\t} `json:\"metrics\" mapstructure:\"metrics\"`\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/helper.go",
    "content": "package main\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n)\n\nfunc main() {\n\n\t//webapp/backend/pkg/web/testdata/register-devices-req.json\n\tdevices := \"webapp/backend/pkg/web/testdata/register-devices-req.json\"\n\n\tsmartData := map[string][]string{\n\t\t\"0x5000cca264eb01d7\": {\"webapp/backend/pkg/models/testdata/smart-ata.json\", \"webapp/backend/pkg/models/testdata/smart-ata-date.json\", \"webapp/backend/pkg/models/testdata/smart-ata-date2.json\"},\n\t\t\"0x5000cca264ec3183\": {\"webapp/backend/pkg/models/testdata/smart-fail2.json\"},\n\t\t\"0x5002538e40a22954\": {\"webapp/backend/pkg/models/testdata/smart-nvme.json\"},\n\t\t\"0x5000cca252c859cc\": {\"webapp/backend/pkg/models/testdata/smart-scsi.json\"},\n\t\t\"0x5000cca264ebc248\": {\"webapp/backend/pkg/models/testdata/smart-scsi2.json\"},\n\t}\n\n\t// send a post request to register devices\n\tfile, err := os.Open(devices)\n\tif err != nil {\n\t\tlog.Fatalf(\"ERROR %v\", err)\n\t}\n\tdefer file.Close()\n\t_, err = SendPostRequest(\"http://localhost:8080/api/devices/register\", file)\n\tif err != nil {\n\t\tlog.Fatalf(\"ERROR %v\", err)\n\t}\n\t//\n\n\tfor diskId, smartDataFileNames := range smartData {\n\t\tfor _, smartDataFileName := range smartDataFileNames {\n\t\t\tfor daysToSubtract := 0; daysToSubtract <= 30; daysToSubtract++ { //add 4 weeks worth of data\n\t\t\t\tsmartDataReader, err := readSmartDataFileFixTimestamp(daysToSubtract, smartDataFileName)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Fatalf(\"ERROR %v\", err)\n\t\t\t\t}\n\n\t\t\t\t_, err = SendPostRequest(fmt.Sprintf(\"http://localhost:8080/api/device/%s/smart\", diskId), smartDataReader)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Fatalf(\"ERROR %v\", err)\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunc SendPostRequest(url string, file io.Reader) ([]byte, error) {\n\tresponse, err := http.Post(url, \"application/json\", file)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer response.Body.Close()\n\n\tlog.Printf(\"%v\\n\", response.Status)\n\n\treturn io.ReadAll(response.Body)\n}\n\n// InfluxDB will throw an error/ignore any submitted data with a timestamp older than the\n// retention period. Lets fix this by opening test files, modifying the timestamp and returning an io.Reader\nfunc readSmartDataFileFixTimestamp(daysToSubtract int, smartDataFilepath string) (io.Reader, error) {\n\tmetricsfile, err := os.Open(smartDataFilepath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmetricsFileData, err := io.ReadAll(metricsfile)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t//unmarshal because we need to change the timestamp\n\tvar smartData collector.SmartInfo\n\terr = json.Unmarshal(metricsFileData, &smartData)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdaysToSubtractInHours := time.Duration(-1 * 24 * daysToSubtract)\n\tsmartData.LocalTime.TimeT = time.Now().Add(daysToSubtractInHours * time.Hour).Unix()\n\tupdatedSmartDataBytes, err := json.Marshal(smartData)\n\n\treturn bytes.NewReader(updatedSmartDataBytes), nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-ata-date.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-4.19.128-flatcar\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-j\",\n      \"-a\",\n      \"/dev/sdb\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sdb\",\n    \"info_name\": \"/dev/sdb [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_name\": \"WDC WD140EDFZ-11A0VA0\",\n  \"serial_number\": \"9RK1XXXX\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 3274,\n    \"id\": 10283057623\n  },\n  \"firmware_version\": \"81.00A81\",\n  \"user_capacity\": {\n    \"blocks\": 27344764928,\n    \"bytes\": 14000519643136\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 4096,\n  \"rotation_rate\": 5400,\n  \"form_factor\": {\n    \"ata_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"in_smartctl_database\": false,\n  \"ata_version\": {\n    \"string\": \"ACS-2, ATA8-ACS T13/1699-D revision 4\",\n    \"major_value\": 1020,\n    \"minor_value\": 41\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.2\",\n    \"value\": 255\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 3,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Sun Jun 30 00:03:30 2021 UTC\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 130,\n        \"string\": \"was completed without error\",\n        \"passed\": true\n      },\n      \"completion_seconds\": 101\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 241,\n        \"string\": \"in progress, 10% remaining\",\n        \"remaining_percent\": 10\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 1479\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        91,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": true,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 16,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 11,\n          \"string\": \"PO-R-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Throughput_Performance\",\n        \"value\": 135,\n        \"worst\": 135,\n        \"thresh\": 54,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 108,\n          \"string\": \"108\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 81,\n        \"worst\": 81,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 7,\n          \"string\": \"POS--- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 30089675132,\n          \"string\": \"380 (Average 380)\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 9,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Seek_Time_Performance\",\n        \"value\": 133,\n        \"worst\": 133,\n        \"thresh\": 20,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 18,\n          \"string\": \"18\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 1730,\n          \"string\": \"1730\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 9,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 22,\n        \"name\": \"Unknown_Attribute\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 25,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 35,\n          \"string\": \"PO---K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 100,\n          \"string\": \"100\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 329,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 329,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 51,\n        \"worst\": 51,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 2,\n          \"string\": \"-O---- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 163210330144,\n          \"string\": \"32 (Min/Max 24/38)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 8,\n          \"string\": \"---R-- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 1730\n  },\n  \"power_cycle_count\": 9,\n  \"temperature\": {\n    \"current\": 32\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1708\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1684\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1661\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1636\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1624\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1541\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1517\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1493\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1469\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1445\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1439\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1373\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1349\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1325\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1301\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1277\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1253\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1252\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1205\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1181\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1157\n        }\n      ],\n      \"count\": 21,\n      \"error_count_total\": 0,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-ata-date2.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-4.19.128-flatcar\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-j\",\n      \"-a\",\n      \"/dev/sdb\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sdb\",\n    \"info_name\": \"/dev/sdb [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_name\": \"WDC WD140EDFZ-11A0VA0\",\n  \"serial_number\": \"9RK1XXXX\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 3274,\n    \"id\": 10283057623\n  },\n  \"firmware_version\": \"81.00A81\",\n  \"user_capacity\": {\n    \"blocks\": 27344764928,\n    \"bytes\": 14000519643136\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 4096,\n  \"rotation_rate\": 5400,\n  \"form_factor\": {\n    \"ata_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"in_smartctl_database\": false,\n  \"ata_version\": {\n    \"string\": \"ACS-2, ATA8-ACS T13/1699-D revision 4\",\n    \"major_value\": 1020,\n    \"minor_value\": 41\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.2\",\n    \"value\": 255\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 3,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Tue Feb 23 00:03:30 2021 UTC\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 130,\n        \"string\": \"was completed without error\",\n        \"passed\": true\n      },\n      \"completion_seconds\": 101\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 241,\n        \"string\": \"in progress, 10% remaining\",\n        \"remaining_percent\": 10\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 1479\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        91,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": true,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 16,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 11,\n          \"string\": \"PO-R-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Throughput_Performance\",\n        \"value\": 125,\n        \"worst\": 135,\n        \"thresh\": 54,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 118,\n          \"string\": \"108\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 71,\n        \"worst\": 81,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 7,\n          \"string\": \"POS--- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 30089675142,\n          \"string\": \"380 (Average 380)\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 19,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Seek_Time_Performance\",\n        \"value\": 123,\n        \"worst\": 133,\n        \"thresh\": 20,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 28,\n          \"string\": \"18\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 1740,\n          \"string\": \"1730\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 19,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 22,\n        \"name\": \"Unknown_Attribute\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 25,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 35,\n          \"string\": \"PO---K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 110,\n          \"string\": \"100\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 339,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 339,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 41,\n        \"worst\": 51,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 2,\n          \"string\": \"-O---- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 163210330154,\n          \"string\": \"32 (Min/Max 24/38)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 8,\n          \"string\": \"---R-- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 90,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 10,\n          \"string\": \"0\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 3030\n  },\n  \"power_cycle_count\": 9,\n  \"temperature\": {\n    \"current\": 62\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1708\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1684\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1661\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1636\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1624\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1541\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1517\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1493\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1469\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1445\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1439\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1373\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1349\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1325\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1301\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1277\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1253\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1252\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1205\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1181\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1157\n        }\n      ],\n      \"count\": 21,\n      \"error_count_total\": 0,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-ata-failed-scrutiny.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-5.13.0-40-generic\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-x\",\n      \"-j\",\n      \"/dev/sda\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sda\",\n    \"info_name\": \"/dev/sda [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_family\": \"Samsung based SSDs\",\n  \"model_name\": \"Samsung SSD 840 Series\",\n  \"serial_number\": \"S14LNEACC02756X\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 9528,\n    \"id\": 22817852457\n  },\n  \"firmware_version\": \"DXT06B0Q\",\n  \"user_capacity\": {\n    \"blocks\": 976773168,\n    \"bytes\": 500107862016\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 512,\n  \"rotation_rate\": 0,\n  \"in_smartctl_database\": true,\n  \"ata_version\": {\n    \"string\": \"ACS-2, ATA8-ACS T13/1699-D revision 4c\",\n    \"major_value\": 1020,\n    \"minor_value\": 57\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.1\",\n    \"value\": 127\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 3,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1652219998,\n    \"asctime\": \"Tue May 10 21:59:58 2022 UTC\"\n  },\n  \"read_lookahead\": {\n    \"enabled\": true\n  },\n  \"write_cache\": {\n    \"enabled\": true\n  },\n  \"ata_security\": {\n    \"state\": 41,\n    \"string\": \"Disabled, frozen [SEC2]\",\n    \"enabled\": false,\n    \"frozen\": true\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"was never started\"\n      },\n      \"completion_seconds\": 53956\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"completed without error\",\n        \"passed\": true\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 70\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        83,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": false,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 96,\n        \"worst\": 96,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 19497,\n          \"string\": \"19497\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 95,\n        \"worst\": 95,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 4169,\n          \"string\": \"4169\"\n        }\n      },\n      {\n        \"id\": 177,\n        \"name\": \"Wear_Leveling_Count\",\n        \"value\": 98,\n        \"worst\": 98,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 14,\n          \"string\": \"14\"\n        }\n      },\n      {\n        \"id\": 179,\n        \"name\": \"Used_Rsvd_Blk_Cnt_Tot\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 181,\n        \"name\": \"Program_Fail_Cnt_Total\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 182,\n        \"name\": \"Erase_Fail_Count_Total\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 183,\n        \"name\": \"Runtime_Bad_Block\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 187,\n        \"name\": \"Uncorrectable_Error_Cnt\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 190,\n        \"name\": \"Airflow_Temperature_Cel\",\n        \"value\": 67,\n        \"worst\": 44,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 33,\n          \"string\": \"33\"\n        }\n      },\n      {\n        \"id\": 195,\n        \"name\": \"ECC_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 26,\n          \"string\": \"-O-RC- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"CRC_Error_Count\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 62,\n          \"string\": \"-OSRCK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 108,\n          \"string\": \"108\"\n        }\n      },\n      {\n        \"id\": 235,\n        \"name\": \"POR_Recovery_Count\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 3583,\n          \"string\": \"3583\"\n        }\n      },\n      {\n        \"id\": 241,\n        \"name\": \"Total_LBAs_Written\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 10935822505,\n          \"string\": \"10935822505\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 19497\n  },\n  \"power_cycle_count\": 4169,\n  \"temperature\": {\n    \"current\": 33,\n    \"power_cycle_min\": 31,\n    \"power_cycle_max\": 44,\n    \"lifetime_min\": 0,\n    \"lifetime_max\": 70,\n    \"op_limit_min\": 0,\n    \"op_limit_max\": 70,\n    \"limit_min\": 0,\n    \"limit_max\": 70\n  },\n  \"ata_log_directory\": {\n    \"gp_dir_version\": 1,\n    \"smart_dir_version\": 1,\n    \"smart_dir_multi_sector\": true,\n    \"table\": [\n      {\n        \"address\": 0,\n        \"name\": \"Log Directory\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 1,\n        \"name\": \"Summary SMART error log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 2,\n        \"name\": \"Comprehensive SMART error log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 3,\n        \"name\": \"Ext. Comprehensive SMART error log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 6,\n        \"name\": \"SMART self-test log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 7,\n        \"name\": \"Extended self-test log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 9,\n        \"name\": \"Selective self-test log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 16,\n        \"name\": \"NCQ Command Error log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 17,\n        \"name\": \"SATA Phy Event Counters log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 48,\n        \"name\": \"IDENTIFY DEVICE data log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 128,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 129,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 130,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 131,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 132,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 133,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 134,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 135,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 136,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 137,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 138,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 139,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 140,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 141,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 142,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 143,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 144,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 145,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 146,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 147,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 148,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 149,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 150,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 151,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 152,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 153,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 154,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 155,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 156,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 157,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 158,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 159,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 160,\n        \"name\": \"Device vendor specific log\",\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      }\n    ]\n  },\n  \"ata_smart_error_log\": {\n    \"extended\": {\n      \"revision\": 1,\n      \"sectors\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"extended\": {\n      \"revision\": 1,\n      \"sectors\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"current_read_scan\": {\n      \"lba_min\": 0,\n      \"lba_max\": 65535,\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"was never started\"\n      }\n    },\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  },\n  \"ata_sct_status\": {\n    \"format_version\": 3,\n    \"sct_version\": 256,\n    \"device_state\": {\n      \"value\": 5,\n      \"string\": \"SCT command executing in background\"\n    },\n    \"temperature\": {\n      \"current\": 33,\n      \"power_cycle_min\": 31,\n      \"power_cycle_max\": 44,\n      \"lifetime_min\": 0,\n      \"lifetime_max\": 70,\n      \"under_limit_count\": 0,\n      \"over_limit_count\": 0\n    }\n  },\n  \"ata_sct_temperature_history\": {\n    \"version\": 3,\n    \"sampling_period_minutes\": 1,\n    \"logging_interval_minutes\": 1,\n    \"temperature\": {\n      \"op_limit_min\": 0,\n      \"op_limit_max\": 70,\n      \"limit_min\": 0,\n      \"limit_max\": 70\n    },\n    \"size\": 128,\n    \"index\": 22,\n    \"table\": [\n      40,\n      40,\n      40,\n      40,\n      40,\n      40,\n      40,\n      40,\n      40,\n      40,\n      36,\n      34,\n      34,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      34,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      33,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      32,\n      33\n    ]\n  },\n  \"ata_sct_erc\": {\n    \"read\": {\n      \"enabled\": false\n    },\n    \"write\": {\n      \"enabled\": false\n    }\n  },\n  \"sata_phy_event_counters\": {\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Command failed due to ICRC error\",\n        \"size\": 2,\n        \"value\": 7,\n        \"overflow\": false\n      },\n      {\n        \"id\": 2,\n        \"name\": \"R_ERR response for data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 3,\n        \"name\": \"R_ERR response for device-to-host data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 4,\n        \"name\": \"R_ERR response for host-to-device data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 5,\n        \"name\": \"R_ERR response for non-data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 6,\n        \"name\": \"R_ERR response for device-to-host non-data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 7,\n        \"name\": \"R_ERR response for host-to-device non-data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Device-to-host non-data FIS retries\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Transition from drive PhyRdy to drive PhyNRdy\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Device-to-host register FISes sent due to a COMRESET\",\n        \"size\": 2,\n        \"value\": 14,\n        \"overflow\": false\n      },\n      {\n        \"id\": 11,\n        \"name\": \"CRC errors within host-to-device FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 13,\n        \"name\": \"Non-CRC errors within host-to-device FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 15,\n        \"name\": \"R_ERR response for host-to-device data FIS, CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 16,\n        \"name\": \"R_ERR response for host-to-device data FIS, non-CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 18,\n        \"name\": \"R_ERR response for host-to-device non-data FIS, CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 19,\n        \"name\": \"R_ERR response for host-to-device non-data FIS, non-CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      }\n    ],\n    \"reset\": false\n  }\n}"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-ata-full.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-4.19.143-flatcar\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-x\",\n      \"-j\",\n      \"/dev/sda\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sda\",\n    \"info_name\": \"/dev/sda [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_family\": \"Samsung based SSDs\",\n  \"model_name\": \"Samsung SSD 860 EVO 500GB\",\n  \"serial_number\": \"S3YZNB0KB00864E\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 9528,\n    \"id\": 61213911380\n  },\n  \"firmware_version\": \"RVT02B6Q\",\n  \"user_capacity\": {\n    \"blocks\": 976773168,\n    \"bytes\": 500107862016\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 512,\n  \"rotation_rate\": 0,\n  \"form_factor\": {\n    \"ata_value\": 3,\n    \"name\": \"2.5 inches\"\n  },\n  \"in_smartctl_database\": true,\n  \"ata_version\": {\n    \"string\": \"ACS-4 T13/BSR INCITS 529 revision 5\",\n    \"major_value\": 2556,\n    \"minor_value\": 94\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.1\",\n    \"value\": 127\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 3,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Sun Sep 13 16:29:23 2020 UTC\"\n  },\n  \"read_lookahead\": {\n    \"enabled\": true\n  },\n  \"write_cache\": {\n    \"enabled\": true\n  },\n  \"ata_security\": {\n    \"state\": 33,\n    \"string\": \"Disabled, NOT FROZEN [SEC1]\",\n    \"enabled\": false,\n    \"frozen\": false\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 128,\n        \"string\": \"was never started\"\n      },\n      \"completion_seconds\": 0\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"completed without error\",\n        \"passed\": true\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 85\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        83,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": false,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 97,\n        \"worst\": 97,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 14551,\n          \"string\": \"14551\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 13,\n          \"string\": \"13\"\n        }\n      },\n      {\n        \"id\": 177,\n        \"name\": \"Wear_Leveling_Count\",\n        \"value\": 81,\n        \"worst\": 81,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 278,\n          \"string\": \"278\"\n        }\n      },\n      {\n        \"id\": 179,\n        \"name\": \"Used_Rsvd_Blk_Cnt_Tot\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 181,\n        \"name\": \"Program_Fail_Cnt_Total\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 182,\n        \"name\": \"Erase_Fail_Count_Total\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 183,\n        \"name\": \"Runtime_Bad_Block\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 187,\n        \"name\": \"Uncorrectable_Error_Cnt\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 190,\n        \"name\": \"Airflow_Temperature_Cel\",\n        \"value\": 64,\n        \"worst\": 43,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 36,\n          \"string\": \"36\"\n        }\n      },\n      {\n        \"id\": 195,\n        \"name\": \"ECC_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 26,\n          \"string\": \"-O-RC- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"CRC_Error_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 62,\n          \"string\": \"-OSRCK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 235,\n        \"name\": \"POR_Recovery_Count\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 4,\n          \"string\": \"4\"\n        }\n      },\n      {\n        \"id\": 241,\n        \"name\": \"Total_LBAs_Written\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 64777770148,\n          \"string\": \"64777770148\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 14551\n  },\n  \"power_cycle_count\": 13,\n  \"temperature\": {\n    \"current\": 36,\n    \"power_cycle_min\": 28,\n    \"power_cycle_max\": 57,\n    \"lifetime_min\": 24,\n    \"lifetime_max\": 57,\n    \"op_limit_max\": 70,\n    \"op_limit_min\": 0,\n    \"limit_min\": 0,\n    \"limit_max\": 70\n  },\n  \"ata_log_directory\": {\n    \"gp_dir_version\": 1,\n    \"smart_dir_version\": 1,\n    \"smart_dir_multi_sector\": true,\n    \"table\": [\n      {\n        \"address\": 0,\n        \"name\": \"Log Directory\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 1,\n        \"name\": \"Summary SMART error log\",\n        \"read\": true,\n        \"write\": false,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 2,\n        \"name\": \"Comprehensive SMART error log\",\n        \"read\": true,\n        \"write\": false,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 3,\n        \"name\": \"Ext. Comprehensive SMART error log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1\n      },\n      {\n        \"address\": 4,\n        \"name\": \"Device Statistics log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 8,\n        \"smart_sectors\": 8\n      },\n      {\n        \"address\": 6,\n        \"name\": \"SMART self-test log\",\n        \"read\": true,\n        \"write\": false,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 7,\n        \"name\": \"Extended self-test log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1\n      },\n      {\n        \"address\": 9,\n        \"name\": \"Selective self-test log\",\n        \"read\": true,\n        \"write\": true,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 16,\n        \"name\": \"NCQ Command Error log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1\n      },\n      {\n        \"address\": 17,\n        \"name\": \"SATA Phy Event Counters log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1\n      },\n      {\n        \"address\": 19,\n        \"name\": \"SATA NCQ Send and Receive log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 1\n      },\n      {\n        \"address\": 48,\n        \"name\": \"IDENTIFY DEVICE data log\",\n        \"read\": true,\n        \"write\": false,\n        \"gp_sectors\": 9,\n        \"smart_sectors\": 9\n      },\n      {\n        \"address\": 128,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 129,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 130,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 131,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 132,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 133,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 134,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 135,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 136,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 137,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 138,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 139,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 140,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 141,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 142,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 143,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 144,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 145,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 146,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 147,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 148,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 149,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 150,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 151,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 152,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 153,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 154,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 155,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 156,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 157,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 158,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 159,\n        \"name\": \"Host vendor specific log\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 16,\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 161,\n        \"name\": \"Device vendor specific log\",\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 165,\n        \"name\": \"Device vendor specific log\",\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 206,\n        \"name\": \"Device vendor specific log\",\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 207,\n        \"name\": \"Device vendor specific log\",\n        \"smart_sectors\": 16\n      },\n      {\n        \"address\": 224,\n        \"name\": \"SCT Command/Status\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      },\n      {\n        \"address\": 225,\n        \"name\": \"SCT Data Transfer\",\n        \"read\": true,\n        \"write\": true,\n        \"gp_sectors\": 1,\n        \"smart_sectors\": 1\n      }\n    ]\n  },\n  \"ata_smart_error_log\": {\n    \"extended\": {\n      \"revision\": 1,\n      \"sectors\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"extended\": {\n      \"revision\": 1,\n      \"sectors\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 14417\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 13985\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12689\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12667\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12665\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12641\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12593\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12569\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12545\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12521\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12499\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12497\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12473\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12449\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12425\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12401\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12377\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12353\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 12331\n        }\n      ],\n      \"count\": 19,\n      \"error_count_total\": 0,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  },\n  \"ata_sct_status\": {\n    \"format_version\": 3,\n    \"sct_version\": 256,\n    \"device_state\": {\n      \"value\": 0,\n      \"string\": \"Active\"\n    },\n    \"temperature\": {\n      \"current\": 36,\n      \"power_cycle_min\": 28,\n      \"power_cycle_max\": 57,\n      \"lifetime_min\": 24,\n      \"lifetime_max\": 57,\n      \"op_limit_max\": 70,\n      \"under_limit_count\": 0,\n      \"over_limit_count\": 0\n    },\n    \"smart_status\": {\n      \"passed\": true\n    }\n  },\n  \"ata_sct_temperature_history\": {\n    \"version\": 2,\n    \"sampling_period_minutes\": 1,\n    \"logging_interval_minutes\": 10,\n    \"temperature\": {\n      \"op_limit_min\": 0,\n      \"op_limit_max\": 70,\n      \"limit_min\": 0,\n      \"limit_max\": 70\n    },\n    \"size\": 128,\n    \"index\": 30,\n    \"table\": [\n      39,\n      39,\n      39,\n      39,\n      39,\n      40,\n      40,\n      40,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      39,\n      38,\n      38,\n      38,\n      39,\n      41,\n      42,\n      42,\n      41,\n      42,\n      43,\n      41,\n      40,\n      40,\n      41,\n      41,\n      41,\n      41,\n      42,\n      41,\n      41,\n      42,\n      41,\n      39,\n      38,\n      37,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      38,\n      37,\n      37,\n      38,\n      37,\n      37,\n      37,\n      37,\n      36,\n      37,\n      36,\n      36,\n      36,\n      36,\n      36,\n      37,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      36,\n      38,\n      37,\n      36,\n      37,\n      36,\n      36,\n      37,\n      37,\n      37,\n      37,\n      36,\n      36,\n      37,\n      37\n    ]\n  },\n  \"ata_sct_erc\": {\n    \"read\": {\n      \"enabled\": false\n    },\n    \"write\": {\n      \"enabled\": false\n    }\n  },\n  \"ata_device_statistics\": {\n    \"pages\": [\n      {\n        \"number\": 1,\n        \"name\": \"General Statistics\",\n        \"revision\": 1,\n        \"table\": [\n          {\n            \"offset\": 8,\n            \"name\": \"Lifetime Power-On Resets\",\n            \"size\": 4,\n            \"value\": 13,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 16,\n            \"name\": \"Power-on Hours\",\n            \"size\": 4,\n            \"value\": 14551,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 24,\n            \"name\": \"Logical Sectors Written\",\n            \"size\": 6,\n            \"value\": 64777770148,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 32,\n            \"name\": \"Number of Write Commands\",\n            \"size\": 6,\n            \"value\": 1348861990,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 40,\n            \"name\": \"Logical Sectors Read\",\n            \"size\": 6,\n            \"value\": 34909544344,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 48,\n            \"name\": \"Number of Read Commands\",\n            \"size\": 6,\n            \"value\": 538928995,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 56,\n            \"name\": \"Date and Time TimeStamp\",\n            \"size\": 6,\n            \"value\": 1360000,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          }\n        ]\n      },\n      {\n        \"number\": 4,\n        \"name\": \"General Errors Statistics\",\n        \"revision\": 1,\n        \"table\": [\n          {\n            \"offset\": 8,\n            \"name\": \"Number of Reported Uncorrectable Errors\",\n            \"size\": 4,\n            \"value\": 0,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 16,\n            \"name\": \"Resets Between Cmd Acceptance and Completion\",\n            \"size\": 4,\n            \"value\": 32,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          }\n        ]\n      },\n      {\n        \"number\": 5,\n        \"name\": \"Temperature Statistics\",\n        \"revision\": 1,\n        \"table\": [\n          {\n            \"offset\": 8,\n            \"name\": \"Current Temperature\",\n            \"size\": 1,\n            \"value\": 36,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 32,\n            \"name\": \"Highest Temperature\",\n            \"size\": 1,\n            \"value\": 57,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 40,\n            \"name\": \"Lowest Temperature\",\n            \"size\": 1,\n            \"value\": 24,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 88,\n            \"name\": \"Specified Maximum Operating Temperature\",\n            \"size\": 1,\n            \"value\": 70,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          }\n        ]\n      },\n      {\n        \"number\": 6,\n        \"name\": \"Transport Statistics\",\n        \"revision\": 1,\n        \"table\": [\n          {\n            \"offset\": 8,\n            \"name\": \"Number of Hardware Resets\",\n            \"size\": 4,\n            \"value\": 133,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 16,\n            \"name\": \"Number of ASR Events\",\n            \"size\": 4,\n            \"value\": 0,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          },\n          {\n            \"offset\": 24,\n            \"name\": \"Number of Interface CRC Errors\",\n            \"size\": 4,\n            \"value\": 0,\n            \"flags\": {\n              \"value\": 192,\n              \"string\": \"V--- \",\n              \"valid\": true,\n              \"normalized\": false,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          }\n        ]\n      },\n      {\n        \"number\": 7,\n        \"name\": \"Solid State Device Statistics\",\n        \"revision\": 1,\n        \"table\": [\n          {\n            \"offset\": 8,\n            \"name\": \"Percentage Used Endurance Indicator\",\n            \"size\": 1,\n            \"value\": 19,\n            \"flags\": {\n              \"value\": 224,\n              \"string\": \"VN-- \",\n              \"valid\": true,\n              \"normalized\": true,\n              \"supports_dsn\": false,\n              \"monitored_condition_met\": false\n            }\n          }\n        ]\n      }\n    ]\n  },\n  \"sata_phy_event_counters\": {\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Command failed due to ICRC error\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 2,\n        \"name\": \"R_ERR response for data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 3,\n        \"name\": \"R_ERR response for device-to-host data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 4,\n        \"name\": \"R_ERR response for host-to-device data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 5,\n        \"name\": \"R_ERR response for non-data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 6,\n        \"name\": \"R_ERR response for device-to-host non-data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 7,\n        \"name\": \"R_ERR response for host-to-device non-data FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Device-to-host non-data FIS retries\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Transition from drive PhyRdy to drive PhyNRdy\",\n        \"size\": 2,\n        \"value\": 8,\n        \"overflow\": false\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Device-to-host register FISes sent due to a COMRESET\",\n        \"size\": 2,\n        \"value\": 8,\n        \"overflow\": false\n      },\n      {\n        \"id\": 11,\n        \"name\": \"CRC errors within host-to-device FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 13,\n        \"name\": \"Non-CRC errors within host-to-device FIS\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 15,\n        \"name\": \"R_ERR response for host-to-device data FIS, CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 16,\n        \"name\": \"R_ERR response for host-to-device data FIS, non-CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 18,\n        \"name\": \"R_ERR response for host-to-device non-data FIS, CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      },\n      {\n        \"id\": 19,\n        \"name\": \"R_ERR response for host-to-device non-data FIS, non-CRC\",\n        \"size\": 2,\n        \"value\": 0,\n        \"overflow\": false\n      }\n    ],\n    \"reset\": false\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-ata.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-4.19.128-flatcar\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-j\",\n      \"-a\",\n      \"/dev/sdb\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sdb\",\n    \"info_name\": \"/dev/sdb [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_name\": \"WDC WD140EDFZ-11A0VA0\",\n  \"serial_number\": \"9RK1XXXX\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 3274,\n    \"id\": 10283057623\n  },\n  \"firmware_version\": \"81.00A81\",\n  \"user_capacity\": {\n    \"blocks\": 27344764928,\n    \"bytes\": 14000519643136\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 4096,\n  \"rotation_rate\": 5400,\n  \"form_factor\": {\n    \"ata_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"in_smartctl_database\": false,\n  \"ata_version\": {\n    \"string\": \"ACS-2, ATA8-ACS T13/1699-D revision 4\",\n    \"major_value\": 1020,\n    \"minor_value\": 41\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.2\",\n    \"value\": 255\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 3,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Sun Jun 21 00:03:30 2020 UTC\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 130,\n        \"string\": \"was completed without error\",\n        \"passed\": true\n      },\n      \"completion_seconds\": 101\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 241,\n        \"string\": \"in progress, 10% remaining\",\n        \"remaining_percent\": 10\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 1479\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        91,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": true,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 16,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 11,\n          \"string\": \"PO-R-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Throughput_Performance\",\n        \"value\": 135,\n        \"worst\": 135,\n        \"thresh\": 54,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 108,\n          \"string\": \"108\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 81,\n        \"worst\": 81,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 7,\n          \"string\": \"POS--- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 30089675132,\n          \"string\": \"380 (Average 380)\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 9,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Seek_Time_Performance\",\n        \"value\": 133,\n        \"worst\": 133,\n        \"thresh\": 20,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 18,\n          \"string\": \"18\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 1730,\n          \"string\": \"1730\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 9,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 22,\n        \"name\": \"Unknown_Attribute\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 25,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 35,\n          \"string\": \"PO---K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 100,\n          \"string\": \"100\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 329,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 329,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 51,\n        \"worst\": 51,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 2,\n          \"string\": \"-O---- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 163210330144,\n          \"string\": \"32 (Min/Max 24/38)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 8,\n          \"string\": \"---R-- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 1730\n  },\n  \"power_cycle_count\": 9,\n  \"temperature\": {\n    \"current\": 32\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1708\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1684\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1661\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1636\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1624\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1541\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1517\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1493\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1469\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1445\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1439\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1373\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1349\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1325\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1301\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1277\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1253\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1252\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1205\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1181\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1157\n        }\n      ],\n      \"count\": 21,\n      \"error_count_total\": 0,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-ata2.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-w64-mingw32-win7-sp1\",\n    \"build_info\": \"(sf-7.0-1)\",\n    \"argv\": [\n      \"smartctl\",\n      \"--all\",\n      \"-j\",\n      \"/dev/sda\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sda\",\n    \"info_name\": \"/dev/sda\",\n    \"type\": \"ata\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_family\": \"X based SSDs\",\n  \"model_name\": \"X SSD 850 PRO 128GB\",\n  \"serial_number\": \"S24ZN902000L\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 9528,\n    \"id\": 35436182597\n  },\n  \"firmware_version\": \"EB6Q\",\n  \"user_capacity\": {\n    \"blocks\": 250069680,\n    \"bytes\": 128035676160\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 512,\n  \"rotation_rate\": 0,\n  \"in_smartctl_database\": true,\n  \"ata_version\": {\n    \"string\": \"ACS-2, ATA8-ACS T13/1699-D revision 4c\",\n    \"major_value\": 1020,\n    \"minor_value\": 57\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.1\",\n    \"value\": 127\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 3,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Thu Aug 01 15:05:13 2019 WEDT\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"was never started\"\n      },\n      \"completion_seconds\": 0\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"completed without error\",\n        \"passed\": true\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 68\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        83,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": false,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 846,\n          \"string\": \"846\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 168,\n          \"string\": \"168\"\n        }\n      },\n      {\n        \"id\": 177,\n        \"name\": \"Wear_Leveling_Count\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 5,\n          \"string\": \"5\"\n        }\n      },\n      {\n        \"id\": 179,\n        \"name\": \"Used_Rsvd_Blk_Cnt_Tot\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 181,\n        \"name\": \"Program_Fail_Cnt_Total\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 182,\n        \"name\": \"Erase_Fail_Count_Total\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 183,\n        \"name\": \"Runtime_Bad_Block\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 10,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 187,\n        \"name\": \"Uncorrectable_Error_Cnt\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 190,\n        \"name\": \"Airflow_Temperature_Cel\",\n        \"value\": 68,\n        \"worst\": 61,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 32,\n          \"string\": \"32\"\n        }\n      },\n      {\n        \"id\": 195,\n        \"name\": \"ECC_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 26,\n          \"string\": \"-O-RC- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"CRC_Error_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 62,\n          \"string\": \"-OSRCK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 235,\n        \"name\": \"POR_Recovery_Count\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 21,\n          \"string\": \"21\"\n        }\n      },\n      {\n        \"id\": 241,\n        \"name\": \"Total_LBAs_Written\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 1047174917,\n          \"string\": \"1047174917\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 846\n  },\n  \"power_cycle_count\": 168,\n  \"temperature\": {\n    \"current\": 32\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-fail.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-w64-mingw32-win7-sp1\",\n    \"build_info\": \"(sf-7.0-1)\",\n    \"argv\": [\n      \"smartctl\",\n      \"--all\",\n      \"-j\",\n      \"/dev/sda\"\n    ],\n    \"messages\": [\n      {\n        \"string\": \"Smartctl open device: /dev/sda failed: \\\\\\\\.\\\\PhysicalDrive0: Open failed, Error=5\",\n        \"severity\": \"error\"\n      }\n    ],\n    \"exit_status\": 2\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-fail2.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      1\n    ],\n    \"svn_revision\": \"5022\",\n    \"platform_info\": \"x86_64-linux-5.7.2-arch1-1\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-a\",\n      \"--json\",\n      \"/dev/sdc\"\n    ],\n    \"exit_status\": 216\n  },\n  \"device\": {\n    \"name\": \"/dev/sdc\",\n    \"info_name\": \"/dev/sdc [USB JMicron]\",\n    \"type\": \"usbjmicron\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_family\": \"Hitachi Deskstar 7K1000.D\",\n  \"model_name\": \"Hitachi HDS721050DLE630\",\n  \"serial_number\": \"MSK423Y20S3HBC\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 3274,\n    \"id\": 15028879784\n  },\n  \"firmware_version\": \"MS1OA650\",\n  \"user_capacity\": {\n    \"blocks\": 976773168,\n    \"bytes\": 500107862016\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 4096,\n  \"rotation_rate\": 7200,\n  \"form_factor\": {\n    \"ata_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"in_smartctl_database\": true,\n  \"ata_version\": {\n    \"string\": \"ATA8-ACS T13/1699-D revision 4\",\n    \"major_value\": 508,\n    \"minor_value\": 41\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.0\",\n    \"value\": 63\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 1,\n      \"string\": \"1.5 Gb/s\",\n      \"units_per_second\": 15,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Wed Jul  8 15:48:23 2020 CEST\"\n  },\n  \"smart_status\": {\n    \"passed\": false\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 132,\n        \"string\": \"was suspended by an interrupting command from host\"\n      },\n      \"completion_seconds\": 4703\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"completed without error\",\n        \"passed\": true\n      },\n      \"polling_minutes\": {\n        \"short\": 1,\n        \"extended\": 79\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        91,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": true,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 16,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 16,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 11,\n          \"string\": \"PO-R-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Throughput_Performance\",\n        \"value\": 136,\n        \"worst\": 136,\n        \"thresh\": 54,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 5,\n          \"string\": \"P-S--- \",\n          \"prefailure\": true,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 91,\n          \"string\": \"91\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 125,\n        \"worst\": 125,\n        \"thresh\": 24,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 7,\n          \"string\": \"POS--- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 17192124596,\n          \"string\": \"180 (Average 187)\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 86,\n          \"string\": \"86\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 1,\n        \"worst\": 1,\n        \"thresh\": 5,\n        \"when_failed\": \"now\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 1975,\n          \"string\": \"1975\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 67,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 11,\n          \"string\": \"PO-R-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Seek_Time_Performance\",\n        \"value\": 118,\n        \"worst\": 118,\n        \"thresh\": 20,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 5,\n          \"string\": \"P-S--- \",\n          \"prefailure\": true,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 33,\n          \"string\": \"33\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 91,\n        \"worst\": 91,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 65592,\n          \"string\": \"65592\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 60,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 86,\n          \"string\": \"86\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 95,\n        \"worst\": 95,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 6244,\n          \"string\": \"6244\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 95,\n        \"worst\": 95,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 6244,\n          \"string\": \"6244\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 240,\n        \"worst\": 240,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 2,\n          \"string\": \"-O---- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 167504969753,\n          \"string\": \"25 (Min/Max 19/39)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 1,\n        \"worst\": 1,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 3831,\n          \"string\": \"3831\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 8,\n          \"string\": \"8\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 8,\n          \"string\": \"---R-- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 65592\n  },\n  \"power_cycle_count\": 86,\n  \"temperature\": {\n    \"current\": 25\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 56,\n      \"logged_count\": 5,\n      \"table\": [\n        {\n          \"error_number\": 56,\n          \"lifetime_hours\": 61957,\n          \"completion_registers\": {\n            \"error\": 16,\n            \"status\": 81,\n            \"count\": 152,\n            \"lba\": 16087784,\n            \"device\": 6\n          },\n          \"error_description\": \"Error: IDNF at LBA = 0x06f57ae8 = 116751080\",\n          \"previous_commands\": [\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 0,\n                \"count\": 0,\n                \"lba\": 2444128,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 138096,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 144,\n                \"count\": 240,\n                \"lba\": 2441032,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 138068,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 208,\n                \"count\": 232,\n                \"lba\": 12634680,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 138019,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 8,\n                \"count\": 112,\n                \"lba\": 2056,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 137196,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 0,\n                \"count\": 104,\n                \"lba\": 16087680,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 137196,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            }\n          ]\n        },\n        {\n          \"error_number\": 55,\n          \"lifetime_hours\": 61957,\n          \"completion_registers\": {\n            \"error\": 16,\n            \"status\": 81,\n            \"count\": 0,\n            \"lba\": 16087680,\n            \"device\": 6\n          },\n          \"error_description\": \"Error: IDNF at LBA = 0x06f57a80 = 116750976\",\n          \"previous_commands\": [\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 8,\n                \"count\": 64,\n                \"lba\": 2056,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 135139,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 0,\n                \"count\": 192,\n                \"lba\": 16087680,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 135095,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 8,\n                \"count\": 184,\n                \"lba\": 4270368,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 135095,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 239,\n                \"features\": 16,\n                \"count\": 2,\n                \"lba\": 0,\n                \"device\": 160,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 135095,\n              \"command_name\": \"SET FEATURES [Enable SATA feature]\"\n            },\n            {\n              \"registers\": {\n                \"command\": 39,\n                \"features\": 0,\n                \"count\": 0,\n                \"lba\": 0,\n                \"device\": 224,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 135095,\n              \"command_name\": \"READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]\"\n            }\n          ]\n        },\n        {\n          \"error_number\": 54,\n          \"lifetime_hours\": 61957,\n          \"completion_registers\": {\n            \"error\": 16,\n            \"status\": 81,\n            \"count\": 152,\n            \"lba\": 16087784,\n            \"device\": 6\n          },\n          \"error_description\": \"Error: IDNF at LBA = 0x06f57ae8 = 116751080\",\n          \"previous_commands\": [\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 8,\n                \"count\": 152,\n                \"lba\": 4270368,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 130821,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 0,\n                \"count\": 144,\n                \"lba\": 8399112,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 130807,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 8,\n                \"count\": 136,\n                \"lba\": 12658944,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 130785,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 8,\n                \"count\": 224,\n                \"lba\": 2056,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 130776,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 0,\n                \"count\": 16,\n                \"lba\": 16087680,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 130743,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            }\n          ]\n        },\n        {\n          \"error_number\": 53,\n          \"lifetime_hours\": 61957,\n          \"completion_registers\": {\n            \"error\": 16,\n            \"status\": 81,\n            \"count\": 56,\n            \"lba\": 16087880,\n            \"device\": 6\n          },\n          \"error_description\": \"Error: IDNF at LBA = 0x06f57b48 = 116751176\",\n          \"previous_commands\": [\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 8,\n                \"count\": 216,\n                \"lba\": 12593408,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 127334,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 1,\n                \"count\": 208,\n                \"lba\": 2048,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 125276,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 0,\n                \"count\": 72,\n                \"lba\": 16087680,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 125245,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 8,\n                \"count\": 64,\n                \"lba\": 2056,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 125245,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 8,\n                \"count\": 56,\n                \"lba\": 84232,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 125245,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            }\n          ]\n        },\n        {\n          \"error_number\": 52,\n          \"lifetime_hours\": 61957,\n          \"completion_registers\": {\n            \"error\": 16,\n            \"status\": 81,\n            \"count\": 248,\n            \"lba\": 16087688,\n            \"device\": 6\n          },\n          \"error_description\": \"Error: IDNF at LBA = 0x06f57a88 = 116750984\",\n          \"previous_commands\": [\n            {\n              \"registers\": {\n                \"command\": 96,\n                \"features\": 8,\n                \"count\": 160,\n                \"lba\": 84232,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 123342,\n              \"command_name\": \"READ FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 8,\n                \"count\": 152,\n                \"lba\": 2056,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 123342,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 97,\n                \"features\": 0,\n                \"count\": 144,\n                \"lba\": 16087680,\n                \"device\": 64,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 123342,\n              \"command_name\": \"WRITE FPDMA QUEUED\"\n            },\n            {\n              \"registers\": {\n                \"command\": 239,\n                \"features\": 16,\n                \"count\": 2,\n                \"lba\": 0,\n                \"device\": 160,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 123342,\n              \"command_name\": \"SET FEATURES [Enable SATA feature]\"\n            },\n            {\n              \"registers\": {\n                \"command\": 39,\n                \"features\": 0,\n                \"count\": 0,\n                \"lba\": 0,\n                \"device\": 224,\n                \"device_control\": 8\n              },\n              \"powerup_milliseconds\": 123342,\n              \"command_name\": \"READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 42\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 18\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 121,\n            \"string\": \"Completed: read failure\",\n            \"remaining_percent\": 90,\n            \"passed\": false\n          },\n          \"lifetime_hours\": 4,\n          \"lba\": 104870168\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65530\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65506\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65482\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65458\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65434\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65410\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65386\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 121,\n            \"string\": \"Completed: read failure\",\n            \"remaining_percent\": 90,\n            \"passed\": false\n          },\n          \"lifetime_hours\": 65375,\n          \"lba\": 104874784\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65362\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65338\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65314\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65290\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65266\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65242\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 121,\n            \"string\": \"Completed: read failure\",\n            \"remaining_percent\": 90,\n            \"passed\": false\n          },\n          \"lifetime_hours\": 65231,\n          \"lba\": 104874792\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65194\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65170\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 65146\n        }\n      ],\n      \"count\": 21,\n      \"error_count_total\": 3,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-megaraid0.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      1\n    ],\n    \"svn_revision\": \"5022\",\n    \"platform_info\": \"x86_64-linux-5.4.0-42-generic\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-a\",\n      \"-j\",\n      \"-d\",\n      \"megaraid,0\",\n      \"-i\",\n      \"/dev/sda\"\n    ],\n    \"messages\": [\n      {\n        \"string\": \"Warning: This result is based on an Attribute check.\",\n        \"severity\": \"warning\"\n      }\n    ],\n    \"exit_status\": 4\n  },\n  \"device\": {\n    \"name\": \"/dev/sda\",\n    \"info_name\": \"/dev/sda [megaraid_disk_00] [SAT]\",\n    \"type\": \"sat+megaraid,0\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_name\": \"WD4000FYYX\",\n  \"serial_number\": \"XXXXXXXXXXXX\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 5358,\n    \"id\": 10217451239\n  },\n  \"ata_additional_product_id\": \"DELL(tm)\",\n  \"firmware_version\": \"00.0D1K4\",\n  \"user_capacity\": {\n    \"blocks\": 7814037168,\n    \"bytes\": 4000787030016\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 512,\n  \"rotation_rate\": 7200,\n  \"form_factor\": {\n    \"ata_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"in_smartctl_database\": false,\n  \"ata_version\": {\n    \"string\": \"ATA8-ACS T13/1699-D revision 6\",\n    \"major_value\": 510,\n    \"minor_value\": 40\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.0\",\n    \"value\": 62\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 6,\n      \"string\": \"3.0 Gb/s\",\n      \"units_per_second\": 30,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 2,\n      \"string\": \"3.0 Gb/s\",\n      \"units_per_second\": 30,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Mon Aug 24 21:38:38 2020 CEST\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 130,\n        \"string\": \"was completed without error\",\n        \"passed\": true\n      },\n      \"completion_seconds\": 90\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"completed without error\",\n        \"passed\": true\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 523,\n        \"conveyance\": 5\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        123,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": true,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": true,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 28861,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 16,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 197,\n        \"thresh\": 51,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 47,\n          \"string\": \"POSR-K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 228,\n        \"worst\": 227,\n        \"thresh\": 21,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 39,\n          \"string\": \"POS--K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 7558,\n          \"string\": \"7558\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 70,\n          \"string\": \"70\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 140,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 46,\n          \"string\": \"-OSR-K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 49,\n        \"worst\": 49,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 37787,\n          \"string\": \"37787\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 253,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 11,\n        \"name\": \"Calibration_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 253,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 70,\n          \"string\": \"70\"\n        }\n      },\n      {\n        \"id\": 183,\n        \"name\": \"Runtime_Bad_Block\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 55,\n          \"string\": \"55\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 197,\n        \"worst\": 197,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 9267,\n          \"string\": \"9267\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 116,\n        \"worst\": 104,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 3145764,\n          \"string\": \"36 (Min/Max 0/48)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 48,\n          \"string\": \"----CK \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 200,\n        \"name\": \"Multi_Zone_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 8,\n          \"string\": \"---R-- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 241,\n        \"name\": \"Total_LBAs_Written\",\n        \"value\": 198,\n        \"worst\": 198,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 2754608750246,\n          \"string\": \"2754608750246\"\n        }\n      },\n      {\n        \"id\": 242,\n        \"name\": \"Total_LBAs_Read\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 70057180117,\n          \"string\": \"70057180117\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 37787\n  },\n  \"power_cycle_count\": 70,\n  \"temperature\": {\n    \"current\": 36\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 35990\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 3\n        },\n        {\n          \"type\": {\n            \"value\": 223,\n            \"string\": \"Vendor (0xdf)\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 3\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1\n        }\n      ],\n      \"count\": 4,\n      \"error_count_total\": 0,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-megaraid1.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      1\n    ],\n    \"svn_revision\": \"5022\",\n    \"platform_info\": \"x86_64-linux-5.4.0-42-generic\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-a\",\n      \"-j\",\n      \"-d\",\n      \"megaraid,1\",\n      \"-i\",\n      \"/dev/sda\"\n    ],\n    \"messages\": [\n      {\n        \"string\": \"Warning: This result is based on an Attribute check.\",\n        \"severity\": \"warning\"\n      }\n    ],\n    \"exit_status\": 4\n  },\n  \"device\": {\n    \"name\": \"/dev/sda\",\n    \"info_name\": \"/dev/sda [megaraid_disk_01] [SAT]\",\n    \"type\": \"sat+megaraid,1\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_name\": \"WD4000FYYX\",\n  \"serial_number\": \"XXXXXXXXXXXX\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 5358,\n    \"id\": 11649125727\n  },\n  \"ata_additional_product_id\": \"DELL(tm)\",\n  \"firmware_version\": \"00.0D1K4\",\n  \"user_capacity\": {\n    \"blocks\": 7814037168,\n    \"bytes\": 4000787030016\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 512,\n  \"rotation_rate\": 7200,\n  \"form_factor\": {\n    \"ata_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"in_smartctl_database\": false,\n  \"ata_version\": {\n    \"string\": \"ATA8-ACS T13/1699-D revision 6\",\n    \"major_value\": 510,\n    \"minor_value\": 40\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.0\",\n    \"value\": 62\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 6,\n      \"string\": \"3.0 Gb/s\",\n      \"units_per_second\": 30,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 2,\n      \"string\": \"3.0 Gb/s\",\n      \"units_per_second\": 30,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Mon Aug 24 21:38:42 2020 CEST\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 130,\n        \"string\": \"was completed without error\",\n        \"passed\": true\n      },\n      \"completion_seconds\": 90\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 0,\n        \"string\": \"completed without error\",\n        \"passed\": true\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 503,\n        \"conveyance\": 5\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        123,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": true,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": true,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 28861,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 16,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 111,\n        \"thresh\": 51,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 47,\n          \"string\": \"POSR-K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 230,\n        \"worst\": 227,\n        \"thresh\": 21,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 39,\n          \"string\": \"POS--K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 7458,\n          \"string\": \"7458\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 68,\n          \"string\": \"68\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 188,\n        \"worst\": 188,\n        \"thresh\": 140,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 387,\n          \"string\": \"387\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 46,\n          \"string\": \"-OSR-K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 49,\n        \"worst\": 49,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 37788,\n          \"string\": \"37788\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 253,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 11,\n        \"name\": \"Calibration_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 253,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 68,\n          \"string\": \"68\"\n        }\n      },\n      {\n        \"id\": 183,\n        \"name\": \"Runtime_Bad_Block\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 56,\n          \"string\": \"56\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 197,\n        \"worst\": 197,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 9462,\n          \"string\": \"9462\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 116,\n        \"worst\": 101,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 3342372,\n          \"string\": \"36 (Min/Max 0/51)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 191,\n        \"worst\": 191,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 9,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 48,\n          \"string\": \"----CK \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 200,\n        \"name\": \"Multi_Zone_Error_Rate\",\n        \"value\": 200,\n        \"worst\": 199,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 8,\n          \"string\": \"---R-- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 241,\n        \"name\": \"Total_LBAs_Written\",\n        \"value\": 197,\n        \"worst\": 197,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 3920560799278,\n          \"string\": \"3920560799278\"\n        }\n      },\n      {\n        \"id\": 242,\n        \"name\": \"Total_LBAs_Read\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 72684827907,\n          \"string\": \"72684827907\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 37788\n  },\n  \"power_cycle_count\": 68,\n  \"temperature\": {\n    \"current\": 36\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 25,\n            \"string\": \"Aborted by host\",\n            \"remaining_percent\": 90\n          },\n          \"lifetime_hours\": 35990\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 35990\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 3\n        },\n        {\n          \"type\": {\n            \"value\": 223,\n            \"string\": \"Vendor (0xdf)\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 3\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1\n        }\n      ],\n      \"count\": 5,\n      \"error_count_total\": 0,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 0,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-nvme-failed.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-5.13.0-40-generic\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-x\",\n      \"-j\",\n      \"/dev/nvme0\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/nvme0\",\n    \"info_name\": \"/dev/nvme0\",\n    \"type\": \"nvme\",\n    \"protocol\": \"NVMe\"\n  },\n  \"model_name\": \"Samsung SSD 970 EVO 500GB\",\n  \"serial_number\": \"S466NX0M776250H\",\n  \"firmware_version\": \"2B2QEXE7\",\n  \"nvme_pci_vendor\": {\n    \"id\": 5197,\n    \"subsystem_id\": 5197\n  },\n  \"nvme_ieee_oui_identifier\": 9528,\n  \"nvme_total_capacity\": 500107862016,\n  \"nvme_unallocated_capacity\": 0,\n  \"nvme_controller_id\": 4,\n  \"nvme_number_of_namespaces\": 1,\n  \"nvme_namespaces\": [\n    {\n      \"id\": 1,\n      \"size\": {\n        \"blocks\": 976773168,\n        \"bytes\": 500107862016\n      },\n      \"capacity\": {\n        \"blocks\": 976773168,\n        \"bytes\": 500107862016\n      },\n      \"utilization\": {\n        \"blocks\": 327275384,\n        \"bytes\": 167564996608\n      },\n      \"formatted_lba_size\": 512,\n      \"eui64\": {\n        \"oui\": 9528,\n        \"ext_id\": 376106710327\n      }\n    }\n  ],\n  \"user_capacity\": {\n    \"blocks\": 976773168,\n    \"bytes\": 500107862016\n  },\n  \"logical_block_size\": 512,\n  \"local_time\": {\n    \"time_t\": 1652220188,\n    \"asctime\": \"Tue May 10 22:03:08 2022 UTC\"\n  },\n  \"smart_status\": {\n    \"passed\": true,\n    \"nvme\": {\n      \"value\": 0\n    }\n  },\n  \"nvme_smart_health_information_log\": {\n    \"critical_warning\": 0,\n    \"temperature\": 35,\n    \"available_spare\": 99,\n    \"available_spare_threshold\": 10,\n    \"percentage_used\": 3,\n    \"data_units_read\": 17176794,\n    \"data_units_written\": 65602088,\n    \"host_reads\": 118020838,\n    \"host_writes\": 874050000,\n    \"controller_busy_time\": 7601,\n    \"power_cycles\": 25,\n    \"power_on_hours\": 12798,\n    \"unsafe_shutdowns\": 10,\n    \"media_errors\": 7,\n    \"num_err_log_entries\": 62,\n    \"warning_temp_time\": 0,\n    \"critical_comp_time\": 0,\n    \"temperature_sensors\": [\n      35,\n      39\n    ]\n  },\n  \"temperature\": {\n    \"current\": 35\n  },\n  \"power_cycle_count\": 25,\n  \"power_on_time\": {\n    \"hours\": 12798\n  }\n}"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-nvme.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      1\n    ],\n    \"svn_revision\": \"5022\",\n    \"platform_info\": \"x86_64-linux-5.4.0-33-generic\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"--all\",\n      \"--json\",\n      \"/dev/testfoobarpass\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/testfoobarpass\",\n    \"info_name\": \"/dev/testfoobarpass\",\n    \"type\": \"nvme\",\n    \"protocol\": \"NVMe\"\n  },\n  \"model_name\": \"INTEL SSDPEKNW010T8\",\n  \"serial_number\": \"BTNH93710FS91P0B\",\n  \"firmware_version\": \"002C\",\n  \"nvme_pci_vendor\": {\n    \"id\": 32902,\n    \"subsystem_id\": 32902\n  },\n  \"nvme_ieee_oui_identifier\": 6083300,\n  \"nvme_controller_id\": 1,\n  \"nvme_number_of_namespaces\": 1,\n  \"nvme_namespaces\": [\n    {\n      \"id\": 1,\n      \"size\": {\n        \"blocks\": 2000409264,\n        \"bytes\": 1024209543168\n      },\n      \"capacity\": {\n        \"blocks\": 2000409264,\n        \"bytes\": 1024209543168\n      },\n      \"utilization\": {\n        \"blocks\": 2000409264,\n        \"bytes\": 1024209543168\n      },\n      \"formatted_lba_size\": 512\n    }\n  ],\n  \"user_capacity\": {\n    \"blocks\": 2000409264,\n    \"bytes\": 1024209543168\n  },\n  \"logical_block_size\": 512,\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Wed Jun 10 14:01:02 2020 CEST\"\n  },\n  \"smart_status\": {\n    \"passed\": true,\n    \"nvme\": {\n      \"value\": 0\n    }\n  },\n  \"nvme_smart_health_information_log\": {\n    \"critical_warning\": 0,\n    \"temperature\": 36,\n    \"available_spare\": 100,\n    \"available_spare_threshold\": 10,\n    \"percentage_used\": 0,\n    \"data_units_read\": 9511859,\n    \"data_units_written\": 7773431,\n    \"host_reads\": 111303174,\n    \"host_writes\": 83170961,\n    \"controller_busy_time\": 3060,\n    \"power_cycles\": 266,\n    \"power_on_hours\": 2401,\n    \"unsafe_shutdowns\": 43,\n    \"media_errors\": 0,\n    \"num_err_log_entries\": 0,\n    \"warning_temp_time\": 0,\n    \"critical_comp_time\": 0\n  },\n  \"temperature\": {\n    \"current\": 36\n  },\n  \"power_cycle_count\": 266,\n  \"power_on_time\": {\n    \"hours\": 2401\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-nvme2.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-4.19.107-Unraid\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-a\",\n      \"-j\",\n      \"-d\",\n      \"nvme\",\n      \"/dev/nvme0\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/nvme0\",\n    \"info_name\": \"/dev/nvme0\",\n    \"type\": \"nvme\",\n    \"protocol\": \"NVMe\"\n  },\n  \"model_name\": \"Force MP510\",\n  \"serial_number\": \"yes\",\n  \"firmware_version\": \"ECFM12.3\",\n  \"nvme_pci_vendor\": {\n    \"id\": 6535,\n    \"subsystem_id\": 6535\n  },\n  \"nvme_ieee_oui_identifier\": 6584743,\n  \"nvme_total_capacity\": 480103981056,\n  \"nvme_unallocated_capacity\": 0,\n  \"nvme_controller_id\": 1,\n  \"nvme_number_of_namespaces\": 1,\n  \"nvme_namespaces\": [\n    {\n      \"id\": 1,\n      \"size\": {\n        \"blocks\": 937703088,\n        \"bytes\": 480103981056\n      },\n      \"capacity\": {\n        \"blocks\": 937703088,\n        \"bytes\": 480103981056\n      },\n      \"utilization\": {\n        \"blocks\": 937703088,\n        \"bytes\": 480103981056\n      },\n      \"formatted_lba_size\": 512,\n      \"eui64\": {\n        \"oui\": 6584743,\n        \"ext_id\": 171819811633\n      }\n    }\n  ],\n  \"user_capacity\": {\n    \"blocks\": 937703088,\n    \"bytes\": 480103981056\n  },\n  \"logical_block_size\": 512,\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Sun Sep 20 16:24:50 2020 Europe\"\n  },\n  \"smart_status\": {\n    \"passed\": true,\n    \"nvme\": {\n      \"value\": 0\n    }\n  },\n  \"nvme_smart_health_information_log\": {\n    \"critical_warning\": 0,\n    \"temperature\": 38,\n    \"available_spare\": 100,\n    \"available_spare_threshold\": 5,\n    \"percentage_used\": 1,\n    \"data_units_read\": 6932144,\n    \"data_units_written\": 16093122,\n    \"host_reads\": 29878811,\n    \"host_writes\": 17533252,\n    \"controller_busy_time\": 305,\n    \"power_cycles\": 4,\n    \"power_on_hours\": 6487,\n    \"unsafe_shutdowns\": 4,\n    \"media_errors\": 0,\n    \"num_err_log_entries\": 8382,\n    \"warning_temp_time\": 0,\n    \"critical_comp_time\": 0\n  },\n  \"temperature\": {\n    \"current\": 38\n  },\n  \"power_cycle_count\": 4,\n  \"power_on_time\": {\n    \"hours\": 6487\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-pass.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-5.4.6-arch3-1\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-jH\",\n      \"/dev/sdc\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sdc\",\n    \"info_name\": \"/dev/sdc [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-raid.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-w64-mingw32-w10-1809\",\n    \"build_info\": \"(sf-7.0-1)\",\n    \"argv\": [\n      \"smartctl\",\n      \"--all\",\n      \"-j\",\n      \"/dev/sdb\"\n    ],\n    \"exit_status\": 4\n  },\n  \"device\": {\n    \"name\": \"/dev/sdb\",\n    \"info_name\": \"/dev/sdb\",\n    \"type\": \"scsi\",\n    \"protocol\": \"SCSI\"\n  },\n  \"vendor\": \"Intel\",\n  \"product\": \"Raid 1 Volume\",\n  \"model_name\": \"Intel Raid 1 Volume\",\n  \"revision\": \"1.0.\",\n  \"scsi_version\": \"SPC-3\",\n  \"user_capacity\": {\n    \"blocks\": 1953519616,\n    \"bytes\": 1000202043392\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 4096,\n  \"rotation_rate\": 7200,\n  \"serial_number\": \"Volume1\",\n  \"device_type\": {\n    \"scsi_value\": 0,\n    \"name\": \"disk\"\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Wed Oct 09 10:31:07 2019 RDT\"\n  },\n  \"temperature\": {\n    \"current\": 0,\n    \"drive_trip\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-sat.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-5.4.6-arch3-1\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-jA\",\n      \"/dev/sdc\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sdc\",\n    \"info_name\": \"/dev/sdc [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 10,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 115,\n        \"worst\": 100,\n        \"thresh\": 34,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 15,\n          \"string\": \"POSR-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 83905456,\n          \"string\": \"83905456\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 99,\n        \"worst\": 99,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 3,\n          \"string\": \"PO---- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 20,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 355,\n          \"string\": \"355\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 36,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 71,\n        \"worst\": 60,\n        \"thresh\": 30,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 15,\n          \"string\": \"POSR-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 13407112,\n          \"string\": \"13407112\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 97,\n        \"worst\": 97,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 167031278144165,\n          \"string\": \"2725 (151 234 0)\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 97,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 19,\n          \"string\": \"PO--C- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 20,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 354,\n          \"string\": \"354\"\n        }\n      },\n      {\n        \"id\": 184,\n        \"name\": \"End-to-End_Error\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 99,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 187,\n        \"name\": \"Reported_Uncorrect\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 188,\n        \"name\": \"Command_Timeout\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 189,\n        \"name\": \"High_Fly_Writes\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 58,\n          \"string\": \"-O-RCK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 190,\n        \"name\": \"Airflow_Temperature_Cel\",\n        \"value\": 71,\n        \"worst\": 51,\n        \"thresh\": 45,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 487784477,\n          \"string\": \"29 (Min/Max 19/29)\"\n        }\n      },\n      {\n        \"id\": 191,\n        \"name\": \"G-Sense_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 47,\n          \"string\": \"47\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 59,\n          \"string\": \"59\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 93,\n        \"worst\": 93,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 15952,\n          \"string\": \"15952\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 29,\n        \"worst\": 49,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 77309411357,\n          \"string\": \"29 (0 18 0 0 0)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 98,\n        \"worst\": 98,\n        \"thresh\": 30,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 15,\n          \"string\": \"POSR-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 53416508262463,\n          \"string\": \"2111 (12437 0)\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 16,\n          \"string\": \"----C- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 200,\n        \"worst\": 200,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 62,\n          \"string\": \"-OSRCK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": true,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 254,\n        \"name\": \"Free_Fall_Sensor\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      }\n    ]\n  },\n  \"power_cycle_count\": 354,\n  \"temperature\": {\n    \"current\": 29\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-scsi.json",
    "content": "{\n  \"device\": {\n    \"name\": \"/dev/sdg\",\n    \"info_name\": \"/dev/sdg\",\n    \"type\": \"scsi\",\n    \"protocol\": \"SCSI\"\n  },\n  \"vendor\": \"SEAGATE\",\n  \"product\": \"ST4000NM0043\",\n  \"model_name\": \"SEAGATE ST4000NM0043\",\n  \"revision\": \"MS03\",\n  \"scsi_version\": \"SPC-4\",\n  \"user_capacity\": {\n    \"blocks\": 7814037168,\n    \"bytes\": 4000787030016\n  },\n  \"logical_block_size\": 512,\n  \"rotation_rate\": 7200,\n  \"form_factor\": {\n    \"scsi_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"serial_number\": \"Z1Z5DWJK0000XXXXXXXX\",\n  \"device_type\": {\n    \"scsi_value\": 0,\n    \"name\": \"disk\"\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Fri Aug 21 22:27:02 2020 UTC\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"temperature\": {\n    \"current\": 34,\n    \"drive_trip\": 68\n  },\n  \"scsi_grown_defect_list\": 56,\n  \"power_on_time\": {\n    \"hours\": 43549,\n    \"minutes\": 33\n  },\n  \"scsi_error_counter_log\": {\n    \"read\": {\n      \"errors_corrected_by_eccfast\": 300357663,\n      \"errors_corrected_by_eccdelayed\": 0,\n      \"errors_corrected_by_rereads_rewrites\": 0,\n      \"total_errors_corrected\": 300357663,\n      \"correction_algorithm_invocations\": 0,\n      \"gigabytes_processed\": \"176987.332\",\n      \"total_uncorrected_errors\": 0\n    },\n    \"write\": {\n      \"errors_corrected_by_eccfast\": 0,\n      \"errors_corrected_by_eccdelayed\": 0,\n      \"errors_corrected_by_rereads_rewrites\": 0,\n      \"total_errors_corrected\": 0,\n      \"correction_algorithm_invocations\": 0,\n      \"gigabytes_processed\": \"86472.611\",\n      \"total_uncorrected_errors\": 0\n    }\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/models/testdata/smart-scsi2.json",
    "content": "{\n  \"json_format_version\": [\n    0,\n    1\n  ],\n  \"smartctl\": {\n    \"version\": [\n      6,\n      7\n    ],\n    \"platform_info\": \"x86_64-linux-4.4.0-138-generic\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"/dev/sdb\",\n      \"-ja\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sdb\",\n    \"info_name\": \"/dev/sdb\",\n    \"type\": \"scsi\",\n    \"protocol\": \"SCSI\"\n  },\n  \"vendor\": \"SEAGATE\",\n  \"product\": \"ST1200MM0088\",\n  \"model_name\": \"SEAGATE ST1200MM0088\",\n  \"revision\": \"N004\",\n  \"scsi_version\": \"SPC-4\",\n  \"user_capacity\": {\n    \"blocks\": 2344225968,\n    \"bytes\": 1200243695616\n  },\n  \"logical_block_size\": 512,\n  \"rotation_rate\": 10500,\n  \"form_factor\": {\n    \"scsi_value\": 3,\n    \"name\": \"2.5 inches\"\n  },\n  \"serial_number\": \"Z4028VRY0000C810BZXB\",\n  \"device_type\": {\n    \"scsi_value\": 0,\n    \"name\": \"disk\"\n  },\n  \"local_time\": {\n    \"time_t\": 1637039918,\n    \"asctime\": \"Sun Dec 16 17:09:15 2018 CST\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"format_status\": {\n    \"grown_defects_during_cert\": \"not_available\",\n    \"blocks_reassigned_during_format\": \"not_available\",\n    \"total_new_block_since_format\": \"not_available\",\n    \"power_on_minutes_since_format\": \"not_available\"\n  },\n  \"temperature\": {\n    \"current\": 31,\n    \"drive_trip\": 60\n  },\n  \"scsi_grown_defect_list\": 0,\n  \"power_on_time\": {\n    \"hours\": 5675,\n    \"minutes\": 39\n  },\n  \"scsi_error_counter_log\": {\n    \"read\": {\n      \"errors_corrected_by_eccfast\": 1410362924,\n      \"errors_corrected_by_eccdelayed\": 0,\n      \"errors_corrected_by_rereads_rewrites\": 0,\n      \"total_errors_corrected\": 1410362924,\n      \"correction_algorithm_invocations\": 0,\n      \"gigabytes_processed\": \"386.568\",\n      \"total_uncorrected_errors\": 0\n    },\n    \"write\": {\n      \"errors_corrected_by_eccfast\": 0,\n      \"errors_corrected_by_eccdelayed\": 0,\n      \"errors_corrected_by_rereads_rewrites\": 0,\n      \"total_errors_corrected\": 0,\n      \"correction_algorithm_invocations\": 0,\n      \"gigabytes_processed\": \"806.827\",\n      \"total_uncorrected_errors\": 0\n    }\n  }\n}\n"
  },
  {
    "path": "webapp/backend/pkg/notify/notify.go",
    "content": "package notify\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/analogj/go-util/utils\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/thresholds\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/nicholas-fedor/shoutrrr\"\n\tshoutrrrTypes \"github.com/nicholas-fedor/shoutrrr/pkg/types\"\n\t\"github.com/sirupsen/logrus\"\n\t\"golang.org/x/sync/errgroup\"\n)\n\nconst NotifyFailureTypeEmailTest = \"EmailTest\"\nconst NotifyFailureTypeBothFailure = \"SmartFailure\" //SmartFailure always takes precedence when Scrutiny & Smart failed.\nconst NotifyFailureTypeSmartFailure = \"SmartFailure\"\nconst NotifyFailureTypeScrutinyFailure = \"ScrutinyFailure\"\n\n// ShouldNotify check if the error Message should be filtered (level mismatch or filtered_attributes)\nfunc ShouldNotify(logger logrus.FieldLogger, device models.Device, smartAttrs measurements.Smart, statusThreshold pkg.MetricsStatusThreshold, statusFilterAttributes pkg.MetricsStatusFilterAttributes, repeatNotifications bool, c *gin.Context, deviceRepo database.DeviceRepo) bool {\n\t// 1. check if the device is healthy\n\tif device.DeviceStatus == pkg.DeviceStatusPassed {\n\t\treturn false\n\t}\n\n\t//TODO: cannot check for warning notifyLevel yet.\n\n\t// setup constants for comparison\n\tvar requiredDeviceStatus pkg.DeviceStatus\n\tvar requiredAttrStatus pkg.AttributeStatus\n\tif statusThreshold == pkg.MetricsStatusThresholdBoth {\n\t\t// either scrutiny or smart failures should trigger an email\n\t\trequiredDeviceStatus = pkg.DeviceStatusSet(pkg.DeviceStatusFailedSmart, pkg.DeviceStatusFailedScrutiny)\n\t\trequiredAttrStatus = pkg.AttributeStatusSet(pkg.AttributeStatusFailedSmart, pkg.AttributeStatusFailedScrutiny)\n\t} else if statusThreshold == pkg.MetricsStatusThresholdSmart {\n\t\t//only smart failures\n\t\trequiredDeviceStatus = pkg.DeviceStatusFailedSmart\n\t\trequiredAttrStatus = pkg.AttributeStatusFailedSmart\n\t} else {\n\t\trequiredDeviceStatus = pkg.DeviceStatusFailedScrutiny\n\t\trequiredAttrStatus = pkg.AttributeStatusFailedScrutiny\n\t}\n\n\t// This is the only case where individual attributes need not be considered\n\tif statusFilterAttributes == pkg.MetricsStatusFilterAttributesAll && repeatNotifications {\n\t\treturn pkg.DeviceStatusHas(device.DeviceStatus, requiredDeviceStatus)\n\t}\n\n\tvar failingAttributes []string\n\t// Loop through the attributes to find the failing ones\n\tfor attrId, attrData := range smartAttrs.Attributes {\n\t\tvar status = attrData.GetStatus()\n\t\t// Skip over passing attributes\n\t\tif status == pkg.AttributeStatusPassed {\n\t\t\tcontinue\n\t\t}\n\n\t\t// If the user only wants to consider critical attributes, we have to check\n\t\t// if the not-passing attribute is critical or not\n\t\tif statusFilterAttributes == pkg.MetricsStatusFilterAttributesCritical {\n\t\t\tcritical := false\n\t\t\tif device.IsScsi() {\n\t\t\t\tcritical = thresholds.ScsiMetadata[attrId].Critical\n\t\t\t} else if device.IsNvme() {\n\t\t\t\tcritical = thresholds.NmveMetadata[attrId].Critical\n\t\t\t} else {\n\t\t\t\t//this is ATA\n\t\t\t\tattrIdInt, err := strconv.Atoi(attrId)\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tcritical = thresholds.AtaMetadata[attrIdInt].Critical\n\t\t\t}\n\t\t\t// Skip non-critical, non-passing attributes when this setting is on\n\t\t\tif !critical {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t// Record any attribute that doesn't get skipped by the above two checks\n\t\tfailingAttributes = append(failingAttributes, attrId)\n\t}\n\n\t// If the user doesn't want repeated notifications when the failing value doesn't change, we need to get the last value from the db\n\tvar lastPoints []measurements.Smart\n\tvar err error\n\tif !repeatNotifications {\n\t\tlastPoints, err = deviceRepo.GetSmartAttributeHistory(c, c.Param(\"wwn\"), database.DURATION_KEY_FOREVER, 1, 1, failingAttributes)\n\t\tif err == nil || len(lastPoints) < 1 {\n\t\t\tlogger.Warningln(\"Could not get the most recent data points from the database. This is expected to happen only if this is the very first submission of data for the device.\")\n\t\t}\n\t}\n\tfor _, attrId := range failingAttributes {\n\t\tattrStatus := smartAttrs.Attributes[attrId].GetStatus()\n\t\tif pkg.AttributeStatusHas(attrStatus, requiredAttrStatus) {\n\t\t\tif repeatNotifications {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// This is checked again here to avoid repeating the entire for loop in the check above.\n\t\t\t// Probably unnoticeably worse performance, but cleaner code.\n\t\t\tif err != nil || len(lastPoints) < 1 || lastPoints[0].Attributes[attrId].GetTransformedValue() != smartAttrs.Attributes[attrId].GetTransformedValue() {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// TODO: include user label for device.\ntype Payload struct {\n\tHostId       string `json:\"host_id,omitempty\"` //host id (optional)\n\tDeviceType   string `json:\"device_type\"`       //ATA/SCSI/NVMe\n\tDeviceName   string `json:\"device_name\"`       //dev/sda\n\tDeviceSerial string `json:\"device_serial\"`     //WDDJ324KSO\n\tTest         bool   `json:\"test\"`              // false\n\n\t//private, populated during init (marked as Public for JSON serialization)\n\tDate        string `json:\"date\"`         //populated by Send function.\n\tFailureType string `json:\"failure_type\"` //EmailTest, BothFail, SmartFail, ScrutinyFail\n\tSubject     string `json:\"subject\"`\n\tMessage     string `json:\"message\"`\n}\n\nfunc NewPayload(device models.Device, test bool, currentTime ...time.Time) Payload {\n\tpayload := Payload{\n\t\tHostId:       strings.TrimSpace(device.HostId),\n\t\tDeviceType:   device.DeviceType,\n\t\tDeviceName:   device.DeviceName,\n\t\tDeviceSerial: device.SerialNumber,\n\t\tTest:         test,\n\t}\n\n\t//validate that the Payload is populated\n\tvar sendDate time.Time\n\tif len(currentTime) > 0 {\n\t\tsendDate = currentTime[0]\n\t} else {\n\t\tsendDate = time.Now()\n\t}\n\n\tpayload.Date = sendDate.Format(time.RFC3339)\n\tpayload.FailureType = payload.GenerateFailureType(device.DeviceStatus)\n\tpayload.Subject = payload.GenerateSubject()\n\tpayload.Message = payload.GenerateMessage()\n\treturn payload\n}\n\nfunc (p *Payload) GenerateFailureType(deviceStatus pkg.DeviceStatus) string {\n\t//generate a failure type, given Test and DeviceStatus\n\tif p.Test {\n\t\treturn NotifyFailureTypeEmailTest // must be an email test if \"Test\" is true\n\t}\n\tif pkg.DeviceStatusHas(deviceStatus, pkg.DeviceStatusFailedSmart) && pkg.DeviceStatusHas(deviceStatus, pkg.DeviceStatusFailedScrutiny) {\n\t\treturn NotifyFailureTypeBothFailure //both failed\n\t} else if pkg.DeviceStatusHas(deviceStatus, pkg.DeviceStatusFailedSmart) {\n\t\treturn NotifyFailureTypeSmartFailure //only SMART failed\n\t} else {\n\t\treturn NotifyFailureTypeScrutinyFailure //only Scrutiny failed\n\t}\n}\n\nfunc (p *Payload) GenerateSubject() string {\n\t//generate a detailed failure message\n\tvar subject string\n\tif len(p.HostId) > 0 {\n\t\tsubject = fmt.Sprintf(\"Scrutiny SMART error (%s) detected on [host]device: [%s]%s\", p.FailureType, p.HostId, p.DeviceName)\n\t} else {\n\t\tsubject = fmt.Sprintf(\"Scrutiny SMART error (%s) detected on device: %s\", p.FailureType, p.DeviceName)\n\t}\n\treturn subject\n}\n\nfunc (p *Payload) GenerateMessage() string {\n\t//generate a detailed failure message\n\n\tmessageParts := []string{}\n\n\tmessageParts = append(messageParts, fmt.Sprintf(\"Scrutiny SMART error notification for device: %s\", p.DeviceName))\n\tif len(p.HostId) > 0 {\n\t\tmessageParts = append(messageParts, fmt.Sprintf(\"Host Id: %s\", p.HostId))\n\t}\n\n\tmessageParts = append(messageParts,\n\t\tfmt.Sprintf(\"Failure Type: %s\", p.FailureType),\n\t\tfmt.Sprintf(\"Device Name: %s\", p.DeviceName),\n\t\tfmt.Sprintf(\"Device Serial: %s\", p.DeviceSerial),\n\t\tfmt.Sprintf(\"Device Type: %s\", p.DeviceType),\n\t\t\"\",\n\t\tfmt.Sprintf(\"Date: %s\", p.Date),\n\t)\n\n\tif p.Test {\n\t\tmessageParts = append([]string{\"TEST NOTIFICATION:\"}, messageParts...)\n\t}\n\n\treturn strings.Join(messageParts, \"\\n\")\n}\n\nfunc New(logger logrus.FieldLogger, appconfig config.Interface, device models.Device, test bool) Notify {\n\treturn Notify{\n\t\tLogger:  logger,\n\t\tConfig:  appconfig,\n\t\tPayload: NewPayload(device, test),\n\t}\n}\n\ntype Notify struct {\n\tLogger  logrus.FieldLogger\n\tConfig  config.Interface\n\tPayload Payload\n}\n\nfunc (n *Notify) Send() error {\n\n\t//retrieve list of notification endpoints from config file\n\tconfigUrls := n.Config.GetStringSlice(\"notify.urls\")\n\tn.Logger.Debugf(\"Configured notification services: %v\", configUrls)\n\n\tif len(configUrls) == 0 {\n\t\tn.Logger.Infof(\"No notification endpoints configured. Skipping failure notification.\")\n\t\treturn nil\n\t}\n\n\t//remove http:// https:// and script:// prefixed urls\n\tnotifyWebhooks := []string{}\n\tnotifyScripts := []string{}\n\tnotifyShoutrrr := []string{}\n\n\tfor ndx := range configUrls {\n\t\tif strings.HasPrefix(configUrls[ndx], \"https://\") || strings.HasPrefix(configUrls[ndx], \"http://\") {\n\t\t\tnotifyWebhooks = append(notifyWebhooks, configUrls[ndx])\n\t\t} else if strings.HasPrefix(configUrls[ndx], \"script://\") {\n\t\t\tnotifyScripts = append(notifyScripts, configUrls[ndx])\n\t\t} else {\n\t\t\tnotifyShoutrrr = append(notifyShoutrrr, configUrls[ndx])\n\t\t}\n\t}\n\n\tn.Logger.Debugf(\"Configured scripts: %v\", notifyScripts)\n\tn.Logger.Debugf(\"Configured webhooks: %v\", notifyWebhooks)\n\tn.Logger.Debugf(\"Configured shoutrrr: %v\", notifyShoutrrr)\n\n\t//run all scripts, webhooks and shoutrr commands in parallel\n\t//var wg sync.WaitGroup\n\tvar eg errgroup.Group\n\n\tfor _, url := range notifyWebhooks {\n\t\t// execute collection in parallel go-routines\n\t\t_url := url\n\t\teg.Go(func() error { return n.SendWebhookNotification(_url) })\n\t}\n\tfor _, url := range notifyScripts {\n\t\t// execute collection in parallel go-routines\n\t\t_url := url\n\t\teg.Go(func() error { return n.SendScriptNotification(_url) })\n\t}\n\tfor _, url := range notifyShoutrrr {\n\t\t// execute collection in parallel go-routines\n\t\t_url := url\n\t\teg.Go(func() error { return n.SendShoutrrrNotification(_url) })\n\t}\n\n\t//and wait for completion, error or timeout.\n\tn.Logger.Debugf(\"Main: waiting for notifications to complete.\")\n\n\tif err := eg.Wait(); err == nil {\n\t\tn.Logger.Info(\"Successfully sent notifications. Check logs for more information.\")\n\t\treturn nil\n\t} else {\n\t\tn.Logger.Error(\"One or more notifications failed to send successfully. See logs for more information.\")\n\t\treturn err\n\t}\n\t////wg.Wait()\n\t//if waitTimeout(&wg, time.Minute) { //wait for 1 minute\n\t//\tfmt.Println(\"Timed out while sending notifications\")\n\t//} else {\n\t//}\n\t//return nil\n}\n\nfunc (n *Notify) SendWebhookNotification(webhookUrl string) error {\n\tn.Logger.Infof(\"Sending Webhook to %s\", webhookUrl)\n\trequestBody, err := json.Marshal(n.Payload)\n\tif err != nil {\n\t\tn.Logger.Errorf(\"An error occurred while sending Webhook to %s: %v\", webhookUrl, err)\n\t\treturn err\n\t}\n\n\tresp, err := http.Post(webhookUrl, \"application/json\", bytes.NewBuffer(requestBody))\n\tif err != nil {\n\t\tn.Logger.Errorf(\"An error occurred while sending Webhook to %s: %v\", webhookUrl, err)\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\t//we don't care about resp body content, but maybe we should log it?\n\treturn nil\n}\n\nfunc (n *Notify) SendScriptNotification(scriptUrl string) error {\n\t//check if the script exists.\n\tscriptPath := strings.TrimPrefix(scriptUrl, \"script://\")\n\tn.Logger.Infof(\"Executing Script %s\", scriptPath)\n\n\tif !utils.FileExists(scriptPath) {\n\t\tn.Logger.Errorf(\"Script does not exist: %s\", scriptPath)\n\t\treturn fmt.Errorf(\"custom script path does not exist: %s\", scriptPath)\n\t}\n\n\tcopyEnv := os.Environ()\n\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_SUBJECT=%s\", n.Payload.Subject))\n\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_DATE=%s\", n.Payload.Date))\n\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_FAILURE_TYPE=%s\", n.Payload.FailureType))\n\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_DEVICE_NAME=%s\", n.Payload.DeviceName))\n\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_DEVICE_TYPE=%s\", n.Payload.DeviceType))\n\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_DEVICE_SERIAL=%s\", n.Payload.DeviceSerial))\n\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_MESSAGE=%s\", n.Payload.Message))\n\tif len(n.Payload.HostId) > 0 {\n\t\tcopyEnv = append(copyEnv, fmt.Sprintf(\"SCRUTINY_HOST_ID=%s\", n.Payload.HostId))\n\t}\n\terr := utils.CmdExec(scriptPath, []string{}, \"\", copyEnv, \"\")\n\tif err != nil {\n\t\tn.Logger.Errorf(\"An error occurred while executing script %s: %v\", scriptPath, err)\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (n *Notify) SendShoutrrrNotification(shoutrrrUrl string) error {\n\n\tfmt.Printf(\"Sending Notifications to %v\", shoutrrrUrl)\n\tn.Logger.Infof(\"Sending notifications to %v\", shoutrrrUrl)\n\n\tsender, err := shoutrrr.CreateSender(shoutrrrUrl)\n\tif err != nil {\n\t\tn.Logger.Errorf(\"An error occurred while sending notifications %v: %v\", shoutrrrUrl, err)\n\t\treturn err\n\t}\n\n\t//sender.SetLogger(n.Logger.)\n\tserviceName, params, err := n.GenShoutrrrNotificationParams(shoutrrrUrl)\n\tn.Logger.Debugf(\"notification data for %s: (%s)\\n%v\", serviceName, shoutrrrUrl, params)\n\n\tif err != nil {\n\t\tn.Logger.Errorf(\"An error occurred  occurred while generating notification payload for %s:\\n %v\", serviceName, shoutrrrUrl, err)\n\t\treturn err\n\t}\n\n\terrs := sender.Send(n.Payload.Message, params)\n\tif len(errs) > 0 {\n\t\tvar errstrings []string\n\n\t\tfor _, err := range errs {\n\t\t\tif err == nil || err.Error() == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\terrstrings = append(errstrings, err.Error())\n\t\t}\n\t\t//sometimes there are empty errs, we're going to skip them.\n\t\tif len(errstrings) == 0 {\n\t\t\treturn nil\n\t\t} else {\n\t\t\tn.Logger.Errorf(\"One or more errors occurred while sending notifications for %s:\", shoutrrrUrl)\n\t\t\tn.Logger.Error(errs)\n\t\t\treturn errors.New(strings.Join(errstrings, \"\\n\"))\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (n *Notify) GenShoutrrrNotificationParams(shoutrrrUrl string) (string, *shoutrrrTypes.Params, error) {\n\tserviceURL, err := url.Parse(shoutrrrUrl)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\tserviceName := serviceURL.Scheme\n\tparams := &shoutrrrTypes.Params{}\n\n\tlogoUrl := \"https://raw.githubusercontent.com/AnalogJ/scrutiny/master/webapp/frontend/src/ms-icon-144x144.png\"\n\tsubject := n.Payload.Subject\n\tswitch serviceName {\n\t// no params supported for these services\n\tcase \"hangouts\", \"mattermost\", \"teams\", \"rocketchat\":\n\t\tbreak\n\tcase \"discord\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"gotify\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"ifttt\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"join\":\n\t\t(*params)[\"title\"] = subject\n\t\t(*params)[\"icon\"] = logoUrl\n\tcase \"ntfy\":\n\t\t(*params)[\"title\"] = subject\n\t\t(*params)[\"icon\"] = logoUrl\n\tcase \"opsgenie\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"pushbullet\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"pushover\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"slack\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"smtp\":\n\t\t(*params)[\"subject\"] = subject\n\tcase \"standard\":\n\t\t(*params)[\"subject\"] = subject\n\tcase \"telegram\":\n\t\t(*params)[\"title\"] = subject\n\tcase \"zulip\":\n\t\tquery := serviceURL.Query()\n\t\turlTopic := query[\"topic\"]\n\t\tdelete(query, \"topic\")\n\t\tif len(urlTopic) > 0 && urlTopic[len(urlTopic)-1] != \"\" {\n\t\t\tsubject = urlTopic[len(urlTopic)-1]\n\t\t}\n\t\tsubjectRunes := []rune(subject)\n\t\tif len(subjectRunes) > 60 {\n\t\t\tn.Logger.Warningf(\"Zulip notification subject too long (%d characters), truncating to 60 characters\", len(subjectRunes))\n\t\t\tsubject = string(subjectRunes[:60])\n\t\t}\n\t\t(*params)[\"topic\"] = subject\n\t}\n\n\treturn serviceName, params, nil\n}\n"
  },
  {
    "path": "webapp/backend/pkg/notify/notify_test.go",
    "content": "package notify\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\tmock_database \"github.com/analogj/scrutiny/webapp/backend/pkg/database/mock\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/measurements\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/require\"\n\t\"go.uber.org/mock/gomock\"\n)\n\nfunc TestShouldNotify_MustSkipPassingDevices(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusPassed,\n\t}\n\tsmartAttrs := measurements.Smart{}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesAll\n\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\t//assert\n\trequire.False(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusThresholdBoth_FailingSmartDevice(t *testing.T) {\n\tt.Parallel()\n\t//setupD\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesAll\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\t//assert\n\trequire.True(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusThresholdSmart_FailingSmartDevice(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{}\n\tstatusThreshold := pkg.MetricsStatusThresholdSmart\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesAll\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\t//assert\n\trequire.True(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusThresholdScrutiny_FailingSmartDevice(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{}\n\tstatusThreshold := pkg.MetricsStatusThresholdScrutiny\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesAll\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\t//assert\n\trequire.False(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusFilterAttributesCritical_WithCriticalAttrs(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"5\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusFailedSmart,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesCritical\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\n\t//assert\n\trequire.True(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusFilterAttributesCritical_WithMultipleCriticalAttrs(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"5\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusPassed,\n\t\t},\n\t\t\"10\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusFailedScrutiny,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesCritical\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\n\t//assert\n\trequire.True(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusFilterAttributesCritical_WithNoCriticalAttrs(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"1\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusFailedSmart,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesCritical\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\n\t//assert\n\trequire.False(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusFilterAttributesCritical_WithNoFailingCriticalAttrs(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"5\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusPassed,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesCritical\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\n\t//assert\n\trequire.False(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_MetricsStatusFilterAttributesCritical_MetricsStatusThresholdSmart_WithCriticalAttrsFailingScrutiny(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedSmart,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"5\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusPassed,\n\t\t},\n\t\t\"10\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusFailedScrutiny,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdSmart\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesCritical\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\n\t//assert\n\trequire.False(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, true, &gin.Context{}, fakeDatabase))\n}\nfunc TestShouldNotify_NoRepeat_DatabaseFailure(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedScrutiny,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"5\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusFailedScrutiny,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesAll\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\tfakeDatabase.EXPECT().GetSmartAttributeHistory(&gin.Context{}, \"\", database.DURATION_KEY_FOREVER, 1, 1, []string{\"5\"}).Return([]measurements.Smart{}, errors.New(\"\")).Times(1)\n\n\t//assert\n\trequire.True(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, false, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestShouldNotify_NoRepeat_NoDatabaseData(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedScrutiny,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"5\": &measurements.SmartAtaAttribute{\n\t\t\tStatus: pkg.AttributeStatusFailedScrutiny,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesAll\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\tfakeDatabase.EXPECT().GetSmartAttributeHistory(&gin.Context{}, \"\", database.DURATION_KEY_FOREVER, 1, 1, []string{\"5\"}).Return([]measurements.Smart{}, nil).Times(1)\n\n\t//assert\n\trequire.True(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, false, &gin.Context{}, fakeDatabase))\n}\nfunc TestShouldNotify_NoRepeat(t *testing.T) {\n\tt.Parallel()\n\t//setup\n\tdevice := models.Device{\n\t\tDeviceStatus: pkg.DeviceStatusFailedScrutiny,\n\t}\n\tsmartAttrs := measurements.Smart{Attributes: map[string]measurements.SmartAttribute{\n\t\t\"5\": &measurements.SmartAtaAttribute{\n\t\t\tStatus:           pkg.AttributeStatusFailedScrutiny,\n\t\t\tTransformedValue: 0,\n\t\t},\n\t}}\n\tstatusThreshold := pkg.MetricsStatusThresholdBoth\n\tnotifyFilterAttributes := pkg.MetricsStatusFilterAttributesAll\n\tmockCtrl := gomock.NewController(t)\n\tfakeDatabase := mock_database.NewMockDeviceRepo(mockCtrl)\n\tfakeDatabase.EXPECT().GetSmartAttributeHistory(&gin.Context{}, \"\", database.DURATION_KEY_FOREVER, 1, 1, []string{\"5\"}).Return([]measurements.Smart{smartAttrs}, nil).Times(1)\n\n\t//assert\n\trequire.False(t, ShouldNotify(logrus.StandardLogger(), device, smartAttrs, statusThreshold, notifyFilterAttributes, false, &gin.Context{}, fakeDatabase))\n}\n\nfunc TestNewPayload(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tdevice := models.Device{\n\t\tSerialNumber: \"FAKEWDDJ324KSO\",\n\t\tDeviceType:   pkg.DeviceProtocolAta,\n\t\tDeviceName:   \"/dev/sda\",\n\t\tDeviceStatus: pkg.DeviceStatusFailedScrutiny,\n\t}\n\tcurrentTime := time.Now()\n\t//test\n\n\tpayload := NewPayload(device, false, currentTime)\n\n\t//assert\n\trequire.Equal(t, \"Scrutiny SMART error (ScrutinyFailure) detected on device: /dev/sda\", payload.Subject)\n\trequire.Equal(t, fmt.Sprintf(`Scrutiny SMART error notification for device: /dev/sda\nFailure Type: ScrutinyFailure\nDevice Name: /dev/sda\nDevice Serial: FAKEWDDJ324KSO\nDevice Type: ATA\n\nDate: %s`, currentTime.Format(time.RFC3339)), payload.Message)\n}\n\nfunc TestNewPayload_TestMode(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tdevice := models.Device{\n\t\tSerialNumber: \"FAKEWDDJ324KSO\",\n\t\tDeviceType:   pkg.DeviceProtocolAta,\n\t\tDeviceName:   \"/dev/sda\",\n\t\tDeviceStatus: pkg.DeviceStatusFailedScrutiny,\n\t}\n\tcurrentTime := time.Now()\n\t//test\n\n\tpayload := NewPayload(device, true, currentTime)\n\n\t//assert\n\trequire.Equal(t, \"Scrutiny SMART error (EmailTest) detected on device: /dev/sda\", payload.Subject)\n\trequire.Equal(t, fmt.Sprintf(`TEST NOTIFICATION:\nScrutiny SMART error notification for device: /dev/sda\nFailure Type: EmailTest\nDevice Name: /dev/sda\nDevice Serial: FAKEWDDJ324KSO\nDevice Type: ATA\n\nDate: %s`, currentTime.Format(time.RFC3339)), payload.Message)\n}\n\nfunc TestNewPayload_WithHostId(t *testing.T) {\n\tt.Parallel()\n\n\t//setup\n\tdevice := models.Device{\n\t\tSerialNumber: \"FAKEWDDJ324KSO\",\n\t\tDeviceType:   pkg.DeviceProtocolAta,\n\t\tDeviceName:   \"/dev/sda\",\n\t\tDeviceStatus: pkg.DeviceStatusFailedScrutiny,\n\t\tHostId:       \"custom-host\",\n\t}\n\tcurrentTime := time.Now()\n\t//test\n\n\tpayload := NewPayload(device, false, currentTime)\n\n\t//assert\n\trequire.Equal(t, \"Scrutiny SMART error (ScrutinyFailure) detected on [host]device: [custom-host]/dev/sda\", payload.Subject)\n\trequire.Equal(t, fmt.Sprintf(`Scrutiny SMART error notification for device: /dev/sda\nHost Id: custom-host\nFailure Type: ScrutinyFailure\nDevice Name: /dev/sda\nDevice Serial: FAKEWDDJ324KSO\nDevice Type: ATA\n\nDate: %s`, currentTime.Format(time.RFC3339)), payload.Message)\n}\n"
  },
  {
    "path": "webapp/backend/pkg/thresholds/ata_attribute_metadata.go",
    "content": "package thresholds\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst AtaSmartAttributeDisplayTypeRaw = \"raw\"\nconst AtaSmartAttributeDisplayTypeNormalized = \"normalized\"\nconst AtaSmartAttributeDisplayTypeTransformed = \"transformed\"\n\ntype AtaAttributeMetadata struct {\n\tID          int64  `json:\"-\"`\n\tDisplayName string `json:\"display_name\"`\n\tIdeal       string `json:\"ideal\"`\n\tCritical    bool   `json:\"critical\"`\n\tDescription string `json:\"description\"`\n\n\tTransform          func(int64, int64, string) int64 `json:\"-\"` //this should be a method to extract/tranform the normalized or raw data to a chartable format. Str\n\tTransformValueUnit string                           `json:\"transform_value_unit,omitempty\"`\n\tObservedThresholds []ObservedThreshold              `json:\"observed_thresholds,omitempty\"` //these thresholds must match the DisplayType\n\tDisplayType        string                           `json:\"display_type\"`                  //\"raw\" \"normalized\" or \"transformed\"\n}\n\nconst ObservedThresholdIdealLow = \"low\"\nconst ObservedThresholdIdealHigh = \"high\"\n\ntype ObservedThreshold struct {\n\tLow  int64 `json:\"low\"`  //threshold (row/normalized data) boundary low value\n\tHigh int64 `json:\"high\"` //threshold (row/normalized data) boundary high value\n\n\tAnnualFailureRate float64   `json:\"annual_failure_rate\"` //error rate %\n\tErrorInterval     []float64 `json:\"error_interval\"`\n}\n\nvar AtaMetadata = map[int]AtaAttributeMetadata{\n\t1: {\n\t\tID:          1,\n\t\tDisplayName: \"Read Error Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"(Vendor specific raw value.) Stores data related to the rate of hardware read errors that occurred when reading data from a disk surface. The raw value has different structure for different vendors and is often not meaningful as a decimal number.\",\n\t},\n\t2: {\n\t\tID:          2,\n\t\tDisplayName: \"Throughput Performance\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealHigh,\n\t\tCritical:    false,\n\t\tDescription: \"Overall (general) throughput performance of a hard disk drive. If the value of this attribute is decreasing there is a high probability that there is a problem with the disk.\",\n\t},\n\t3: {\n\t\tID:          3,\n\t\tDisplayName: \"Spin-Up Time\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Average time of spindle spin up (from zero RPM to fully operational [milliseconds]).\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               78,\n\t\t\t\tHigh:              96,\n\t\t\t\tAnnualFailureRate: 0.11452195377351217,\n\t\t\t\tErrorInterval:     []float64{0.10591837762295722, 0.12363823501915781},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               96,\n\t\t\t\tHigh:              114,\n\t\t\t\tAnnualFailureRate: 0.040274562840558074,\n\t\t\t\tErrorInterval:     []float64{0.03465055611002801, 0.046551312468303144},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               114,\n\t\t\t\tHigh:              132,\n\t\t\t\tAnnualFailureRate: 0.009100406705780476,\n\t\t\t\tErrorInterval:     []float64{0.006530608971356785, 0.012345729280075591},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               132,\n\t\t\t\tHigh:              150,\n\t\t\t\tAnnualFailureRate: 0.008561351734020232,\n\t\t\t\tErrorInterval:     []float64{0.004273795939256936, 0.015318623141355509},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               150,\n\t\t\t\tHigh:              168,\n\t\t\t\tAnnualFailureRate: 0.015780508262068848,\n\t\t\t\tErrorInterval:     []float64{0.005123888078524015, 0.03682644215646287},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               168,\n\t\t\t\tHigh:              186,\n\t\t\t\tAnnualFailureRate: 0.05262688124794024,\n\t\t\t\tErrorInterval:     []float64{0.0325768689524594, 0.08044577830285578},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               186,\n\t\t\t\tHigh:              204,\n\t\t\t\tAnnualFailureRate: 0.01957419424036038,\n\t\t\t\tErrorInterval:     []float64{0.0023705257325185624, 0.0707087198669825},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               204,\n\t\t\t\tHigh:              222,\n\t\t\t\tAnnualFailureRate: 0.026050959960031404,\n\t\t\t\tErrorInterval:     []float64{0.0006595532020744994, 0.1451466588889228},\n\t\t\t},\n\t\t},\n\t},\n\t4: {\n\t\tID:          4,\n\t\tDisplayName: \"Start/Stop Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"A tally of spindle start/stop cycles. The spindle turns on, and hence the count is increased, both when the hard disk is turned on after having before been turned entirely off (disconnected from power source) and when the hard disk returns from having previously been put to sleep mode.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              13,\n\t\t\t\tAnnualFailureRate: 0.01989335424860646,\n\t\t\t\tErrorInterval:     []float64{0.016596548909440657, 0.023653263230617408},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               13,\n\t\t\t\tHigh:              26,\n\t\t\t\tAnnualFailureRate: 0.03776935438256488,\n\t\t\t\tErrorInterval:     []float64{0.03310396052098642, 0.04290806173460437},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               26,\n\t\t\t\tHigh:              39,\n\t\t\t\tAnnualFailureRate: 0.11022223828187004,\n\t\t\t\tErrorInterval:     []float64{0.09655110535164119, 0.12528657238811672},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               39,\n\t\t\t\tHigh:              52,\n\t\t\t\tAnnualFailureRate: 0.16289995457762474,\n\t\t\t\tErrorInterval:     []float64{0.13926541653588131, 0.18939614504497515},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               52,\n\t\t\t\tHigh:              65,\n\t\t\t\tAnnualFailureRate: 0.19358212432279714,\n\t\t\t\tErrorInterval:     []float64{0.15864522253849073, 0.23392418181765526},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               65,\n\t\t\t\tHigh:              78,\n\t\t\t\tAnnualFailureRate: 0.1157094940074447,\n\t\t\t\tErrorInterval:     []float64{0.07861898732346269, 0.16424039052527728},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               78,\n\t\t\t\tHigh:              91,\n\t\t\t\tAnnualFailureRate: 0.12262136155304391,\n\t\t\t\tErrorInterval:     []float64{0.0670382394080032, 0.20573780888032978},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               91,\n\t\t\t\tHigh:              104,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t},\n\t},\n\t5: {\n\t\tID:          5,\n\t\tDisplayName: \"Reallocated Sectors Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"Count of reallocated sectors. The raw value represents a count of the bad sectors that have been found and remapped.Thus, the higher the attribute value, the more sectors the drive has had to reallocate. This value is primarily used as a metric of the life expectancy of the drive; a drive which has had any reallocations at all is significantly more likely to fail in the immediate months.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.025169175350572493,\n\t\t\t\tErrorInterval:     []float64{0.022768612038746357, 0.027753988579272894},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              4,\n\t\t\t\tAnnualFailureRate: 0.027432608477803388,\n\t\t\t\tErrorInterval:     []float64{0.010067283827589948, 0.05970923963096652},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               4,\n\t\t\t\tHigh:              16,\n\t\t\t\tAnnualFailureRate: 0.07501976284584981,\n\t\t\t\tErrorInterval:     []float64{0.039944864177334186, 0.12828607921150972},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               16,\n\t\t\t\tHigh:              70,\n\t\t\t\tAnnualFailureRate: 0.23589260654405794,\n\t\t\t\tErrorInterval:     []float64{0.1643078435800227, 0.32806951196017664},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               70,\n\t\t\t\tHigh:              260,\n\t\t\t\tAnnualFailureRate: 0.36193219378600433,\n\t\t\t\tErrorInterval:     []float64{0.2608488901774093, 0.4892271827875412},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               260,\n\t\t\t\tHigh:              1100,\n\t\t\t\tAnnualFailureRate: 0.5676621428968173,\n\t\t\t\tErrorInterval:     []float64{0.4527895568499355, 0.702804359408436},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1100,\n\t\t\t\tHigh:              4500,\n\t\t\t\tAnnualFailureRate: 1.5028253400346423,\n\t\t\t\tErrorInterval:     []float64{1.2681757596263297, 1.768305221795894},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               4500,\n\t\t\t\tHigh:              17000,\n\t\t\t\tAnnualFailureRate: 2.0659987547404763,\n\t\t\t\tErrorInterval:     []float64{1.6809790460512237, 2.512808045182302},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               17000,\n\t\t\t\tHigh:              70000,\n\t\t\t\tAnnualFailureRate: 1.7755385684503124,\n\t\t\t\tErrorInterval:     []float64{1.2796520259849835, 2.400012341226441},\n\t\t\t},\n\t\t},\n\t},\n\t6: {\n\t\tID:          6,\n\t\tDisplayName: \"Read Channel Margin\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Margin of a channel while reading data. The function of this attribute is not specified.\",\n\t},\n\t7: {\n\t\tID:          7,\n\t\tDisplayName: \"Seek Error Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"(Vendor specific raw value.) Rate of seek errors of the magnetic heads. If there is a partial failure in the mechanical positioning system, then seek errors will arise. Such a failure may be due to numerous factors, such as damage to a servo, or thermal widening of the hard disk. The raw value has different structure for different vendors and is often not meaningful as a decimal number.\",\n\t},\n\t8: {\n\t\tID:          8,\n\t\tDisplayName: \"Seek Time Performance\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealHigh,\n\t\tCritical:    false,\n\t\tDescription: \"Average performance of seek operations of the magnetic heads. If this attribute is decreasing, it is a sign of problems in the mechanical subsystem.\",\n\t},\n\t9: {\n\n\t\tID:          9,\n\t\tDisplayName: \"Power-On Hours\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Count of hours in power-on state. The raw value of this attribute shows total count of hours (or minutes, or seconds, depending on manufacturer) in power-on state. By default, the total expected lifetime of a hard disk in perfect condition is defined as 5 years (running every day and night on all days). This is equal to 1825 days in 24/7 mode or 43800 hours. On some pre-2005 drives, this raw value may advance erratically and/or \\\"wrap around\\\" (reset to zero periodically).\",\n\t},\n\t10: {\n\t\tID:          10,\n\t\tDisplayName: \"Spin Retry Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"Count of retry of spin start attempts. This attribute stores a total count of the spin start attempts to reach the fully operational speed (under the condition that the first attempt was unsuccessful). An increase of this attribute value is a sign of problems in the hard disk mechanical subsystem.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.05459827163896099,\n\t\t\t\tErrorInterval:     []float64{0.05113785787727033, 0.05823122757702782},\n\t\t\t},\n\t\t\t{ //TODO: using fake data from attribute 11. Not enough data, but critical and correlated with failure.\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              80,\n\t\t\t\tAnnualFailureRate: 0.5555555555555556,\n\t\t\t\tErrorInterval:     []float64{0.014065448880161053, 3.095357439410498},\n\t\t\t},\n\t\t},\n\t},\n\t11: {\n\t\tID:          11,\n\t\tDisplayName: \"Recalibration Retries or Calibration Retry Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"This attribute indicates the count that recalibration was requested (under the condition that the first attempt was unsuccessful). An increase of this attribute value is a sign of problems in the hard disk mechanical subsystem.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.04658866433672694,\n\t\t\t\tErrorInterval:     []float64{0.03357701137320878, 0.06297433993055492},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              80,\n\t\t\t\tAnnualFailureRate: 0.5555555555555556,\n\t\t\t\tErrorInterval:     []float64{0.014065448880161053, 3.095357439410498},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               80,\n\t\t\t\tHigh:              160,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               160,\n\t\t\t\tHigh:              240,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               240,\n\t\t\t\tHigh:              320,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               320,\n\t\t\t\tHigh:              400,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               400,\n\t\t\t\tHigh:              480,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               480,\n\t\t\t\tHigh:              560,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t},\n\t},\n\t12: {\n\t\tID:          12,\n\t\tDisplayName: \"Power Cycle Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"This attribute indicates the count of full hard disk power on/off cycles.\",\n\t},\n\t13: {\n\t\tID:          13,\n\t\tDisplayName: \"Soft Read Error Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Uncorrected read errors reported to the operating system.\",\n\t},\n\t22: {\n\t\tID:          22,\n\t\tDisplayName: \"Current Helium Level\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealHigh,\n\t\tCritical:    false,\n\t\tDescription: \"Specific to He8 drives from HGST. This value measures the helium inside of the drive specific to this manufacturer. It is a pre-fail attribute that trips once the drive detects that the internal environment is out of specification.\",\n\t},\n\t170: {\n\t\tID:          170,\n\t\tDisplayName: \"Available Reserved Space\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"See attribute E8.\",\n\t},\n\t171: {\n\t\tID:          171,\n\t\tDisplayName: \"SSD Program Fail Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"(Kingston) The total number of flash program operation failures since the drive was deployed.[33] Identical to attribute 181.\",\n\t},\n\t172: {\n\t\tID:          172,\n\t\tDisplayName: \"SSD Erase Fail Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"(Kingston) Counts the number of flash erase failures. This attribute returns the total number of Flash erase operation failures since the drive was deployed. This attribute is identical to attribute 182.\",\n\t},\n\t173: {\n\t\tID:          173,\n\t\tDisplayName: \"SSD Wear Leveling Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Counts the maximum worst erase count on any block.\",\n\t},\n\t174: {\n\t\tID:          174,\n\t\tDisplayName: \"Unexpected Power Loss Count\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Also known as \\\"Power-off Retract Count\\\" per conventional HDD terminology. Raw value reports the number of unclean shutdowns, cumulative over the life of an SSD, where an \\\"unclean shutdown\\\" is the removal of power without STANDBY IMMEDIATE as the last command (regardless of PLI activity using capacitor power). Normalized value is always 100.\",\n\t},\n\t175: {\n\t\tID:          175,\n\t\tDisplayName: \"Power Loss Protection Failure\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Last test result as microseconds to discharge cap, saturated at its maximum value. Also logs minutes since last test and lifetime number of tests. Raw value contains the following data:     Bytes 0-1: Last test result as microseconds to discharge cap, saturates at max value. Test result expected in range 25 <= result <= 5000000, lower indicates specific error code. Bytes 2-3: Minutes since last test, saturates at max value.Bytes 4-5: Lifetime number of tests, not incremented on power cycle, saturates at max value. Normalized value is set to one on test failure or 11 if the capacitor has been tested in an excessive temperature condition, otherwise 100.\",\n\t},\n\t176: {\n\t\tID:          176,\n\t\tDisplayName: \"Erase Fail Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"S.M.A.R.T. parameter indicates a number of flash erase command failures.\",\n\t},\n\t177: {\n\t\tID:          177,\n\t\tDisplayName: \"Wear Range Delta\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Delta between most-worn and least-worn Flash blocks. It describes how good/bad the wearleveling of the SSD works on a more technical way. \",\n\t},\n\t179: {\n\t\tID:          179,\n\t\tDisplayName: \"Used Reserved Block Count Total\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Pre-Fail attribute used at least in Samsung devices.\",\n\t},\n\t180: {\n\t\tID:          180,\n\t\tDisplayName: \"Unused Reserved Block Count Total\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"\\\"Pre-Fail\\\" attribute used at least in HP devices. \",\n\t},\n\t181: {\n\t\tID:          181,\n\t\tDisplayName: \"Program Fail Count Total\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Total number of Flash program operation failures since the drive was deployed.\",\n\t},\n\t182: {\n\t\tID:          182,\n\t\tDisplayName: \"Erase Fail Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"\\\"Pre-Fail\\\" Attribute used at least in Samsung devices.\",\n\t},\n\t183: {\n\t\tID:          183,\n\t\tDisplayName: \"SATA Downshift Error Count or Runtime Bad Block\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Western Digital, Samsung or Seagate attribute: Either the number of downshifts of link speed (e.g. from 6Gbit/s to 3Gbit/s) or the total number of data blocks with detected, uncorrectable errors encountered during normal operation. Although degradation of this parameter can be an indicator of drive aging and/or potential electromechanical problems, it does not directly indicate imminent drive failure.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.09084549203210031,\n\t\t\t\tErrorInterval:     []float64{0.08344373475686712, 0.09872777224842152},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              2,\n\t\t\t\tAnnualFailureRate: 0.05756065656498585,\n\t\t\t\tErrorInterval:     []float64{0.04657000847949464, 0.07036491775108872},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               2,\n\t\t\t\tHigh:              4,\n\t\t\t\tAnnualFailureRate: 0.6193088626208925,\n\t\t\t\tErrorInterval:     []float64{0.41784508895529787, 0.8841019099092139},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               4,\n\t\t\t\tHigh:              8,\n\t\t\t\tAnnualFailureRate: 0.5533447034299792,\n\t\t\t\tErrorInterval:     []float64{0.31628430884775033, 0.8985971312402635},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               8,\n\t\t\t\tHigh:              16,\n\t\t\t\tAnnualFailureRate: 0.3882388694727245,\n\t\t\t\tErrorInterval:     []float64{0.21225380267814295, 0.6513988534774338},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               16,\n\t\t\t\tHigh:              35,\n\t\t\t\tAnnualFailureRate: 0.37116708385481856,\n\t\t\t\tErrorInterval:     []float64{0.19763084005134446, 0.6347070173754686},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               35,\n\t\t\t\tHigh:              70,\n\t\t\t\tAnnualFailureRate: 0.2561146752205292,\n\t\t\t\tErrorInterval:     []float64{0.10297138269895259, 0.5276941165819332},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               70,\n\t\t\t\tHigh:              130,\n\t\t\t\tAnnualFailureRate: 0.40299684542586756,\n\t\t\t\tErrorInterval:     []float64{0.16202563309223209, 0.8303275247667772},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               130,\n\t\t\t\tHigh:              260,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t},\n\t},\n\t184: {\n\t\tID:          184,\n\t\tDisplayName: \"End-to-End error\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"This attribute is a part of Hewlett-Packard\\\"s SMART IV technology, as well as part of other vendors\\\" IO Error Detection and Correction schemas, and it contains a count of parity errors which occur in the data path to the media via the drive\\\"s cache RAM\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               93,\n\t\t\t\tHigh:              94,\n\t\t\t\tAnnualFailureRate: 1.631212012870933,\n\t\t\t\tErrorInterval:     []float64{1.055634407303844, 2.407990716767714},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               94,\n\t\t\t\tHigh:              95,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               95,\n\t\t\t\tHigh:              96,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               96,\n\t\t\t\tHigh:              97,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               97,\n\t\t\t\tHigh:              97,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               97,\n\t\t\t\tHigh:              98,\n\t\t\t\tAnnualFailureRate: 1.8069306930693072,\n\t\t\t\tErrorInterval:     []float64{0.04574752432804858, 10.067573453924245},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               98,\n\t\t\t\tHigh:              99,\n\t\t\t\tAnnualFailureRate: 0.8371559633027523,\n\t\t\t\tErrorInterval:     []float64{0.10138347095016888, 3.0240951820174824},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               99,\n\t\t\t\tHigh:              100,\n\t\t\t\tAnnualFailureRate: 0.09334816849865138,\n\t\t\t\tErrorInterval:     []float64{0.08689499010435861, 0.10015372448181788},\n\t\t\t},\n\t\t},\n\t},\n\t185: {\n\t\tID:          185,\n\t\tDisplayName: \"Head Stability\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Western Digital attribute.\",\n\t},\n\t186: {\n\t\tID:          186,\n\t\tDisplayName: \"Induced Op-Vibration Detection\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Western Digital attribute.\",\n\t},\n\t187: {\n\t\tID:          187,\n\t\tDisplayName: \"Reported Uncorrectable Errors\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"The count of errors that could not be recovered using hardware ECC (see attribute 195).\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.028130798308190524,\n\t\t\t\tErrorInterval:     []float64{0.024487830609364304, 0.032162944988161336},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              1,\n\t\t\t\tAnnualFailureRate: 0.33877621175661743,\n\t\t\t\tErrorInterval:     []float64{0.22325565823630591, 0.4929016016666955},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              3,\n\t\t\t\tAnnualFailureRate: 0.24064820598237213,\n\t\t\t\tErrorInterval:     []float64{0.14488594021076606, 0.3758019832614595},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               3,\n\t\t\t\tHigh:              6,\n\t\t\t\tAnnualFailureRate: 0.5014425058387142,\n\t\t\t\tErrorInterval:     []float64{0.3062941096766342, 0.7744372808405151},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               6,\n\t\t\t\tHigh:              11,\n\t\t\t\tAnnualFailureRate: 0.38007108544136836,\n\t\t\t\tErrorInterval:     []float64{0.2989500188963677, 0.4764223967570595},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               11,\n\t\t\t\tHigh:              20,\n\t\t\t\tAnnualFailureRate: 0.5346094598348444,\n\t\t\t\tErrorInterval:     []float64{0.40595137663302483, 0.6911066985735377},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               20,\n\t\t\t\tHigh:              35,\n\t\t\t\tAnnualFailureRate: 0.8428063943161636,\n\t\t\t\tErrorInterval:     []float64{0.6504601819243522, 1.0742259350903411},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               35,\n\t\t\t\tHigh:              65,\n\t\t\t\tAnnualFailureRate: 1.4429071005017484,\n\t\t\t\tErrorInterval:     []float64{1.1405581860945952, 1.8008133631629157},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               65,\n\t\t\t\tHigh:              120,\n\t\t\t\tAnnualFailureRate: 1.6190935390549661,\n\t\t\t\tErrorInterval:     []float64{1.0263664163011208, 2.4294352761068576},\n\t\t\t},\n\t\t},\n\t},\n\t188: {\n\t\tID:          188,\n\t\tDisplayName: \"Command Timeout\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeTransformed,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"The count of aborted operations due to HDD timeout. Normally this attribute value should be equal to zero.\",\n\t\tTransform: func(normValue int64, rawValue int64, rawString string) int64 {\n\t\t\t// Parse Seagate command timeout values if the string contains 3 pieces\n\t\t\t// and each piece is less than or equal to the next (as a sanity check)\n\t\t\t// See https://github.com/AnalogJ/scrutiny/issues/522\n\t\t\tpieces := strings.Split(rawString, \" \")\n\t\t\tif len(pieces) == 3 {\n\t\t\t\tint_pieces := make([]int, len(pieces))\n\t\t\t\tvar err error\n\t\t\t\tfor i, s := range pieces {\n\t\t\t\t\tint_pieces[i], err = strconv.Atoi(s)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn rawValue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif int_pieces[2] >= int_pieces[1] && int_pieces[1] >= int_pieces[0] {\n\t\t\t\t\treturn int64(int_pieces[2])\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn rawValue\n\t\t},\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow: 0,\n\t\t\t\t// This is set arbitrarily to avoid notifications caused by low\n\t\t\t\t// historical numbers of command timeouts (e.g. caused by a bad cable)\n\t\t\t\tHigh:              100,\n\t\t\t\tAnnualFailureRate: 0.024893587674442153,\n\t\t\t\tErrorInterval:     []float64{0.020857343769186413, 0.0294830350167543},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               100,\n\t\t\t\tHigh:              13000000000,\n\t\t\t\tAnnualFailureRate: 0.10044174089362015,\n\t\t\t\tErrorInterval:     []float64{0.0812633664077498, 0.1227848196758574},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               13000000000,\n\t\t\t\tHigh:              26000000000,\n\t\t\t\tAnnualFailureRate: 0.334030592234279,\n\t\t\t\tErrorInterval:     []float64{0.2523231196342665, 0.4337665082489293},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               26000000000,\n\t\t\t\tHigh:              39000000000,\n\t\t\t\tAnnualFailureRate: 0.36724705400842445,\n\t\t\t\tErrorInterval:     []float64{0.30398009356575617, 0.4397986538328568},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               39000000000,\n\t\t\t\tHigh:              52000000000,\n\t\t\t\tAnnualFailureRate: 0.29848155926978354,\n\t\t\t\tErrorInterval:     []float64{0.2509254838615984, 0.35242890006477073},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               52000000000,\n\t\t\t\tHigh:              65000000000,\n\t\t\t\tAnnualFailureRate: 0.2203079701535098,\n\t\t\t\tErrorInterval:     []float64{0.18366082845676174, 0.26212468677179274},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               65000000000,\n\t\t\t\tHigh:              78000000000,\n\t\t\t\tAnnualFailureRate: 0.3018169948863018,\n\t\t\t\tErrorInterval:     []float64{0.23779746376787655, 0.37776897542831006},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               78000000000,\n\t\t\t\tHigh:              91000000000,\n\t\t\t\tAnnualFailureRate: 0.32854928239235887,\n\t\t\t\tErrorInterval:     []float64{0.2301118782147336, 0.4548506948185028},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               91000000000,\n\t\t\t\tHigh:              104000000000,\n\t\t\t\tAnnualFailureRate: 0.28488916640649387,\n\t\t\t\tErrorInterval:     []float64{0.1366154288236293, 0.5239213202729072},\n\t\t\t},\n\t\t},\n\t},\n\t189: {\n\t\tID:          189,\n\t\tDisplayName: \"High Fly Writes\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"HDD manufacturers implement a flying height sensor that attempts to provide additional protections for write operations by detecting when a recording head is flying outside its normal operating range. If an unsafe fly height condition is encountered, the write process is stopped, and the information is rewritten or reallocated to a safe region of the hard drive. This attribute indicates the count of these errors detected over the lifetime of the drive.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.09070551401946862,\n\t\t\t\tErrorInterval:     []float64{0.08018892683853401, 0.10221801211956287},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              2,\n\t\t\t\tAnnualFailureRate: 0.0844336097370013,\n\t\t\t\tErrorInterval:     []float64{0.07299813695315267, 0.09715235540340669},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               2,\n\t\t\t\tHigh:              5,\n\t\t\t\tAnnualFailureRate: 0.07943219628781906,\n\t\t\t\tErrorInterval:     []float64{0.06552176680630226, 0.09542233189887633},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               5,\n\t\t\t\tHigh:              13,\n\t\t\t\tAnnualFailureRate: 0.09208847603893404,\n\t\t\t\tErrorInterval:     []float64{0.07385765060838133, 0.11345557807163456},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               13,\n\t\t\t\tHigh:              30,\n\t\t\t\tAnnualFailureRate: 0.18161161650924224,\n\t\t\t\tErrorInterval:     []float64{0.13858879602902988, 0.23377015012749933},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               30,\n\t\t\t\tHigh:              70,\n\t\t\t\tAnnualFailureRate: 0.2678117886102384,\n\t\t\t\tErrorInterval:     []float64{0.19044036194841887, 0.36610753129699186},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               70,\n\t\t\t\tHigh:              150,\n\t\t\t\tAnnualFailureRate: 0.26126480798826107,\n\t\t\t\tErrorInterval:     []float64{0.15958733218826962, 0.4035023060905559},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               150,\n\t\t\t\tHigh:              350,\n\t\t\t\tAnnualFailureRate: 0.11337164155924832,\n\t\t\t\tErrorInterval:     []float64{0.030889956621649995, 0.2902764300762812},\n\t\t\t},\n\t\t},\n\t},\n\t190: {\n\t\tID:          190,\n\t\tDisplayName: \"Temperature Difference\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Value is equal to (100-temp. °C), allowing manufacturer to set a minimum threshold which corresponds to a maximum temperature. This also follows the convention of 100 being a best-case value and lower values being undesirable. However, some older drives may instead report raw Temperature (identical to 0xC2) or Temperature minus 50 here.\",\n\t},\n\t191: {\n\t\tID:          191,\n\t\tDisplayName: \"G-sense Error Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"The count of errors resulting from externally induced shock and vibration. \",\n\t},\n\t192: {\n\t\tID:          192,\n\t\tDisplayName: \"Power-off Retract Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Number of power-off or emergency retract cycles.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              2,\n\t\t\t\tAnnualFailureRate: 0.02861098445412803,\n\t\t\t\tErrorInterval:     []float64{0.022345416230915037, 0.036088863823297186},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               2,\n\t\t\t\tHigh:              6,\n\t\t\t\tAnnualFailureRate: 0.0738571777154862,\n\t\t\t\tErrorInterval:     []float64{0.06406927746420421, 0.0847175264009771},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               6,\n\t\t\t\tHigh:              16,\n\t\t\t\tAnnualFailureRate: 0.11970378206823593,\n\t\t\t\tErrorInterval:     []float64{0.10830059875098269, 0.13198105985656441},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               16,\n\t\t\t\tHigh:              40,\n\t\t\t\tAnnualFailureRate: 0.027266868552620425,\n\t\t\t\tErrorInterval:     []float64{0.021131448605713823, 0.03462795920968522},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               40,\n\t\t\t\tHigh:              100,\n\t\t\t\tAnnualFailureRate: 0.011741682974559688,\n\t\t\t\tErrorInterval:     []float64{0.00430899071133239, 0.025556700631152028},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               100,\n\t\t\t\tHigh:              250,\n\t\t\t\tAnnualFailureRate: 0.012659940134091309,\n\t\t\t\tErrorInterval:     []float64{0.00607093338127348, 0.023282080653656938},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               250,\n\t\t\t\tHigh:              650,\n\t\t\t\tAnnualFailureRate: 0.01634692899031039,\n\t\t\t\tErrorInterval:     []float64{0.009522688540043157, 0.026173016865409605},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               650,\n\t\t\t\tHigh:              1600,\n\t\t\t\tAnnualFailureRate: 0.005190074354440066,\n\t\t\t\tErrorInterval:     []float64{0.0025908664180103293, 0.009286476666453648},\n\t\t\t},\n\t\t},\n\t},\n\t193: {\n\t\tID:          193,\n\t\tDisplayName: \"Load Cycle Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Count of load/unload cycles into head landing zone position.[45] Some drives use 225 (0xE1) for Load Cycle Count instead.\",\n\t},\n\t194: {\n\t\tID:          194,\n\t\tDisplayName: \"Temperature\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeTransformed,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Indicates the device temperature, if the appropriate sensor is fitted. Lowest byte of the raw value contains the exact temperature value (Celsius degrees).\",\n\t\tTransform: func(normValue int64, rawValue int64, rawString string) int64 {\n\t\t\treturn rawValue & 0b11111111\n\t\t},\n\t\tTransformValueUnit: \"°C\",\n\t},\n\t195: {\n\t\tID:          195,\n\t\tDisplayName: \"Hardware ECC Recovered\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"(Vendor-specific raw value.) The raw value has different structure for different vendors and is often not meaningful as a decimal number.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               12,\n\t\t\t\tHigh:              24,\n\t\t\t\tAnnualFailureRate: 0.31472916829975706,\n\t\t\t\tErrorInterval:     []float64{0.15711166685282174, 0.5631374192486645},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               24,\n\t\t\t\tHigh:              36,\n\t\t\t\tAnnualFailureRate: 0.15250310197260136,\n\t\t\t\tErrorInterval:     []float64{0.10497611828070175, 0.21417105521823687},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               36,\n\t\t\t\tHigh:              48,\n\t\t\t\tAnnualFailureRate: 0.2193119102723874,\n\t\t\t\tErrorInterval:     []float64{0.16475385681835103, 0.28615447006525274},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               48,\n\t\t\t\tHigh:              60,\n\t\t\t\tAnnualFailureRate: 0.05672658497265746,\n\t\t\t\tErrorInterval:     []float64{0.043182904776447234, 0.07317316161437043},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               60,\n\t\t\t\tHigh:              72,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               72,\n\t\t\t\tHigh:              84,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               84,\n\t\t\t\tHigh:              96,\n\t\t\t\tAnnualFailureRate: 0,\n\t\t\t\tErrorInterval:     []float64{0, 0},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               96,\n\t\t\t\tHigh:              108,\n\t\t\t\tAnnualFailureRate: 0.04074570216566197,\n\t\t\t\tErrorInterval:     []float64{0.001031591863615295, 0.22702052218047528},\n\t\t\t},\n\t\t},\n\t},\n\t196: {\n\t\tID:          196,\n\t\tDisplayName: \"Reallocation Event Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"Count of remap operations. The raw value of this attribute shows the total count of attempts to transfer data from reallocated sectors to a spare area. Both successful and unsuccessful attempts are counted.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.007389855800729792,\n\t\t\t\tErrorInterval:     []float64{0.005652654139732716, 0.009492578928212054},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              1,\n\t\t\t\tAnnualFailureRate: 0.026558331312151347,\n\t\t\t\tErrorInterval:     []float64{0.005476966404484466, 0.07761471429677293},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              2,\n\t\t\t\tAnnualFailureRate: 0.02471894893674658,\n\t\t\t\tErrorInterval:     []float64{0.0006258296027540169, 0.13772516847438018},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               2,\n\t\t\t\tHigh:              4,\n\t\t\t\tAnnualFailureRate: 0.03200912040691046,\n\t\t\t\tErrorInterval:     []float64{0.0008104007642081744, 0.17834340416493005},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               4,\n\t\t\t\tHigh:              7,\n\t\t\t\tAnnualFailureRate: 0.043078012510326925,\n\t\t\t\tErrorInterval:     []float64{0.001090640849081295, 0.24001532369794615},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               7,\n\t\t\t\tHigh:              11,\n\t\t\t\tAnnualFailureRate: 0.033843300880853036,\n\t\t\t\tErrorInterval:     []float64{0.0008568381932559863, 0.18856280368036135},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               11,\n\t\t\t\tHigh:              17,\n\t\t\t\tAnnualFailureRate: 0.16979376647542252,\n\t\t\t\tErrorInterval:     []float64{0.035015556653263225, 0.49620943874336304},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               17,\n\t\t\t\tHigh:              27,\n\t\t\t\tAnnualFailureRate: 0.059042381106438044,\n\t\t\t\tErrorInterval:     []float64{0.0014948236677880642, 0.32896309247698113},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               27,\n\t\t\t\tHigh:              45,\n\t\t\t\tAnnualFailureRate: 0.24701105346266636,\n\t\t\t\tErrorInterval:     []float64{0.050939617608142244, 0.721871118983972},\n\t\t\t},\n\t\t},\n\t},\n\t197: {\n\t\tID:          197,\n\t\tDisplayName: \"Current Pending Sector Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"Count of \\\"unstable\\\" sectors (waiting to be remapped, because of unrecoverable read errors). If an unstable sector is subsequently read successfully, the sector is remapped and this value is decreased. Read errors on a sector will not remap the sector immediately (since the correct value cannot be read and so the value to remap is not known, and also it might become readable later); instead, the drive firmware remembers that the sector needs to be remapped, and will remap it the next time it\\\"s written.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.025540791394761345,\n\t\t\t\tErrorInterval:     []float64{0.023161777231213983, 0.02809784482748174},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              2,\n\t\t\t\tAnnualFailureRate: 0.34196613799103254,\n\t\t\t\tErrorInterval:     []float64{0.22723401523750225, 0.4942362818474496},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               2,\n\t\t\t\tHigh:              6,\n\t\t\t\tAnnualFailureRate: 0.6823772508117681,\n\t\t\t\tErrorInterval:     []float64{0.41083568090070416, 1.0656166047061635},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               6,\n\t\t\t\tHigh:              16,\n\t\t\t\tAnnualFailureRate: 0.6108100007493069,\n\t\t\t\tErrorInterval:     []float64{0.47336936083368364, 0.7757071095273286},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               16,\n\t\t\t\tHigh:              40,\n\t\t\t\tAnnualFailureRate: 0.9564879341127684,\n\t\t\t\tErrorInterval:     []float64{0.7701044196378299, 1.174355230793638},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               40,\n\t\t\t\tHigh:              100,\n\t\t\t\tAnnualFailureRate: 1.6519989942167461,\n\t\t\t\tErrorInterval:     []float64{1.328402276482456, 2.0305872327541317},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               100,\n\t\t\t\tHigh:              250,\n\t\t\t\tAnnualFailureRate: 2.5137741046831956,\n\t\t\t\tErrorInterval:     []float64{1.9772427971560862, 3.1510376077891613},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               250,\n\t\t\t\tHigh:              650,\n\t\t\t\tAnnualFailureRate: 3.3203378817413904,\n\t\t\t\tErrorInterval:     []float64{2.5883662702274406, 4.195047163573006},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               650,\n\t\t\t\tHigh:              1600,\n\t\t\t\tAnnualFailureRate: 3.133047210300429,\n\t\t\t\tErrorInterval:     []float64{1.1497731080460096, 6.819324775707182},\n\t\t\t},\n\t\t},\n\t},\n\t198: {\n\t\tID:          198,\n\t\tDisplayName: \"(Offline) Uncorrectable Sector Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"The total count of uncorrectable errors when reading/writing a sector. A rise in the value of this attribute indicates defects of the disk surface and/or problems in the mechanical subsystem.\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              0,\n\t\t\t\tAnnualFailureRate: 0.028675322159886437,\n\t\t\t\tErrorInterval:     []float64{0.026159385510707116, 0.03136793218577656},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              2,\n\t\t\t\tAnnualFailureRate: 0.8135764944275583,\n\t\t\t\tErrorInterval:     []float64{0.40613445471964466, 1.4557130815309443},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               2,\n\t\t\t\tHigh:              4,\n\t\t\t\tAnnualFailureRate: 1.1173469387755102,\n\t\t\t\tErrorInterval:     []float64{0.5773494680315332, 1.9517802404552516},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               4,\n\t\t\t\tHigh:              6,\n\t\t\t\tAnnualFailureRate: 1.3558692421991083,\n\t\t\t\tErrorInterval:     []float64{0.4402470522980859, 3.1641465148237544},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               6,\n\t\t\t\tHigh:              8,\n\t\t\t\tAnnualFailureRate: 0.7324414715719062,\n\t\t\t\tErrorInterval:     []float64{0.15104704003805655, 2.140504796291604},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               8,\n\t\t\t\tHigh:              10,\n\t\t\t\tAnnualFailureRate: 0.5777213677766163,\n\t\t\t\tErrorInterval:     []float64{0.43275294849366835, 0.7556737733062419},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               10,\n\t\t\t\tHigh:              12,\n\t\t\t\tAnnualFailureRate: 1.7464114832535886,\n\t\t\t\tErrorInterval:     []float64{0.47583835092536914, 4.471507017371231},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               12,\n\t\t\t\tHigh:              14,\n\t\t\t\tAnnualFailureRate: 2.6449275362318843,\n\t\t\t\tErrorInterval:     []float64{0.3203129951758959, 9.554387676519005},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               14,\n\t\t\t\tHigh:              16,\n\t\t\t\tAnnualFailureRate: 0.796943231441048,\n\t\t\t\tErrorInterval:     []float64{0.5519063550198366, 1.113648286331181},\n\t\t\t},\n\t\t},\n\t},\n\t199: {\n\t\tID:          199,\n\t\tDisplayName: \"UltraDMA CRC Error Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeRaw,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"The count of errors in data transfer via the interface cable as determined by ICRC (Interface Cyclic Redundancy Check).\",\n\t\tObservedThresholds: []ObservedThreshold{\n\t\t\t{\n\t\t\t\tLow:               0,\n\t\t\t\tHigh:              1,\n\t\t\t\tAnnualFailureRate: 0.04068379316116366,\n\t\t\t\tErrorInterval:     []float64{0.037534031558106425, 0.04402730201866553},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               1,\n\t\t\t\tHigh:              2,\n\t\t\t\tAnnualFailureRate: 0.1513481259734218,\n\t\t\t\tErrorInterval:     []float64{0.12037165605991791, 0.18786293065527596},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               2,\n\t\t\t\tHigh:              4,\n\t\t\t\tAnnualFailureRate: 0.16849758722418978,\n\t\t\t\tErrorInterval:     []float64{0.12976367397863445, 0.2151676572000481},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               4,\n\t\t\t\tHigh:              8,\n\t\t\t\tAnnualFailureRate: 0.15385127340491614,\n\t\t\t\tErrorInterval:     []float64{0.10887431782430312, 0.21117289306426648},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               8,\n\t\t\t\tHigh:              16,\n\t\t\t\tAnnualFailureRate: 0.14882894050104387,\n\t\t\t\tErrorInterval:     []float64{0.09631424312463635, 0.2197008753522735},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               16,\n\t\t\t\tHigh:              35,\n\t\t\t\tAnnualFailureRate: 0.20878219917249793,\n\t\t\t\tErrorInterval:     []float64{0.14086447304552446, 0.29804957135975},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               35,\n\t\t\t\tHigh:              70,\n\t\t\t\tAnnualFailureRate: 0.13742940270409038,\n\t\t\t\tErrorInterval:     []float64{0.06860426267470295, 0.24589916335290812},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               70,\n\t\t\t\tHigh:              130,\n\t\t\t\tAnnualFailureRate: 0.22336578581363,\n\t\t\t\tErrorInterval:     []float64{0.11150339549604707, 0.39966309081252904},\n\t\t\t},\n\t\t\t{\n\t\t\t\tLow:               130,\n\t\t\t\tHigh:              260,\n\t\t\t\tAnnualFailureRate: 0.18277416124186283,\n\t\t\t\tErrorInterval:     []float64{0.07890890989692058, 0.3601379610272007},\n\t\t\t},\n\t\t},\n\t},\n\t200: {\n\t\tID:          200,\n\t\tDisplayName: \"Multi-Zone Error Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"The count of errors found when writing a sector. The higher the value, the worse the disk\\\"s mechanical condition is.\",\n\t},\n\t201: {\n\t\tID:          201,\n\t\tDisplayName: \"Soft Read Error Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    true,\n\t\tDescription: \"Count indicates the number of uncorrectable software read errors.\",\n\t},\n\t202: {\n\t\tID:          202,\n\t\tDisplayName: \"Data Address Mark errors\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Count of Data Address Mark errors (or vendor-specific).\",\n\t},\n\t203: {\n\t\tID:          203,\n\t\tDisplayName: \"Run Out Cancel\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"The number of errors caused by incorrect checksum during the error correction.\",\n\t},\n\t204: {\n\t\tID:          204,\n\t\tDisplayName: \"Soft ECC Correction\",\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Count of errors corrected by the internal error correction software.\",\n\t},\n\t205: {\n\t\tID:          205,\n\t\tDisplayName: \"Thermal Asperity Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Count of errors due to high temperature.\",\n\t},\n\t206: {\n\t\tID:          206,\n\t\tDisplayName: \"Flying Height\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Height of heads above the disk surface. If too low, head crash is more likely; if too high, read/write errors are more likely.\",\n\t},\n\t207: {\n\t\tID:          207,\n\t\tDisplayName: \"Spin High Current\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Amount of surge current used to spin up the drive.\",\n\t},\n\t208: {\n\t\tID:          208,\n\t\tDisplayName: \"Spin Buzz\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Count of buzz routines needed to spin up the drive due to insufficient power.\",\n\t},\n\t209: {\n\t\tID:          209,\n\t\tDisplayName: \"Offline Seek Performance\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Drive\\\"s seek performance during its internal tests.\",\n\t},\n\t210: {\n\t\tID:          210,\n\t\tDisplayName: \"Vibration During Write\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Found in Maxtor 6B200M0 200GB and Maxtor 2R015H1 15GB disks.\",\n\t},\n\t211: {\n\t\tID:          211,\n\t\tDisplayName: \"Vibration During Write\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"A recording of a vibration encountered during write operations.\",\n\t},\n\t212: {\n\t\tID:          212,\n\t\tDisplayName: \"Shock During Write\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"A recording of shock encountered during write operations.\",\n\t},\n\t220: {\n\t\tID:          220,\n\t\tDisplayName: \"Disk Shift\",\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tCritical:    false,\n\t\tDescription: \"Distance the disk has shifted relative to the spindle (usually due to shock or temperature). Unit of measure is unknown.\",\n\t},\n\t221: {\n\t\tID:          221,\n\t\tDisplayName: \"G-Sense Error Rate\",\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tCritical:    false,\n\t\tDescription: \"The count of errors resulting from externally induced shock and vibration.\",\n\t},\n\t222: {\n\t\tID:          222,\n\t\tDisplayName: \"Loaded Hours\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Time spent operating under data load (movement of magnetic head armature).\",\n\t},\n\t223: {\n\t\tID:          223,\n\t\tDisplayName: \"Load/Unload Retry Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Count of times head changes position.\",\n\t},\n\t224: {\n\t\tID:          224,\n\t\tDisplayName: \"Load Friction\",\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tCritical:    false,\n\t\tDescription: \"Resistance caused by friction in mechanical parts while operating.\",\n\t},\n\t225: {\n\t\tID:          225,\n\t\tDisplayName: \"Load/Unload Cycle Count\",\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tCritical:    false,\n\t\tDescription: \"Total count of load cycles Some drives use 193 (0xC1) for Load Cycle Count instead. See Description for 193 for significance of this number. \",\n\t},\n\t226: {\n\t\tID:          226,\n\t\tDisplayName: \"Load \\\"In\\\"-time\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Total time of loading on the magnetic heads actuator (time not spent in parking area).\",\n\t},\n\t227: {\n\t\tID:          227,\n\t\tDisplayName: \"Torque Amplification Count\",\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Count of attempts to compensate for platter speed variations.[66]\",\n\t},\n\t228: {\n\t\tID:          228,\n\t\tDisplayName: \"Power-Off Retract Cycle\",\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"The number of power-off cycles which are counted whenever there is a \\\"retract event\\\" and the heads are loaded off of the media such as when the machine is powered down, put to sleep, or is idle.\",\n\t},\n\t230: {\n\t\tID:          230,\n\t\tDisplayName: \"GMR Head Amplitude \",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Amplitude of \\\"thrashing\\\" (repetitive head moving motions between operations).\",\n\t},\n\t231: {\n\t\tID:          231,\n\t\tDisplayName: \"Life Left\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Indicates the approximate SSD life left, in terms of program/erase cycles or available reserved blocks. A normalized value of 100 represents a new drive, with a threshold value at 10 indicating a need for replacement. A value of 0 may mean that the drive is operating in read-only mode to allow data recovery.\",\n\t},\n\t232: {\n\t\tID:          232,\n\t\tDisplayName: \"Endurance Remaining\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Number of physical erase cycles completed on the SSD as a percentage of the maximum physical erase cycles the drive is designed to endure.\",\n\t},\n\t233: {\n\t\tID:          233,\n\t\tDisplayName: \"Media Wearout Indicator\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Intel SSDs report a normalized value from 100, a new drive, to a minimum of 1. It decreases while the NAND erase cycles increase from 0 to the maximum-rated cycles.\",\n\t},\n\t234: {\n\t\tID:          234,\n\t\tDisplayName: \"Average erase count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Decoded as: byte 0-1-2 = average erase count (big endian) and byte 3-4-5 = max erase count (big endian).\",\n\t},\n\t235: {\n\t\tID:          235,\n\t\tDisplayName: \"Good Block Count\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Decoded as: byte 0-1-2 = good block count (big endian) and byte 3-4 = system (free) block count.\",\n\t},\n\t240: {\n\t\tID:          240,\n\t\tDisplayName: \"Head Flying Hours\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Time spent during the positioning of the drive heads.[15][71] Some Fujitsu drives report the count of link resets during a data transfer.\",\n\t},\n\t241: {\n\t\tID:          241,\n\t\tDisplayName: \"Total LBAs Written\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Total count of LBAs written.\",\n\t},\n\t242: {\n\t\tID:          242,\n\t\tDisplayName: \"Total LBAs Read\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Total count of LBAs read.Some S.M.A.R.T. utilities will report a negative number for the raw value since in reality it has 48 bits rather than 32.\",\n\t},\n\t243: {\n\t\tID:          243,\n\t\tDisplayName: \"Total LBAs Written Expanded\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"The upper 5 bytes of the 12-byte total number of LBAs written to the device. The lower 7 byte value is located at attribute 0xF1.\",\n\t},\n\t244: {\n\t\tID:          244,\n\t\tDisplayName: \"Total LBAs Read Expanded\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"The upper 5 bytes of the 12-byte total number of LBAs read from the device. The lower 7 byte value is located at attribute 0xF2.\",\n\t},\n\t249: {\n\t\tID:          249,\n\t\tDisplayName: \"NAND Writes (1GiB)\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Total NAND Writes. Raw value reports the number of writes to NAND in 1 GB increments.\",\n\t},\n\t250: {\n\t\tID:          250,\n\t\tDisplayName: \"Read Error Retry Rate\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Count of errors while reading from a disk.\",\n\t},\n\t251: {\n\t\tID:          251,\n\t\tDisplayName: \"Minimum Spares Remaining\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"The Minimum Spares Remaining attribute indicates the number of remaining spare blocks as a percentage of the total number of spare blocks available.\",\n\t},\n\t252: {\n\t\tID:          252,\n\t\tDisplayName: \"Newly Added Bad Flash Block\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"The Newly Added Bad Flash Block attribute indicates the total number of bad flash blocks the drive detected since it was first initialized in manufacturing.\",\n\t},\n\t254: {\n\t\tID:          254,\n\t\tDisplayName: \"Free Fall Protection\",\n\t\tDisplayType: AtaSmartAttributeDisplayTypeNormalized,\n\t\tIdeal:       ObservedThresholdIdealLow,\n\t\tCritical:    false,\n\t\tDescription: \"Count of \\\"Free Fall Events\\\" detected.\",\n\t},\n}\n"
  },
  {
    "path": "webapp/backend/pkg/thresholds/nvme_attribute_metadata.go",
    "content": "package thresholds\n\n// https://media.kingston.com/support/downloads/MKP_521.6_SMART-DCP1000_attribute.pdf\n// https://www.percona.com/blog/2017/02/09/using-nvme-command-line-tools-to-check-nvme-flash-health/\n// https://nvmexpress.org/resources/nvm-express-technology-features/nvme-features-for-error-reporting-smart-log-pages-failures-and-management-capabilities-in-nvme-architectures/\n// https://www.micromat.com/product_manuals/drive_scope_manual_01.pdf\ntype NvmeAttributeMetadata struct {\n\tID          string `json:\"-\"`\n\tDisplayName string `json:\"display_name\"`\n\tIdeal       string `json:\"ideal\"`\n\tCritical    bool   `json:\"critical\"`\n\tDescription string `json:\"description\"`\n\n\tTransform          func(int64, int64, string) int64 `json:\"-\"` //this should be a method to extract/tranform the normalized or raw data to a chartable format. Str\n\tTransformValueUnit string                           `json:\"transform_value_unit,omitempty\"`\n\tDisplayType        string                           `json:\"display_type\"` //\"raw\" \"normalized\" or \"transformed\"\n}\n\nvar NmveMetadata = map[string]NvmeAttributeMetadata{\n\t\"critical_warning\": {\n\t\tID:          \"critical_warning\",\n\t\tDisplayName: \"Critical Warning\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"This field indicates critical warnings for the state of the controller. Each bit corresponds to a critical warning type; multiple bits may be set. If a bit is cleared to ‘0’, then that critical warning does not apply. Critical warnings may result in an asynchronous event notification to the host. Bits in this field represent the current associated state and are not persistent.\",\n\t},\n\t\"temperature\": {\n\t\tID:          \"temperature\",\n\t\tDisplayName: \"Temperature\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"\",\n\t},\n\t\"available_spare\": {\n\t\tID:          \"available_spare\",\n\t\tDisplayName: \"Available Spare\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"high\",\n\t\tCritical:    true,\n\t\tDescription: \"Contains a normalized percentage (0 to 100%) of the remaining spare capacity available.\",\n\t},\n\t\"percentage_used\": {\n\t\tID:          \"percentage_used\",\n\t\tDisplayName: \"Percentage Used\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"Contains a vendor specific estimate of the percentage of NVM subsystem life used based on the actual usage and the manufacturer’s prediction of NVM life. A value of 100 indicates that the estimated endurance of the NVM in the NVM subsystem has been consumed, but may not indicate an NVM subsystem failure. The value is allowed to exceed 100. Percentages greater than 254 shall be represented as 255. This value shall be updated once per power-on hour (when the controller is not in a sleep state).\",\n\t},\n\t\"data_units_read\": {\n\t\tID:          \"data_units_read\",\n\t\tDisplayName: \"Data Units Read\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the number of 512 byte data units the host has read from the controller; this value does not include metadata. This value is reported in thousands (i.e., a value of 1 corresponds to 1000 units of 512 bytes read) and is rounded up. When the LBA size is a value other than 512 bytes, the controller shall convert the amount of data read to 512 byte units.\",\n\t},\n\t\"data_units_written\": {\n\t\tID:          \"data_units_written\",\n\t\tDisplayName: \"Data Units Written\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the number of 512 byte data units the host has written to the controller; this value does not include metadata. This value is reported in thousands (i.e., a value of 1 corresponds to 1000 units of 512 bytes written) and is rounded up. When the LBA size is a value other than 512 bytes, the controller shall convert the amount of data written to 512 byte units.\",\n\t},\n\t\"host_reads\": {\n\t\tID:          \"host_reads\",\n\t\tDisplayName: \"Host Reads\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the number of read commands completed by the controller\",\n\t},\n\t\"host_writes\": {\n\t\tID:          \"host_writes\",\n\t\tDisplayName: \"Host Writes\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the number of write commands completed by the controller\",\n\t},\n\t\"controller_busy_time\": {\n\t\tID:          \"controller_busy_time\",\n\t\tDisplayName: \"Controller Busy Time\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the amount of time the controller is busy with I/O commands. The controller is busy when there is a command outstanding to an I/O Queue (specifically, a command was issued via an I/O Submission Queue Tail doorbell write and the corresponding completion queue entry has not been posted yet to the associated I/O Completion Queue). This value is reported in minutes.\",\n\t},\n\t\"power_cycles\": {\n\t\tID:          \"power_cycles\",\n\t\tDisplayName: \"Power Cycles\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the number of power cycles.\",\n\t},\n\t\"power_on_hours\": {\n\t\tID:          \"power_on_hours\",\n\t\tDisplayName: \"Power on Hours\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the number of power-on hours. Power on hours is always logging, even when in low power mode.\",\n\t},\n\t\"unsafe_shutdowns\": {\n\t\tID:          \"unsafe_shutdowns\",\n\t\tDisplayName: \"Unsafe Shutdowns\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the number of unsafe shutdowns. This count is incremented when a shutdown notification (CC.SHN) is not received prior to loss of power.\",\n\t},\n\t\"media_errors\": {\n\t\tID:          \"media_errors\",\n\t\tDisplayName: \"Media Errors\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"Contains the number of occurrences where the controller detected an unrecovered data integrity error. Errors such as uncorrectable ECC, CRC checksum failure, or LBA tag mismatch are included in this field.\",\n\t},\n\t\"num_err_log_entries\": {\n\t\tID:          \"num_err_log_entries\",\n\t\tDisplayName: \"Numb Err Log Entries\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"Contains the number of Error Information log entries over the life of the controller.\",\n\t},\n\t\"warning_temp_time\": {\n\t\tID:          \"warning_temp_time\",\n\t\tDisplayName: \"Warning Temp Time\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater than or equal to the Warning Composite Temperature Threshold (WCTEMP) field and less than the Critical Composite Temperature Threshold (CCTEMP) field in the Identify Controller data structure.\",\n\t},\n\t\"critical_comp_time\": {\n\t\tID:          \"critical_comp_time\",\n\t\tDisplayName: \"Critical CompTime\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater the Critical Composite Temperature Threshold (CCTEMP) field in the Identify Controller data structure.\",\n\t},\n}\n"
  },
  {
    "path": "webapp/backend/pkg/thresholds/scsi_attribute_metadata.go",
    "content": "package thresholds\n\ntype ScsiAttributeMetadata struct {\n\tID          string `json:\"-\"`\n\tDisplayName string `json:\"display_name\"`\n\tIdeal       string `json:\"ideal\"`\n\tCritical    bool   `json:\"critical\"`\n\tDescription string `json:\"description\"`\n\n\tTransform          func(int64, int64, string) int64 `json:\"-\"` //this should be a method to extract/tranform the normalized or raw data to a chartable format. Str\n\tTransformValueUnit string                           `json:\"transform_value_unit,omitempty\"`\n\tDisplayType        string                           `json:\"display_type\"` //\"raw\" \"normalized\" or \"transformed\"\n}\n\nvar ScsiMetadata = map[string]ScsiAttributeMetadata{\n\t\"scsi_grown_defect_list\": {\n\t\tID:          \"scsi_grown_defect_list\",\n\t\tDisplayName: \"Grown Defect List\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"The grown defect count shows the amount of swapped (defective) blocks since the drive was shipped by it's vendor. Each additional defective block increases the count by one.\",\n\t},\n\t\"read_errors_corrected_by_eccfast\": {\n\t\tID:          \"read_errors_corrected_by_eccfast\",\n\t\tDisplayName: \"Read Errors Corrected by ECC Fast\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"An error correction was applied to get perfect data (a.k.a. ECC on-the-fly). \\\"Without substantial delay\\\" means the correction did not postpone reading of later sectors (e.g. a revolution was not lost). The counter is incremented once for each logical block that requires correction. Two different blocks corrected during the same command are counted as two events.\",\n\t},\n\t\"read_errors_corrected_by_eccdelayed\": {\n\t\tID:          \"read_errors_corrected_by_eccdelayed\",\n\t\tDisplayName: \"Read Errors Corrected by ECC Delayed\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"An error code or algorithm (e.g. ECC, checksum) is applied in order to get perfect data with substantial delay. \\\"With possible delay\\\" means the correction took longer than a sector time so that reading/writing of subsequent sectors was delayed (e.g. a lost revolution). The counter is incremented once for each logical block that requires correction. A block with a double error that is correctable counts as one event and two different blocks corrected during the same command count as two events. \",\n\t},\n\t\"read_errors_corrected_by_rereads_rewrites\": {\n\t\tID:          \"read_errors_corrected_by_rereads_rewrites\",\n\t\tDisplayName: \"Read Errors Corrected by ReReads/ReWrites\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"This parameter code specifies the counter counting the number of errors that are corrected by applying retries. This counts errors recovered, not the number of retries. If five retries were required to recover one block of data, the counter increments by one, not five. The counter is incremented once for each logical block that is recovered using retries. If an error is not recoverable while applying retries and is recovered by ECC, it isn't counted by this counter; it will be counted by the counter specified by parameter code 01h - Errors Corrected With Possible Delays. \",\n\t},\n\t\"read_total_errors_corrected\": {\n\t\tID:          \"read_total_errors_corrected\",\n\t\tDisplayName: \"Read Total Errors Corrected\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"This counter counts the total of parameter code errors 00h, 01h and 02h (i.e. error corrected by ECC: fast and delayed plus errors corrected by rereads and rewrites). There is no \\\"double counting\\\" of data errors among these three counters. The sum of all correctable errors can be reached by adding parameter code 01h and 02h errors, not by using this total.\",\n\t},\n\t\"read_correction_algorithm_invocations\": {\n\t\tID:          \"read_correction_algorithm_invocations\",\n\t\tDisplayName: \"Read Correction Algorithm Invocations\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"This parameter code specifies the counter that counts the total number of retries, or \\\"times the retry algorithm is invoked\\\". If after five attempts a counter 02h type error is recovered, then five is added to this counter. If three retries are required to get stable ECC syndrome before a counter 01h type error is corrected, then those three retries are also counted here. The number of retries applied to unsuccessfully recover an error (counter 06h type error) are also counted by this counter. \",\n\t},\n\t\"read_total_uncorrected_errors\": {\n\t\tID:          \"read_total_uncorrected_errors\",\n\t\tDisplayName: \"Read Total Uncorrected Errors\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"This parameter code specifies the counter that contains the total number of blocks for which an uncorrected data error has occurred. \",\n\t},\n\t\"write_errors_corrected_by_eccfast\": {\n\t\tID:          \"write_errors_corrected_by_eccfast\",\n\t\tDisplayName: \"Write Errors Corrected by ECC Fast\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"An error correction was applied to get perfect data (a.k.a. ECC on-the-fly). \\\"Without substantial delay\\\" means the correction did not postpone reading of later sectors (e.g. a revolution was not lost). The counter is incremented once for each logical block that requires correction. Two different blocks corrected during the same command are counted as two events. \",\n\t},\n\t\"write_errors_corrected_by_eccdelayed\": {\n\t\tID:          \"write_errors_corrected_by_eccdelayed\",\n\t\tDisplayName: \"Write Errors Corrected by ECC Delayed\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"An error code or algorithm (e.g. ECC, checksum) is applied in order to get perfect data with substantial delay. \\\"With possible delay\\\" means the correction took longer than a sector time so that reading/writing of subsequent sectors was delayed (e.g. a lost revolution). The counter is incremented once for each logical block that requires correction. A block with a double error that is correctable counts as one event and two different blocks corrected during the same command count as two events. \",\n\t},\n\t\"write_errors_corrected_by_rereads_rewrites\": {\n\t\tID:          \"write_errors_corrected_by_rereads_rewrites\",\n\t\tDisplayName: \"Write Errors Corrected by ReReads/ReWrites\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \"This parameter code specifies the counter counting the number of errors that are corrected by applying retries. This counts errors recovered, not the number of retries. If five retries were required to recover one block of data, the counter increments by one, not five. The counter is incremented once for each logical block that is recovered using retries. If an error is not recoverable while applying retries and is recovered by ECC, it isn't counted by this counter; it will be counted by the counter specified by parameter code 01h - Errors Corrected With Possible Delays.\",\n\t},\n\t\"write_total_errors_corrected\": {\n\t\tID:          \"write_total_errors_corrected\",\n\t\tDisplayName: \"Write Total Errors Corrected\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"This counter counts the total of parameter code errors 00h, 01h and 02h (i.e. error corrected by ECC: fast and delayed plus errors corrected by rereads and rewrites). There is no \\\"double counting\\\" of data errors among these three counters. The sum of all correctable errors can be reached by adding parameter code 01h and 02h errors, not by using this total.\",\n\t},\n\t\"write_correction_algorithm_invocations\": {\n\t\tID:          \"write_correction_algorithm_invocations\",\n\t\tDisplayName: \"Write Correction Algorithm Invocations\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"\",\n\t\tCritical:    false,\n\t\tDescription: \"This parameter code specifies the counter that counts the total number of retries, or \\\"times the retry algorithm is invoked\\\". If after five attempts a counter 02h type error is recovered, then five is added to this counter. If three retries are required to get stable ECC syndrome before a counter 01h type error is corrected, then those three retries are also counted here. The number of retries applied to unsuccessfully recover an error (counter 06h type error) are also counted by this counter. \",\n\t},\n\t\"write_total_uncorrected_errors\": {\n\t\tID:          \"write_total_uncorrected_errors\",\n\t\tDisplayName: \"Write Total Uncorrected Errors\",\n\t\tDisplayType: \"\",\n\t\tIdeal:       \"low\",\n\t\tCritical:    true,\n\t\tDescription: \" This parameter code specifies the counter that contains the total number of blocks for which an uncorrected data error has occurred.\",\n\t},\n}\n"
  },
  {
    "path": "webapp/backend/pkg/version/version.go",
    "content": "package version\n\n// VERSION is the app-global version string, which will be replaced with a\n// new value during packaging\nconst VERSION = \"0.8.6\"\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/archive_device.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc ArchiveDevice(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\terr := deviceRepo.UpdateDeviceArchived(c, c.Param(\"wwn\"), true)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while archiving device\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\"success\": true})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/delete_device.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc DeleteDevice(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\terr := deviceRepo.DeleteDevice(c, c.Param(\"wwn\"))\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while deleting device\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\"success\": true})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/get_device_details.go",
    "content": "package handler\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/thresholds\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nfunc GetDeviceDetails(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\tdevice, err := deviceRepo.GetDeviceDetails(c, c.Param(\"wwn\"))\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while retrieving device details\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tdurationKey, exists := c.GetQuery(\"duration_key\")\n\tif !exists {\n\t\tdurationKey = \"forever\"\n\t}\n\n\tsmartResults, err := deviceRepo.GetSmartAttributeHistory(c, c.Param(\"wwn\"), durationKey, 0, 0, nil)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while retrieving device smart results\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tvar deviceMetadata interface{}\n\tif device.IsAta() {\n\t\tdeviceMetadata = thresholds.AtaMetadata\n\t} else if device.IsNvme() {\n\t\tdeviceMetadata = thresholds.NmveMetadata\n\t} else if device.IsScsi() {\n\t\tdeviceMetadata = thresholds.ScsiMetadata\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\"success\": true, \"data\": map[string]interface{}{\"device\": device, \"smart_results\": smartResults}, \"metadata\": deviceMetadata})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/get_devices_summary.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc GetDevicesSummary(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\tsummary, err := deviceRepo.GetSummary(c)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while retrieving device summary\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\t//this must match DeviceSummaryWrapper (webapp/backend/pkg/models/device_summary.go)\n\tc.JSON(http.StatusOK, gin.H{\n\t\t\"success\": true,\n\t\t\"data\": map[string]interface{}{\n\t\t\t\"summary\": summary,\n\t\t\t//\"temperature\": tem\n\t\t},\n\t})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/get_devices_summary_temp_history.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc GetDevicesSummaryTempHistory(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\tdurationKey, exists := c.GetQuery(\"duration_key\")\n\tif !exists {\n\t\tdurationKey = \"week\"\n\t}\n\n\ttempHistory, err := deviceRepo.GetSmartTemperatureHistory(c, durationKey)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while retrieving summary/temp history\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\n\t\t\"success\": true,\n\t\t\"data\": map[string]interface{}{\n\t\t\t\"temp_history\": tempHistory,\n\t\t},\n\t})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/get_settings.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc GetSettings(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\tsettings, err := deviceRepo.LoadSettings(c)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while retrieving settings\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\n\t\t\"success\":  true,\n\t\t\"settings\": settings,\n\t})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/health_check.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc HealthCheck(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\tlogger.Infof(\"Checking Influxdb & Sqlite health\")\n\n\t//check sqlite and influxdb health\n\terr := deviceRepo.HealthCheck(c)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred during healthcheck\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false, \"error\": err.Error()})\n\t\treturn\n\t}\n\n\t//TODO:\n\t// check if the /web folder is populated.\n\n\tc.JSON(http.StatusOK, gin.H{\n\t\t\"success\": true,\n\t})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/register_devices.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/samber/lo\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\n// register devices that are detected by various collectors.\n// This function is run everytime a collector is about to start a run. It can be used to update device metadata.\nfunc RegisterDevices(c *gin.Context) {\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\n\tvar collectorDeviceWrapper models.DeviceWrapper\n\terr := c.BindJSON(&collectorDeviceWrapper)\n\tif err != nil {\n\t\tlogger.Errorln(\"Cannot parse detected devices\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\t//filter any device with empty wwn (they are invalid)\n\tdetectedStorageDevices := lo.Filter[models.Device](collectorDeviceWrapper.Data, func(dev models.Device, _ int) bool {\n\t\treturn len(dev.WWN) > 0\n\t})\n\n\terrs := []error{}\n\tfor _, dev := range detectedStorageDevices {\n\t\t//insert devices into DB (and update specified columns if device is already registered)\n\t\t// update device fields that may change: (DeviceType, HostID)\n\t\tif err := deviceRepo.RegisterDevice(c, dev); err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\n\tif len(errs) > 0 {\n\t\tlogger.Errorln(\"An error occurred while registering devices\", errs)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\n\t\t\t\"success\": false,\n\t\t})\n\t\treturn\n\t} else {\n\t\tc.JSON(http.StatusOK, models.DeviceWrapper{\n\t\t\tSuccess: true,\n\t\t\tData:    detectedStorageDevices,\n\t\t})\n\t\treturn\n\t}\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/save_settings.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc SaveSettings(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\tvar settings models.Settings\n\terr := c.BindJSON(&settings)\n\tif err != nil {\n\t\tlogger.Errorln(\"Cannot parse updated settings\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\terr = deviceRepo.SaveSettings(c, settings)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while saving settings\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\n\t\t\"success\":  true,\n\t\t\"settings\": settings,\n\t})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/send_test_notification.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/notify\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\n// Send test notification\nfunc SendTestNotification(c *gin.Context) {\n\tappConfig := c.MustGet(\"CONFIG\").(config.Interface)\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\n\ttestNotify := notify.New(\n\t\tlogger,\n\t\tappConfig,\n\t\tmodels.Device{\n\t\t\tSerialNumber: \"FAKEWDDJ324KSO\",\n\t\t\tDeviceType:   pkg.DeviceProtocolAta,\n\t\t\tDeviceName:   \"/dev/sda\",\n\t\t},\n\t\ttrue,\n\t)\n\terr := testNotify.Send()\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while sending test notification\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\n\t\t\t\"success\": false,\n\t\t\t\"errors\":  []string{err.Error()},\n\t\t})\n\t} else {\n\t\tc.JSON(http.StatusOK, models.DeviceWrapper{\n\t\t\tSuccess: true,\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/unarchive_device.go",
    "content": "package handler\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc UnarchiveDevice(c *gin.Context) {\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\terr := deviceRepo.UpdateDeviceArchived(c, c.Param(\"wwn\"), false)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while unarchiving device\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\"success\": true})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/upload_device_metrics.go",
    "content": "package handler\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/notify\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nfunc UploadDeviceMetrics(c *gin.Context) {\n\t//db := c.MustGet(\"DB\").(*gorm.DB)\n\tlogger := c.MustGet(\"LOGGER\").(*logrus.Entry)\n\tappConfig := c.MustGet(\"CONFIG\").(config.Interface)\n\t//influxWriteDb := c.MustGet(\"INFLUXDB_WRITE\").(*api.WriteAPIBlocking)\n\tdeviceRepo := c.MustGet(\"DEVICE_REPOSITORY\").(database.DeviceRepo)\n\n\t//appConfig := c.MustGet(\"CONFIG\").(config.Interface)\n\n\tif c.Param(\"wwn\") == \"\" {\n\t\tc.JSON(http.StatusBadRequest, gin.H{\"success\": false})\n\t}\n\n\tvar collectorSmartData collector.SmartInfo\n\terr := c.BindJSON(&collectorSmartData)\n\tif err != nil {\n\t\tlogger.Errorln(\"Cannot parse SMART data\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\t//update the device information if necessary\n\tupdatedDevice, err := deviceRepo.UpdateDevice(c, c.Param(\"wwn\"), collectorSmartData)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while updating device data from smartctl metrics:\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\t// insert smart info\n\tsmartData, err := deviceRepo.SaveSmartAttributes(c, c.Param(\"wwn\"), collectorSmartData)\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while saving smartctl metrics\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\tif smartData.Status != pkg.DeviceStatusPassed {\n\t\t//there is a failure detected by Scrutiny, update the device status on the homepage.\n\t\tupdatedDevice, err = deviceRepo.UpdateDeviceStatus(c, c.Param(\"wwn\"), smartData.Status)\n\t\tif err != nil {\n\t\t\tlogger.Errorln(\"An error occurred while updating device status\", err)\n\t\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\t\treturn\n\t\t}\n\t}\n\n\t// save smart temperature data (ignore failures)\n\terr = deviceRepo.SaveSmartTemperature(c, c.Param(\"wwn\"), updatedDevice.DeviceProtocol, collectorSmartData, appConfig.GetBool(fmt.Sprintf(\"%s.collector.discard_sct_temp_history\", config.DB_USER_SETTINGS_SUBKEY)))\n\tif err != nil {\n\t\tlogger.Errorln(\"An error occurred while saving smartctl temp data\", err)\n\t\tc.JSON(http.StatusInternalServerError, gin.H{\"success\": false})\n\t\treturn\n\t}\n\n\t//check for error\n\tif notify.ShouldNotify(\n\t\tlogger,\n\t\tupdatedDevice,\n\t\tsmartData,\n\t\tpkg.MetricsStatusThreshold(appConfig.GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY))),\n\t\tpkg.MetricsStatusFilterAttributes(appConfig.GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY))),\n\t\tappConfig.GetBool(fmt.Sprintf(\"%s.metrics.repeat_notifications\", config.DB_USER_SETTINGS_SUBKEY)),\n\t\tc,\n\t\tdeviceRepo,\n\t) {\n\t\t//send notifications\n\n\t\tliveNotify := notify.New(\n\t\t\tlogger,\n\t\t\tappConfig,\n\t\t\tupdatedDevice,\n\t\t\tfalse,\n\t\t)\n\t\t_ = liveNotify.Send() //we ignore error message when sending notifications.\n\t}\n\n\tc.JSON(http.StatusOK, gin.H{\"success\": true})\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/handler/upload_device_self_tests.go",
    "content": "package handler\n\nimport \"github.com/gin-gonic/gin\"\n\nfunc UploadDeviceSelfTests(c *gin.Context) {\n\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/middleware/config.go",
    "content": "package middleware\n\nimport (\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/gin-gonic/gin\"\n)\n\nfunc ConfigMiddleware(appConfig config.Interface) gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\tc.Set(\"CONFIG\", appConfig)\n\t\tc.Next()\n\t}\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/middleware/logger.go",
    "content": "package middleware\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n// Middleware based on https://github.com/toorop/gin-logrus/blob/master/logger.go\n// Body recording based on\n// - https://github.com/gin-gonic/gin/issues/1363\n// - https://stackoverflow.com/questions/38501325/how-to-log-response-body-in-gin\n\n// 2016-09-27 09:38:21.541541811 +0200 CEST\n// 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700]\n// \"GET /apache_pb.gif HTTP/1.0\" 200 2326\n// \"http://www.example.com/start.html\"\n// \"Mozilla/4.08 [en] (Win98; I ;Nav)\"\n\nvar timeFormat = \"02/Jan/2006:15:04:05 -0700\"\n\n// Logger is the logrus logger handler\nfunc LoggerMiddleware(logger *logrus.Entry) gin.HandlerFunc {\n\n\thostname, err := os.Hostname()\n\tif err != nil {\n\t\thostname = \"unknown\"\n\t}\n\n\treturn func(c *gin.Context) {\n\n\t\t//clone the request body reader.\n\t\tvar reqBody string\n\t\tif c.Request.Body != nil {\n\t\t\tbuf, _ := io.ReadAll(c.Request.Body)\n\t\t\treqBodyReader1 := io.NopCloser(bytes.NewBuffer(buf))\n\t\t\treqBodyReader2 := io.NopCloser(bytes.NewBuffer(buf)) //We have to create a new Buffer, because reqBodyReader1 will be read.\n\t\t\tc.Request.Body = reqBodyReader2\n\t\t\treqBody = readBody(reqBodyReader1)\n\t\t}\n\n\t\t// other handler can change c.Path so:\n\t\tpath := c.Request.URL.Path\n\t\tblw := &responseBodyLogWriter{body: &bytes.Buffer{}, ResponseWriter: c.Writer}\n\t\tc.Writer = blw\n\t\tc.Set(\"LOGGER\", logger)\n\t\tstart := time.Now()\n\t\tc.Next()\n\t\tstop := time.Since(start)\n\t\tlatency := int(math.Ceil(float64(stop.Nanoseconds()) / 1000000.0))\n\t\tstatusCode := c.Writer.Status()\n\t\tclientIP := c.ClientIP()\n\t\tclientUserAgent := c.Request.UserAgent()\n\t\treferer := c.Request.Referer()\n\t\trespLength := c.Writer.Size()\n\t\tif respLength < 0 {\n\t\t\trespLength = 0\n\t\t}\n\n\t\tentry := logger.WithFields(logrus.Fields{\n\t\t\t\"hostname\":   hostname,\n\t\t\t\"statusCode\": statusCode,\n\t\t\t\"latency\":    latency, // time to process\n\t\t\t\"clientIP\":   clientIP,\n\t\t\t\"method\":     c.Request.Method,\n\t\t\t\"path\":       path,\n\t\t\t\"referer\":    referer,\n\t\t\t\"respLength\": respLength,\n\t\t\t\"userAgent\":  clientUserAgent,\n\t\t})\n\n\t\tif len(c.Errors) > 0 {\n\t\t\tentry.Error(c.Errors.ByType(gin.ErrorTypePrivate).String())\n\t\t} else {\n\t\t\tmsg := fmt.Sprintf(\"%s - %s [%s] \\\"%s %s\\\" %d %d \\\"%s\\\" \\\"%s\\\" (%dms)\", clientIP, hostname, time.Now().Format(timeFormat), c.Request.Method, path, statusCode, respLength, referer, clientUserAgent, latency)\n\t\t\tif statusCode >= http.StatusInternalServerError {\n\t\t\t\tentry.Error(msg)\n\t\t\t} else if statusCode >= http.StatusBadRequest {\n\t\t\t\tentry.Warn(msg)\n\t\t\t} else {\n\t\t\t\tentry.Info(msg)\n\t\t\t}\n\t\t}\n\t\tif strings.Contains(path, \"/api/\") {\n\t\t\t//only debug log request/response from api endpoint.\n\t\t\tif len(reqBody) > 0 {\n\t\t\t\tentry.WithField(\"bodyType\", \"request\").Debugln(reqBody) // Print request body\n\t\t\t}\n\t\t\tentry.WithField(\"bodyType\", \"response\").Debugln(blw.body.String())\n\t\t}\n\t}\n}\n\n// Response Logging\n\ntype responseBodyLogWriter struct {\n\tgin.ResponseWriter\n\tbody *bytes.Buffer\n}\n\nfunc (w responseBodyLogWriter) Write(b []byte) (int, error) {\n\tw.body.Write(b)\n\treturn w.ResponseWriter.Write(b)\n}\n\n// Request Logging\n\nfunc readBody(reader io.Reader) string {\n\tbuf := new(bytes.Buffer)\n\tbuf.ReadFrom(reader)\n\n\ts := buf.String()\n\treturn s\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/middleware/repository.go",
    "content": "package middleware\n\nimport (\n\t\"context\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/database\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n)\n\nfunc RepositoryMiddleware(appConfig config.Interface, globalLogger logrus.FieldLogger) gin.HandlerFunc {\n\n\tdeviceRepo, err := database.NewScrutinyRepository(appConfig, globalLogger)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// ensure the settings have been loaded into the app config during startup.\n\t_, err = deviceRepo.LoadSettings(context.Background())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t//settings.UpdateSettingEntries()\n\n\t//TODO: determine where we can call defer deviceRepo.Close()\n\treturn func(c *gin.Context) {\n\t\tc.Set(\"DEVICE_REPOSITORY\", deviceRepo)\n\t\tc.Next()\n\t}\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/server.go",
    "content": "package web\n\nimport (\n\t\"fmt\"\n\t\"github.com/analogj/go-util/utils\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/errors\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/web/handler\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/web/middleware\"\n\t\"github.com/gin-gonic/gin\"\n\t\"github.com/sirupsen/logrus\"\n\t\"net/http\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\ntype AppEngine struct {\n\tConfig config.Interface\n\tLogger *logrus.Entry\n}\n\nfunc (ae *AppEngine) Setup(logger *logrus.Entry) *gin.Engine {\n\tr := gin.New()\n\n\tr.Use(middleware.LoggerMiddleware(logger))\n\tr.Use(middleware.RepositoryMiddleware(ae.Config, logger))\n\tr.Use(middleware.ConfigMiddleware(ae.Config))\n\tr.Use(gin.Recovery())\n\n\tbasePath := ae.Config.GetString(\"web.listen.basepath\")\n\tlogger.Debugf(\"basepath: %s\", basePath)\n\n\tbase := r.Group(basePath)\n\t{\n\t\tapi := base.Group(\"/api\")\n\t\t{\n\t\t\tapi.GET(\"/health\", handler.HealthCheck)\n\t\t\tapi.POST(\"/health/notify\", handler.SendTestNotification) //check if notifications are configured correctly\n\n\t\t\tapi.POST(\"/devices/register\", handler.RegisterDevices)         //used by Collector to register new devices and retrieve filtered list\n\t\t\tapi.GET(\"/summary\", handler.GetDevicesSummary)                 //used by Dashboard\n\t\t\tapi.GET(\"/summary/temp\", handler.GetDevicesSummaryTempHistory) //used by Dashboard (Temperature history dropdown)\n\t\t\tapi.POST(\"/device/:wwn/smart\", handler.UploadDeviceMetrics)    //used by Collector to upload data\n\t\t\tapi.POST(\"/device/:wwn/selftest\", handler.UploadDeviceSelfTests)\n\t\t\tapi.GET(\"/device/:wwn/details\", handler.GetDeviceDetails)   //used by Details\n\t\t\tapi.POST(\"/device/:wwn/archive\", handler.ArchiveDevice)     //used by UI to archive device\n\t\t\tapi.POST(\"/device/:wwn/unarchive\", handler.UnarchiveDevice) //used by UI to unarchive device\n\t\t\tapi.DELETE(\"/device/:wwn\", handler.DeleteDevice)            //used by UI to delete device\n\n\t\t\tapi.GET(\"/settings\", handler.GetSettings)   //used to get settings\n\t\t\tapi.POST(\"/settings\", handler.SaveSettings) //used to save settings\n\t\t}\n\t}\n\n\t//Static request routing\n\tbase.StaticFS(\"/web\", http.Dir(ae.Config.GetString(\"web.src.frontend.path\")))\n\n\t//redirect base url to /web\n\tbase.GET(\"/\", func(c *gin.Context) {\n\t\tc.Redirect(http.StatusFound, basePath+\"/web\")\n\t})\n\n\t//catch-all, serve index page.\n\tr.NoRoute(func(c *gin.Context) {\n\t\tc.File(fmt.Sprintf(\"%s/index.html\", ae.Config.GetString(\"web.src.frontend.path\")))\n\t})\n\treturn r\n}\n\nfunc (ae *AppEngine) Start() error {\n\t//set the gin mode\n\tgin.SetMode(gin.ReleaseMode)\n\tif strings.ToLower(ae.Config.GetString(\"log.level\")) == \"debug\" {\n\t\tgin.SetMode(gin.DebugMode)\n\t}\n\n\t//check if the database parent directory exists, fail here rather than in a handler.\n\tif !utils.FileExists(filepath.Dir(ae.Config.GetString(\"web.database.location\"))) {\n\t\treturn errors.ConfigValidationError(fmt.Sprintf(\n\t\t\t\"Database parent directory does not exist. Please check path (%s)\",\n\t\t\tfilepath.Dir(ae.Config.GetString(\"web.database.location\"))))\n\t}\n\n\tr := ae.Setup(ae.Logger)\n\n\treturn r.Run(fmt.Sprintf(\"%s:%s\", ae.Config.GetString(\"web.listen.host\"), ae.Config.GetString(\"web.listen.port\")))\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/server_test.go",
    "content": "package web_test\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/config\"\n\tmock_config \"github.com/analogj/scrutiny/webapp/backend/pkg/config/mock\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/models/collector\"\n\t\"github.com/analogj/scrutiny/webapp/backend/pkg/web\"\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/require\"\n\t\"github.com/stretchr/testify/suite\"\n\t\"go.uber.org/mock/gomock\"\n)\n\n/*\nAll tests in this file require the existance of a influxDB listening on port 8086\n\ndocker run --rm -it -p 8086:8086 \\\n-e DOCKER_INFLUXDB_INIT_MODE=setup \\\n-e DOCKER_INFLUXDB_INIT_USERNAME=admin \\\n-e DOCKER_INFLUXDB_INIT_PASSWORD=password12345 \\\n-e DOCKER_INFLUXDB_INIT_ORG=scrutiny \\\n-e DOCKER_INFLUXDB_INIT_BUCKET=metrics \\\n-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token \\\ninfluxdb:2.0\n*/\n\n//func TestMain(m *testing.M) {\n//\tsetup()\n//\tcode := m.Run()\n//\tshutdown()\n//\tos.Exit(code)\n//}\n\n// InfluxDB will throw an error/ignore any submitted data with a timestamp older than the\n// retention period. Lets fix this by opening test files, modifying the timestamp and returning an io.Reader\nfunc helperReadSmartDataFileFixTimestamp(t *testing.T, smartDataFilepath string) io.Reader {\n\tmetricsfile, err := os.Open(smartDataFilepath)\n\trequire.NoError(t, err)\n\n\tmetricsFileData, err := io.ReadAll(metricsfile)\n\trequire.NoError(t, err)\n\n\t//unmarshal because we need to change the timestamp\n\tvar smartData collector.SmartInfo\n\terr = json.Unmarshal(metricsFileData, &smartData)\n\trequire.NoError(t, err)\n\tsmartData.LocalTime.TimeT = time.Now().Unix()\n\tupdatedSmartDataBytes, err := json.Marshal(smartData)\n\n\treturn bytes.NewReader(updatedSmartDataBytes)\n}\n\n// Define the suite, and absorb the built-in basic suite\n// functionality from testify - including a T() method which\n// returns the current testing context\ntype ServerTestSuite struct {\n\tsuite.Suite\n\tBasepath string\n}\n\nfunc TestServerTestSuite_WithEmptyBasePath(t *testing.T) {\n\temptyBasePathSuite := new(ServerTestSuite)\n\temptyBasePathSuite.Basepath = \"\"\n\tsuite.Run(t, emptyBasePathSuite)\n}\n\nfunc TestServerTestSuite_WithCustomBasePath(t *testing.T) {\n\temptyBasePathSuite := new(ServerTestSuite)\n\temptyBasePathSuite.Basepath = \"/basepath\"\n\tsuite.Run(t, emptyBasePathSuite)\n}\n\nfunc (suite *ServerTestSuite) TestHealthRoute() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").Return(path.Join(parentPath, \"scrutiny_test.db\")).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").Return(parentPath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\n\t//test\n\tw := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"GET\", suite.Basepath+\"/api/health\", nil)\n\trouter.ServeHTTP(w, req)\n\n\t//assert\n\trequire.Equal(suite.T(), 200, w.Code)\n\trequire.Equal(suite.T(), \"{\\\"success\\\":true}\", w.Body.String())\n}\n\nfunc (suite *ServerTestSuite) TestRegisterDevicesRoute() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").Return(path.Join(parentPath, \"scrutiny_test.db\")).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").Return(parentPath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\tfile, err := os.Open(\"testdata/register-devices-req.json\")\n\trequire.NoError(suite.T(), err)\n\n\t//test\n\tw := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/devices/register\", file)\n\trouter.ServeHTTP(w, req)\n\n\t//assert\n\trequire.Equal(suite.T(), 200, w.Code)\n}\n\nfunc (suite *ServerTestSuite) TestUploadDeviceMetricsRoute() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"user.metrics.repeat_notifications\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"user.collector.discard_sct_temp_history\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.notify_level\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsNotifyLevelFail))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusFilterAttributesAll))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusThresholdBoth))\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\tdevicesfile, err := os.Open(\"testdata/register-devices-single-req.json\")\n\trequire.NoError(suite.T(), err)\n\n\tmetricsfile := helperReadSmartDataFileFixTimestamp(suite.T(), \"testdata/upload-device-metrics-req.json\")\n\n\t//test\n\twr := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/devices/register\", devicesfile)\n\trouter.ServeHTTP(wr, req)\n\trequire.Equal(suite.T(), 200, wr.Code)\n\n\tmr := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"POST\", suite.Basepath+\"/api/device/0x5000cca264eb01d7/smart\", metricsfile)\n\trouter.ServeHTTP(mr, req)\n\trequire.Equal(suite.T(), 200, mr.Code)\n\n\t//assert\n}\n\nfunc (suite *ServerTestSuite) TestPopulateMultiple() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\t//fakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(\"testdata/scrutiny_test.db\")\n\tfakeConfig.EXPECT().GetStringSlice(\"notify.urls\").Return([]string{}).AnyTimes()\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.notify_level\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsNotifyLevelFail))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusFilterAttributesAll))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusThresholdBoth))\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"user.metrics.repeat_notifications\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"user.collector.discard_sct_temp_history\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\tdevicesfile, err := os.Open(\"testdata/register-devices-req.json\")\n\trequire.NoError(suite.T(), err)\n\n\tmetricsfile := helperReadSmartDataFileFixTimestamp(suite.T(), \"../models/testdata/smart-ata.json\")\n\tfailfile := helperReadSmartDataFileFixTimestamp(suite.T(), \"../models/testdata/smart-fail2.json\")\n\tnvmefile := helperReadSmartDataFileFixTimestamp(suite.T(), \"../models/testdata/smart-nvme.json\")\n\tscsifile := helperReadSmartDataFileFixTimestamp(suite.T(), \"../models/testdata/smart-scsi.json\")\n\tscsi2file := helperReadSmartDataFileFixTimestamp(suite.T(), \"../models/testdata/smart-scsi2.json\")\n\n\t//test\n\twr := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/devices/register\", devicesfile)\n\trouter.ServeHTTP(wr, req)\n\trequire.Equal(suite.T(), 200, wr.Code)\n\n\tmr := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"POST\", suite.Basepath+\"/api/device/0x5000cca264eb01d7/smart\", metricsfile)\n\trouter.ServeHTTP(mr, req)\n\trequire.Equal(suite.T(), 200, mr.Code)\n\n\tfr := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"POST\", suite.Basepath+\"/api/device/0x5000cca264ec3183/smart\", failfile)\n\trouter.ServeHTTP(fr, req)\n\trequire.Equal(suite.T(), 200, fr.Code)\n\n\tnr := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"POST\", suite.Basepath+\"/api/device/0x5002538e40a22954/smart\", nvmefile)\n\trouter.ServeHTTP(nr, req)\n\trequire.Equal(suite.T(), 200, nr.Code)\n\n\tsr := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"POST\", suite.Basepath+\"/api/device/0x5000cca252c859cc/smart\", scsifile)\n\trouter.ServeHTTP(sr, req)\n\trequire.Equal(suite.T(), 200, sr.Code)\n\n\ts2r := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"POST\", suite.Basepath+\"/api/device/0x5000cca264ebc248/smart\", scsi2file)\n\trouter.ServeHTTP(s2r, req)\n\trequire.Equal(suite.T(), 200, s2r.Code)\n\n\t//assert\n}\n\n//TODO: this test should use a recorded request/response playback.\n//func TestSendTestNotificationRoute(t *testing.T) {\n//\t//setup\n//\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n//\tdefer os.RemoveAll(parentPath)\n//\tmockCtrl := gomock.NewController(t)\n//\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n//\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n//\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n//\tfakeConfig.EXPECT().GetStringSlice(\"notify.urls\").AnyTimes().Return([]string{\"https://scrutiny.requestcatcher.com/test\"})\n//\tae := web.AppEngine{\n//\t\tConfig: fakeConfig,\n//\t}\n//\trouter := ae.Setup(logrus.New())\n//\n//\t//test\n//\twr := httptest.NewRecorder()\n//\treq, _ := http.NewRequest(\"POST\", \"/api/health/notify\", strings.NewReader(\"{}\"))\n//\trouter.ServeHTTP(wr, req)\n//\n//\t//assert\n//\trequire.Equal(t, 200, wr.Code)\n//}\n\nfunc (suite *ServerTestSuite) TestSendTestNotificationRoute_WebhookFailure() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetStringSlice(\"notify.urls\").AnyTimes().Return([]string{\"https://unroutable.domain.example.asdfghj\"})\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.notify_level\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsNotifyLevelFail))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusFilterAttributesAll))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusThresholdBoth))\n\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\n\t//test\n\twr := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/health/notify\", strings.NewReader(\"{}\"))\n\trouter.ServeHTTP(wr, req)\n\n\t//assert\n\trequire.Equal(suite.T(), 500, wr.Code)\n}\n\nfunc (suite *ServerTestSuite) TestSendTestNotificationRoute_ScriptFailure() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetStringSlice(\"notify.urls\").AnyTimes().Return([]string{\"script:///missing/path/on/disk\"})\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.notify_level\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsNotifyLevelFail))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusFilterAttributesAll))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusThresholdBoth))\n\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\n\t//test\n\twr := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/health/notify\", strings.NewReader(\"{}\"))\n\trouter.ServeHTTP(wr, req)\n\n\t//assert\n\trequire.Equal(suite.T(), 500, wr.Code)\n}\n\nfunc (suite *ServerTestSuite) TestSendTestNotificationRoute_ScriptSuccess() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetStringSlice(\"notify.urls\").AnyTimes().Return([]string{\"script:///usr/bin/env\"})\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.notify_level\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsNotifyLevelFail))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusFilterAttributesAll))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusThresholdBoth))\n\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\n\t//test\n\twr := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/health/notify\", strings.NewReader(\"{}\"))\n\trouter.ServeHTTP(wr, req)\n\n\t//assert\n\trequire.Equal(suite.T(), 200, wr.Code)\n}\n\nfunc (suite *ServerTestSuite) TestSendTestNotificationRoute_ShoutrrrFailure() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetStringSlice(\"notify.urls\").AnyTimes().Return([]string{\"discord://invalidtoken@channel\"})\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.notify_level\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsNotifyLevelFail))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusFilterAttributesAll))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusThresholdBoth))\n\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\n\t//test\n\twr := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/health/notify\", strings.NewReader(\"{}\"))\n\trouter.ServeHTTP(wr, req)\n\n\t//assert\n\trequire.Equal(suite.T(), 500, wr.Code)\n}\n\nfunc (suite *ServerTestSuite) TestGetDevicesSummaryRoute_Nvme() {\n\t//setup\n\tparentPath, _ := os.MkdirTemp(\"\", \"\")\n\tdefer os.RemoveAll(parentPath)\n\tmockCtrl := gomock.NewController(suite.T())\n\tfakeConfig := mock_config.NewMockInterface(mockCtrl)\n\tfakeConfig.EXPECT().SetDefault(gomock.Any(), gomock.Any()).AnyTimes()\n\tfakeConfig.EXPECT().UnmarshalKey(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)\n\tfakeConfig.EXPECT().GetString(\"web.database.location\").AnyTimes().Return(path.Join(parentPath, \"scrutiny_test.db\"))\n\tfakeConfig.EXPECT().GetString(\"web.src.frontend.path\").AnyTimes().Return(parentPath)\n\tfakeConfig.EXPECT().GetString(\"web.listen.basepath\").Return(suite.Basepath).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.scheme\").Return(\"http\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.port\").Return(\"8086\").AnyTimes()\n\tfakeConfig.EXPECT().IsSet(\"web.influxdb.token\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.token\").Return(\"my-super-secret-auth-token\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.org\").Return(\"scrutiny\").AnyTimes()\n\tfakeConfig.EXPECT().GetString(\"web.influxdb.bucket\").Return(\"metrics\").AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"user.metrics.repeat_notifications\").Return(true).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"user.collector.discard_sct_temp_history\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.tls.insecure_skip_verify\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetBool(\"web.influxdb.retention_policy\").Return(false).AnyTimes()\n\tfakeConfig.EXPECT().GetStringSlice(\"notify.urls\").AnyTimes().Return([]string{})\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.notify_level\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsNotifyLevelFail))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_filter_attributes\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusFilterAttributesAll))\n\tfakeConfig.EXPECT().GetInt(fmt.Sprintf(\"%s.metrics.status_threshold\", config.DB_USER_SETTINGS_SUBKEY)).AnyTimes().Return(int(pkg.MetricsStatusThresholdBoth))\n\n\tif _, isGithubActions := os.LookupEnv(\"GITHUB_ACTIONS\"); isGithubActions {\n\t\t// when running test suite in github actions, we run an influxdb service as a sidecar.\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"influxdb\").AnyTimes()\n\t} else {\n\t\tfakeConfig.EXPECT().GetString(\"web.influxdb.host\").Return(\"localhost\").AnyTimes()\n\t}\n\n\tae := web.AppEngine{\n\t\tConfig: fakeConfig,\n\t}\n\trouter := ae.Setup(logrus.WithField(\"test\", suite.T().Name()))\n\tdevicesfile, err := os.Open(\"testdata/register-devices-req-2.json\")\n\trequire.NoError(suite.T(), err)\n\n\tmetricsfile := helperReadSmartDataFileFixTimestamp(suite.T(), \"../models/testdata/smart-nvme2.json\")\n\n\t//test\n\twr := httptest.NewRecorder()\n\treq, _ := http.NewRequest(\"POST\", suite.Basepath+\"/api/devices/register\", devicesfile)\n\trouter.ServeHTTP(wr, req)\n\trequire.Equal(suite.T(), 200, wr.Code)\n\n\tmr := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"POST\", suite.Basepath+\"/api/device/a4c8e8ed-11a0-4c97-9bba-306440f1b944/smart\", metricsfile)\n\trouter.ServeHTTP(mr, req)\n\trequire.Equal(suite.T(), 200, mr.Code)\n\n\tsr := httptest.NewRecorder()\n\treq, _ = http.NewRequest(\"GET\", suite.Basepath+\"/api/summary\", nil)\n\trouter.ServeHTTP(sr, req)\n\trequire.Equal(suite.T(), 200, sr.Code)\n\tvar deviceSummary models.DeviceSummaryWrapper\n\terr = json.Unmarshal(sr.Body.Bytes(), &deviceSummary)\n\trequire.NoError(suite.T(), err)\n\n\t//assert\n\trequire.Equal(suite.T(), \"a4c8e8ed-11a0-4c97-9bba-306440f1b944\", deviceSummary.Data.Summary[\"a4c8e8ed-11a0-4c97-9bba-306440f1b944\"].Device.WWN)\n\trequire.Equal(suite.T(), pkg.DeviceStatusPassed, deviceSummary.Data.Summary[\"a4c8e8ed-11a0-4c97-9bba-306440f1b944\"].Device.DeviceStatus)\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/testdata/register-devices-req-2.json",
    "content": "{\n  \"data\": [\n    {\n      \"wwn\": \"a4c8e8ed-11a0-4c97-9bba-306440f1b944\",\n      \"device_name\": \"nvme0\",\n      \"manufacturer\": \"\",\n      \"model_name\": \"Force MP510\",\n      \"interface_type\": \"\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"a4c8e8ed-11a0-4c97-9bba-306440f1b944\",\n      \"firmware\": \"ECFM12.3\",\n      \"rotational_speed\": 0,\n      \"capacity\": 480103981056,\n      \"form_factor\": \"\",\n      \"smart_support\": false,\n      \"device_protocol\": \"NVMe\",\n      \"device_type\": \"nvme\"\n    }\n  ]\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/testdata/register-devices-req.json",
    "content": "{\n  \"data\": [\n    {\n      \"wwn\": \"0x5002538e40a22954\",\n      \"device_name\": \"sda\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"Samsung_SSD_860_EVO_500GB\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"S3YZNB0KBXXXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 500107862016,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    },\n    {\n      \"wwn\": \"0x5000cca264eb01d7\",\n      \"device_name\": \"sdb\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"WDC_WD140EDFZ-11A0VA0\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"9RK1XXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 14000519643136,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    },\n    {\n      \"wwn\": \"0x5000cca264ec3183\",\n      \"device_name\": \"sdc\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"WDC_WD140EDFZ-11A0VA0\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"9RK4XXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 14000519643136,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    },\n    {\n      \"wwn\": \"0x5000cca252c859cc\",\n      \"device_name\": \"sdd\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"WDC_WD80EFAX-68LHPN0\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"7SGLXXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 8001563222016,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    },\n    {\n      \"wwn\": \"0x5000cca264ebc248\",\n      \"device_name\": \"sde\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"WDC_WD140EDFZ-11A0VA0\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"9RK3XXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 14000519643136,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    },\n    {\n      \"wwn\": \"0x50014ee20b2a72a9\",\n      \"device_name\": \"sdf\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"WDC_WD60EFRX-68MYMN1\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"WD-WXL1HXXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 6001175126016,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    },\n    {\n      \"wwn\": \"0x5000c500673e6b5f\",\n      \"device_name\": \"sdg\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"ST6000DX000-1H217Z\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"Z4DXXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 6001175126016,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    }\n  ]\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/testdata/register-devices-single-req.json",
    "content": "{\n  \"data\": [\n    {\n      \"wwn\": \"0x5000cca264eb01d7\",\n      \"device_name\": \"sdb\",\n      \"manufacturer\": \"ATA\",\n      \"model_name\": \"WDC_WD140EDFZ-11A0VA0\",\n      \"interface_type\": \"SCSI\",\n      \"interface_speed\": \"\",\n      \"serial_number\": \"9RK1XXXXX\",\n      \"firmware\": \"\",\n      \"rotational_speed\": 0,\n      \"capacity\": 14000519643136,\n      \"form_factor\": \"\",\n      \"smart_support\": false\n    }\n  ]\n}\n"
  },
  {
    "path": "webapp/backend/pkg/web/testdata/upload-device-metrics-req.json",
    "content": "{\n  \"json_format_version\": [\n    1,\n    0\n  ],\n  \"smartctl\": {\n    \"version\": [\n      7,\n      0\n    ],\n    \"svn_revision\": \"4883\",\n    \"platform_info\": \"x86_64-linux-4.19.128-flatcar\",\n    \"build_info\": \"(local build)\",\n    \"argv\": [\n      \"smartctl\",\n      \"-j\",\n      \"-a\",\n      \"/dev/sdb\"\n    ],\n    \"exit_status\": 0\n  },\n  \"device\": {\n    \"name\": \"/dev/sdb\",\n    \"info_name\": \"/dev/sdb [SAT]\",\n    \"type\": \"sat\",\n    \"protocol\": \"ATA\"\n  },\n  \"model_name\": \"WDC WD140EDFZ-11A0VA0\",\n  \"serial_number\": \"9RK1XXXX\",\n  \"wwn\": {\n    \"naa\": 5,\n    \"oui\": 3274,\n    \"id\": 10283057623\n  },\n  \"firmware_version\": \"81.00A81\",\n  \"user_capacity\": {\n    \"blocks\": 27344764928,\n    \"bytes\": 14000519643136\n  },\n  \"logical_block_size\": 512,\n  \"physical_block_size\": 4096,\n  \"rotation_rate\": 5400,\n  \"form_factor\": {\n    \"ata_value\": 2,\n    \"name\": \"3.5 inches\"\n  },\n  \"in_smartctl_database\": false,\n  \"ata_version\": {\n    \"string\": \"ACS-2, ATA8-ACS T13/1699-D revision 4\",\n    \"major_value\": 1020,\n    \"minor_value\": 41\n  },\n  \"sata_version\": {\n    \"string\": \"SATA 3.2\",\n    \"value\": 255\n  },\n  \"interface_speed\": {\n    \"max\": {\n      \"sata_value\": 14,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    },\n    \"current\": {\n      \"sata_value\": 3,\n      \"string\": \"6.0 Gb/s\",\n      \"units_per_second\": 60,\n      \"bits_per_unit\": 100000000\n    }\n  },\n  \"local_time\": {\n    \"time_t\": 1592697810,\n    \"asctime\": \"Sun Jun 21 00:03:30 2020 UTC\"\n  },\n  \"smart_status\": {\n    \"passed\": true\n  },\n  \"ata_smart_data\": {\n    \"offline_data_collection\": {\n      \"status\": {\n        \"value\": 130,\n        \"string\": \"was completed without error\",\n        \"passed\": true\n      },\n      \"completion_seconds\": 101\n    },\n    \"self_test\": {\n      \"status\": {\n        \"value\": 241,\n        \"string\": \"in progress, 10% remaining\",\n        \"remaining_percent\": 10\n      },\n      \"polling_minutes\": {\n        \"short\": 2,\n        \"extended\": 1479\n      }\n    },\n    \"capabilities\": {\n      \"values\": [\n        91,\n        3\n      ],\n      \"exec_offline_immediate_supported\": true,\n      \"offline_is_aborted_upon_new_cmd\": false,\n      \"offline_surface_scan_supported\": true,\n      \"self_tests_supported\": true,\n      \"conveyance_self_test_supported\": false,\n      \"selective_self_test_supported\": true,\n      \"attribute_autosave_enabled\": true,\n      \"error_logging_supported\": true,\n      \"gp_logging_supported\": true\n    }\n  },\n  \"ata_sct_capabilities\": {\n    \"value\": 61,\n    \"error_recovery_control_supported\": true,\n    \"feature_control_supported\": true,\n    \"data_table_supported\": true\n  },\n  \"ata_smart_attributes\": {\n    \"revision\": 16,\n    \"table\": [\n      {\n        \"id\": 1,\n        \"name\": \"Raw_Read_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 11,\n          \"string\": \"PO-R-- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Throughput_Performance\",\n        \"value\": 135,\n        \"worst\": 135,\n        \"thresh\": 54,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 108,\n          \"string\": \"108\"\n        }\n      },\n      {\n        \"id\": 3,\n        \"name\": \"Spin_Up_Time\",\n        \"value\": 81,\n        \"worst\": 81,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 7,\n          \"string\": \"POS--- \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 30089675132,\n          \"string\": \"380 (Average 380)\"\n        }\n      },\n      {\n        \"id\": 4,\n        \"name\": \"Start_Stop_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 9,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 5,\n        \"name\": \"Reallocated_Sector_Ct\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 51,\n          \"string\": \"PO--CK \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 7,\n        \"name\": \"Seek_Error_Rate\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Seek_Time_Performance\",\n        \"value\": 133,\n        \"worst\": 133,\n        \"thresh\": 20,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 4,\n          \"string\": \"--S--- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": true,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 18,\n          \"string\": \"18\"\n        }\n      },\n      {\n        \"id\": 9,\n        \"name\": \"Power_On_Hours\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 1730,\n          \"string\": \"1730\"\n        }\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Spin_Retry_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 1,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 12,\n        \"name\": \"Power_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 9,\n          \"string\": \"9\"\n        }\n      },\n      {\n        \"id\": 22,\n        \"name\": \"Unknown_Attribute\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 25,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 35,\n          \"string\": \"PO---K \",\n          \"prefailure\": true,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 100,\n          \"string\": \"100\"\n        }\n      },\n      {\n        \"id\": 192,\n        \"name\": \"Power-Off_Retract_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 329,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 193,\n        \"name\": \"Load_Cycle_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 18,\n          \"string\": \"-O--C- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 329,\n          \"string\": \"329\"\n        }\n      },\n      {\n        \"id\": 194,\n        \"name\": \"Temperature_Celsius\",\n        \"value\": 51,\n        \"worst\": 51,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 2,\n          \"string\": \"-O---- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 163210330144,\n          \"string\": \"32 (Min/Max 24/38)\"\n        }\n      },\n      {\n        \"id\": 196,\n        \"name\": \"Reallocated_Event_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 50,\n          \"string\": \"-O--CK \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": true,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 197,\n        \"name\": \"Current_Pending_Sector\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 34,\n          \"string\": \"-O---K \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": false,\n          \"event_count\": false,\n          \"auto_keep\": true\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 198,\n        \"name\": \"Offline_Uncorrectable\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 8,\n          \"string\": \"---R-- \",\n          \"prefailure\": false,\n          \"updated_online\": false,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      },\n      {\n        \"id\": 199,\n        \"name\": \"UDMA_CRC_Error_Count\",\n        \"value\": 100,\n        \"worst\": 100,\n        \"thresh\": 0,\n        \"when_failed\": \"\",\n        \"flags\": {\n          \"value\": 10,\n          \"string\": \"-O-R-- \",\n          \"prefailure\": false,\n          \"updated_online\": true,\n          \"performance\": false,\n          \"error_rate\": true,\n          \"event_count\": false,\n          \"auto_keep\": false\n        },\n        \"raw\": {\n          \"value\": 0,\n          \"string\": \"0\"\n        }\n      }\n    ]\n  },\n  \"power_on_time\": {\n    \"hours\": 1730\n  },\n  \"power_cycle_count\": 9,\n  \"temperature\": {\n    \"current\": 32\n  },\n  \"ata_smart_error_log\": {\n    \"summary\": {\n      \"revision\": 1,\n      \"count\": 0\n    }\n  },\n  \"ata_smart_self_test_log\": {\n    \"standard\": {\n      \"revision\": 1,\n      \"table\": [\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1708\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1684\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1661\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1636\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1624\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1541\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1517\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1493\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1469\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1445\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1439\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1373\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1349\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1325\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1301\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1277\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1253\n        },\n        {\n          \"type\": {\n            \"value\": 2,\n            \"string\": \"Extended offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1252\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1205\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1181\n        },\n        {\n          \"type\": {\n            \"value\": 1,\n            \"string\": \"Short offline\"\n          },\n          \"status\": {\n            \"value\": 0,\n            \"string\": \"Completed without error\",\n            \"passed\": true\n          },\n          \"lifetime_hours\": 1157\n        }\n      ],\n      \"count\": 21,\n      \"error_count_total\": 0,\n      \"error_count_outdated\": 0\n    }\n  },\n  \"ata_smart_selective_self_test_log\": {\n    \"revision\": 1,\n    \"table\": [\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      },\n      {\n        \"lba_min\": 0,\n        \"lba_max\": 0,\n        \"status\": {\n          \"value\": 241,\n          \"string\": \"Not_testing\"\n        }\n      }\n    ],\n    \"flags\": {\n      \"value\": 0,\n      \"remainder_scan_enabled\": false\n    },\n    \"power_up_scan_resume_minutes\": 0\n  }\n}\n"
  },
  {
    "path": "webapp/frontend/.editorconfig",
    "content": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 4\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\nmax_line_length = off\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "webapp/frontend/.gitignore",
    "content": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist\n/tmp\n/out-tsc\n# Only exists if Bazel was run\n/bazel-out\n\n# dependencies\n/node_modules\n\n# profiling files\nchrome-profiler-events*.json\nspeed-measure-plugin*.json\n\n# IDEs and editors\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n.history/*\n\n# misc\n/.sass-cache\n/connect.lock\n/coverage\n/libpeerconnection.log\nnpm-debug.log\nyarn-error.log\ntestem.log\n/typings\n\n# System Files\n.DS_Store\nThumbs.db\n\n/dist\n\n/coverage\n"
  },
  {
    "path": "webapp/frontend/CREDITS",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ 3rd party credits\n// -----------------------------------------------------------------------------------------------------\n\n// Icons\nMaterial - https://material.io/tools/icons\nDripicons - http://demo.amitjakhu.com/dripicons/\nFeather - https://feathericons.com/\nHeroicons - https://github.com/refactoringui/heroicons\nIconsmind - https://iconsmind.com/\n\n// Avatars\nhttps://uifaces.co/\n\n// Mail app\nPhoto by Riccardo Chiarini on Unsplash - https://unsplash.com/photos/2VDa8bnLM8c\nPhoto by Johannes Plenio on Unsplash - https://unsplash.com/photos/RwHv7LgeC7s\nPhoto by Jamie Davies on Unsplash - https://unsplash.com/photos/Hao52Fu9-F8\nPhoto by Christian Joudrey on Unsplash - https://unsplash.com/photos/mWRR1xj95hg\n\n// Auth pages\nPhoto by Meric Dagli on Unsplash - https://unsplash.com/photos/kZTYGpoeQO0\n\n// Profile page\nPhoto by Alex Knight on Unsplash - https://unsplash.com/photos/DpPutJwgyW8\n\n// Cards\nPhoto by Kym Ellis on Unsplash - https://unsplash.com/photos/RPT3AjdXlZc\nPhoto by Patrick Hendry on Unsplash - https://unsplash.com/photos/Qgxk3PQsMiI\nPhoto by Hailey Kean on Unsplash - https://unsplash.com/photos/QxjsOlFNr_4\nPhoto by Nathan Anderson on Unsplash - https://unsplash.com/photos/mG8ShlWrMDI\nPhoto by Adrian Infernus on Unsplash - https://unsplash.com/photos/5apewqWk978\nPhoto by freestocks.org on Unsplash - https://unsplash.com/photos/c73TZ2sIU38\nPhoto by Tim Marshall on Unsplash - https://unsplash.com/photos/PKSCrmZdvwA\nPhoto by Daniel Koponyas on Unsplash - https://unsplash.com/photos/rbiLY6ZwvXQ\nPhoto by John Westrock on Unsplash - https://unsplash.com/photos/LCesauDseu8\nPhoto by Gabriel Sollmann on Unsplash - https://unsplash.com/photos/kFWj9y-tJB4\nPhoto by Kevin Wolf on Unsplash - https://unsplash.com/photos/BJyjgEdNTPs\nPhoto by Luca Bravo on Unsplash - https://unsplash.com/photos/hFzIoD0F_i8\nPhoto by Ian Baldwin on Unsplash - https://unsplash.com/photos/Dlj-SxxTlQ0\nPhoto by Ben Kolde on Unsplash - https://unsplash.com/photos/KRTFIBOfcFw\nPhoto by Chad Peltola on Unsplash - https://unsplash.com/photos/BTvQ2ET_iKc\nPhoto by rocknwool on Unsplash - https://unsplash.com/photos/r56oO1V5oms\nPhoto by Vita Vilcina on Unsplash - https://unsplash.com/photos/KtOid0FLjqU\nPhoto by Jia Ye on Unsplash - https://unsplash.com/photos/y8ZnQqgohLk\nPhoto by Parker Whitson on Unsplash - https://unsplash.com/photos/OlTYIqTjmVM\nPhoto by Dorian Hurst on Unsplash - https://unsplash.com/photos/a9uWPQlIbYc\nPhoto by Everaldo Coelho on Unsplash - https://unsplash.com/photos/KPaSCpklCZw\nPhoto by eberhard grossgasteiger on Unsplash - https://unsplash.com/photos/fh2JefbNlII\nPhoto by Orlova Maria on Unsplash - https://unsplash.com/photos/p8y4dWEMGMU\nPhoto by Jake Blucker on Unsplash - https://unsplash.com/photos/tMzCrBkM99Y\nPhoto by Jerry Zhang on Unsplash - https://unsplash.com/photos/oIBcow6n36s\nPhoto by John Cobb on Unsplash - https://unsplash.com/photos/IE_sifhay7o\nPhoto by Dan Gold on Unsplash - https://unsplash.com/photos/mDlhOIfGxNI\nPhoto by Ana Toma on Unsplash - https://unsplash.com/photos/XsGwe6gYg0c\nPhoto by Andrea on Unsplash - https://unsplash.com/photos/1AWY0N960Sk\nPhoto by Aswin on Unsplash - https://unsplash.com/photos/_roUcFWstas\nPhoto by Justin Kauffman on Unsplash - https://unsplash.com/photos/aWG_dqyhI0A\nPhoto by Barna Bartis on Unsplash - https://unsplash.com/photos/VVoBQqWrvkc\nPhoto by Kyle Hinkson on Unsplash - https://unsplash.com/photos/3439EnvnAGo\nPhoto by Spencer Watson on Unsplash - https://unsplash.com/photos/5TBf16GnHKg\nPhoto by adrian on Unsplash - https://unsplash.com/photos/1wrzvwoK8A4\nPhoto by Christopher Rusev on Unsplash - https://unsplash.com/photos/7gKWgCRixf0\nPhoto by Stephen Leonardi on Unsplash - https://unsplash.com/photos/MDmwQVgDHHM\nPhoto by Dwinanda Nurhanif Mujito on Unsplash - https://unsplash.com/photos/pKT5Mg16w_w\nPhoto by Humphrey Muleba on Unsplash - https://unsplash.com/photos/Zuvf5mxT5fs\nPhoto by adrian on Unsplash - https://unsplash.com/photos/PNRxLFPMyJY\nPhoto by Dahee Son on Unsplash - https://unsplash.com/photos/tV06QVJXVxU\nPhoto by Zachary Kyra-Derksen on Unsplash - https://unsplash.com/photos/vkqS7vLQUtg\nPhoto by Rodrigo Soares on Unsplash - https://unsplash.com/photos/8BFWBUkSqQo\n"
  },
  {
    "path": "webapp/frontend/LICENSE.md",
    "content": "Envato Standard License\n\nCopyright (c) Sercan Yemen <sercanyemen@gmail.com>\n\nThis project is protected by Envato's Standard License. For more information,\ncheck the official license page at [https://themeforest.net/licenses/standard](https://themeforest.net/licenses/standard)\n"
  },
  {
    "path": "webapp/frontend/README.md",
    "content": "# Treo - Admin template and Starter project for Angular\n\n## Development server\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.\n\n## Code scaffolding\n\nRun `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.\n\n## Build\n\nRun `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running end-to-end tests\n\nRun `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).\n\n## Further help\n\nTo get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).\n"
  },
  {
    "path": "webapp/frontend/angular.json",
    "content": "{\n    \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n    \"version\": 1,\n    \"newProjectRoot\": \"projects\",\n    \"projects\": {\n        \"treo\": {\n            \"projectType\": \"application\",\n            \"schematics\": {\n                \"@schematics/angular:component\": {\n                    \"style\": \"scss\"\n                }\n            },\n            \"root\": \"\",\n            \"sourceRoot\": \"src\",\n            \"prefix\": \"app\",\n            \"architect\": {\n                \"build\": {\n                    \"builder\": \"@angular-devkit/build-angular:browser\",\n                    \"options\": {\n                        \"outputPath\": \"dist/treo\",\n                        \"index\": \"src/index.html\",\n                        \"main\": \"src/main.ts\",\n                        \"polyfills\": \"src/polyfills.ts\",\n                        \"tsConfig\": \"tsconfig.app.json\",\n                        \"aot\": true,\n                        \"assets\": [\n                            \"src/favicon-16x16.png\",\n                            \"src/favicon-32x32.png\",\n                            \"src/assets\"\n                        ],\n                        \"stylePreprocessorOptions\": {\n                            \"includePaths\": [\n                                \"src/@treo/styles\"\n                            ]\n                        },\n                        \"styles\": [\n                            \"src/styles/vendors.scss\",\n                            \"src/@treo/styles/main.scss\",\n                            \"src/styles/styles.scss\",\n                            \"src/styles/tailwind.scss\"\n                        ],\n                        \"scripts\": []\n                    },\n                    \"configurations\": {\n                        \"production\": {\n                            \"fileReplacements\": [\n                                {\n                                    \"replace\": \"src/environments/environment.ts\",\n                                    \"with\": \"src/environments/environment.prod.ts\"\n                                }\n                            ],\n                            \"optimization\": true,\n                            \"outputHashing\": \"all\",\n                            \"sourceMap\": false,\n                            \"namedChunks\": false,\n                            \"extractLicenses\": true,\n                            \"vendorChunk\": false,\n                            \"buildOptimizer\": true,\n                            \"budgets\": [\n                                {\n                                    \"type\": \"initial\",\n                                    \"maximumWarning\": \"5mb\",\n                                    \"maximumError\": \"8mb\"\n                                },\n                                {\n                                    \"type\": \"anyComponentStyle\",\n                                    \"maximumWarning\": \"60kb\",\n                                    \"maximumError\": \"100kb\"\n                                }\n                            ]\n                        }\n                    }\n                },\n                \"serve\": {\n                    \"builder\": \"@angular-devkit/build-angular:dev-server\",\n                    \"options\": {\n                        \"browserTarget\": \"treo:build\"\n                    },\n                    \"configurations\": {\n                        \"production\": {\n                            \"browserTarget\": \"treo:build:production\"\n                        }\n                    }\n                },\n                \"extract-i18n\": {\n                    \"builder\": \"@angular-devkit/build-angular:extract-i18n\",\n                    \"options\": {\n                        \"browserTarget\": \"treo:build\"\n                    }\n                },\n                \"test\": {\n                    \"builder\": \"@angular-devkit/build-angular:karma\",\n                    \"options\": {\n                        \"main\": \"src/test.ts\",\n                        \"polyfills\": \"src/polyfills.ts\",\n                        \"tsConfig\": \"tsconfig.spec.json\",\n                        \"karmaConfig\": \"karma.conf.js\",\n                        \"assets\": [\n                            \"src/favicon-16x16.png\",\n                            \"src/favicon-32x32.png\",\n                            \"src/assets\"\n                        ],\n                        \"stylePreprocessorOptions\": {\n                            \"includePaths\": [\n                                \"src/@treo/styles\"\n                            ]\n                        },\n                        \"styles\": [\n                            \"src/styles/vendors.scss\",\n                            \"src/@treo/styles/main.scss\",\n                            \"src/styles/styles.scss\",\n                            \"src/styles/tailwind.scss\"\n                        ],\n                        \"scripts\": [],\n                        \"fileReplacements\": [{\n                            \"replace\": \"src/environments/environment.ts\",\n                            \"with\": \"src/environments/environment.prod.ts\"\n                        }]\n                    }\n                },\n                \"lint\": {\n                    \"builder\": \"@angular-devkit/build-angular:tslint\",\n                    \"options\": {\n                        \"tsConfig\": [\n                            \"tsconfig.app.json\",\n                            \"tsconfig.spec.json\",\n                            \"e2e/tsconfig.json\"\n                        ],\n                        \"exclude\": [\n                            \"**/node_modules/**\"\n                        ]\n                    }\n                },\n                \"e2e\": {\n                    \"builder\": \"@angular-devkit/build-angular:protractor\",\n                    \"options\": {\n                        \"protractorConfig\": \"e2e/protractor.conf.js\",\n                        \"devServerTarget\": \"treo:serve\"\n                    },\n                    \"configurations\": {\n                        \"production\": {\n                            \"devServerTarget\": \"treo:serve:production\"\n                        }\n                    }\n                }\n            }\n        }\n    },\n    \"defaultProject\": \"treo\"\n}\n"
  },
  {
    "path": "webapp/frontend/browserslist",
    "content": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n# For additional information regarding the format and rule options, please see:\n# https://github.com/browserslist/browserslist#queries\n\n# You can see what browsers were selected by your queries by running:\n#   npx browserslist\n\n> 0.5%\nlast 2 versions\nFirefox ESR\nnot dead\nnot IE 9-11 # For IE 9-11 support, remove 'not'.\n"
  },
  {
    "path": "webapp/frontend/e2e/protractor.conf.js",
    "content": "// @ts-check\n// Protractor configuration file, see link for more information\n// https://github.com/angular/protractor/blob/master/lib/config.ts\n\nconst {SpecReporter} = require('jasmine-spec-reporter');\n\n/**\n * @type { import(\"protractor\").Config }\n */\nexports.config = {\n    allScriptsTimeout: 11000,\n    specs            : [\n        './src/**/*.e2e-spec.ts'\n    ],\n    capabilities     : {\n        browserName: 'chrome'\n    },\n    directConnect    : true,\n    baseUrl          : 'http://localhost:4200/',\n    framework        : 'jasmine',\n    jasmineNodeOpts  : {\n        showColors            : true,\n        defaultTimeoutInterval: 30000,\n        print                 : function ()\n        {\n        }\n    },\n    onPrepare()\n    {\n        require('ts-node').register({\n            project: require('path').join(__dirname, './tsconfig.json')\n        });\n        jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));\n    }\n};\n"
  },
  {
    "path": "webapp/frontend/e2e/src/app.e2e-spec.ts",
    "content": "import { AppPage } from './app.po';\nimport { browser, logging } from 'protractor';\n\ndescribe('workspace-project App', () => {\n    let page: AppPage;\n\n    beforeEach(() => {\n        page = new AppPage();\n    });\n\n    it('should display welcome message', () => {\n        page.navigateTo();\n        expect(page.getTitleText()).toEqual('Welcome to Treo!');\n    });\n\n    afterEach(async () => {\n        // Assert that there are no errors emitted from the browser\n        const logs = await browser.manage().logs().get(logging.Type.BROWSER);\n        expect(logs).not.toContain(jasmine.objectContaining({\n            level: logging.Level.SEVERE\n        } as logging.Entry));\n    });\n});\n"
  },
  {
    "path": "webapp/frontend/e2e/src/app.po.ts",
    "content": "import { browser, by, element } from 'protractor';\n\nexport class AppPage\n{\n    navigateTo(): Promise<unknown>\n    {\n        return browser.get(browser.baseUrl) as Promise<unknown>;\n    }\n\n    getTitleText(): Promise<string>\n    {\n        return element(by.css('app-root h1')).getText() as Promise<string>;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/e2e/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"../out-tsc/e2e\",\n    \"module\": \"commonjs\",\n    \"target\": \"es5\",\n    \"types\": [\n      \"jasmine\",\n      \"jasminewd2\",\n      \"node\"\n    ]\n  }\n}\n"
  },
  {
    "path": "webapp/frontend/git.version.sh",
    "content": "#!/usr/bin/env bash\n\nif [[ -z \"${CI}\" ]]; then\n    echo \"running locally (not in Github Actions). generating version file from git client\"\n    GIT_TAG=`git describe --tags`\n    GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`\n\n    if [[ \"$GIT_BRANCH\" == \"master\" ]]; then\n        VERSION_INFO=\"${GIT_TAG}\"\n    else\n        VERSION_INFO=\"${GIT_BRANCH}#${GIT_TAG}\"\n    fi\nelse\n    echo \"running in Github Actions, generating version file from environmental variables\"\n    # https://docs.github.com/en/actions/learn-github-actions/environment-variables\n    VERSION_INFO=\"${GITHUB_REF_NAME}\"\n\n    if [[ \"$GITHUB_REF_TYPE\" == \"branch\" ]]; then\n            VERSION_INFO=\"${VERSION_INFO}#${GITHUB_SHA::7}\"\n    fi\nfi\n\necho \"writing version file (version: ${VERSION_INFO})\"\ncat <<EOT > src/environments/versions.ts\n// this file is automatically generated by git.version.ts script\nexport const versionInfo = {\n    version: '${VERSION_INFO}',\n};\nEOT\n"
  },
  {
    "path": "webapp/frontend/karma.conf.js",
    "content": "// Karma configuration file, see link for more information\n// https://karma-runner.github.io/1.0/config/configuration-file.html\n\nmodule.exports = function (config)\n{\n    config.set({\n        basePath                : '',\n        frameworks              : ['jasmine', '@angular-devkit/build-angular'],\n        plugins                 : [\n            require('karma-jasmine'),\n            require('karma-chrome-launcher'),\n            require('karma-jasmine-html-reporter'),\n            require('karma-coverage'),\n            require('@angular-devkit/build-angular/plugins/karma')\n        ],\n        client: {\n            clearContext: false // leave Jasmine Spec Runner output visible in browser\n        },\n        coverageIstanbulReporter: {\n            dir: require('path').join(__dirname, './coverage'),\n            reports: ['html', 'lcovonly', 'text-summary'],\n            fixWebpackSourcePaths: true\n        },\n        reporters: ['progress', 'kjhtml'],\n        port: 9876,\n        colors: true,\n        logLevel: config.LOG_INFO,\n        autoWatch: true,\n        browsers: ['Chrome'],\n        singleRun: false,\n        restartOnFileChange: true\n    });\n};\n"
  },
  {
    "path": "webapp/frontend/package.json",
    "content": "{\n    \"name\": \"@treo/starter\",\n    \"version\": \"1.0.1\",\n    \"license\": \"https://themeforest.net/licenses/standard\",\n    \"scripts\": {\n        \"ng\": \"ng\",\n        \"start\": \"ng serve --open\",\n        \"start:mem\": \"node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng serve --open\",\n        \"build\": \"ng build\",\n        \"build:prod\": \"ng build --configuration production\",\n        \"build:prod:mem\": \"node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build --prod\",\n        \"test\": \"ng test\",\n        \"lint\": \"ng lint\",\n        \"e2e\": \"ng e2e\",\n        \"tw\": \"npm run tw:build && npm run tw:export\",\n        \"tw:build\": \"./node_modules/.bin/tailwind build src/tailwind/main.css -c src/tailwind/config.js -o src/styles/tailwind.scss\",\n        \"tw:export\": \"npm run tw:export:js && npm run tw:export:scss\",\n        \"tw:export:js\": \"node src/@treo/tailwind/export.js -c src/tailwind/config.js -o src/@treo/tailwind/exported/variables.ts\",\n        \"tw:export:scss\": \"./node_modules/.bin/tailwind build src/@treo/tailwind/export.css -c src/tailwind/config.js -o src/@treo/tailwind/exported/_variables.scss\"\n    },\n    \"private\": true,\n    \"dependencies\": {\n        \"@angular/animations\": \"v13-lts\",\n        \"@angular/cdk\": \"v13-lts\",\n        \"@angular/common\": \"v13-lts\",\n        \"@angular/compiler\": \"v13-lts\",\n        \"@angular/core\": \"v13-lts\",\n        \"@angular/forms\": \"v13-lts\",\n        \"@angular/material\": \"v13-lts\",\n        \"@angular/material-moment-adapter\": \"v13-lts\",\n        \"@angular/platform-browser\": \"v13-lts\",\n        \"@angular/platform-browser-dynamic\": \"v13-lts\",\n        \"@angular/router\": \"v13-lts\",\n        \"@types/humanize-duration\": \"^3.27.1\",\n        \"crypto-js\": \"^4.1.1\",\n        \"highlight.js\": \"^11.6.0\",\n        \"humanize-duration\": \"^3.27.3\",\n        \"lodash\": \"4.17.23\",\n        \"moment\": \"^2.29.4\",\n        \"ng-apexcharts\": \"^1.7.4\",\n        \"ngx-markdown\": \"^13.1.0\",\n        \"perfect-scrollbar\": \"^1.5.5\",\n        \"quill\": \"^1.3.7\",\n        \"rrule\": \"^2.7.1\",\n        \"rxjs\": \"^7.5.7\",\n        \"tslib\": \"^2.4.1\",\n        \"web-animations-js\": \"^2.3.2\"\n    },\n    \"devDependencies\": {\n        \"@angular-devkit/build-angular\": \"v13-lts\",\n        \"@angular/cli\": \"v13-lts\",\n        \"@angular/compiler-cli\": \"v13-lts\",\n        \"@angular/language-service\": \"v13-lts\",\n        \"@types/crypto-js\": \"^4.1.1\",\n        \"@types/highlight.js\": \"^10.1.0\",\n        \"@types/jasmine\": \"^4.3.0\",\n        \"@types/jasminewd2\": \"^2.0.10\",\n        \"@types/lodash\": \"^4.14.188\",\n        \"@types/node\": \"^18.11.9\",\n        \"codelyzer\": \"^6.0.2\",\n        \"jasmine-core\": \"^4.5.0\",\n        \"jasmine-spec-reporter\": \"^7.0.0\",\n        \"karma\": \"^6.4.1\",\n        \"karma-chrome-launcher\": \"^3.1.1\",\n        \"karma-coverage\": \"^2.2.0\",\n        \"karma-jasmine\": \"^5.1.0\",\n        \"karma-jasmine-html-reporter\": \"^2.0.0\",\n        \"protractor\": \"^7.0.0\",\n        \"tailwindcss\": \"^3.2.3\",\n        \"ts-node\": \"^10.9.1\",\n        \"tslint\": \"^6.1.3\",\n        \"typescript\": \"^4.6.4\"\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/defaults.ts",
    "content": "export class TreoAnimationCurves\n{\n    static STANDARD_CURVE = 'cubic-bezier(0.4, 0.0, 0.2, 1)';\n    static DECELERATION_CURVE = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\n    static ACCELERATION_CURVE = 'cubic-bezier(0.4, 0.0, 1, 1)';\n    static SHARP_CURVE = 'cubic-bezier(0.4, 0.0, 0.6, 1)';\n}\n\nexport class TreoAnimationDurations\n{\n    static COMPLEX = '375ms';\n    static ENTERING = '225ms';\n    static EXITING = '195ms';\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/expand-collapse.ts",
    "content": "import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { TreoAnimationCurves, TreoAnimationDurations } from '@treo/animations/defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Expand / collapse\n// -----------------------------------------------------------------------------------------------------\nconst expandCollapse = trigger('expandCollapse',\n    [\n        state('void, collapsed',\n            style({\n                height: '0'\n            })\n        ),\n\n        state('*, expanded',\n            style('*')\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void <=> false, collapsed <=> false, expanded <=> false', []),\n\n        // Transition\n        transition('void <=> *, collapsed <=> expanded',\n            animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\nexport { expandCollapse };\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/fade.ts",
    "content": "import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { TreoAnimationCurves, TreoAnimationDurations } from '@treo/animations/defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in\n// -----------------------------------------------------------------------------------------------------\nconst fadeIn = trigger('fadeIn',\n    [\n        state('void',\n            style({\n                opacity: 0\n            })\n        ),\n\n        state('*',\n            style({\n                opacity: 1\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in top\n// -----------------------------------------------------------------------------------------------------\nconst fadeInTop = trigger('fadeInTop',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, -100%, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeInBottom = trigger('fadeInBottom',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, 100%, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in left\n// -----------------------------------------------------------------------------------------------------\nconst fadeInLeft = trigger('fadeInLeft',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(-100%, 0, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade in right\n// -----------------------------------------------------------------------------------------------------\nconst fadeInRight = trigger('fadeInRight',\n    [\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(100%, 0, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out\n// -----------------------------------------------------------------------------------------------------\nconst fadeOut = trigger('fadeOut',\n    [\n        state('*',\n            style({\n                opacity: 1\n            })\n        ),\n\n        state('void',\n            style({\n                opacity: 0\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out top\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutTop = trigger('fadeOutTop',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, -100%, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out bottom\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutBottom = trigger('fadeOutBottom',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(0, 100%, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out left\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutLeft = trigger('fadeOutLeft',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(-100%, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Fade out right\n// -----------------------------------------------------------------------------------------------------\nconst fadeOutRight = trigger('fadeOutRight',\n    [\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'translate3d(100%, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\nexport { fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight, fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight };\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/index.ts",
    "content": "export * from './public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/public-api.ts",
    "content": "import { expandCollapse } from './expand-collapse';\nimport { fadeIn, fadeInBottom, fadeInLeft, fadeInRight, fadeInTop, fadeOut, fadeOutBottom, fadeOutLeft, fadeOutRight, fadeOutTop } from './fade';\nimport { shake } from './shake';\nimport { slideInBottom, slideInLeft, slideInRight, slideInTop, slideOutBottom, slideOutLeft, slideOutRight, slideOutTop } from './slide';\nimport { zoomIn, zoomOut } from './zoom';\n\nexport const TreoAnimations = [\n    expandCollapse,\n    fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight,\n    fadeOut, fadeOutTop, fadeOutBottom, fadeOutLeft, fadeOutRight,\n    shake,\n    slideInTop, slideInBottom, slideInLeft, slideInRight,\n    slideOutTop, slideOutBottom, slideOutLeft, slideOutRight,\n    zoomIn, zoomOut\n];\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/shake.ts",
    "content": "import { animate, keyframes, style, transition, trigger } from '@angular/animations';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Shake\n// -----------------------------------------------------------------------------------------------------\nconst shake = trigger('shake',\n    [\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *, * => true',\n            [\n                animate('{{timings}}',\n                    keyframes([\n                        style({\n                            transform: 'translate3d(0, 0, 0)',\n                            offset   : 0\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.1\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.2\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.3\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.4\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.5\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.6\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.7\n                        }),\n                        style({\n                            transform: 'translate3d(10px, 0, 0)',\n                            offset   : 0.8\n                        }),\n                        style({\n                            transform: 'translate3d(-10px, 0, 0)',\n                            offset   : 0.9\n                        }),\n                        style({\n                            transform: 'translate3d(0, 0, 0)',\n                            offset   : 1\n                        })\n                    ])\n                )\n            ],\n            {\n                params: {\n                    timings: '0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955)'\n                }\n            }\n        )\n    ]\n);\n\nexport { shake };\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/slide.ts",
    "content": "import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { TreoAnimationCurves, TreoAnimationDurations } from '@treo/animations/defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in top\n// -----------------------------------------------------------------------------------------------------\nconst slideInTop = trigger('slideInTop',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(0, -100%, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideInBottom = trigger('slideInBottom',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(0, 100%, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in left\n// -----------------------------------------------------------------------------------------------------\nconst slideInLeft = trigger('slideInLeft',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(-100%, 0, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide in right\n// -----------------------------------------------------------------------------------------------------\nconst slideInRight = trigger('slideInRight',\n    [\n        state('void',\n            style({\n                transform: 'translate3d(100%, 0, 0)'\n            })\n        ),\n\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out top\n// -----------------------------------------------------------------------------------------------------\nconst slideOutTop = trigger('slideOutTop',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(0, -100%, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out bottom\n// -----------------------------------------------------------------------------------------------------\nconst slideOutBottom = trigger('slideOutBottom',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(0, 100%, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out left\n// -----------------------------------------------------------------------------------------------------\nconst slideOutLeft = trigger('slideOutLeft',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(-100%, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Slide out right\n// -----------------------------------------------------------------------------------------------------\nconst slideOutRight = trigger('slideOutRight',\n    [\n        state('*',\n            style({\n                transform: 'translate3d(0, 0, 0)'\n            })\n        ),\n\n        state('void',\n            style({\n                transform: 'translate3d(100%, 0, 0)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\nexport { slideInTop, slideInBottom, slideInLeft, slideInRight, slideOutTop, slideOutBottom, slideOutLeft, slideOutRight };\n"
  },
  {
    "path": "webapp/frontend/src/@treo/animations/zoom.ts",
    "content": "import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { TreoAnimationCurves, TreoAnimationDurations } from '@treo/animations/defaults';\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom in\n// -----------------------------------------------------------------------------------------------------\nconst zoomIn = trigger('zoomIn',\n    [\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'scale(0.5)'\n            })\n        ),\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'scale(1)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('void => false', []),\n\n        // Transition\n        transition('void => *', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.ENTERING} ${TreoAnimationCurves.DECELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ Zoom out\n// -----------------------------------------------------------------------------------------------------\nconst zoomOut = trigger('zoomOut',\n    [\n\n        state('*',\n            style({\n                opacity  : 1,\n                transform: 'scale(1)'\n            })\n        ),\n\n        state('void',\n            style({\n                opacity  : 0,\n                transform: 'scale(0.5)'\n            })\n        ),\n\n        // Prevent the transition if the state is false\n        transition('false => void', []),\n\n        // Transition\n        transition('* => void', animate('{{timings}}'),\n            {\n                params: {\n                    timings: `${TreoAnimationDurations.EXITING} ${TreoAnimationCurves.ACCELERATION_CURVE}`\n                }\n            }\n        )\n    ]\n);\n\nexport { zoomIn, zoomOut };\n\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/card/card.component.html",
    "content": "<!-- Flippable card -->\n<ng-container *ngIf=\"flippable\">\n\n    <!-- Front -->\n    <div class=\"treo-card-front\">\n        <ng-content select=\"[treoCardFront]\"></ng-content>\n    </div>\n\n    <!-- Back -->\n    <div class=\"treo-card-back\">\n        <ng-content select=\"[treoCardBack]\"></ng-content>\n    </div>\n\n</ng-container>\n\n<!-- Normal card -->\n<ng-container *ngIf=\"!flippable\">\n\n    <!-- Content -->\n    <ng-content></ng-content>\n\n    <!-- Expansion -->\n    <div class=\"treo-card-expansion\"\n         *ngIf=\"expanded\"\n         [@expandCollapse]>\n        <ng-content select=\"[treoCardExpansion]\"></ng-content>\n    </div>\n\n</ng-container>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/card/card.component.scss",
    "content": "@import 'treo';\n\ntreo-card {\n    position: relative;\n    display: flex;\n    border-radius: 8px;\n    overflow: hidden;\n    @include treo-elevation('md');\n\n    // Flippable\n    &.treo-card-flippable {\n        border-radius: 0;\n        overflow: visible;\n        transform-style: preserve-3d;\n        transition: transform 1s;\n        @include treo-elevation('none');\n\n        &.treo-card-flipped {\n\n            .treo-card-front {\n                visibility: hidden;\n                opacity: 0;\n                transform: rotateY(180deg);\n            }\n\n            .treo-card-back {\n                visibility: visible;\n                opacity: 1;\n                transform: rotateY(360deg);\n            }\n        }\n\n        .treo-card-front,\n        .treo-card-back {\n            display: flex;\n            flex-direction: column;\n            flex: 1 1 auto;\n            z-index: 10;\n            border-radius: 8px;\n            transition: transform 0.5s ease-out 0s, visibility 0s ease-in 0.2s, opacity 0s ease-in 0.2s;\n            backface-visibility: hidden;\n            @include treo-elevation('md');\n        }\n\n        .treo-card-front {\n            position: relative;\n            opacity: 1;\n            visibility: visible;\n            transform: rotateY(0deg);\n            overflow: hidden;\n        }\n\n        .treo-card-back {\n            position: absolute;\n            top: 0;\n            right: 0;\n            bottom: 0;\n            left: 0;\n            opacity: 0;\n            visibility: hidden;\n            transform: rotateY(180deg);\n            overflow: hidden auto;\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n    $background: map-get($theme, background);\n\n    treo-card {\n        background: map-get($background, card);\n\n        &.treo-card-flippable {\n            background: transparent;\n\n            .treo-card-front,\n            .treo-card-back {\n                background: map-get($background, card);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/card/card.component.ts",
    "content": "import { Component, ElementRef, Input, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { TreoAnimations } from '@treo/animations';\n\n@Component({\n    selector     : 'treo-card',\n    templateUrl  : './card.component.html',\n    styleUrls    : ['./card.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    animations   : TreoAnimations,\n    exportAs     : 'treoCard'\n})\nexport class TreoCardComponent\n{\n    expanded: boolean;\n    flipped: boolean;\n\n    // Private\n    private _flippable: boolean;\n\n    /**\n     * Constructor\n     *\n     * @param {Renderer2} _renderer2\n     * @param {ElementRef} _elementRef\n     */\n    constructor(\n        private _renderer2: Renderer2,\n        private _elementRef: ElementRef\n    )\n    {\n        // Set the defaults\n        this.expanded = false;\n        this.flippable = false;\n        this.flipped = false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for flippable\n     *\n     * @param value\n     */\n    @Input()\n    set flippable(value: boolean)\n    {\n        // If the value is the same, return...\n        if ( this._flippable === value )\n        {\n            return;\n        }\n\n        // Update the class name\n        if ( value )\n        {\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-card-flippable');\n        }\n        else\n        {\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-card-flippable');\n        }\n\n        // Store the value\n        this._flippable = value;\n    }\n\n    get flippable(): boolean\n    {\n        return this._flippable;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Expand the details\n     */\n    expand(): void\n    {\n        this.expanded = true;\n    }\n\n    /**\n     * Collapse the details\n     */\n    collapse(): void\n    {\n        this.expanded = false;\n    }\n\n    /**\n     * Toggle the expand/collapse status\n     */\n    toggleExpanded(): void\n    {\n        this.expanded = !this.expanded;\n    }\n\n    /**\n     * Flip the card\n     */\n    flip(): void\n    {\n        // Return if not flippable\n        if ( !this.flippable )\n        {\n            return;\n        }\n\n        this.flipped = !this.flipped;\n\n        // Update the class name\n        if ( this.flipped )\n        {\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-card-flipped');\n        }\n        else\n        {\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-card-flipped');\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/card/card.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreoCardComponent } from '@treo/components/card/card.component';\n\n@NgModule({\n    declarations: [\n        TreoCardComponent\n    ],\n    imports     : [\n        CommonModule\n    ],\n    exports     : [\n        TreoCardComponent\n    ]\n})\nexport class TreoCardModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/card/index.ts",
    "content": "export * from '@treo/components/card/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/card/public-api.ts",
    "content": "export * from '@treo/components/card/card.component';\nexport * from '@treo/components/card/card.module';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/date-range/date-range.component.html",
    "content": "<div class=\"range\"\n     (click)=\"openPickerPanel()\"\n     #pickerPanelOrigin>\n\n    <div class=\"start\">\n        <div class=\"date\">{{range.startDate}}</div>\n        <div class=\"time\"\n             *ngIf=\"range.startTime\">{{range.startTime}}</div>\n    </div>\n\n    <div class=\"separator\">-</div>\n\n    <div class=\"end\">\n        <div class=\"date\">{{range.endDate}}</div>\n        <div class=\"time\"\n             *ngIf=\"range.endTime\">{{range.endTime}}</div>\n    </div>\n\n</div>\n\n<ng-template #pickerPanel>\n\n    <!-- Start -->\n    <div class=\"start\">\n\n        <div class=\"month\">\n            <div class=\"month-header\">\n                <button class=\"previous-button\"\n                        mat-icon-button\n                        (click)=\"prev()\"\n                        tabindex=\"1\">\n                    <mat-icon [svgIcon]=\"'chevron_left'\"></mat-icon>\n                </button>\n                <div class=\"month-label\">{{getMonthLabel(1)}}</div>\n            </div>\n            <mat-month-view [(activeDate)]=\"activeDates.month1\"\n                            [dateFilter]=\"dateFilter()\"\n                            [dateClass]=\"dateClass()\"\n                            (click)=\"$event.stopImmediatePropagation()\"\n                            (selectedChange)=\"onSelectedDateChange($event)\"\n                            #matMonthView1>\n            </mat-month-view>\n        </div>\n\n        <mat-form-field class=\"treo-mat-no-subscript time start-time\"\n                        *ngIf=\"timeRange\">\n            <input matInput\n                   [autocomplete]=\"'off'\"\n                   [formControl]=\"startTimeFormControl\"\n                   (blur)=\"updateStartTime($event)\"\n                   tabindex=\"3\">\n            <mat-label>Start time</mat-label>\n        </mat-form-field>\n\n    </div>\n\n    <!-- End -->\n    <div class=\"end\">\n\n        <div class=\"month\">\n            <div class=\"month-header\">\n                <div class=\"month-label\">{{getMonthLabel(2)}}</div>\n                <button class=\"next-button\"\n                        mat-icon-button\n                        (click)=\"next()\"\n                        tabindex=\"2\">\n                    <mat-icon [svgIcon]=\"'chevron_right'\"></mat-icon>\n                </button>\n            </div>\n            <mat-month-view [(activeDate)]=\"activeDates.month2\"\n                            [dateFilter]=\"dateFilter()\"\n                            [dateClass]=\"dateClass()\"\n                            (click)=\"$event.stopImmediatePropagation()\"\n                            (selectedChange)=\"onSelectedDateChange($event)\"\n                            #matMonthView2>\n            </mat-month-view>\n        </div>\n\n        <mat-form-field class=\"treo-mat-no-subscript time end-time\"\n                        *ngIf=\"timeRange\">\n            <input matInput\n                   [formControl]=\"endTimeFormControl\"\n                   (blur)=\"updateEndTime($event)\"\n                   tabindex=\"4\">\n            <mat-label>End time</mat-label>\n        </mat-form-field>\n\n    </div>\n\n</ng-template>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/date-range/date-range.component.scss",
    "content": "@import 'treo';\n\n// Variables\n$body-cell-padding: 2px;\n\ntreo-date-range {\n    display: flex;\n\n    .range {\n        display: flex;\n        align-items: center;\n        height: 48px;\n        min-height: 48px;\n        max-height: 48px;\n        cursor: pointer;\n\n        .start,\n        .end {\n            display: flex;\n            align-items: center;\n            height: 100%;\n            padding: 0 16px;\n            border-radius: 5px;\n            border-width: 1px;\n            line-height: 1;\n\n            .date {\n                white-space: nowrap;\n\n                + .time {\n                    margin-left: 8px;\n                }\n            }\n\n            .time {\n                white-space: nowrap;\n            }\n        }\n\n        .separator {\n            margin: 0 12px;\n\n            @include treo-breakpoint('xs') {\n                margin: 0 2px;\n            }\n        }\n    }\n}\n\n.treo-date-range-panel {\n    border-radius: 4px;\n    padding: 24px;\n\n    .start,\n    .end {\n        display: flex;\n        flex-direction: column;\n\n        .month {\n            max-width: 196px;\n            min-width: 196px;\n            width: 196px;\n\n            .month-header {\n                position: relative;\n                display: flex;\n                align-items: center;\n                justify-content: center;\n                height: 32px;\n                margin-bottom: 16px;\n\n                .previous-button,\n                .next-button {\n                    position: absolute;\n                    width: 24px !important;\n                    height: 24px !important;\n                    min-height: 24px !important;\n                    max-height: 24px !important;\n                    line-height: 24px !important;\n\n                    .mat-icon {\n                        @include treo-icon-size(20);\n                    }\n                }\n\n                .previous-button {\n                    left: 0;\n                }\n\n                .next-button {\n                    right: 0;\n                }\n\n                .month-label {\n                    font-weight: 500;\n                }\n            }\n\n            mat-month-view {\n                display: flex;\n                min-height: 188px;\n\n                .mat-calendar-table {\n                    width: 100%;\n                    border-collapse: collapse;\n\n                    tbody {\n\n                        tr {\n\n                            &[aria-hidden=true] {\n                                display: none !important;\n                            }\n\n                            &:first-child {\n\n                                td:first-child {\n\n                                    &[aria-hidden=true] {\n                                        visibility: hidden;\n                                        pointer-events: none;\n                                        opacity: 0;\n                                    }\n                                }\n                            }\n\n                            td.mat-calendar-body-cell {\n                                width: 28px !important;\n                                height: 28px !important;\n                                padding: $body-cell-padding !important;\n\n                                &.treo-date-range {\n                                    position: relative;\n\n                                    &:before {\n                                        content: '';\n                                        position: absolute;\n                                        top: $body-cell-padding;\n                                        right: 0;\n                                        bottom: $body-cell-padding;\n                                        left: 0;\n                                    }\n\n                                    &.treo-date-range-start {\n\n                                        &:before {\n                                            left: $body-cell-padding;\n                                            border-radius: 999px 0 0 999px;\n                                        }\n\n                                        &.treo-date-range-end,\n                                        &:last-child {\n\n                                            &:before {\n                                                right: $body-cell-padding;\n                                                border-radius: 999px;\n                                            }\n                                        }\n                                    }\n\n                                    &.treo-date-range-end {\n\n                                        &:before {\n                                            right: $body-cell-padding;\n                                            border-radius: 0 999px 999px 0;\n                                        }\n\n                                        &:first-child {\n\n                                            &:before {\n                                                left: $body-cell-padding;\n                                                border-radius: 999px;\n                                            }\n                                        }\n                                    }\n\n                                    &:first-child {\n\n                                        &:before {\n                                            border-radius: 999px 0 0 999px;\n                                        }\n                                    }\n\n                                    &:last-child {\n\n                                        &:before {\n                                            border-radius: 0 999px 999px 0;\n                                        }\n                                    }\n                                }\n\n                                .mat-calendar-body-cell-content {\n                                    position: relative;\n                                    top: 0;\n                                    left: 0;\n                                    width: 24px;\n                                    height: 24px;\n                                    font-size: 12px;\n                                }\n                            }\n\n                            td.mat-calendar-body-label {\n\n                                + td.mat-calendar-body-cell {\n\n                                    &.treo-date-range {\n\n                                        &:before {\n                                            border-radius: 999px 0 0 999px;\n                                        }\n\n                                        &.treo-date-range-start {\n\n                                            &.treo-date-range-end {\n                                                border-radius: 999px;\n                                            }\n                                        }\n\n                                        &.treo-date-range-end {\n\n                                            &:before {\n                                                left: $body-cell-padding;\n                                                border-radius: 999px;\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        .time {\n            width: 100%;\n            max-width: 196px;\n        }\n    }\n\n    .start {\n        align-items: flex-start;\n        margin-right: 20px;\n\n        .month {\n\n            .month-label {\n                margin-left: 8px;\n            }\n        }\n    }\n\n    .end {\n        align-items: flex-end;\n        margin-left: 20px;\n\n        .month {\n\n            .month-label {\n                margin-right: 8px;\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    treo-date-range {\n\n        .range {\n\n            .start,\n            .end {\n                @if ($is-dark) {\n                    background-color: rgba(0, 0, 0, 0.05);\n                    border-color: treo-color('cool-gray', 500);\n                } @else {\n                    background-color: treo-color('cool-gray', 50);\n                    border-color: treo-color('cool-gray', 300);\n                }\n            }\n        }\n    }\n\n    .treo-date-range-panel {\n        background: map-get($background, card);\n        @include treo-elevation('2xl');\n\n        .start,\n        .end {\n\n            .month {\n\n                .month-header {\n\n                    .month-label {\n                        color: map-get($foreground, secondary-text);\n                    }\n                }\n\n                mat-month-view {\n\n                    .mat-calendar-table {\n\n                        tbody {\n\n                            tr {\n\n                                td,\n                                td:hover {\n\n                                    &.treo-date-range {\n\n                                        &:before {\n                                            background-color: map-get($primary, 200);\n                                        }\n\n                                        .mat-calendar-body-cell-content {\n                                            background-color: transparent;\n                                        }\n                                    }\n\n                                    &.treo-date-range-start,\n                                    &.treo-date-range-end {\n\n                                        .mat-calendar-body-cell-content {\n                                            background-color: map-get($primary, default);\n                                            color: map-get($primary, default-contrast);\n                                        }\n                                    }\n\n                                    .mat-calendar-body-today {\n                                        border: none;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/date-range/date-range.component.ts",
    "content": "import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnDestroy, OnInit, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { MatCalendarCellCssClasses, MatMonthView } from '@angular/material/datepicker';\nimport { Subject } from 'rxjs';\nimport * as moment from 'moment';\nimport { Moment } from 'moment';\n\n@Component({\n    selector     : 'treo-date-range',\n    templateUrl  : './date-range.component.html',\n    styleUrls    : ['./date-range.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    exportAs     : 'treoDateRange',\n    providers    : [\n        {\n            provide    : NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TreoDateRangeComponent),\n            multi      : true\n        }\n    ]\n})\nexport class TreoDateRangeComponent implements ControlValueAccessor, OnInit, OnDestroy\n{\n    // Range changed\n    @Output()\n    readonly rangeChanged: EventEmitter<{ start: string, end: string }>;\n\n    activeDates: { month1: Moment, month2: Moment };\n    setWhichDate: 'start' | 'end';\n    startTimeFormControl: FormControl;\n    endTimeFormControl: FormControl;\n\n    // Private\n    @HostBinding('class.treo-date-range')\n    private _defaultClassNames;\n\n    @ViewChild('matMonthView1')\n    private _matMonthView1: MatMonthView<any>;\n\n    @ViewChild('matMonthView2')\n    private _matMonthView2: MatMonthView<any>;\n\n    @ViewChild('pickerPanelOrigin', {read: ElementRef})\n    private _pickerPanelOrigin: ElementRef;\n\n    @ViewChild('pickerPanel')\n    private _pickerPanel: TemplateRef<any>;\n\n    private _dateFormat: string;\n    private _onChange: (value: any) => void;\n    private _onTouched: (value: any) => void;\n    private _programmaticChange: boolean;\n    private _range: { start: Moment, end: Moment };\n    private _timeFormat: string;\n    private _timeRange: boolean;\n    private readonly _timeRegExp: RegExp;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     * @param {ElementRef} _elementRef\n     * @param {Overlay} _overlay\n     * @param {Renderer2} _renderer2\n     * @param {ViewContainerRef} _viewContainerRef\n     */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _elementRef: ElementRef,\n        private _overlay: Overlay,\n        private _renderer2: Renderer2,\n        private _viewContainerRef: ViewContainerRef\n    )\n    {\n        // Set the private defaults\n        this._defaultClassNames = true;\n        this._onChange = () => {\n        };\n        this._onTouched = () => {\n        };\n        this._range = {\n            start: null,\n            end  : null\n        };\n        this._timeRegExp = new RegExp('^(0[0-9]|1[0-9]|2[0-4]|[0-9]):([0-5][0-9])(A|(?:AM)|P|(?:PM))?$', 'i');\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.activeDates = {\n            month1: null,\n            month2: null\n        };\n        this.dateFormat = 'DD/MM/YYYY';\n        this.rangeChanged = new EventEmitter();\n        this.setWhichDate = 'start';\n        this.timeFormat = '12';\n\n        // Initialize the component\n        this._init();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for dateFormat input\n     *\n     * @param value\n     */\n    @Input()\n    set dateFormat(value: string)\n    {\n        // Return, if the values are the same\n        if ( this._dateFormat === value )\n        {\n            return;\n        }\n\n        // Store the value\n        this._dateFormat = value;\n    }\n\n    get dateFormat(): string\n    {\n        return this._dateFormat;\n    }\n\n    /**\n     * Setter and getter for timeFormat input\n     *\n     * @param value\n     */\n    @Input()\n    set timeFormat(value: string)\n    {\n        // Return, if the values are the same\n        if ( this._timeFormat === value )\n        {\n            return;\n        }\n\n        // Set format based on the time format input\n        this._timeFormat = value === '12' ? 'hh:mmA' : 'HH:mm';\n    }\n\n    get timeFormat(): string\n    {\n        return this._timeFormat;\n    }\n\n    /**\n     * Setter and getter for timeRange input\n     *\n     * @param value\n     */\n    @Input()\n    set timeRange(value: boolean)\n    {\n        // Return, if the values are the same\n        if ( this._timeRange === value )\n        {\n            return;\n        }\n\n        // Store the value\n        this._timeRange = value;\n\n        // If the time range turned off...\n        if ( !value )\n        {\n            this.range = {\n                start: this._range.start.clone().startOf('day'),\n                end  : this._range.end.clone().endOf('day')\n            };\n        }\n    }\n\n    get timeRange(): boolean\n    {\n        return this._timeRange;\n    }\n\n    /**\n     * Setter and getter for range input\n     *\n     * @param value\n     */\n    @Input()\n    set range(value)\n    {\n        if ( !value )\n        {\n            return;\n        }\n\n        // Check if the value is an object and has 'start' and 'end' values\n        if ( !value.start || !value.end )\n        {\n            console.error('Range input must have \"start\" and \"end\" properties!');\n\n            return;\n        }\n\n        // Check if we are setting an individual date or both of them\n        const whichDate = value.whichDate || null;\n\n        // Get the start and end dates as moment\n        const start = moment(value.start);\n        const end = moment(value.end);\n\n        // If we are only setting the start date...\n        if ( whichDate === 'start' )\n        {\n            // Set the start date\n            this._range.start = start.clone();\n\n            // If the selected start date is after the end date...\n            if ( this._range.start.isAfter(this._range.end) )\n            {\n                // Set the end date to the start date but keep the end date's time\n                const endDate = start.clone().hours(this._range.end.hours()).minutes(this._range.end.minutes()).seconds(this._range.end.seconds());\n\n                // Test this new end date to see if it's ahead of the start date\n                if ( this._range.start.isBefore(endDate) )\n                {\n                    // If it's, set the new end date\n                    this._range.end = endDate;\n                }\n                else\n                {\n                    // Otherwise, set the end date same as the start date\n                    this._range.end = start.clone();\n                }\n            }\n        }\n\n        // If we are only setting the end date...\n        if ( whichDate === 'end' )\n        {\n            // Set the end date\n            this._range.end = end.clone();\n\n            // If the selected end date is before the start date...\n            if ( this._range.start.isAfter(this._range.end) )\n            {\n                // Set the start date to the end date but keep the start date's time\n                const startDate = end.clone().hours(this._range.start.hours()).minutes(this._range.start.minutes()).seconds(this._range.start.seconds());\n\n                // Test this new end date to see if it's ahead of the start date\n                if ( this._range.end.isAfter(startDate) )\n                {\n                    // If it's, set the new start date\n                    this._range.start = startDate;\n                }\n                else\n                {\n                    // Otherwise, set the start date same as the end date\n                    this._range.start = end.clone();\n                }\n            }\n        }\n\n        // If we are setting both dates...\n        if ( !whichDate )\n        {\n            // Set the start date\n            this._range.start = start.clone();\n\n            // If the start date is before the end date, set the end date as normal.\n            // If the start date is after the end date, set the end date same as the start date.\n            this._range.end = start.isBefore(end) ? end.clone() : start.clone();\n        }\n\n        // Prepare another range object that holds the ISO formatted range dates\n        const range = {\n            start: this._range.start.clone().toISOString(),\n            end  : this._range.end.clone().toISOString()\n        };\n\n        // Emit the range changed event with the range\n        this.rangeChanged.emit(range);\n\n        // Update the model with the range if the change was not a programmatic change\n        // Because programmatic changes trigger writeValue which triggers onChange and onTouched\n        // internally causing them to trigger twice which breaks the form's pristine and touched\n        // statuses.\n        if ( !this._programmaticChange )\n        {\n            this._onTouched(range);\n            this._onChange(range);\n        }\n\n        // Set the active dates\n        this.activeDates = {\n            month1: this._range.start.clone(),\n            month2: this._range.start.clone().add(1, 'month')\n        };\n\n        // Set the time form controls\n        this.startTimeFormControl.setValue(this._range.start.clone().format(this._timeFormat).toString());\n        this.endTimeFormControl.setValue(this._range.end.clone().format(this._timeFormat).toString());\n\n        // Run ngAfterContentInit on month views to trigger\n        // re-render on month views if they are available\n        if ( this._matMonthView1 && this._matMonthView2 )\n        {\n            this._matMonthView1.ngAfterContentInit();\n            this._matMonthView2.ngAfterContentInit();\n        }\n\n        // Reset the programmatic change status\n        this._programmaticChange = false;\n    }\n\n    get range(): any\n    {\n        // Clone the range start and end\n        const start = this._range.start.clone();\n        const end = this._range.end.clone();\n\n        // Build and return the range object\n        return {\n            startDate: start.clone().format(this.dateFormat),\n            startTime: this.timeRange ? start.clone().format(this.timeFormat) : null,\n            endDate  : end.clone().format(this.dateFormat),\n            endTime  : this.timeRange ? end.clone().format(this.timeFormat) : null\n        };\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Control Value Accessor\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Update the form model on change\n     *\n     * @param fn\n     */\n    registerOnChange(fn: any): void\n    {\n        this._onChange = fn;\n    }\n\n    /**\n     * Update the form model on blur\n     *\n     * @param fn\n     */\n    registerOnTouched(fn: any): void\n    {\n        this._onTouched = fn;\n    }\n\n    /**\n     * Write to view from model when the form model changes programmatically\n     *\n     * @param range\n     */\n    writeValue(range: { start: string, end: string }): void\n    {\n        // Set this change as a programmatic one\n        this._programmaticChange = true;\n\n        // Set the range\n        this.range = range;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n\n        // @ TODO: Workaround until \"angular/issues/20007\" resolved\n        this.writeValue = () => {\n        };\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Initialize\n     *\n     * @private\n     */\n    private _init(): void\n    {\n        // Start and end time form controls\n        this.startTimeFormControl = new FormControl('', [Validators.pattern(this._timeRegExp)]);\n        this.endTimeFormControl = new FormControl('', [Validators.pattern(this._timeRegExp)]);\n\n        // Set the default range\n        this._programmaticChange = true;\n        this.range = {\n            start: moment().startOf('day').toISOString(),\n            end  : moment().add(1, 'day').endOf('day').toISOString()\n        };\n\n        // Set the default time range\n        this._programmaticChange = true;\n        this.timeRange = true;\n    }\n\n    /**\n     * Parse the time from the inputs\n     *\n     * @param value\n     * @private\n     */\n    private _parseTime(value: string): Moment\n    {\n        // Parse the time using the time regexp\n        const timeArr = value.split(this._timeRegExp).filter((part) => part !== '');\n\n        // Get the meridiem\n        const meridiem = timeArr[2] || null;\n\n        // If meridiem exists...\n        if ( meridiem )\n        {\n            // Create a moment using 12-hours format and return it\n            return moment(value, 'hh:mmA').seconds(0);\n        }\n\n        // If meridiem doesn't exist, create a moment using 24-hours format and return in\n        return moment(value, 'HH:mm').seconds(0);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Open the picker panel\n     */\n    openPickerPanel(): void\n    {\n        // Create the overlay\n        const overlayRef = this._overlay.create({\n            panelClass      : 'treo-date-range-panel',\n            backdropClass   : '',\n            hasBackdrop     : true,\n            scrollStrategy  : this._overlay.scrollStrategies.reposition(),\n            positionStrategy: this._overlay.position()\n                                  .flexibleConnectedTo(this._pickerPanelOrigin)\n                                  .withPositions([\n                                      {\n                                          originX : 'start',\n                                          originY : 'bottom',\n                                          overlayX: 'start',\n                                          overlayY: 'top',\n                                          offsetY : 8\n                                      },\n                                      {\n                                          originX : 'start',\n                                          originY : 'top',\n                                          overlayX: 'start',\n                                          overlayY: 'bottom',\n                                          offsetY : -8\n                                      }\n                                  ])\n        });\n\n        // Create a portal from the template\n        const templatePortal = new TemplatePortal(this._pickerPanel, this._viewContainerRef);\n\n        // On backdrop click\n        overlayRef.backdropClick().subscribe(() => {\n\n            // If template portal exists and attached...\n            if ( templatePortal && templatePortal.isAttached )\n            {\n                // Detach it\n                templatePortal.detach();\n            }\n\n            // If overlay exists and attached...\n            if ( overlayRef && overlayRef.hasAttached() )\n            {\n                // Detach it\n                overlayRef.detach();\n                overlayRef.dispose();\n            }\n        });\n\n        // Attach the portal to the overlay\n        overlayRef.attach(templatePortal);\n    }\n\n    /**\n     * Get month label\n     *\n     * @param month\n     */\n    getMonthLabel(month: number): string\n    {\n        if ( month === 1 )\n        {\n            return this.activeDates.month1.clone().format('MMMM Y');\n        }\n\n        return this.activeDates.month2.clone().format('MMMM Y');\n    }\n\n    /**\n     * Date class function to add/remove class names to calendar days\n     */\n    dateClass(): any\n    {\n        return (date: Moment): MatCalendarCellCssClasses => {\n\n            // If the date is both start and end date...\n            if ( date.isSame(this._range.start, 'day') && date.isSame(this._range.end, 'day') )\n            {\n                return ['treo-date-range', 'treo-date-range-start', 'treo-date-range-end'];\n            }\n\n            // If the date is the start date...\n            if ( date.isSame(this._range.start, 'day') )\n            {\n                return ['treo-date-range', 'treo-date-range-start'];\n            }\n\n            // If the date is the end date...\n            if ( date.isSame(this._range.end, 'day') )\n            {\n                return ['treo-date-range', 'treo-date-range-end'];\n            }\n\n            // If the date is in between start and end dates...\n            if ( date.isBetween(this._range.start, this._range.end, 'day') )\n            {\n                return ['treo-date-range', 'treo-date-range-mid'];\n            }\n\n            return undefined;\n        };\n    }\n\n    /**\n     * Date filter to enable/disable calendar days\n     */\n    dateFilter(): any\n    {\n        return (date: Moment): boolean => {\n\n            // If we are selecting the end date, disable all the dates that comes before the start date\n            return !(this.setWhichDate === 'end' && date.isBefore(this._range.start, 'day'));\n        };\n    }\n\n    /**\n     * On selected date change\n     *\n     * @param date\n     */\n    onSelectedDateChange(date: Moment): void\n    {\n        // Create a new range object\n        const newRange = {\n            start    : this._range.start.clone().toISOString(),\n            end      : this._range.end.clone().toISOString(),\n            whichDate: null\n        };\n\n        // Replace either the start or the end date with the new one\n        // depending on which date we are setting\n        if ( this.setWhichDate === 'start' )\n        {\n            newRange.start = moment(newRange.start).year(date.year()).month(date.month()).date(date.date()).toISOString();\n        }\n        else\n        {\n            newRange.end = moment(newRange.end).year(date.year()).month(date.month()).date(date.date()).toISOString();\n        }\n\n        // Append the which date to the new range object\n        newRange.whichDate = this.setWhichDate;\n\n        // Switch which date to set on the next run\n        this.setWhichDate = this.setWhichDate === 'start' ? 'end' : 'start';\n\n        // Set the range\n        this.range = newRange;\n    }\n\n    /**\n     * Go to previous month on both views\n     */\n    prev(): void\n    {\n        this.activeDates.month1 = moment(this.activeDates.month1).subtract(1, 'month');\n        this.activeDates.month2 = moment(this.activeDates.month2).subtract(1, 'month');\n    }\n\n    /**\n     * Go to next month on both views\n     */\n    next(): void\n    {\n        this.activeDates.month1 = moment(this.activeDates.month1).add(1, 'month');\n        this.activeDates.month2 = moment(this.activeDates.month2).add(1, 'month');\n    }\n\n    /**\n     * Update the start time\n     *\n     * @param event\n     */\n    updateStartTime(event): void\n    {\n        // Parse the time\n        const parsedTime = this._parseTime(event.target.value);\n\n        // Go back to the previous value if the form control is not valid\n        if ( this.startTimeFormControl.invalid )\n        {\n            // Override the time\n            const time = this._range.start.clone().format(this._timeFormat);\n\n            // Set the time\n            this.startTimeFormControl.setValue(time);\n\n            // Do not update the range\n            return;\n        }\n\n        // Append the new time to the start date\n        const startDate = this._range.start.clone().hours(parsedTime.hours()).minutes(parsedTime.minutes());\n\n        // If the new start date is after the current end date,\n        // use the end date's time and set the start date again\n        if ( startDate.isAfter(this._range.end) )\n        {\n            const endDateHours = this._range.end.hours();\n            const endDateMinutes = this._range.end.minutes();\n\n            // Set the start date\n            startDate.hours(endDateHours).minutes(endDateMinutes);\n        }\n\n        // If everything is okay, set the new date\n        this.range = {\n            start    : startDate.toISOString(),\n            end      : this._range.end.clone().toISOString(),\n            whichDate: 'start'\n        };\n    }\n\n    /**\n     * Update the end time\n     *\n     * @param event\n     */\n    updateEndTime(event): void\n    {\n        // Parse the time\n        const parsedTime = this._parseTime(event.target.value);\n\n        // Go back to the previous value if the form control is not valid\n        if ( this.endTimeFormControl.invalid )\n        {\n            // Override the time\n            const time = this._range.end.clone().format(this._timeFormat);\n\n            // Set the time\n            this.endTimeFormControl.setValue(time);\n\n            // Do not update the range\n            return;\n        }\n\n        // Append the new time to the end date\n        const endDate = this._range.end.clone().hours(parsedTime.hours()).minutes(parsedTime.minutes());\n\n        // If the new end date is before the current start date,\n        // use the start date's time and set the end date again\n        if ( endDate.isBefore(this._range.start) )\n        {\n            const startDateHours = this._range.start.hours();\n            const startDateMinutes = this._range.start.minutes();\n\n            // Set the end date\n            endDate.hours(startDateHours).minutes(startDateMinutes);\n        }\n\n        // If everything is okay, set the new date\n        this.range = {\n            start    : this._range.start.clone().toISOString(),\n            end      : endDate.toISOString(),\n            whichDate: 'end'\n        };\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/date-range/date-range.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\nimport { TreoDateRangeComponent } from '@treo/components/date-range/date-range.component';\n\n@NgModule({\n    declarations: [\n        TreoDateRangeComponent\n    ],\n    imports     : [\n        CommonModule,\n        ReactiveFormsModule,\n        MatButtonModule,\n        MatDatepickerModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatIconModule,\n        MatMomentDateModule\n    ],\n    exports     : [\n        TreoDateRangeComponent\n    ]\n})\nexport class TreoDateRangeModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/date-range/index.ts",
    "content": "export * from '@treo/components/date-range/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/date-range/public-api.ts",
    "content": "export * from '@treo/components/date-range/date-range.component';\nexport * from '@treo/components/date-range/date-range.module';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/drawer.component.html",
    "content": "<div class=\"treo-drawer-content\">\n    <ng-content></ng-content>\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/drawer.component.scss",
    "content": "@import 'treo';\n\n$treo-drawer-width: 320;\n\ntreo-drawer {\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    flex: 1 1 auto;\n    width: #{$treo-drawer-width}px;\n    min-width: #{$treo-drawer-width}px;\n    max-width: #{$treo-drawer-width}px;\n    z-index: 300;\n    box-shadow: 0 2px 8px 0 rgba(0, 0, 0, .35);\n\n    // Animations\n    &.treo-drawer-animations-enabled {\n        transition-duration: 400ms;\n        transition-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1);\n        transition-property: visibility, margin-left, margin-right, transform, width, max-width, min-width;\n\n        .treo-drawer-content {\n            transition-duration: 400ms;\n            transition-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1);\n            transition-property: width, max-width, min-width;\n        }\n    }\n\n    // Over mode\n    &.treo-drawer-mode-over {\n        position: absolute;\n        top: 0;\n        bottom: 0;\n\n        // Fixed mode\n        &.treo-drawer-fixed {\n            position: fixed;\n        }\n    }\n\n    // Left position\n    &.treo-drawer-position-left {\n\n        // Side mode\n        &.treo-drawer-mode-side {\n            margin-left: #{$treo-drawer-width}px;\n\n            &.treo-drawer-opened {\n                margin-left: 0;\n            }\n        }\n\n        // Over mode\n        &.treo-drawer-mode-over {\n            left: 0;\n            transform: translate3d(-100%, 0, 0);\n\n            &.treo-drawer-opened {\n                transform: translate3d(0, 0, 0);\n            }\n        }\n\n        // Content\n        .treo-drawer-content {\n            left: 0;\n        }\n    }\n\n    // Right position\n    &.treo-drawer-position-right {\n\n        // Side mode\n        &.treo-drawer-mode-side {\n            margin-right: -#{$treo-drawer-width}px;\n\n            &.treo-drawer-opened {\n                margin-right: 0;\n            }\n        }\n\n        // Over mode\n        &.treo-drawer-mode-over {\n            right: 0;\n            transform: translate3d(100%, 0, 0);\n\n            &.treo-drawer-opened {\n                transform: translate3d(0, 0, 0);\n            }\n        }\n\n        // Content\n        .treo-drawer-content {\n            right: 0;\n        }\n    }\n\n    // Content\n    .treo-drawer-content {\n        position: absolute;\n        display: flex;\n        flex: 1 1 auto;\n        top: 0;\n        bottom: 0;\n        width: 100%;\n        height: 100%;\n        overflow: hidden;\n    }\n}\n\n// Overlay\n.treo-drawer-overlay {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    z-index: 299;\n    opacity: 0;\n    background-color: rgba(0, 0, 0, 0.6);\n\n    // Fixed mode\n    &.treo-drawer-overlay-fixed {\n        position: fixed;\n    }\n\n    // Transparent overlay\n    &.treo-drawer-overlay-transparent {\n        background-color: transparent;\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n\n    treo-drawer {\n        background: map-get($background, card);\n\n        .treo-drawer-content {\n            background: map-get($background, card);\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/drawer.component.ts",
    "content": "import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\nimport { TreoDrawerMode, TreoDrawerPosition } from '@treo/components/drawer/drawer.types';\nimport { TreoDrawerService } from '@treo/components/drawer/drawer.service';\n\n@Component({\n    selector     : 'treo-drawer',\n    templateUrl  : './drawer.component.html',\n    styleUrls    : ['./drawer.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    exportAs     : 'treoDrawer'\n})\nexport class TreoDrawerComponent implements OnInit, OnDestroy\n{\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _fixed: boolean;\n    private _mode: TreoDrawerMode;\n    private _opened: boolean | '';\n    private _overlay: HTMLElement | null;\n    private _player: AnimationPlayer;\n    private _position: TreoDrawerPosition;\n    private _transparentOverlay: boolean | '';\n\n    // On fixed changed\n    @Output()\n    readonly fixedChanged: EventEmitter<boolean>;\n\n    // On mode changed\n    @Output()\n    readonly modeChanged: EventEmitter<TreoDrawerMode>;\n\n    // On opened changed\n    @Output()\n    readonly openedChanged: EventEmitter<boolean | ''>;\n\n    // On position changed\n    @Output()\n    readonly positionChanged: EventEmitter<TreoDrawerPosition>;\n\n    @HostBinding('class.treo-drawer-animations-enabled')\n    private _animationsEnabled: boolean;\n\n    /**\n     * Constructor\n     *\n     * @param {AnimationBuilder} _animationBuilder\n     * @param {TreoDrawerService} _treoDrawerService\n     * @param {ElementRef} _elementRef\n     * @param {Renderer2} _renderer2\n     */\n    constructor(\n        private _animationBuilder: AnimationBuilder,\n        private _treoDrawerService: TreoDrawerService,\n        private _elementRef: ElementRef,\n        private _renderer2: Renderer2\n    )\n    {\n        // Set the private defaults\n        this._animationsEnabled = false;\n        this._overlay = null;\n\n        // Set the defaults\n        this.fixedChanged = new EventEmitter<boolean>();\n        this.modeChanged = new EventEmitter<TreoDrawerMode>();\n        this.openedChanged = new EventEmitter<boolean | ''>();\n        this.positionChanged = new EventEmitter<TreoDrawerPosition>();\n\n        this.fixed = false;\n        this.mode = 'side';\n        this.opened = false;\n        this.position = 'left';\n        this.transparentOverlay = false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter & getter for fixed\n     *\n     * @param value\n     */\n    @Input()\n    set fixed(value: boolean)\n    {\n        // If the value is the same, return...\n        if ( this._fixed === value )\n        {\n            return;\n        }\n\n        // Store the fixed value\n        this._fixed = value;\n\n        // Update the class\n        if ( this.fixed )\n        {\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-drawer-fixed');\n        }\n        else\n        {\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-drawer-fixed');\n        }\n\n        // Execute the observable\n        this.fixedChanged.next(this.fixed);\n    }\n\n    get fixed(): boolean\n    {\n        return this._fixed;\n    }\n\n    /**\n     * Setter & getter for mode\n     *\n     * @param value\n     */\n    @Input()\n    set mode(value: TreoDrawerMode)\n    {\n        // If the value is the same, return...\n        if ( this._mode === value )\n        {\n            return;\n        }\n\n        // Disable the animations\n        this._disableAnimations();\n\n        // If the mode changes: 'over -> side'\n        if ( this.mode === 'over' && value === 'side' )\n        {\n            // Hide the overlay\n            this._hideOverlay();\n        }\n\n        // If the mode changes: 'side -> over'\n        if ( this.mode === 'side' && value === 'over' )\n        {\n            // If the drawer is opened\n            if ( this.opened )\n            {\n                // Show the overlay\n                this._showOverlay();\n            }\n        }\n\n        let modeClassName;\n\n        // Remove the previous mode class\n        modeClassName = 'treo-drawer-mode-' + this.mode;\n        this._renderer2.removeClass(this._elementRef.nativeElement, modeClassName);\n\n        // Store the mode\n        this._mode = value;\n\n        // Add the new mode class\n        modeClassName = 'treo-drawer-mode-' + this.mode;\n        this._renderer2.addClass(this._elementRef.nativeElement, modeClassName);\n\n        // Execute the observable\n        this.modeChanged.next(this.mode);\n\n        // Enable the animations after a delay\n        // The delay must be bigger than the current transition-duration\n        // to make sure nothing will be animated while the mode changing\n        setTimeout(() => {\n            this._enableAnimations();\n        }, 500);\n    }\n\n    get mode(): TreoDrawerMode\n    {\n        return this._mode;\n    }\n\n    /**\n     * Setter & getter for opened\n     *\n     * @param value\n     */\n    @Input()\n    set opened(value: boolean | '')\n    {\n        // If the value is the same, return...\n        if ( this._opened === value )\n        {\n            return;\n        }\n\n        // If the provided value is an empty string,\n        // take that as a 'true'\n        if ( value === '' )\n        {\n            value = true;\n        }\n\n        // Set the opened value\n        this._opened = value;\n\n        // If the drawer opened, and the mode\n        // is 'over', show the overlay\n        if ( this.mode === 'over' )\n        {\n            if ( this._opened )\n            {\n                this._showOverlay();\n            }\n            else\n            {\n                this._hideOverlay();\n            }\n        }\n\n        // Update opened classes\n        if ( this.opened )\n        {\n            this._renderer2.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-drawer-opened');\n        }\n        else\n        {\n            this._renderer2.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-drawer-opened');\n        }\n\n        // Execute the observable\n        this.openedChanged.next(this.opened);\n    }\n\n    get opened(): boolean | ''\n    {\n        return this._opened;\n    }\n\n    /**\n     * Setter & getter for position\n     *\n     * @param value\n     */\n    @Input()\n    set position(value: TreoDrawerPosition)\n    {\n        // If the value is the same, return...\n        if ( this._position === value )\n        {\n            return;\n        }\n\n        let positionClassName;\n\n        // Remove the previous position class\n        positionClassName = 'treo-drawer-position-' + this.position;\n        this._renderer2.removeClass(this._elementRef.nativeElement, positionClassName);\n\n        // Store the position\n        this._position = value;\n\n        // Add the new position class\n        positionClassName = 'treo-drawer-position-' + this.position;\n        this._renderer2.addClass(this._elementRef.nativeElement, positionClassName);\n\n        // Execute the observable\n        this.positionChanged.next(this.position);\n    }\n\n    get position(): TreoDrawerPosition\n    {\n        return this._position;\n    }\n\n    /**\n     * Setter & getter for transparent overlay\n     *\n     * @param value\n     */\n    @Input()\n    set transparentOverlay(value: boolean | '')\n    {\n        // If the value is the same, return...\n        if ( this._opened === value )\n        {\n            return;\n        }\n\n        // If the provided value is an empty string,\n        // take that as a 'true' and set the opened value\n        if ( value === '' )\n        {\n            // Set the opened value\n            this._transparentOverlay = true;\n        }\n        else\n        {\n            // Set the transparent overlay value\n            this._transparentOverlay = value;\n        }\n    }\n\n    get transparentOverlay(): boolean | ''\n    {\n        return this._transparentOverlay;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Register the drawer\n        this._treoDrawerService.registerComponent(this.name, this);\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Deregister the drawer from the registry\n        this._treoDrawerService.deregisterComponent(this.name);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Enable the animations\n     *\n     * @private\n     */\n    private _enableAnimations(): void\n    {\n        // If the animations are already enabled, return...\n        if ( this._animationsEnabled )\n        {\n            return;\n        }\n\n        // Enable the animations\n        this._animationsEnabled = true;\n    }\n\n    /**\n     * Disable the animations\n     *\n     * @private\n     */\n    private _disableAnimations(): void\n    {\n        // If the animations are already disabled, return...\n        if ( !this._animationsEnabled )\n        {\n            return;\n        }\n\n        // Disable the animations\n        this._animationsEnabled = false;\n    }\n\n    /**\n     * Show the backdrop\n     *\n     * @private\n     */\n    private _showOverlay(): void\n    {\n        // Create the backdrop element\n        this._overlay = this._renderer2.createElement('div');\n\n        // Add a class to the backdrop element\n        this._overlay.classList.add('treo-drawer-overlay');\n\n        // Add a class depending on the fixed option\n        if ( this.fixed )\n        {\n            this._overlay.classList.add('treo-drawer-overlay-fixed');\n        }\n\n        // Add a class depending on the transparentOverlay option\n        if ( this.transparentOverlay )\n        {\n            this._overlay.classList.add('treo-drawer-overlay-transparent');\n        }\n\n        // Append the backdrop to the parent of the drawer\n        this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\n\n        // Create the enter animation and attach it to the player\n        this._player =\n            this._animationBuilder\n                .build([\n                    animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({opacity: 1}))\n                ]).create(this._overlay);\n\n        // Play the animation\n        this._player.play();\n\n        // Add an event listener to the overlay\n        this._overlay.addEventListener('click', () => {\n            this.close();\n        });\n    }\n\n    /**\n     * Hide the backdrop\n     *\n     * @private\n     */\n    private _hideOverlay(): void\n    {\n        if ( !this._overlay )\n        {\n            return;\n        }\n\n        // Create the leave animation and attach it to the player\n        this._player =\n            this._animationBuilder\n                .build([\n                    animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({opacity: 0}))\n                ]).create(this._overlay);\n\n        // Play the animation\n        this._player.play();\n\n        // Once the animation is done...\n        this._player.onDone(() => {\n\n            // If the backdrop still exists...\n            if ( this._overlay )\n            {\n                // Remove the backdrop\n                this._overlay.parentNode.removeChild(this._overlay);\n                this._overlay = null;\n            }\n        });\n    }\n\n    /**\n     * On mouseenter\n     *\n     * @private\n     */\n    @HostListener('mouseenter')\n    private _onMouseenter(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Add a class\n        this._renderer2.addClass(this._elementRef.nativeElement, 'treo-drawer-hover');\n    }\n\n    /**\n     * On mouseleave\n     *\n     * @private\n     */\n    @HostListener('mouseleave')\n    private _onMouseleave(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Remove the class\n        this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-drawer-hover');\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Open the drawer\n     */\n    open(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Open\n        this.opened = true;\n    }\n\n    /**\n     * Close the drawer\n     */\n    close(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Close\n        this.opened = false;\n    }\n\n    /**\n     * Toggle the opened status\n     */\n    toggle(): void\n    {\n        // Toggle\n        if ( this.opened )\n        {\n            this.close();\n        }\n        else\n        {\n            this.open();\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/drawer.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreoDrawerComponent } from '@treo/components/drawer/drawer.component';\n\n@NgModule({\n    declarations: [\n        TreoDrawerComponent\n    ],\n    imports     : [\n        CommonModule\n    ],\n    exports     : [\n        TreoDrawerComponent\n    ]\n})\nexport class TreoDrawerModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/drawer.service.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { TreoDrawerComponent } from '@treo/components/drawer/drawer.component';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreoDrawerService\n{\n    // Private\n    private _componentRegistry: Map<string, TreoDrawerComponent>;\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n        // Set the defaults\n        this._componentRegistry = new Map<string, TreoDrawerComponent>();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Register drawer component\n     *\n     * @param name\n     * @param component\n     */\n    registerComponent(name: string, component: TreoDrawerComponent): void\n    {\n        this._componentRegistry.set(name, component);\n    }\n\n    /**\n     * Deregister drawer component\n     *\n     * @param name\n     */\n    deregisterComponent(name: string): void\n    {\n        this._componentRegistry.delete(name);\n    }\n\n    /**\n     * Get drawer component from the registry\n     *\n     * @param name\n     */\n    getComponent(name: string): TreoDrawerComponent\n    {\n        return this._componentRegistry.get(name);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/drawer.types.ts",
    "content": "export type TreoDrawerMode = 'over' | 'side';\nexport type TreoDrawerPosition = 'left' | 'right';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/index.ts",
    "content": "export * from '@treo/components/drawer/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/drawer/public-api.ts",
    "content": "export * from '@treo/components/drawer/drawer.component';\nexport * from '@treo/components/drawer/drawer.module';\nexport * from '@treo/components/drawer/drawer.service';\nexport * from '@treo/components/drawer/drawer.types';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/highlight/highlight.component.html",
    "content": "<ng-content></ng-content>\n\n<!-- @formatter:off -->\n<ng-template let-highlightedCode=\"highlightedCode\" let-lang=\"lang\">\n<div class=\"treo-highlight treo-highlight-code-container\">\n<pre [ngClass]=\"'language-' + lang\"><code [ngClass]=\"'language-' + lang\" [innerHTML]=\"highlightedCode\"></code></pre>\n</div>\n</ng-template>\n<!-- @formatter:on -->\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/highlight/highlight.component.scss",
    "content": "textarea[treo-highlight] {\n    display: none;\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/highlight/highlight.component.ts",
    "content": "import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EmbeddedViewRef, Input, Renderer2, SecurityContext, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TreoHighlightService } from '@treo/components/highlight/highlight.service';\n\n@Component({\n    selector       : 'textarea[treo-highlight]',\n    templateUrl    : './highlight.component.html',\n    styleUrls      : ['./highlight.component.scss'],\n    encapsulation  : ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs       : 'treoHighlight'\n})\nexport class TreoHighlightComponent implements AfterViewInit\n{\n    highlightedCode: string;\n    viewRef: EmbeddedViewRef<any>;\n\n    @ViewChild(TemplateRef)\n    templateRef: TemplateRef<any>;\n\n    // Private\n    private _code: string;\n    private _lang: string;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoHighlightService} _treoHighlightService\n     * @param {DomSanitizer} _domSanitizer\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     * @param {ElementRef} _elementRef\n     * @param {Renderer2} _renderer2\n     * @param {ViewContainerRef} _viewContainerRef\n     */\n    constructor(\n        private _treoHighlightService: TreoHighlightService,\n        private _domSanitizer: DomSanitizer,\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _elementRef: ElementRef,\n        private _renderer2: Renderer2,\n        private _viewContainerRef: ViewContainerRef\n    )\n    {\n        // Set the private defaults\n        this._code = '';\n        this._lang = '';\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for the code\n     */\n    @Input()\n    set code(value: string)\n    {\n        // If the value is the same, return...\n        if ( this._code === value )\n        {\n            return;\n        }\n\n        // Set the code\n        this._code = value;\n\n        // Highlight and insert the code if the\n        // viewContainerRef is available. This will\n        // ensure the highlightAndInsert method\n        // won't run before the AfterContentInit hook.\n        if ( this._viewContainerRef.length )\n        {\n            this._highlightAndInsert();\n        }\n    }\n\n    get code(): string\n    {\n        return this._code;\n    }\n\n    /**\n     * Setter and getter for the language\n     */\n    @Input()\n    set lang(value: string)\n    {\n        // If the value is the same, return...\n        if ( this._lang === value )\n        {\n            return;\n        }\n\n        // Set the language\n        this._lang = value;\n\n        // Highlight and insert the code if the\n        // viewContainerRef is available. This will\n        // ensure the highlightAndInsert method\n        // won't run before the AfterContentInit hook.\n        if ( this._viewContainerRef.length )\n        {\n            this._highlightAndInsert();\n        }\n    }\n\n    get lang(): string\n    {\n        return this._lang;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * After view init\n     */\n    ngAfterViewInit(): void\n    {\n        // Return, if there is no language set\n        if ( !this.lang )\n        {\n            return;\n        }\n\n        // If there is no code input, get the code from\n        // the textarea\n        if ( !this.code )\n        {\n            // Get the code\n            this.code = this._elementRef.nativeElement.value;\n        }\n\n        // Highlight and insert\n        this._highlightAndInsert();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Highlight and insert the highlighted code\n     *\n     * @private\n     */\n    private _highlightAndInsert(): void\n    {\n        // Return, if the code or language is not defined\n        if ( !this.code || !this.lang )\n        {\n            return;\n        }\n\n        // Destroy the component if there is already one\n        if ( this.viewRef )\n        {\n            this.viewRef.destroy();\n        }\n\n        // Highlight and sanitize the code just in case\n        this.highlightedCode = this._domSanitizer.sanitize(SecurityContext.HTML, this._treoHighlightService.highlight(this.code, this.lang));\n\n        // Render and insert the template\n        this.viewRef = this._viewContainerRef.createEmbeddedView(this.templateRef, {\n            highlightedCode: this.highlightedCode,\n            lang           : this.lang\n        });\n\n        // Detect the changes\n        this.viewRef.detectChanges();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/highlight/highlight.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreoHighlightComponent } from '@treo/components/highlight/highlight.component';\n\n@NgModule({\n    declarations   : [\n        TreoHighlightComponent\n    ],\n    imports        : [\n        CommonModule\n    ],\n    exports        : [\n        TreoHighlightComponent\n    ],\n    entryComponents: [\n        TreoHighlightComponent\n    ]\n})\nexport class TreoHighlightModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/highlight/highlight.service.ts",
    "content": "import { Injectable } from '@angular/core';\nimport * as hljs from 'highlight.js';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreoHighlightService\n{\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Remove the empty lines around the code block\n     * and re-align the indentation based on the first\n     * non-whitespace indented character\n     *\n     * @param code\n     * @private\n     */\n    private _format(code: string): string\n    {\n        let firstCharIndentation: number | null = null;\n\n        // Split the code into lines and store the lines\n        const lines = code.split('\\n');\n\n        // Trim the empty lines around the code block\n        while ( lines.length && lines[0].trim() === '' )\n        {\n            lines.shift();\n        }\n\n        while ( lines.length && lines[lines.length - 1].trim() === '' )\n        {\n            lines.pop();\n        }\n\n        // Iterate through the lines to figure out the first\n        // non-whitespace character indentation\n        lines.forEach((line) => {\n\n            // Skip the line if its length is zero\n            if ( line.length === 0 )\n            {\n                return;\n            }\n\n            // We look at all the lines to find the smallest indentation\n            // of the first non-whitespace char since the first ever line\n            // is not necessarily has to be the line with the smallest\n            // non-whitespace char indentation\n            firstCharIndentation = firstCharIndentation === null ?\n                line.search(/\\S|$/) :\n                Math.min(line.search(/\\S|$/), firstCharIndentation);\n        });\n\n        // Iterate through the lines one more time, remove the extra\n        // indentation, join them together and return it\n        return lines.map((line) => {\n            return line.substring(firstCharIndentation);\n        }).join('\\n');\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Highlight\n     */\n    highlight(code: string, language: string): string\n    {\n        // Format the code\n        code = this._format(code);\n\n        // Highlight and return the code\n        return hljs.highlight(language, code).value;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/highlight/index.ts",
    "content": "export * from '@treo/components/highlight/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/highlight/public-api.ts",
    "content": "export * from '@treo/components/highlight/highlight.component';\nexport * from '@treo/components/highlight/highlight.module';\nexport * from '@treo/components/highlight/highlight.service';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/index.ts",
    "content": "export * from '@treo/components/message/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/message.component.html",
    "content": "<div class=\"treo-message-container\"\n     *ngIf=\"!dismissed\"\n     [@fadeIn]=\"dismissed === null ? false : !dismissed\"\n     [@fadeOut]=\"dismissed === null ? false : !dismissed\">\n\n    <!-- Icon -->\n    <div class=\"treo-message-icon\"\n         *ngIf=\"showIcon\">\n\n        <!-- Custom icon -->\n        <div class=\"treo-message-custom-icon\">\n            <ng-content select=\"[treoMessageIcon]\"></ng-content>\n        </div>\n\n        <!-- Default icons -->\n        <div class=\"treo-message-default-icon\">\n\n            <mat-icon *ngIf=\"type === 'primary'\"\n                      [svgIcon]=\"'check_circle'\"></mat-icon>\n\n            <mat-icon *ngIf=\"type === 'accent'\"\n                      [svgIcon]=\"'check_circle'\"></mat-icon>\n\n            <mat-icon *ngIf=\"type === 'warn'\"\n                      [svgIcon]=\"'warning'\"></mat-icon>\n\n            <mat-icon *ngIf=\"type === 'basic'\"\n                      [svgIcon]=\"'check_circle'\"></mat-icon>\n\n            <mat-icon *ngIf=\"type === 'info'\"\n                      [svgIcon]=\"'info'\"></mat-icon>\n\n            <mat-icon *ngIf=\"type === 'success'\"\n                      [svgIcon]=\"'check_circle'\"></mat-icon>\n\n            <mat-icon *ngIf=\"type === 'warning'\"\n                      [svgIcon]=\"'warning'\"></mat-icon>\n\n            <mat-icon *ngIf=\"type === 'error'\"\n                      [svgIcon]=\"'error'\"></mat-icon>\n\n        </div>\n\n    </div>\n\n    <!-- Content -->\n    <div class=\"treo-message-content\">\n\n        <div class=\"treo-message-title\">\n            <p>\n                <ng-content select=\"[treoMessageTitle]\"></ng-content>\n            </p>\n        </div>\n\n        <div class=\"treo-message-message\">\n            <p>\n                <ng-content></ng-content>\n            </p>\n        </div>\n\n    </div>\n\n    <!-- Dismiss button -->\n    <button class=\"treo-message-dismiss-button\"\n            mat-icon-button\n            (click)=\"dismiss()\">\n        <mat-icon [svgIcon]=\"'close'\"></mat-icon>\n    </button>\n\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/message.component.scss",
    "content": "@import 'treo';\n\ntreo-message {\n    display: block;\n\n    // Show icon\n    &.treo-message-show-icon {\n\n        .treo-message-container {\n            padding-left: 56px;\n        }\n    }\n\n    // Dismissible\n    &.treo-message-dismissible {\n\n        .treo-message-container {\n            padding-right: 56px;\n        }\n    }\n\n    // Common\n    .treo-message-container {\n        position: relative;\n        display: flex;\n        min-height: 64px;\n        padding: 16px 24px;\n        font-size: 14px;\n        line-height: 1;\n\n        // Icon\n        .treo-message-icon {\n            position: absolute;\n            top: 20px;\n            left: 17px;\n\n            .treo-message-custom-icon,\n            .treo-message-default-icon {\n                display: none;\n                align-items: center;\n                justify-content: center;\n                border-radius: 50%;\n\n                &:not(:empty) {\n                    display: flex;\n                }\n            }\n\n            .treo-message-custom-icon {\n                display: none;\n\n                &:not(:empty) {\n                    display: flex;\n\n                    + .treo-message-default-icon {\n                        display: none;\n                    }\n                }\n            }\n        }\n\n        // Content\n        .treo-message-content {\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            line-height: 1;\n\n            // Title\n            .treo-message-title {\n                display: none;\n                font-size: 15px;\n                font-weight: 600;\n                line-height: 1.2;\n\n                &:not(:empty) {\n                    display: block;\n                }\n\n                p {\n                    line-height: 1.625;\n                }\n            }\n\n            // Message\n            .treo-message-message {\n                display: none;\n\n                &:not(:empty) {\n                    display: block;\n                }\n\n                p {\n                    line-height: 1.625;\n                }\n            }\n        }\n\n        // Dismiss button\n        .treo-message-dismiss-button {\n            position: absolute;\n            top: 12px;\n            right: 12px;\n            width: 32px !important;\n            min-width: 32px !important;\n            height: 32px !important;\n            min-height: 32px !important;\n            line-height: 32px !important;\n            margin-left: auto;\n\n            .mat-icon {\n                @include treo-icon-size(20);\n            }\n        }\n    }\n\n    // Dismissible\n    &:not(.treo-message-dismissible) {\n\n        .treo-message-container {\n\n            .treo-message-dismiss-button {\n                display: none !important;\n            }\n        }\n    }\n\n    // Border\n    &.treo-message-appearance-border {\n\n        .treo-message-container {\n            overflow: hidden;\n            border-left-width: 4px;\n            border-radius: 4px;\n            @include treo-elevation('xl');\n        }\n    }\n\n    // Fill\n    &.treo-message-appearance-fill {\n\n        .treo-message-container {\n            border-radius: 4px;\n        }\n    }\n\n    // Outline\n    &.treo-message-appearance-outline {\n\n        .treo-message-container {\n            overflow: hidden;\n            border-radius: 4px;\n\n            &:before {\n                content: '';\n                position: absolute;\n                top: 0;\n                left: 0;\n                bottom: 0;\n                width: 6px;\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $accent: map-get($theme, accent);\n    $warn: map-get($theme, warn);\n    $is-dark: map-get($theme, is-dark);\n\n    treo-message {\n\n        .treo-message-container {\n\n            // Icon\n            .mat-icon {\n                color: currentColor;\n            }\n        }\n\n        // Border\n        &.treo-message-appearance-border {\n\n            .treo-message-container {\n                background: map-get($background, card);\n\n                .treo-message-message {\n                    color: map-get($foreground, secondary-text);\n                }\n            }\n\n            // Primary\n            &.treo-message-type-primary {\n\n                .treo-message-container {\n                    border-left-color: map-get($primary, default);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: map-get($primary, default);\n                    }\n                }\n            }\n\n            // Accent\n            &.treo-message-type-accent {\n\n                .treo-message-container {\n                    border-left-color: map-get($accent, default);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: map-get($accent, default);\n                    }\n                }\n            }\n\n            // Warn\n            &.treo-message-type-warn {\n\n                .treo-message-container {\n                    border-left-color: map-get($warn, default);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: map-get($warn, default);\n                    }\n                }\n            }\n\n            // Basic\n            &.treo-message-type-basic {\n\n                .treo-message-container {\n                    border-left-color: treo-color('cool-gray', 600);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: treo-color('cool-gray', 600);\n                    }\n                }\n            }\n\n            // Info\n            &.treo-message-type-info {\n\n                .treo-message-container {\n                    border-left-color: treo-color('blue', 600);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: treo-color('blue', 700);\n                    }\n                }\n            }\n\n            // Success\n            &.treo-message-type-success {\n\n                .treo-message-container {\n                    border-left-color: treo-color('green', 500);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: treo-color('green', 500);\n                    }\n                }\n            }\n\n            // Warning\n            &.treo-message-type-warning {\n\n                .treo-message-container {\n                    border-left-color: treo-color('yellow', 400);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: treo-color('yellow', 400);\n                    }\n                }\n            }\n\n            // Error\n            &.treo-message-type-error {\n\n                .treo-message-container {\n                    border-left-color: treo-color('red', 600);\n\n                    .treo-message-title,\n                    .treo-message-icon {\n                        color: treo-color('red', 700);\n                    }\n                }\n            }\n        }\n\n        // Fill\n        &.treo-message-appearance-fill {\n\n            // Primary\n            &.treo-message-type-primary {\n\n                .treo-message-container {\n                    background: map-get($primary, default);\n                    color: map-get($primary, default-contrast);\n\n                    code {\n                        background: map-get($primary, 600);\n                        color: map-get($primary, '600-contrast');\n                    }\n                }\n            }\n\n            // Accent\n            &.treo-message-type-accent {\n\n                .treo-message-container {\n                    background: map-get($accent, default);\n                    color: map-get($accent, default-contrast);\n\n                    code {\n                        background: map-get($accent, 600);\n                        color: map-get($accent, '600-contrast');\n                    }\n                }\n            }\n\n            // Warn\n            &.treo-message-type-warn {\n\n                .treo-message-container {\n                    background: map-get($warn, default);\n                    color: map-get($warn, default-contrast);\n\n                    code {\n                        background: map-get($warn, 800);\n                        color: map-get($warn, '800-contrast');\n                    }\n                }\n            }\n\n            // Basic\n            &.treo-message-type-basic {\n\n                .treo-message-container {\n                    background: treo-color('cool-gray', 500);\n                    color: treo-color('cool-gray', 50);\n\n                    code {\n                        background: treo-color('cool-gray', 600);\n                        color: treo-color('cool-gray', 50);\n                    }\n                }\n            }\n\n            // Info\n            &.treo-message-type-info {\n\n                .treo-message-container {\n                    background: treo-color('blue', 600);\n                    color: treo-color('blue', 50);\n\n                    code {\n                        background: treo-color('blue', 800);\n                        color: treo-color('blue', 50);\n                    }\n                }\n            }\n\n            // Success\n            &.treo-message-type-success {\n\n                .treo-message-container {\n                    background: treo-color('green', 500);\n                    color: treo-color('green', 50);\n\n                    code {\n                        background: treo-color('green', 600);\n                        color: treo-color('green', 50);\n                    }\n                }\n            }\n\n            // Warning\n            &.treo-message-type-warning {\n\n                .treo-message-container {\n                    background: treo-color('yellow', 400);\n                    color: treo-color('yellow', 50);\n\n                    code {\n                        background: treo-color('yellow', 600);\n                        color: treo-color('yellow', 50);\n                    }\n                }\n            }\n\n            // Error\n            &.treo-message-type-error {\n\n                .treo-message-container {\n                    background: treo-color('red', 600);\n                    color: treo-color('red', 50);\n\n                    code {\n                        background: treo-color('red', 800);\n                        color: treo-color('red', 50);\n                    }\n                }\n            }\n        }\n\n        // Outline\n        &.treo-message-appearance-outline {\n\n            // Primary\n            &.treo-message-type-primary {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: map-get($primary, 300);\n                        box-shadow: inset 0 0 0 1px map-get($primary, 300);\n                    } @else {\n                        background: map-get($primary, 50);\n                        color: map-get($primary, 800);\n                        box-shadow: inset 0 0 0 1px map-get($primary, 400);\n                    }\n\n                    code {\n                        background: map-get($primary, 200);\n                        color: map-get($primary, 800);\n                    }\n                }\n            }\n\n            // Accent\n            &.treo-message-type-accent {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: map-get($accent, 300);\n                        box-shadow: inset 0 0 0 1px map-get($accent, 300);\n                    } @else {\n                        background: map-get($accent, 50);\n                        color: map-get($accent, 800);\n                        box-shadow: inset 0 0 0 1px map-get($accent, 400);\n                    }\n\n                    code {\n                        background: map-get($accent, 200);\n                        color: map-get($accent, 800);\n                    }\n                }\n            }\n\n            // Warn\n            &.treo-message-type-warn {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: map-get($warn, 300);\n                        box-shadow: inset 0 0 0 1px map-get($warn, 300);\n                    } @else {\n                        background: map-get($warn, 50);\n                        color: map-get($warn, 800);\n                        box-shadow: inset 0 0 0 1px map-get($warn, 400);\n                    }\n\n                    code {\n                        background: map-get($warn, 200);\n                        color: map-get($warn, 800);\n                    }\n                }\n            }\n\n            // Basic\n            &.treo-message-type-basic {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: treo-color('cool-gray', 300);\n                        box-shadow: inset 0 0 0 1px treo-color('cool-gray', 300);\n                    } @else {\n                        background: treo-color('cool-gray', 50);\n                        color: treo-color('cool-gray', 800);\n                        box-shadow: inset 0 0 0 1px treo-color('cool-gray', 400);\n                    }\n\n                    code {\n                        background: treo-color('cool-gray', 200);\n                        color: treo-color('cool-gray', 800);\n                    }\n                }\n            }\n\n            // Info\n            &.treo-message-type-info {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: treo-color('blue', 300);\n                        box-shadow: inset 0 0 0 1px treo-color('blue', 300);\n                    } @else {\n                        background: treo-color('blue', 50);\n                        color: treo-color('blue', 800);\n                        box-shadow: inset 0 0 0 1px treo-color('blue', 400);\n                    }\n\n                    code {\n                        background: treo-color('blue', 200);\n                        color: treo-color('blue', 800);\n                    }\n                }\n            }\n\n            // Success\n            &.treo-message-type-success {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: treo-color('green', 300);\n                        box-shadow: inset 0 0 0 1px treo-color('green', 300);\n                    } @else {\n                        background: treo-color('green', 50);\n                        color: treo-color('green', 800);\n                        box-shadow: inset 0 0 0 1px treo-color('green', 400);\n                    }\n\n                    code {\n                        background: treo-color('green', 200);\n                        color: treo-color('green', 800);\n                    }\n                }\n            }\n\n            // Warning\n            &.treo-message-type-warning {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: treo-color('yellow', 300);\n                        box-shadow: inset 0 0 0 1px treo-color('yellow', 300);\n                    } @else {\n                        background: treo-color('yellow', 50);\n                        color: treo-color('yellow', 800);\n                        box-shadow: inset 0 0 0 1px treo-color('yellow', 400);\n                    }\n\n                    code {\n                        background: treo-color('yellow', 200);\n                        color: treo-color('yellow', 800);\n                    }\n                }\n            }\n\n            // Error\n            &.treo-message-type-error {\n\n                .treo-message-container {\n                    @if ($is-dark) {\n                        background: transparent;\n                        color: treo-color('red', 500);\n                        box-shadow: inset 0 0 0 1px treo-color('red', 500);\n                    } @else {\n                        background: treo-color('red', 50);\n                        color: treo-color('red', 800);\n                        box-shadow: inset 0 0 0 1px treo-color('red', 400);\n                    }\n\n                    code {\n                        background: treo-color('red', 200);\n                        color: treo-color('red', 800);\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/message.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { TreoAnimations } from '@treo/animations';\nimport { TreoMessageAppearance, TreoMessageType } from '@treo/components/message/message.types';\nimport { TreoMessageService } from '@treo/components/message/message.service';\n\n@Component({\n    selector       : 'treo-message',\n    templateUrl    : './message.component.html',\n    styleUrls      : ['./message.component.scss'],\n    encapsulation  : ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations     : TreoAnimations,\n    exportAs       : 'treoMessage'\n})\nexport class TreoMessageComponent implements OnInit, OnDestroy\n{\n    // Name\n    @Input()\n    name: string;\n\n    @Output()\n    readonly afterDismissed: EventEmitter<boolean>;\n\n    @Output()\n    readonly afterShown: EventEmitter<boolean>;\n\n    // Private\n    private _appearance: TreoMessageAppearance;\n    private _dismissed: null | boolean;\n    private _showIcon: boolean;\n    private _type: TreoMessageType;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoMessageService} _treoMessageService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     * @param {ElementRef} _elementRef\n     * @param {Renderer2} _renderer2\n     */\n    constructor(\n        private _treoMessageService: TreoMessageService,\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _elementRef: ElementRef,\n        private _renderer2: Renderer2\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.afterDismissed = new EventEmitter<boolean>();\n        this.afterShown = new EventEmitter<boolean>();\n        this.appearance = 'fill';\n        this.dismissed = null;\n        this.showIcon = true;\n        this.type = 'primary';\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for appearance\n     *\n     * @param value\n     */\n    @Input()\n    set appearance(value: TreoMessageAppearance)\n    {\n        // If the value is the same, return...\n        if ( this._appearance === value )\n        {\n            return;\n        }\n\n        // Update the class name\n        this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-message-appearance-' + this.appearance);\n        this._renderer2.addClass(this._elementRef.nativeElement, 'treo-message-appearance-' + value);\n\n        // Store the value\n        this._appearance = value;\n    }\n\n    get appearance(): TreoMessageAppearance\n    {\n        return this._appearance;\n    }\n\n    /**\n     * Setter and getter for dismissed\n     *\n     * @param value\n     */\n    @Input()\n    set dismissed(value: null | boolean)\n    {\n        // If the value is the same, return...\n        if ( this._dismissed === value )\n        {\n            return;\n        }\n\n        // Update the class name\n        if ( value === null )\n        {\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-message-dismissible');\n        }\n        else if ( value === false )\n        {\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-message-dismissible');\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-message-dismissed');\n        }\n        else\n        {\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-message-dismissible');\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-message-dismissed');\n        }\n\n        // Store the value\n        this._dismissed = value;\n    }\n\n    get dismissed(): null | boolean\n    {\n        return this._dismissed;\n    }\n\n    /**\n     * Setter and getter for show icon\n     *\n     * @param value\n     */\n    @Input()\n    set showIcon(value: boolean)\n    {\n        // If the value is the same, return...\n        if ( this._showIcon === value )\n        {\n            return;\n        }\n\n        // Update the class name\n        if ( value )\n        {\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-message-show-icon');\n        }\n        else\n        {\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-message-show-icon');\n        }\n\n        // Store the value\n        this._showIcon = value;\n    }\n\n    get showIcon(): boolean\n    {\n        return this._showIcon;\n    }\n\n    /**\n     * Setter and getter for type\n     *\n     * @param value\n     */\n    @Input()\n    set type(value: TreoMessageType)\n    {\n        // If the value is the same, return...\n        if ( this._type === value )\n        {\n            return;\n        }\n\n        // Update the class name\n        this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-message-type-' + this.type);\n        this._renderer2.addClass(this._elementRef.nativeElement, 'treo-message-type-' + value);\n\n        // Store the value\n        this._type = value;\n    }\n\n    get type(): TreoMessageType\n    {\n        return this._type;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to the service calls if only\n        // a name provided for the message box\n        if ( this.name )\n        {\n            // Subscribe to the dismiss calls\n            this._treoMessageService.onDismiss\n                .pipe(\n                    filter((name) => this.name === name),\n                    takeUntil(this._unsubscribeAll)\n                )\n                .subscribe(() => {\n\n                    // Dismiss the message box\n                    this.dismiss();\n                });\n\n            // Subscribe to the show calls\n            this._treoMessageService.onShow\n                .pipe(\n                    filter((name) => this.name === name),\n                    takeUntil(this._unsubscribeAll)\n                )\n                .subscribe(() => {\n\n                    // Show the message box\n                    this.show();\n                });\n        }\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Dismiss the message box\n     */\n    dismiss(): void\n    {\n        // Return, if already dismissed\n        if ( this.dismissed )\n        {\n            return;\n        }\n\n        // Dismiss\n        this.dismissed = true;\n\n        // Execute the observable\n        this.afterDismissed.next(true);\n\n        // Notify the change detector\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /**\n     * Show the dismissed message box\n     */\n    show(): void\n    {\n        // Return, if not dismissed\n        if ( !this.dismissed )\n        {\n            return;\n        }\n\n        // Show\n        this.dismissed = false;\n\n        // Execute the observable\n        this.afterShown.next(true);\n\n        // Notify the change detector\n        this._changeDetectorRef.markForCheck();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/message.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TreoMessageComponent } from '@treo/components/message/message.component';\n\n@NgModule({\n    declarations: [\n        TreoMessageComponent\n    ],\n    imports     : [\n        CommonModule,\n        MatButtonModule,\n        MatIconModule\n    ],\n    exports     : [\n        TreoMessageComponent\n    ]\n})\nexport class TreoMessageModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/message.service.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreoMessageService\n{\n    // Private\n    private _onDismiss: BehaviorSubject<any>;\n    private _onShow: BehaviorSubject<any>;\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n        // Set the private defaults\n        this._onDismiss = new BehaviorSubject(null);\n        this._onShow = new BehaviorSubject(null);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for onDismiss\n     */\n    get onDismiss(): Observable<any>\n    {\n        return this._onDismiss.asObservable();\n    }\n\n    /**\n     * Getter for onShow\n     */\n    get onShow(): Observable<any>\n    {\n        return this._onShow.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Dismiss the message box\n     *\n     * @param name\n     */\n    dismiss(name: string): void\n    {\n        // Return, if the name is not provided\n        if ( !name )\n        {\n            return;\n        }\n\n        // Execute the observable\n        this._onDismiss.next(name);\n    }\n\n    /**\n     * Show the dismissed message box\n     *\n     * @param name\n     */\n    show(name: string): void\n    {\n        // Return, if the name is not provided\n        if ( !name )\n        {\n            return;\n        }\n\n        // Execute the observable\n        this._onShow.next(name);\n    }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/message.types.ts",
    "content": "export type TreoMessageAppearance = 'border' | 'fill' | 'outline';\nexport type TreoMessageType = 'primary' | 'accent' | 'warn' | 'basic' | 'info' | 'success' | 'warning' | 'error';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/message/public-api.ts",
    "content": "export * from '@treo/components/message/message.component';\nexport * from '@treo/components/message/message.module';\nexport * from '@treo/components/message/message.service';\nexport * from '@treo/components/message/message.types';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/basic/basic.component.html",
    "content": "<!-- Item wrapper -->\n<div class=\"treo-horizontal-navigation-item-wrapper\"\n     [class.treo-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n     [ngClass]=\"item.classes\">\n\n    <!-- Item with an internal link -->\n    <div class=\"treo-horizontal-navigation-item\"\n         *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\"\n         [routerLink]=\"[item.link]\"\n         [routerLinkActive]=\"'treo-horizontal-navigation-item-active'\"\n         [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n    <!-- Item with an external link -->\n    <a class=\"treo-horizontal-navigation-item\"\n       *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\"\n       [href]=\"item.link\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </a>\n\n    <!-- Item with a function -->\n    <div class=\"treo-horizontal-navigation-item\"\n         *ngIf=\"!item.link && item.function && !item.disabled\"\n         (click)=\"item.function(item)\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n    <!-- Item with an internal link and function -->\n    <div class=\"treo-horizontal-navigation-item\"\n         *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\"\n         [routerLink]=\"[item.link]\"\n         [routerLinkActive]=\"'treo-horizontal-navigation-item-active'\"\n         [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\"\n         (click)=\"item.function(item)\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n    <!-- Item with an external link and function -->\n    <a class=\"treo-horizontal-navigation-item\"\n       *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\"\n       [href]=\"item.link\"\n       (click)=\"item.function(item)\"\n       mat-menu-item>\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </a>\n\n    <!-- Item with a no link and no function -->\n    <div class=\"treo-horizontal-navigation-item\"\n         *ngIf=\"!item.link && !item.function && !item.disabled\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n    <!-- Item is disabled -->\n    <div class=\"treo-horizontal-navigation-item treo-horizontal-navigation-item-disabled\"\n         *ngIf=\"item.disabled\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n    <!-- Icon -->\n    <mat-icon class=\"treo-horizontal-navigation-item-icon\"\n              [ngClass]=\"item.iconClasses\"\n              *ngIf=\"item.icon\"\n              [svgIcon]=\"item.icon\"></mat-icon>\n\n    <!-- Title & Subtitle -->\n    <div class=\"treo-horizontal-navigation-item-title-wrapper\">\n        <div class=\"treo-horizontal-navigation-item-title\">{{item.title}}</div>\n        <div class=\"treo-horizontal-navigation-item-subtitle text-hint\"\n             *ngIf=\"item.subtitle\">\n            {{item.subtitle}}\n        </div>\n    </div>\n\n    <!-- Badge -->\n    <div class=\"treo-horizontal-navigation-item-badge\"\n         *ngIf=\"item.badge\">\n        <div class=\"treo-horizontal-navigation-item-badge-content\"\n             [ngClass]=\"[(item.badge.style != undefined ? 'treo-horizontal-navigation-item-badge-style-' + item.badge.style : ''),\n                             (item.badge.background != undefined && !item.badge.background.startsWith('#') ? item.badge.background : ''),\n                             (item.badge.color != undefined && !item.badge.color.startsWith('#') ? item.badge.color : '')]\"\n             [ngStyle]=\"{'background-color': item.badge.background, 'color': item.badge.color}\">\n            {{item.badge.title}}\n        </div>\n    </div>\n\n</ng-template>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/basic/basic.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoHorizontalNavigationComponent } from '@treo/components/navigation/horizontal/horizontal.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-horizontal-navigation-basic-item',\n    templateUrl    : './basic.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy\n{\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoHorizontalNavigationComponent: TreoHorizontalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoHorizontalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/branch/branch.component.html",
    "content": "<div *ngIf=\"!child\"\n     [ngClass]=\"{'treo-horizontal-navigation-menu-active': trigger.menuOpen}\"\n     [matMenuTriggerFor]=\"matMenu\"\n     (onMenuOpen)=\"triggerChangeDetection()\"\n     (onMenuClose)=\"triggerChangeDetection()\"\n     #trigger=\"matMenuTrigger\">\n    <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n</div>\n\n<mat-menu class=\"treo-horizontal-navigation-menu-panel\"\n          [overlapTrigger]=\"false\"\n          #matMenu=\"matMenu\">\n\n    <ng-container *ngFor=\"let item of item.children\">\n\n        <!-- Skip the hidden items -->\n        <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n            <!-- Basic -->\n            <div class=\"treo-horizontal-navigation-menu-item\"\n                 *ngIf=\"item.type === 'basic'\"\n                 mat-menu-item>\n                <treo-horizontal-navigation-basic-item [item]=\"item\"\n                                                      [name]=\"name\"></treo-horizontal-navigation-basic-item>\n            </div>\n\n            <!-- Branch: aside, collapsable, group -->\n            <div class=\"treo-horizontal-navigation-menu-item\"\n                 *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\"\n                 [matMenuTriggerFor]=\"branch.matMenu\"\n                 mat-menu-item>\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n                <treo-horizontal-navigation-branch-item [child]=\"true\"\n                                                       [item]=\"item\"\n                                                       [name]=\"name\"\n                                                       #branch></treo-horizontal-navigation-branch-item>\n            </div>\n\n            <!-- Divider -->\n            <div class=\"treo-horizontal-navigation-menu-item\"\n                 *ngIf=\"item.type === 'divider'\"\n                 mat-menu-item>\n                <treo-horizontal-navigation-divider-item [item]=\"item\"\n                                                        [name]=\"name\"></treo-horizontal-navigation-divider-item>\n            </div>\n\n        </ng-container>\n\n    </ng-container>\n\n</mat-menu>\n\n<!-- Item template -->\n<ng-template let-item\n             #itemTemplate>\n\n    <div class=\"treo-horizontal-navigation-item-wrapper\"\n         [class.treo-horizontal-navigation-item-has-subtitle]=\"!!item.subtitle\"\n         [ngClass]=\"item.classes\">\n\n        <div class=\"treo-horizontal-navigation-item\"\n             [ngClass]=\"{'treo-horizontal-navigation-item-disabled': item.disabled}\">\n\n            <!-- Icon -->\n            <mat-icon class=\"treo-horizontal-navigation-item-icon\"\n                      [ngClass]=\"item.iconClasses\"\n                      *ngIf=\"item.icon\"\n                      [svgIcon]=\"item.icon\"></mat-icon>\n\n            <!-- Title & Subtitle -->\n            <div class=\"treo-horizontal-navigation-item-title-wrapper\">\n                <div class=\"treo-horizontal-navigation-item-title\">{{item.title}}</div>\n                <div class=\"treo-horizontal-navigation-item-subtitle text-hint\"\n                     *ngIf=\"item.subtitle\">\n                    {{item.subtitle}}\n                </div>\n            </div>\n\n            <!-- Badge -->\n            <div class=\"treo-horizontal-navigation-item-badge\"\n                 *ngIf=\"item.badge\">\n                <div class=\"treo-horizontal-navigation-item-badge-content\"\n                     [ngClass]=\"[(item.badge.style != undefined ? 'treo-horizontal-navigation-item-badge-style-' + item.badge.style : ''),\n                             (item.badge.background != undefined && !item.badge.background.startsWith('#') ? item.badge.background : ''),\n                             (item.badge.color != undefined && !item.badge.color.startsWith('#') ? item.badge.color : '')]\"\n                     [ngStyle]=\"{'background-color': item.badge.background, 'color': item.badge.color}\">\n                    {{item.badge.title}}\n                </div>\n            </div>\n        </div>\n    </div>\n\n</ng-template>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/branch/branch.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatMenu } from '@angular/material/menu';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoHorizontalNavigationComponent } from '@treo/components/navigation/horizontal/horizontal.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-horizontal-navigation-branch-item',\n    templateUrl    : './branch.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy\n{\n    // Child\n    @Input()\n    child: boolean;\n\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Mat menu\n    @ViewChild('matMenu', {static: true})\n    matMenu: MatMenu;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoHorizontalNavigationComponent: TreoHorizontalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.child = false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoHorizontalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Trigger the change detection\n     */\n    triggerChangeDetection(): void\n    {\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/divider/divider.component.html",
    "content": "<!-- Divider -->\n<div class=\"treo-horizontal-navigation-item-wrapper divider\"></div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/divider/divider.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoHorizontalNavigationComponent } from '@treo/components/navigation/horizontal/horizontal.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-horizontal-navigation-divider-item',\n    templateUrl    : './divider.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoHorizontalNavigationDividerItemComponent implements OnInit, OnDestroy\n{\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoHorizontalNavigationComponent: TreoHorizontalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoHorizontalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/spacer/spacer.component.html",
    "content": "<!-- Spacer -->\n<div class=\"treo-horizontal-navigation-item-wrapper\"></div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/components/spacer/spacer.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { TreoHorizontalNavigationComponent } from '@treo/components/navigation/horizontal/horizontal.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-horizontal-navigation-spacer-item',\n    templateUrl    : './spacer.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy\n{\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoHorizontalNavigationComponent: TreoHorizontalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoHorizontalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoHorizontalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/horizontal.component.html",
    "content": "<div class=\"treo-horizontal-navigation-wrapper\">\n\n    <ng-container *ngFor=\"let item of navigation\">\n\n        <!-- Skip the hidden items -->\n        <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n            <!-- Basic -->\n            <treo-horizontal-navigation-basic-item class=\"treo-horizontal-navigation-menu-item\"\n                                                  *ngIf=\"item.type === 'basic'\"\n                                                  [item]=\"item\"\n                                                  [name]=\"name\"></treo-horizontal-navigation-basic-item>\n\n            <!-- Branch: aside, collapsable, group -->\n            <treo-horizontal-navigation-branch-item class=\"treo-horizontal-navigation-menu-item\"\n                                                   *ngIf=\"item.type === 'aside' || item.type === 'collapsable' || item.type === 'group'\"\n                                                   [item]=\"item\"\n                                                   [name]=\"name\"></treo-horizontal-navigation-branch-item>\n\n            <!-- Spacer -->\n            <treo-horizontal-navigation-spacer-item class=\"treo-horizontal-navigation-menu-item\"\n                                                   *ngIf=\"item.type === 'spacer'\"\n                                                   [item]=\"item\"\n                                                   [name]=\"name\"></treo-horizontal-navigation-spacer-item>\n\n        </ng-container>\n\n    </ng-container>\n\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/horizontal.component.scss",
    "content": "@import 'treo';\n\n// Root navigation specific\ntreo-horizontal-navigation {\n\n    .treo-horizontal-navigation-wrapper {\n        display: flex;\n        align-items: center;\n\n        // Basic, Branch\n        treo-horizontal-navigation-basic-item,\n        treo-horizontal-navigation-branch-item {\n\n            .treo-horizontal-navigation-item-wrapper {\n                border-radius: 4px;\n                overflow: hidden;\n\n                .treo-horizontal-navigation-item {\n                    padding: 0 16px;\n                    cursor: pointer;\n                    user-select: none;\n\n                    .treo-horizontal-navigation-item-icon {\n                        margin-right: 12px;\n                    }\n                }\n            }\n        }\n\n        // Spacer\n        treo-horizontal-navigation-spacer-item {\n            margin: 12px 0;\n        }\n    }\n}\n\n// Menu panel specific\n.treo-horizontal-navigation-menu-panel {\n\n    .treo-horizontal-navigation-menu-item {\n        height: auto;\n        min-height: 0;\n        line-height: normal;\n        white-space: normal;\n\n        // Basic, Branch\n        treo-horizontal-navigation-basic-item,\n        treo-horizontal-navigation-branch-item,\n        treo-horizontal-navigation-divider-item {\n            display: flex;\n            flex: 1 1 auto;\n        }\n\n        // Divider\n        treo-horizontal-navigation-divider-item {\n            margin: 8px -16px;\n\n            .treo-horizontal-navigation-item-wrapper {\n                height: 1px;\n                box-shadow: 0 1px 0 0;\n            }\n        }\n    }\n}\n\n// Navigation menu item common\n.treo-horizontal-navigation-menu-item {\n\n    .treo-horizontal-navigation-item-wrapper {\n        width: 100%;\n\n        &.treo-horizontal-navigation-item-has-subtitle {\n\n            .treo-horizontal-navigation-item {\n                min-height: 56px;\n            }\n        }\n\n        .treo-horizontal-navigation-item {\n            position: relative;\n            display: flex;\n            align-items: center;\n            justify-content: flex-start;\n            min-height: 48px;\n            width: 100%;\n            font-size: 13px;\n            font-weight: 500;\n            text-decoration: none;\n\n            .treo-horizontal-navigation-item-title-wrapper {\n\n                .treo-horizontal-navigation-item-subtitle {\n                    font-size: 12px;\n                }\n            }\n\n            .treo-horizontal-navigation-item-badge {\n                margin-left: auto;\n\n                .treo-horizontal-navigation-item-badge-content {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    font-size: 10px;\n                    font-weight: 700;\n                    white-space: nowrap;\n                    width: 20px;\n                    height: 20px;\n                    border-radius: 50%;\n\n                    // Rectangle\n                    &.treo-horizontal-navigation-item-badge-style-rectangle {\n                        width: auto;\n                        min-width: 24px;\n                        height: 20px;\n                        line-height: normal;\n                        padding: 0 6px;\n                        border-radius: 4px;\n                    }\n\n                    // Rounded\n                    &.treo-horizontal-navigation-item-badge-style-rounded {\n                        width: auto;\n                        min-width: 24px;\n                        height: 20px;\n                        line-height: normal;\n                        padding: 0 10px;\n                        border-radius: 12px;\n                    }\n\n                    // Simple\n                    &.treo-horizontal-navigation-item-badge-style-simple {\n                        width: auto;\n                        font-size: 11px;\n                        background-color: transparent !important;\n                    }\n                }\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    // Root navigation specific\n    treo-horizontal-navigation {\n\n        .treo-horizontal-navigation-wrapper {\n\n            // Basic, Branch\n            treo-horizontal-navigation-basic-item,\n            treo-horizontal-navigation-branch-item {\n\n                @include treo-breakpoint('gt-xs') {\n\n                    &:hover {\n\n                        .treo-horizontal-navigation-item-wrapper {\n                            background: map-get($background, hover);\n                        }\n                    }\n                }\n            }\n\n            // Basic - When item active (current link)\n            treo-horizontal-navigation-basic-item {\n\n                .treo-horizontal-navigation-item-active {\n\n                    .treo-horizontal-navigation-item-title {\n                        color: map-get($primary, default) !important;\n                    }\n\n                    .treo-horizontal-navigation-item-subtitle {\n                        @if ($is-dark) {\n                            color: map-get($primary, 600) !important;\n                        } @else {\n                            color: map-get($primary, 400) !important;\n                        }\n                    }\n\n                    .treo-horizontal-navigation-item-icon {\n                        color: map-get($primary, default) !important;\n                    }\n                }\n            }\n\n            // Branch - When menu open\n            treo-horizontal-navigation-branch-item {\n\n                .treo-horizontal-navigation-menu-active {\n\n                    .treo-horizontal-navigation-item-wrapper {\n                        background: map-get($background, hover);\n                    }\n                }\n            }\n        }\n    }\n\n    // Navigation menu item common\n    .treo-horizontal-navigation-menu-item {\n\n        // Basic - When item active (current link)\n        treo-horizontal-navigation-basic-item {\n\n            .treo-horizontal-navigation-item-active {\n\n                .treo-horizontal-navigation-item-title {\n                    color: map-get($primary, default) !important;\n                }\n\n                .treo-horizontal-navigation-item-subtitle {\n                    @if ($is-dark) {\n                        color: map-get($primary, 600) !important;\n                    } @else {\n                        color: map-get($primary, 400) !important;\n                    }\n                }\n\n                .treo-horizontal-navigation-item-icon {\n                    color: map-get($primary, default) !important;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/horizontal/horizontal.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { TreoAnimations } from '@treo/animations';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\n\n@Component({\n    selector       : 'treo-horizontal-navigation',\n    templateUrl    : './horizontal.component.html',\n    styleUrls      : ['./horizontal.component.scss'],\n    animations     : TreoAnimations,\n    encapsulation  : ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs       : 'treoHorizontalNavigation'\n})\nexport class TreoHorizontalNavigationComponent implements OnInit, OnDestroy\n{\n    onRefreshed: BehaviorSubject<boolean | null>;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _navigation: TreoNavigationItem[];\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.onRefreshed = new BehaviorSubject(null);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter & getter for data\n     */\n    @Input()\n    set navigation(value: TreoNavigationItem[])\n    {\n        // Store the data\n        this._navigation = value;\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n    }\n\n    get navigation(): TreoNavigationItem[]\n    {\n        return this._navigation;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Register the navigation component\n        this._treoNavigationService.registerComponent(this.name, this);\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Deregister the navigation component from the registry\n        this._treoNavigationService.deregisterComponent(this.name);\n\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Refresh the component to apply the changes\n     */\n    refresh(): void\n    {\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n\n        // Execute the observable\n        this.onRefreshed.next(true);\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/index.ts",
    "content": "export * from '@treo/components/navigation/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/navigation.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TreoScrollbarModule } from '@treo/directives/scrollbar/public-api';\nimport { TreoHorizontalNavigationBasicItemComponent } from '@treo/components/navigation/horizontal/components/basic/basic.component';\nimport { TreoHorizontalNavigationBranchItemComponent } from '@treo/components/navigation/horizontal/components/branch/branch.component';\nimport { TreoHorizontalNavigationDividerItemComponent } from '@treo/components/navigation/horizontal/components/divider/divider.component';\nimport { TreoHorizontalNavigationSpacerItemComponent } from '@treo/components/navigation/horizontal/components/spacer/spacer.component';\nimport { TreoHorizontalNavigationComponent } from '@treo/components/navigation/horizontal/horizontal.component';\nimport { TreoVerticalNavigationAsideItemComponent } from '@treo/components/navigation/vertical/components/aside/aside.component';\nimport { TreoVerticalNavigationBasicItemComponent } from '@treo/components/navigation/vertical/components/basic/basic.component';\nimport { TreoVerticalNavigationCollapsableItemComponent } from '@treo/components/navigation/vertical/components/collapsable/collapsable.component';\nimport { TreoVerticalNavigationDividerItemComponent } from '@treo/components/navigation/vertical/components/divider/divider.component';\nimport { TreoVerticalNavigationGroupItemComponent } from '@treo/components/navigation/vertical/components/group/group.component';\nimport { TreoVerticalNavigationSpacerItemComponent } from '@treo/components/navigation/vertical/components/spacer/spacer.component';\nimport { TreoVerticalNavigationComponent } from '@treo/components/navigation/vertical/vertical.component';\n\n@NgModule({\n    declarations: [\n        TreoHorizontalNavigationBasicItemComponent,\n        TreoHorizontalNavigationBranchItemComponent,\n        TreoHorizontalNavigationDividerItemComponent,\n        TreoHorizontalNavigationSpacerItemComponent,\n        TreoHorizontalNavigationComponent,\n        TreoVerticalNavigationAsideItemComponent,\n        TreoVerticalNavigationBasicItemComponent,\n        TreoVerticalNavigationCollapsableItemComponent,\n        TreoVerticalNavigationDividerItemComponent,\n        TreoVerticalNavigationGroupItemComponent,\n        TreoVerticalNavigationSpacerItemComponent,\n        TreoVerticalNavigationComponent\n    ],\n    imports     : [\n        CommonModule,\n        RouterModule,\n        MatButtonModule,\n        MatDividerModule,\n        MatIconModule,\n        MatMenuModule,\n        MatTooltipModule,\n        TreoScrollbarModule\n    ],\n    exports     : [\n        TreoHorizontalNavigationComponent,\n        TreoVerticalNavigationComponent\n    ]\n})\nexport class TreoNavigationModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/navigation.service.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreoNavigationService\n{\n    // Private\n    private _componentRegistry: Map<string, any>;\n    private _navigationStore: Map<string, TreoNavigationItem[]>;\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n        // Set the private defaults\n        this._componentRegistry = new Map<string, any>();\n        this._navigationStore = new Map<string, any>();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Register navigation component\n     *\n     * @param name\n     * @param component\n     */\n    registerComponent(name: string, component: any): void\n    {\n        this._componentRegistry.set(name, component);\n    }\n\n    /**\n     * Deregister navigation component\n     *\n     * @param name\n     */\n    deregisterComponent(name: string): void\n    {\n        this._componentRegistry.delete(name);\n    }\n\n    /**\n     * Get navigation component from the registry\n     *\n     * @param name\n     */\n    getComponent(name: string): any\n    {\n        return this._componentRegistry.get(name);\n    }\n\n    /**\n     * Store the given navigation with the given key\n     *\n     * @param key\n     * @param navigation\n     */\n    storeNavigation(key: string, navigation: TreoNavigationItem[]): void\n    {\n        // Add to the store\n        this._navigationStore.set(key, navigation);\n    }\n\n    /**\n     * Get navigation from storage by key\n     *\n     * @param key\n     * @returns {any}\n     */\n    getNavigation(key: string): TreoNavigationItem[]\n    {\n        return this._navigationStore.get(key);\n    }\n\n    /**\n     * Delete the navigation from the storage\n     *\n     * @param key\n     */\n    deleteNavigation(key: string): void\n    {\n        // Check if the navigation exists\n        if ( !this._navigationStore.has(key) )\n        {\n            console.warn(`Navigation with the key '${key}' does not exist in the store.`);\n        }\n\n        // Delete from the storage\n        this._navigationStore.delete(key);\n    }\n\n    /**\n     * Utility function that returns a flattened\n     * version of the given navigation array\n     *\n     * @param navigation\n     * @param flatNavigation\n     * @returns {TreoNavigationItem[]}\n     */\n    getFlatNavigation(navigation: TreoNavigationItem[], flatNavigation: TreoNavigationItem[] = []): TreoNavigationItem[]\n    {\n        for ( const item of navigation )\n        {\n            if ( item.type === 'basic' )\n            {\n                flatNavigation.push(item);\n                continue;\n            }\n\n            if ( item.type === 'aside' || item.type === 'collapsable' || item.type === 'group' )\n            {\n                if ( item.children )\n                {\n                    this.getFlatNavigation(item.children, flatNavigation);\n                }\n            }\n        }\n\n        return flatNavigation;\n    }\n\n    /**\n     * Utility function that returns the item\n     * with the given id from given navigation\n     *\n     * @param id\n     * @param navigation\n     */\n    getItem(id: string, navigation: TreoNavigationItem[]): TreoNavigationItem | null\n    {\n        for ( const item of navigation )\n        {\n            if ( item.id === id )\n            {\n                return item;\n            }\n\n            if ( item.children )\n            {\n                const childItem = this.getItem(id, item.children);\n\n                if ( childItem )\n                {\n                    return childItem;\n                }\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * Utility function that returns the item's parent\n     * with the given id from given navigation\n     *\n     * @param id\n     * @param navigation\n     * @param parent\n     */\n    getItemParent(\n        id: string,\n        navigation: TreoNavigationItem[],\n        parent: TreoNavigationItem[] | TreoNavigationItem\n    ): TreoNavigationItem[] | TreoNavigationItem | null\n    {\n        for ( const item of navigation )\n        {\n            if ( item.id === id )\n            {\n                return parent;\n            }\n\n            if ( item.children )\n            {\n                const childItem = this.getItemParent(id, item.children, item);\n\n                if ( childItem )\n                {\n                    return childItem;\n                }\n            }\n        }\n\n        return null;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/navigation.types.ts",
    "content": "export interface TreoNavigationItem\n{\n    id?: string;\n    title?: string;\n    subtitle?: string;\n    type: 'aside' | 'basic' | 'collapsable' | 'divider' | 'group' | 'spacer';\n    hidden?: (item: TreoNavigationItem) => boolean;\n    disabled?: boolean;\n    link?: string;\n    externalLink?: boolean;\n    exactMatch?: boolean;\n    function?: (item: TreoNavigationItem) => void;\n    classes?: string;\n    icon?: string;\n    iconClasses?: string;\n    badge?: {\n        title?: string;\n        style?: 'rectangle' | 'rounded' | 'simple',\n        background?: string;\n        color?: string;\n    };\n    children?: TreoNavigationItem[];\n    meta?: any;\n}\n\nexport type TreoVerticalNavigationAppearance = string;\nexport type TreoVerticalNavigationMode = 'over' | 'side';\nexport type TreoVerticalNavigationPosition = 'left' | 'right';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/public-api.ts",
    "content": "export * from '@treo/components/navigation/horizontal/horizontal.component';\nexport * from '@treo/components/navigation/vertical/vertical.component';\nexport * from '@treo/components/navigation/navigation.module';\nexport * from '@treo/components/navigation/navigation.service';\nexport * from '@treo/components/navigation/navigation.types';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/aside/aside.component.html",
    "content": "<div class=\"treo-vertical-navigation-item-wrapper\"\n     [class.treo-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n     [ngClass]=\"item.classes\">\n\n    <div class=\"treo-vertical-navigation-item\"\n         [ngClass]=\"{'treo-vertical-navigation-item-active': active, 'treo-vertical-navigation-item-disabled': item.disabled}\">\n\n        <!-- Icon -->\n        <mat-icon class=\"treo-vertical-navigation-item-icon\"\n                  [ngClass]=\"item.iconClasses\"\n                  *ngIf=\"item.icon\"\n                  [svgIcon]=\"item.icon\"></mat-icon>\n\n        <!-- Title & Subtitle -->\n        <div class=\"treo-vertical-navigation-item-title-wrapper\">\n            <div class=\"treo-vertical-navigation-item-title\">{{item.title}}</div>\n            <div class=\"treo-vertical-navigation-item-subtitle\"\n                 *ngIf=\"item.subtitle\">\n                {{item.subtitle}}\n            </div>\n\n        </div>\n\n        <!-- Badge -->\n        <div class=\"treo-vertical-navigation-item-badge\"\n             *ngIf=\"item.badge\">\n\n            <div class=\"treo-vertical-navigation-item-badge-content\"\n                 [ngClass]=\"[(item.badge.style != undefined ? 'treo-vertical-navigation-item-badge-style-' + item.badge.style : ''),\n                             (item.badge.background != undefined && !item.badge.background.startsWith('#') ? item.badge.background : ''),\n                             (item.badge.color != undefined && !item.badge.color.startsWith('#') ? item.badge.color : '')]\"\n                 [ngStyle]=\"{'background-color': item.badge.background, 'color': item.badge.color}\">\n                {{item.badge.title}}\n            </div>\n\n        </div>\n\n    </div>\n\n</div>\n\n<ng-container *ngIf=\"!skipChildren\">\n\n    <div class=\"treo-vertical-navigation-item-children\">\n\n        <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n            <!-- Skip the hidden items -->\n            <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n                <!-- Basic -->\n                <treo-vertical-navigation-basic-item *ngIf=\"item.type === 'basic'\"\n                                                    [item]=\"item\"\n                                                    [name]=\"name\"></treo-vertical-navigation-basic-item>\n\n                <!-- Collapsable -->\n                <treo-vertical-navigation-collapsable-item *ngIf=\"item.type === 'collapsable'\"\n                                                          [item]=\"item\"\n                                                          [name]=\"name\"\n                                                          [autoCollapse]=\"autoCollapse\"></treo-vertical-navigation-collapsable-item>\n\n                <!-- Divider -->\n                <treo-vertical-navigation-divider-item *ngIf=\"item.type === 'divider'\"\n                                                      [item]=\"item\"\n                                                      [name]=\"name\"></treo-vertical-navigation-divider-item>\n\n                <!-- Group -->\n                <treo-vertical-navigation-group-item *ngIf=\"item.type === 'group'\"\n                                                    [item]=\"item\"\n                                                    [name]=\"name\"></treo-vertical-navigation-group-item>\n\n                <!-- Spacer -->\n                <treo-vertical-navigation-spacer-item *ngIf=\"item.type === 'spacer'\"\n                                                     [item]=\"item\"\n                                                     [name]=\"name\"></treo-vertical-navigation-spacer-item>\n\n            </ng-container>\n\n        </ng-container>\n\n    </div>\n\n</ng-container>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/aside/aside.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoVerticalNavigationComponent } from '@treo/components/navigation/vertical/vertical.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-vertical-navigation-aside-item',\n    templateUrl    : './aside.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoVerticalNavigationAsideItemComponent implements OnInit, OnDestroy\n{\n    // Active\n    @Input()\n    active: boolean;\n\n    // Auto collapse\n    @Input()\n    autoCollapse: boolean;\n\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Skip children\n    @Input()\n    skipChildren: boolean;\n\n    // Private\n    private _treoVerticalNavigationComponent: TreoVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.skipChildren = false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoVerticalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/basic/basic.component.html",
    "content": "<!-- Item wrapper -->\n<div class=\"treo-vertical-navigation-item-wrapper\"\n     [class.treo-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n     [ngClass]=\"item.classes\">\n\n    <!-- Item with an internal link -->\n    <a class=\"treo-vertical-navigation-item\"\n       *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\"\n       [routerLink]=\"[item.link]\"\n       [routerLinkActive]=\"'treo-vertical-navigation-item-active'\"\n       [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </a>\n\n    <!-- Item with an external link -->\n    <a class=\"treo-vertical-navigation-item\"\n       *ngIf=\"item.link && item.externalLink && !item.function && !item.disabled\"\n       [href]=\"item.link\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </a>\n\n    <!-- Item with a function -->\n    <div class=\"treo-vertical-navigation-item\"\n         *ngIf=\"!item.link && item.function && !item.disabled\"\n         (click)=\"item.function(item)\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n    <!-- Item with an internal link and function -->\n    <a class=\"treo-vertical-navigation-item\"\n       *ngIf=\"item.link && !item.externalLink && item.function && !item.disabled\"\n       [routerLink]=\"[item.link]\"\n       [routerLinkActive]=\"'treo-vertical-navigation-item-active'\"\n       [routerLinkActiveOptions]=\"{exact: item.exactMatch || false}\"\n       (click)=\"item.function(item)\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </a>\n\n    <!-- Item with an external link and function -->\n    <a class=\"treo-vertical-navigation-item\"\n       *ngIf=\"item.link && item.externalLink && item.function && !item.disabled\"\n       [href]=\"item.link\"\n       (click)=\"item.function(item)\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </a>\n\n    <!-- Item with a no link and no function -->\n    <div class=\"treo-vertical-navigation-item\"\n         *ngIf=\"!item.link && !item.function && !item.disabled\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n    <!-- Item is disabled -->\n    <div class=\"treo-vertical-navigation-item treo-vertical-navigation-item-disabled\"\n         *ngIf=\"item.disabled\">\n        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n    </div>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n    <!-- Icon -->\n    <mat-icon class=\"treo-vertical-navigation-item-icon\"\n              [ngClass]=\"item.iconClasses\"\n              *ngIf=\"item.icon\"\n              [svgIcon]=\"item.icon\"></mat-icon>\n\n    <!-- Title & Subtitle -->\n    <div class=\"treo-vertical-navigation-item-title-wrapper\">\n        <div class=\"treo-vertical-navigation-item-title\">{{item.title}}</div>\n        <div class=\"treo-vertical-navigation-item-subtitle\"\n             *ngIf=\"item.subtitle\">\n            {{item.subtitle}}\n        </div>\n    </div>\n\n    <!-- Badge -->\n    <div class=\"treo-vertical-navigation-item-badge\"\n         *ngIf=\"item.badge\">\n        <div class=\"treo-vertical-navigation-item-badge-content\"\n             [ngClass]=\"[(item.badge.style != undefined ? 'treo-vertical-navigation-item-badge-style-' + item.badge.style : ''),\n                             (item.badge.background != undefined && !item.badge.background.startsWith('#') ? item.badge.background : ''),\n                             (item.badge.color != undefined && !item.badge.color.startsWith('#') ? item.badge.color : '')]\"\n             [ngStyle]=\"{'background-color': item.badge.background, 'color': item.badge.color}\">\n            {{item.badge.title}}\n        </div>\n    </div>\n\n</ng-template>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/basic/basic.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoVerticalNavigationComponent } from '@treo/components/navigation/vertical/vertical.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-vertical-navigation-basic-item',\n    templateUrl    : './basic.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoVerticalNavigationBasicItemComponent implements OnInit, OnDestroy\n{\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoVerticalNavigationComponent: TreoVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoVerticalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/collapsable/collapsable.component.html",
    "content": "<div class=\"treo-vertical-navigation-item-wrapper\"\n     [class.treo-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n     [ngClass]=\"item.classes\">\n\n    <div class=\"treo-vertical-navigation-item\"\n         [ngClass]=\"{'treo-vertical-navigation-item-disabled': item.disabled}\"\n         (click)=\"toggleCollapsable()\">\n\n        <!-- Icon -->\n        <mat-icon class=\"treo-vertical-navigation-item-icon\"\n                  [ngClass]=\"item.iconClasses\"\n                  *ngIf=\"item.icon\"\n                  [svgIcon]=\"item.icon\"></mat-icon>\n\n        <!-- Title & Subtitle -->\n        <div class=\"treo-vertical-navigation-item-title-wrapper\">\n            <div class=\"treo-vertical-navigation-item-title\">{{item.title}}</div>\n            <div class=\"treo-vertical-navigation-item-subtitle\"\n                 *ngIf=\"item.subtitle\">\n                {{item.subtitle}}\n            </div>\n        </div>\n\n        <!-- Badge -->\n        <div class=\"treo-vertical-navigation-item-badge\"\n             *ngIf=\"item.badge\">\n\n            <div class=\"treo-vertical-navigation-item-badge-content\"\n                 [ngClass]=\"[(item.badge.style != undefined ? 'treo-vertical-navigation-item-badge-style-' + item.badge.style : ''),\n                             (item.badge.background != undefined && !item.badge.background.startsWith('#') ? item.badge.background : ''),\n                             (item.badge.color != undefined && !item.badge.color.startsWith('#') ? item.badge.color : '')]\"\n                 [ngStyle]=\"{'background-color': item.badge.background, 'color': item.badge.color}\">\n                {{item.badge.title}}\n            </div>\n\n        </div>\n\n        <!-- Arrow -->\n        <mat-icon class=\"treo-vertical-navigation-item-arrow icon-size-16\"\n                  [svgIcon]=\"'heroicons_solid:cheveron-right'\"></mat-icon>\n\n    </div>\n\n</div>\n\n<div class=\"treo-vertical-navigation-item-children\"\n     *ngIf=\"!isCollapsed\"\n     @expandCollapse>\n\n    <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n        <!-- Skip the hidden items -->\n        <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n            <!-- Basic -->\n            <treo-vertical-navigation-basic-item *ngIf=\"item.type === 'basic'\"\n                                                [item]=\"item\"\n                                                [name]=\"name\"></treo-vertical-navigation-basic-item>\n\n            <!-- Collapsable -->\n            <treo-vertical-navigation-collapsable-item *ngIf=\"item.type === 'collapsable'\"\n                                                      [item]=\"item\"\n                                                      [name]=\"name\"\n                                                      [autoCollapse]=\"autoCollapse\"></treo-vertical-navigation-collapsable-item>\n\n            <!-- Divider -->\n            <treo-vertical-navigation-divider-item *ngIf=\"item.type === 'divider'\"\n                                                  [item]=\"item\"\n                                                  [name]=\"name\"></treo-vertical-navigation-divider-item>\n\n            <!-- Group -->\n            <treo-vertical-navigation-group-item *ngIf=\"item.type === 'group'\"\n                                                [item]=\"item\"\n                                                [name]=\"name\"></treo-vertical-navigation-group-item>\n\n            <!-- Spacer -->\n            <treo-vertical-navigation-spacer-item *ngIf=\"item.type === 'spacer'\"\n                                                 [item]=\"item\"\n                                                 [name]=\"name\"></treo-vertical-navigation-spacer-item>\n\n        </ng-container>\n\n    </ng-container>\n\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/collapsable/collapsable.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { TreoAnimations } from '@treo/animations';\nimport { TreoVerticalNavigationComponent } from '@treo/components/navigation/vertical/vertical.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-vertical-navigation-collapsable-item',\n    templateUrl    : './collapsable.component.html',\n    styles         : [],\n    animations     : TreoAnimations,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy\n{\n    // Auto collapse\n    @Input()\n    autoCollapse: boolean;\n\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Collapsed\n    @HostBinding('class.treo-vertical-navigation-item-collapsed')\n    isCollapsed: boolean;\n\n    // Expanded\n    @HostBinding('class.treo-vertical-navigation-item-expanded')\n    isExpanded: boolean;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoVerticalNavigationComponent: TreoVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     * @param {Router} _router\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _router: Router\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.isCollapsed = true;\n        this.isExpanded = false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoVerticalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // If the item has a children that has a matching url with the current url, expand...\n        if ( this._hasCurrentUrlInChildren(this.item, this._router.url) )\n        {\n            this.expand();\n        }\n        // Otherwise...\n        else\n        {\n            // If the autoCollapse is on, collapse...\n            if ( this.autoCollapse )\n            {\n                this.collapse();\n            }\n        }\n\n        // Listen for the onCollapsableItemCollapsed from the service\n        this._treoVerticalNavigationComponent.onCollapsableItemCollapsed\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((collapsedItem) => {\n\n                // Check if the collapsed item is null\n                if ( collapsedItem === null )\n                {\n                    return;\n                }\n\n                // Collapse if this is a children of the collapsed item\n                if ( this._isChildrenOf(collapsedItem, this.item) )\n                {\n                    this.collapse();\n                }\n            });\n\n        // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\n        if ( this.autoCollapse )\n        {\n            this._treoVerticalNavigationComponent.onCollapsableItemExpanded\n                .pipe(takeUntil(this._unsubscribeAll))\n                .subscribe((expandedItem) => {\n\n                    // Check if the expanded item is null\n                    if ( expandedItem === null )\n                    {\n                        return;\n                    }\n\n                    // Check if this is a parent of the expanded item\n                    if ( this._isChildrenOf(this.item, expandedItem) )\n                    {\n                        return;\n                    }\n\n                    // Check if this has a children with a matching url with the current active url\n                    if ( this._hasCurrentUrlInChildren(this.item, this._router.url) )\n                    {\n                        return;\n                    }\n\n                    // Check if this is the expanded item\n                    if ( this.item === expandedItem )\n                    {\n                        return;\n                    }\n\n                    // If none of the above conditions are matched, collapse this item\n                    this.collapse();\n                });\n        }\n\n        // Attach a listener to the NavigationEnd event\n        this._router.events\n            .pipe(\n                filter(event => event instanceof NavigationEnd),\n                takeUntil(this._unsubscribeAll)\n            )\n            .subscribe((event: NavigationEnd) => {\n\n                // If the item has a children that has a matching url with the current url, expand...\n                if ( this._hasCurrentUrlInChildren(this.item, event.urlAfterRedirects) )\n                {\n                    this.expand();\n                }\n                // Otherwise...\n                else\n                {\n                    // If the autoCollapse is on, collapse...\n                    if ( this.autoCollapse )\n                    {\n                        this.collapse();\n                    }\n                }\n            });\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Check if the given item has the given url\n     * in one of its children\n     *\n     * @param item\n     * @param url\n     * @private\n     */\n    private _hasCurrentUrlInChildren(item, url): boolean\n    {\n        const children = item.children;\n\n        if ( !children )\n        {\n            return false;\n        }\n\n        for ( const child of children )\n        {\n            if ( child.children )\n            {\n                if ( this._hasCurrentUrlInChildren(child, url) )\n                {\n                    return true;\n                }\n            }\n\n            // Check if the item's link is the exact same of the\n            // current url\n            if ( child.link === url )\n            {\n                return true;\n            }\n\n            // If exactMatch is not set for the item, also check\n            // if the current url starts with the item's link and\n            // continues with a question mark, a pound sign or a\n            // slash\n            if ( !child.exactMatch && (child.link === url || url.startsWith(child.link + '?') || url.startsWith(child.link + '#') || url.startsWith(child.link + '/')) )\n            {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Check if this is a children\n     * of the given item\n     *\n     * @param parent\n     * @param item\n     * @return {boolean}\n     * @private\n     */\n    private _isChildrenOf(parent, item): boolean\n    {\n        const children = parent.children;\n\n        if ( !children )\n        {\n            return false;\n        }\n\n        if ( children.indexOf(item) > -1 )\n        {\n            return true;\n        }\n\n        for ( const child of children )\n        {\n            if ( child.children )\n            {\n                if ( this._isChildrenOf(child, item) )\n                {\n                    return true;\n                }\n            }\n        }\n\n        return false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Collapse\n     */\n    collapse(): void\n    {\n        // Return if the item is disabled\n        if ( this.item.disabled )\n        {\n            return;\n        }\n\n        // Return if the item is already collapsed\n        if ( this.isCollapsed )\n        {\n            return;\n        }\n\n        // Collapse it\n        this.isCollapsed = true;\n        this.isExpanded = false;\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n\n        // Execute the observable\n        this._treoVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\n    }\n\n    /**\n     * Expand\n     */\n    expand(): void\n    {\n        // Return if the item is disabled\n        if ( this.item.disabled )\n        {\n            return;\n        }\n\n        // Return if the item is already expanded\n        if ( !this.isCollapsed )\n        {\n            return;\n        }\n\n        // Expand it\n        this.isCollapsed = false;\n        this.isExpanded = true;\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n\n        // Execute the observable\n        this._treoVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\n    }\n\n    /**\n     * Toggle collapsable\n     */\n    toggleCollapsable(): void\n    {\n        // Toggle collapse/expand\n        if ( this.isCollapsed )\n        {\n            this.expand();\n        }\n        else\n        {\n            this.collapse();\n        }\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/divider/divider.component.html",
    "content": "<!-- Divider -->\n<div class=\"treo-vertical-navigation-item-wrapper divider\"></div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/divider/divider.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoVerticalNavigationComponent } from '@treo/components/navigation/vertical/vertical.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-vertical-navigation-divider-item',\n    templateUrl    : './divider.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoVerticalNavigationDividerItemComponent implements OnInit, OnDestroy\n{\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoVerticalNavigationComponent: TreoVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoVerticalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/group/group.component.html",
    "content": "<!-- Item wrapper -->\n<div class=\"treo-vertical-navigation-item-wrapper\"\n     [class.treo-vertical-navigation-item-has-subtitle]=\"!!item.subtitle\"\n     [ngClass]=\"item.classes\">\n\n    <div class=\"treo-vertical-navigation-item\">\n\n        <!-- Icon -->\n        <mat-icon class=\"treo-vertical-navigation-item-icon\"\n                  [ngClass]=\"item.iconClasses\"\n                  *ngIf=\"item.icon\"\n                  [svgIcon]=\"item.icon\"></mat-icon>\n\n        <!-- Title & Subtitle -->\n        <div class=\"treo-vertical-navigation-item-title-wrapper\">\n            <div class=\"treo-vertical-navigation-item-title\">{{item.title}}</div>\n            <div class=\"treo-vertical-navigation-item-subtitle\"\n                 *ngIf=\"item.subtitle\">\n                {{item.subtitle}}\n            </div>\n        </div>\n\n        <!-- Badge -->\n        <div class=\"treo-vertical-navigation-item-badge\"\n             *ngIf=\"item.badge\">\n\n            <div class=\"treo-vertical-navigation-item-badge-content\"\n                 [ngClass]=\"[(item.badge.style != undefined ? 'treo-vertical-navigation-item-badge-style-' + item.badge.style : ''),\n                             (item.badge.background != undefined && !item.badge.background.startsWith('#') ? item.badge.background : ''),\n                             (item.badge.color != undefined && !item.badge.color.startsWith('#') ? item.badge.color : '')]\"\n                 [ngStyle]=\"{'background-color': item.badge.background, 'color': item.badge.color}\">\n                {{item.badge.title}}\n            </div>\n\n        </div>\n\n    </div>\n\n</div>\n\n<ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n    <!-- Skip the hidden items -->\n    <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n        <!-- Basic -->\n        <treo-vertical-navigation-basic-item *ngIf=\"item.type === 'basic'\"\n                                            [item]=\"item\"\n                                            [name]=\"name\"></treo-vertical-navigation-basic-item>\n\n        <!-- Collapsable -->\n        <treo-vertical-navigation-collapsable-item *ngIf=\"item.type === 'collapsable'\"\n                                                  [item]=\"item\"\n                                                  [name]=\"name\"\n                                                  [autoCollapse]=\"autoCollapse\"></treo-vertical-navigation-collapsable-item>\n\n        <!-- Divider -->\n        <treo-vertical-navigation-divider-item *ngIf=\"item.type === 'divider'\"\n                                              [item]=\"item\"\n                                              [name]=\"name\"></treo-vertical-navigation-divider-item>\n\n        <!-- Group -->\n        <treo-vertical-navigation-group-item *ngIf=\"item.type === 'group'\"\n                                            [item]=\"item\"\n                                            [name]=\"name\"></treo-vertical-navigation-group-item>\n\n        <!-- Spacer -->\n        <treo-vertical-navigation-spacer-item *ngIf=\"item.type === 'spacer'\"\n                                             [item]=\"item\"\n                                             [name]=\"name\"></treo-vertical-navigation-spacer-item>\n\n    </ng-container>\n\n</ng-container>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/group/group.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoVerticalNavigationComponent } from '@treo/components/navigation/vertical/vertical.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-vertical-navigation-group-item',\n    templateUrl    : './group.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoVerticalNavigationGroupItemComponent implements OnInit, OnDestroy\n{\n    // Auto collapse\n    @Input()\n    autoCollapse: boolean;\n\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoVerticalNavigationComponent: TreoVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoVerticalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/spacer/spacer.component.html",
    "content": "<!-- Spacer -->\n<div class=\"treo-vertical-navigation-item-wrapper\"></div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/components/spacer/spacer.component.ts",
    "content": "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { TreoVerticalNavigationComponent } from '@treo/components/navigation/vertical/vertical.component';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoNavigationItem } from '@treo/components/navigation/navigation.types';\n\n@Component({\n    selector       : 'treo-vertical-navigation-spacer-item',\n    templateUrl    : './spacer.component.html',\n    styles         : [],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreoVerticalNavigationSpacerItemComponent implements OnInit, OnDestroy\n{\n    // Item\n    @Input()\n    item: TreoNavigationItem;\n\n    // Name\n    @Input()\n    name: string;\n\n    // Private\n    private _treoVerticalNavigationComponent: TreoVerticalNavigationComponent;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     */\n    constructor(\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Get the parent navigation component\n        this._treoVerticalNavigationComponent = this._treoNavigationService.getComponent(this.name);\n\n        // Subscribe to onRefreshed on the navigation component\n        this._treoVerticalNavigationComponent.onRefreshed.pipe(\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Mark for check\n            this._changeDetectorRef.markForCheck();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/vertical.component.html",
    "content": "<div class=\"treo-vertical-navigation-wrapper\">\n\n    <!-- Header -->\n    <div class=\"treo-vertical-navigation-header\">\n        <ng-content select=\"[treoVerticalNavigationHeader]\"></ng-content>\n    </div>\n\n    <!-- Content -->\n    <div class=\"treo-vertical-navigation-content\"\n         treoScrollbar\n         [treoScrollbarOptions]=\"{wheelPropagation: inner, suppressScrollX: true}\"\n         #navigationContent>\n\n        <!-- Content header -->\n        <div class=\"treo-vertical-navigation-content-header\">\n            <ng-content select=\"[treoVerticalNavigationContentHeader]\"></ng-content>\n        </div>\n\n        <!-- Items -->\n        <ng-container *ngFor=\"let item of navigation; trackBy: trackByFn\">\n\n            <!-- Skip the hidden items -->\n            <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n                <!-- Aside -->\n                <treo-vertical-navigation-aside-item *ngIf=\"item.type === 'aside'\"\n                                                    [item]=\"item\"\n                                                    [name]=\"name\"\n                                                    [skipChildren]=\"true\"\n                                                    [autoCollapse]=\"autoCollapse\"\n                                                    [active]=\"item.id === activeAsideItemId\"\n                                                    (click)=\"toggleAside(item)\"></treo-vertical-navigation-aside-item>\n\n                <!-- Basic -->\n                <treo-vertical-navigation-basic-item *ngIf=\"item.type === 'basic'\"\n                                                    [item]=\"item\"\n                                                    [name]=\"name\"></treo-vertical-navigation-basic-item>\n\n                <!-- Collapsable -->\n                <treo-vertical-navigation-collapsable-item *ngIf=\"item.type === 'collapsable'\"\n                                                          [item]=\"item\"\n                                                          [name]=\"name\"\n                                                          [autoCollapse]=\"autoCollapse\"></treo-vertical-navigation-collapsable-item>\n\n                <!-- Divider -->\n                <treo-vertical-navigation-divider-item *ngIf=\"item.type === 'divider'\"\n                                                      [item]=\"item\"\n                                                      [name]=\"name\"></treo-vertical-navigation-divider-item>\n\n                <!-- Group -->\n                <treo-vertical-navigation-group-item *ngIf=\"item.type === 'group'\"\n                                                    [item]=\"item\"\n                                                    [name]=\"name\"\n                                                    [autoCollapse]=\"autoCollapse\"></treo-vertical-navigation-group-item>\n\n                <!-- Spacer -->\n                <treo-vertical-navigation-spacer-item *ngIf=\"item.type === 'spacer'\"\n                                                     [item]=\"item\"\n                                                     [name]=\"name\"></treo-vertical-navigation-spacer-item>\n\n            </ng-container>\n\n        </ng-container>\n\n        <!-- Content footer -->\n        <div class=\"treo-vertical-navigation-content-footer\">\n            <ng-content select=\"[treoVerticalNavigationContentFooter]\"></ng-content>\n        </div>\n\n    </div>\n\n    <!-- Footer -->\n    <div class=\"treo-vertical-navigation-footer\">\n        <ng-content select=\"[treoVerticalNavigationFooter]\"></ng-content>\n    </div>\n\n</div>\n\n<!-- Aside -->\n<div class=\"treo-vertical-navigation-aside-wrapper\"\n     *ngIf=\"activeAsideItemId\"\n     treoScrollbar\n     [treoScrollbarOptions]=\"{wheelPropagation: false, suppressScrollX: true}\"\n     [@fadeInLeft]=\"position === 'left'\"\n     [@fadeInRight]=\"position === 'right'\"\n     [@fadeOutLeft]=\"position === 'left'\"\n     [@fadeOutRight]=\"position === 'right'\">\n\n    <!-- Items -->\n    <ng-container *ngFor=\"let item of navigation; trackBy: trackByFn\">\n\n        <!-- Skip the hidden items -->\n        <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n            <!-- Aside -->\n            <treo-vertical-navigation-aside-item *ngIf=\"item.type === 'aside' && item.id === activeAsideItemId\"\n                                                [item]=\"item\"\n                                                [name]=\"name\"\n                                                [autoCollapse]=\"autoCollapse\"></treo-vertical-navigation-aside-item>\n\n        </ng-container>\n\n    </ng-container>\n\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/vertical.component.scss",
    "content": "@import 'treo';\n\n$treo-vertical-navigation-width: 280;\n\ntreo-vertical-navigation {\n    position: sticky;\n    display: flex;\n    flex-direction: column;\n    flex: 1 0 auto;\n    top: 0;\n    width: #{$treo-vertical-navigation-width}px;\n    min-width: #{$treo-vertical-navigation-width}px;\n    max-width: #{$treo-vertical-navigation-width}px;\n    height: 100vh;\n    min-height: 100vh;\n    max-height: 100vh;\n    z-index: 200;\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Navigation Drawer\n    // -----------------------------------------------------------------------------------------------------\n\n    // Animations\n    &.treo-vertical-navigation-animations-enabled {\n        transition-duration: 400ms;\n        transition-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1);\n        transition-property: visibility, margin-left, margin-right, transform, width, max-width, min-width;\n\n        // Wrapper\n        .treo-vertical-navigation-wrapper {\n            transition-duration: 400ms;\n            transition-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1);\n            transition-property: width, max-width, min-width;\n        }\n    }\n\n    // Over mode\n    &.treo-vertical-navigation-mode-over {\n        position: fixed;\n        top: 0;\n        bottom: 0;\n    }\n\n    // Left position\n    &.treo-vertical-navigation-position-left {\n\n        // Side mode\n        &.treo-vertical-navigation-mode-side {\n            margin-left: -#{$treo-vertical-navigation-width}px;\n\n            &.treo-vertical-navigation-opened {\n                margin-left: 0;\n            }\n        }\n\n        // Over mode\n        &.treo-vertical-navigation-mode-over {\n            left: 0;\n            transform: translate3d(-100%, 0, 0);\n\n            &.treo-vertical-navigation-opened {\n                transform: translate3d(0, 0, 0);\n            }\n        }\n\n        // Wrapper\n        .treo-vertical-navigation-wrapper {\n            left: 0;\n        }\n    }\n\n    // Right position\n    &.treo-vertical-navigation-position-right {\n\n        // Side mode\n        &.treo-vertical-navigation-mode-side {\n            margin-right: -#{$treo-vertical-navigation-width}px;\n\n            &.treo-vertical-navigation-opened {\n                margin-right: 0;\n            }\n        }\n\n        // Over mode\n        &.treo-vertical-navigation-mode-over {\n            right: 0;\n            transform: translate3d(100%, 0, 0);\n\n            &.treo-vertical-navigation-opened {\n                transform: translate3d(0, 0, 0);\n            }\n        }\n\n        // Wrapper\n        .treo-vertical-navigation-wrapper {\n            right: 0;\n        }\n    }\n\n    // Wrapper\n    .treo-vertical-navigation-wrapper {\n        position: absolute;\n        display: flex;\n        flex: 1 1 auto;\n        flex-direction: column;\n        top: 0;\n        bottom: 0;\n        width: 100%;\n        height: 100%;\n        border-right-width: 1px;\n        overflow: hidden;\n        z-index: 10;\n\n        // Header\n        .treo-vertical-navigation-header {\n\n        }\n\n        // Content\n        .treo-vertical-navigation-content {\n            flex: 1 1 auto;\n            overflow-x: hidden;\n            overflow-y: auto;\n\n            // Divider\n            > treo-vertical-navigation-divider-item {\n                margin: 24px 0;\n            }\n\n            // Group\n            > treo-vertical-navigation-group-item {\n                margin-top: 24px;\n            }\n        }\n\n        // Footer\n        .treo-vertical-navigation-footer {\n\n        }\n    }\n\n    // Aside wrapper\n    .treo-vertical-navigation-aside-wrapper {\n        position: absolute;\n        display: flex;\n        flex: 1 1 auto;\n        flex-direction: column;\n        top: 0;\n        bottom: 0;\n        left: #{$treo-vertical-navigation-width}px;\n        width: #{$treo-vertical-navigation-width}px;\n        height: 100%;\n        z-index: 5;\n        overflow-x: hidden;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n        transition-duration: 400ms;\n        transition-property: left, right;\n        transition-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1);\n\n        > treo-vertical-navigation-aside-item {\n            padding: 24px 0;\n\n            // First item of the aside\n            > .treo-vertical-navigation-item-wrapper {\n                display: none !important;\n            }\n        }\n    }\n\n    &.treo-vertical-navigation-position-right {\n\n        .treo-vertical-navigation-aside-wrapper {\n            left: auto;\n            right: #{$treo-vertical-navigation-width}px;\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Navigation Items\n    // -----------------------------------------------------------------------------------------------------\n\n    // Navigation items common\n    treo-vertical-navigation-aside-item,\n    treo-vertical-navigation-basic-item,\n    treo-vertical-navigation-collapsable-item,\n    treo-vertical-navigation-divider-item,\n    treo-vertical-navigation-group-item,\n    treo-vertical-navigation-spacer-item {\n        display: flex;\n        flex-direction: column;\n        flex: 1 0 auto;\n        user-select: none;\n\n        .treo-vertical-navigation-item-wrapper {\n\n            .treo-vertical-navigation-item {\n                position: relative;\n                display: flex;\n                align-items: center;\n                justify-content: flex-start;\n                padding: 12px 24px;\n                font-size: 13px;\n                font-weight: 500;\n                line-height: 20px;\n                text-decoration: none;\n                transition: background-color 375ms cubic-bezier(0.25, 0.8, 0.25, 1);\n\n                .treo-vertical-navigation-item-icon {\n                    margin-right: 16px;\n                    transition: color 375ms cubic-bezier(0.25, 0.8, 0.25, 1);\n                }\n\n                .treo-vertical-navigation-item-title-wrapper {\n\n                    .treo-vertical-navigation-item-title {\n                        transition: color 375ms cubic-bezier(0.25, 0.8, 0.25, 1);\n                    }\n\n                    .treo-vertical-navigation-item-subtitle {\n                        font-size: 11px;\n                        line-height: 1.5;\n                        transition: color 375ms cubic-bezier(0.25, 0.8, 0.25, 1);\n                    }\n                }\n\n                .treo-vertical-navigation-item-badge {\n                    margin-left: auto;\n\n                    .treo-vertical-navigation-item-badge-content {\n                        display: flex;\n                        align-items: center;\n                        justify-content: center;\n                        font-size: 10px;\n                        font-weight: 700;\n                        white-space: nowrap;\n                        width: 20px;\n                        height: 20px;\n                        border-radius: 50%;\n\n                        // Rectangle\n                        &.treo-vertical-navigation-item-badge-style-rectangle {\n                            width: auto;\n                            min-width: 24px;\n                            height: 20px;\n                            line-height: normal;\n                            padding: 0 6px;\n                            border-radius: 4px;\n                        }\n\n                        // Rounded\n                        &.treo-vertical-navigation-item-badge-style-rounded {\n                            width: auto;\n                            min-width: 24px;\n                            height: 20px;\n                            line-height: normal;\n                            padding: 0 10px;\n                            border-radius: 12px;\n                        }\n\n                        // Simple\n                        &.treo-vertical-navigation-item-badge-style-simple {\n                            width: auto;\n                            font-size: 11px;\n                            background-color: transparent !important;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    treo-vertical-navigation-aside-item,\n    treo-vertical-navigation-basic-item,\n    treo-vertical-navigation-collapsable-item {\n\n        .treo-vertical-navigation-item {\n            cursor: pointer;\n        }\n    }\n\n    // Aside\n    treo-vertical-navigation-aside-item {\n\n    }\n\n    // Basic\n    treo-vertical-navigation-basic-item {\n\n    }\n\n    // Collapsable\n    treo-vertical-navigation-collapsable-item {\n\n        > .treo-vertical-navigation-item-wrapper {\n\n            .treo-vertical-navigation-item {\n\n                .treo-vertical-navigation-item-badge {\n\n                    + .treo-vertical-navigation-item-arrow {\n                        margin-left: 8px;\n                    }\n                }\n\n                .treo-vertical-navigation-item-arrow {\n                    height: 20px;\n                    line-height: 20px;\n                    margin-left: auto;\n                    transition: transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1),\n                    color 375ms cubic-bezier(0.25, 0.8, 0.25, 1);\n                }\n            }\n        }\n\n        &.treo-vertical-navigation-item-expanded {\n\n            > .treo-vertical-navigation-item-wrapper {\n\n                .treo-vertical-navigation-item {\n\n                    .treo-vertical-navigation-item-arrow {\n                        transform: rotate(90deg);\n                    }\n                }\n            }\n        }\n\n        > .treo-vertical-navigation-item-children {\n\n            > *:last-child {\n                padding-bottom: 6px;\n\n                > .treo-vertical-navigation-item-children {\n\n                    > *:last-child {\n                        padding-bottom: 0;\n                    }\n                }\n            }\n\n            .treo-vertical-navigation-item {\n                padding: 10px 24px;\n            }\n        }\n\n        // 1st level\n        .treo-vertical-navigation-item-children {\n            overflow: hidden;\n\n            .treo-vertical-navigation-item {\n                padding-left: 64px;\n            }\n\n            // 2nd level\n            .treo-vertical-navigation-item-children {\n\n                .treo-vertical-navigation-item {\n                    padding-left: 80px;\n                }\n\n                // 3rd level\n                .treo-vertical-navigation-item-children {\n\n                    .treo-vertical-navigation-item {\n                        padding-left: 96px;\n                    }\n\n                    // 4th level\n                    .treo-vertical-navigation-item-children {\n\n                        .treo-vertical-navigation-item {\n                            padding-left: 112px;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Divider\n    treo-vertical-navigation-divider-item {\n        margin: 12px 0;\n\n        .treo-vertical-navigation-item-wrapper {\n            height: 1px;\n            box-shadow: 0 1px 0 0;\n        }\n    }\n\n    // Group\n    treo-vertical-navigation-group-item {\n\n        > .treo-vertical-navigation-item-wrapper {\n\n            .treo-vertical-navigation-item {\n\n                .treo-vertical-navigation-item-badge,\n                .treo-vertical-navigation-item-icon {\n                    display: none !important;\n                }\n\n                .treo-vertical-navigation-item-title {\n                    font-size: 12px;\n                    font-weight: 600;\n                    letter-spacing: 0.05em;\n                    text-transform: uppercase;\n                }\n            }\n        }\n    }\n\n    // Spacer\n    treo-vertical-navigation-spacer-item {\n        margin: 6px 0;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ [inner]\n    // -----------------------------------------------------------------------------------------------------\n    &.treo-vertical-navigation-inner {\n        position: relative;\n        width: auto;\n        min-width: 0;\n        max-width: none;\n        height: auto;\n        min-height: 0;\n        max-height: none;\n        box-shadow: none;\n\n        .treo-vertical-navigation-wrapper {\n            position: relative;\n            overflow: visible;\n            height: auto;\n\n            .treo-vertical-navigation-content {\n                overflow: visible !important;\n            }\n        }\n    }\n}\n\n// Overlay\n.treo-vertical-navigation-overlay {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    z-index: 170;\n    opacity: 0;\n    background-color: rgba(0, 0, 0, 0.6);\n\n    + .treo-vertical-navigation-aside-overlay {\n        background-color: transparent;\n    }\n}\n\n// Aside overlay\n.treo-vertical-navigation-aside-overlay {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    z-index: 169;\n    opacity: 0;\n    background-color: rgba(0, 0, 0, 0.3);\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    treo-vertical-navigation {\n\n        // Wrapper\n        .treo-vertical-navigation-wrapper {\n            background: inherit;\n        }\n\n        // Aside wrapper\n        .treo-vertical-navigation-aside-wrapper {\n            background: inherit;\n        }\n\n        // Navigation items common\n        .treo-vertical-navigation-item {\n            color: currentColor;\n\n            // Normal state\n            .treo-vertical-navigation-item-icon {\n                color: treo-color('cool-gray', 400);\n            }\n\n            .treo-vertical-navigation-item-title {\n                @if ($is-dark) {\n                    color: treo-color('cool-gray', 300);\n                } @else {\n                    color: treo-color('cool-gray', 600);\n                }\n            }\n\n            .treo-vertical-navigation-item-subtitle {\n                @if ($is-dark) {\n                    color: treo-color('cool-gray', 400);\n                } @else {\n                    color: treo-color('cool-gray', 500);\n                }\n            }\n\n            // Active state\n            &.treo-vertical-navigation-item-active:not(.treo-vertical-navigation-item-disabled) {\n                @if ($is-dark) {\n                    background-color: rgba(0, 0, 0, 0.25);\n                } @else {\n                    background-color: treo-color('cool-gray', 100);\n                }\n\n                .treo-vertical-navigation-item-icon {\n                    @if ($is-dark) {\n                        color: treo-color('cool-gray', 100);\n                    } @else {\n                        color: treo-color('cool-gray', 500);\n                    }\n                }\n\n                .treo-vertical-navigation-item-title {\n                    @if ($is-dark) {\n                        color: treo-color('cool-gray', 50);\n                    } @else {\n                        color: treo-color('cool-gray', 900);\n                    }\n                }\n\n                .treo-vertical-navigation-item-subtitle {\n                    @if ($is-dark) {\n                        color: treo-color('cool-gray', 300);\n                    } @else {\n                        color: treo-color('cool-gray', 700);\n                    }\n                }\n            }\n\n            // Disabled state\n            &.treo-vertical-navigation-item-disabled {\n                cursor: default;\n\n                .treo-vertical-navigation-item-icon,\n                .treo-vertical-navigation-item-title,\n                .treo-vertical-navigation-item-subtitle,\n                .treo-vertical-navigation-item-arrow {\n                    @if ($is-dark) {\n                        color: treo-color('cool-gray', 600);\n                    } @else {\n                        color: treo-color('cool-gray', 300);\n                    }\n                }\n            }\n        }\n\n        // Aside, Basic, Collapsable\n        treo-vertical-navigation-aside-item,\n        treo-vertical-navigation-basic-item,\n        treo-vertical-navigation-collapsable-item {\n\n            > .treo-vertical-navigation-item-wrapper {\n\n                .treo-vertical-navigation-item {\n\n                    // Hover state\n                    &:hover:not(.treo-vertical-navigation-item-active):not(.treo-vertical-navigation-item-disabled) {\n                        @if ($is-dark) {\n                            background-color: rgba(0, 0, 0, 0.25);\n                        } @else {\n                            background-color: treo-color('gray', 50);\n                        }\n\n                        .treo-vertical-navigation-item-icon {\n                            @if ($is-dark) {\n                                color: treo-color('cool-gray', 100);\n                            } @else {\n                                color: treo-color('cool-gray', 500);\n                            }\n                        }\n\n                        .treo-vertical-navigation-item-title,\n                        .treo-vertical-navigation-item-arrow {\n                            @if ($is-dark) {\n                                color: treo-color('cool-gray', 50);\n                            } @else {\n                                color: treo-color('cool-gray', 900);\n                            }\n                        }\n\n                        .treo-vertical-navigation-item-subtitle {\n                            @if ($is-dark) {\n                                color: treo-color('cool-gray', 300);\n                            } @else {\n                                color: treo-color('cool-gray', 700);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        // Collapsable - Expanded state\n        treo-vertical-navigation-collapsable-item {\n\n            &.treo-vertical-navigation-item-expanded {\n\n                > .treo-vertical-navigation-item-wrapper {\n\n                    .treo-vertical-navigation-item {\n\n                        .treo-vertical-navigation-item-icon {\n                            @if ($is-dark) {\n                                color: treo-color('cool-gray', 100);\n                            } @else {\n                                color: treo-color('cool-gray', 500);\n                            }\n                        }\n\n                        .treo-vertical-navigation-item-title,\n                        .treo-vertical-navigation-item-arrow {\n                            @if ($is-dark) {\n                                color: treo-color('cool-gray', 50);\n                            } @else {\n                                color: treo-color('cool-gray', 900);\n                            }\n                        }\n\n                        .treo-vertical-navigation-item-subtitle {\n                            @if ($is-dark) {\n                                color: treo-color('cool-gray', 300);\n                            } @else {\n                                color: treo-color('cool-gray', 700);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        // Group - Normal state\n        treo-vertical-navigation-group-item {\n\n            > .treo-vertical-navigation-item-wrapper {\n\n                .treo-vertical-navigation-item {\n\n                    .treo-vertical-navigation-item-icon {\n                        color: treo-color('cool-gray', 400);\n                    }\n\n                    .treo-vertical-navigation-item-title {\n                        @if ($is-dark) {\n                            color: map-get($primary, 400);\n                        } @else {\n                            color: map-get($primary, 600);\n                        }\n                    }\n\n                    .treo-vertical-navigation-item-subtitle {\n                        color: treo-color('cool-gray', 500);\n                    }\n                }\n            }\n        }\n\n        // DARK THEME\n        &.theme-dark {\n\n            // Navigation items common\n            .treo-vertical-navigation-item {\n\n                .treo-vertical-navigation-item-title {\n                    color: treo-color('cool-gray', 300);\n                }\n\n                .treo-vertical-navigation-item-subtitle {\n                    color: treo-color('cool-gray', 400);\n                }\n\n                // Active state\n                &.treo-vertical-navigation-item-active:not(.treo-vertical-navigation-item-disabled) {\n                    background-color: rgba(0, 0, 0, 0.25);\n\n                    .treo-vertical-navigation-item-icon {\n                        color: treo-color('cool-gray', 100);\n                    }\n\n                    .treo-vertical-navigation-item-title {\n                        color: treo-color('cool-gray', 50);\n                    }\n\n                    .treo-vertical-navigation-item-subtitle {\n                        color: treo-color('cool-gray', 300);\n                    }\n                }\n\n                // Disabled state\n                &.treo-vertical-navigation-item-disabled {\n                    cursor: default;\n\n                    .treo-vertical-navigation-item-icon,\n                    .treo-vertical-navigation-item-title,\n                    .treo-vertical-navigation-item-subtitle,\n                    .treo-vertical-navigation-item-arrow {\n                        color: treo-color('cool-gray', 600);\n                    }\n                }\n            }\n\n            // Aside, Basic, Collapsable\n            treo-vertical-navigation-aside-item,\n            treo-vertical-navigation-basic-item,\n            treo-vertical-navigation-collapsable-item {\n\n                > .treo-vertical-navigation-item-wrapper {\n\n                    .treo-vertical-navigation-item {\n\n                        // Hover state\n                        &:hover:not(.treo-vertical-navigation-item-active):not(.treo-vertical-navigation-item-disabled) {\n                            background-color: rgba(0, 0, 0, 0.25);\n\n                            .treo-vertical-navigation-item-icon {\n                                color: treo-color('cool-gray', 100);\n                            }\n\n                            .treo-vertical-navigation-item-title,\n                            .treo-vertical-navigation-item-arrow {\n                                color: treo-color('cool-gray', 50);\n                            }\n\n                            .treo-vertical-navigation-item-subtitle {\n                                color: treo-color('cool-gray', 300);\n                            }\n                        }\n                    }\n                }\n            }\n\n            // Collapsable - Expanded state\n            treo-vertical-navigation-collapsable-item {\n\n                &.treo-vertical-navigation-item-expanded {\n\n                    > .treo-vertical-navigation-item-wrapper {\n\n                        .treo-vertical-navigation-item {\n\n                            .treo-vertical-navigation-item-icon {\n                                color: treo-color('cool-gray', 100);\n                            }\n\n                            .treo-vertical-navigation-item-title,\n                            .treo-vertical-navigation-item-arrow {\n                                color: treo-color('cool-gray', 50);\n                            }\n\n                            .treo-vertical-navigation-item-subtitle {\n                                color: treo-color('cool-gray', 300);\n                            }\n                        }\n                    }\n                }\n            }\n\n            // Group - Normal state\n            treo-vertical-navigation-group-item {\n\n                > .treo-vertical-navigation-item-wrapper {\n\n                    .treo-vertical-navigation-item {\n\n                        .treo-vertical-navigation-item-title {\n                            color: map-get($primary, 400);\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/components/navigation/vertical/vertical.component.ts",
    "content": "import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, OnInit, Output, QueryList, Renderer2, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { BehaviorSubject, merge, Subject, Subscription } from 'rxjs';\nimport { delay, filter, takeUntil } from 'rxjs/operators';\nimport { TreoAnimations } from '@treo/animations';\nimport { TreoVerticalNavigationAppearance, TreoNavigationItem, TreoVerticalNavigationMode, TreoVerticalNavigationPosition } from '@treo/components/navigation/navigation.types';\nimport { TreoNavigationService } from '@treo/components/navigation/navigation.service';\nimport { TreoScrollbarDirective } from '@treo/directives/scrollbar/scrollbar.directive';\n\n@Component({\n    selector       : 'treo-vertical-navigation',\n    templateUrl    : './vertical.component.html',\n    styleUrls      : ['./vertical.component.scss'],\n    animations     : TreoAnimations,\n    encapsulation  : ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs       : 'treoVerticalNavigation'\n})\nexport class TreoVerticalNavigationComponent implements OnInit, AfterViewInit, OnDestroy\n{\n    activeAsideItemId: null | string;\n    onCollapsableItemCollapsed: BehaviorSubject<TreoNavigationItem | null>;\n    onCollapsableItemExpanded: BehaviorSubject<TreoNavigationItem | null>;\n    onRefreshed: BehaviorSubject<boolean | null>;\n\n    // Auto collapse\n    @Input()\n    autoCollapse: boolean;\n\n    // Name\n    @Input()\n    name: string;\n\n    // On appearance changed\n    @Output()\n    readonly appearanceChanged: EventEmitter<TreoVerticalNavigationAppearance>;\n\n    // On mode changed\n    @Output()\n    readonly modeChanged: EventEmitter<TreoVerticalNavigationMode>;\n\n    // On opened changed\n    @Output()\n    readonly openedChanged: EventEmitter<boolean | ''>;\n\n    // On position changed\n    @Output()\n    readonly positionChanged: EventEmitter<TreoVerticalNavigationPosition>;\n\n    // Private\n    private _appearance: TreoVerticalNavigationAppearance;\n    private _asideOverlay: HTMLElement | null;\n    private _treoScrollbarDirectives: QueryList<TreoScrollbarDirective>;\n    private _treoScrollbarDirectivesSubscription: Subscription;\n    private _handleAsideOverlayClick: any;\n    private _handleOverlayClick: any;\n    private _inner: boolean;\n    private _mode: TreoVerticalNavigationMode;\n    private _navigation: TreoNavigationItem[];\n    private _opened: boolean | '';\n    private _overlay: HTMLElement | null;\n    private _player: AnimationPlayer;\n    private _position: TreoVerticalNavigationPosition;\n    private _scrollStrategy: ScrollStrategy;\n    private _transparentOverlay: boolean | '';\n    private _unsubscribeAll: Subject<void>;\n\n    @HostBinding('class.treo-vertical-navigation-animations-enabled')\n    private _animationsEnabled: boolean;\n\n    @ViewChild('navigationContent')\n    private _navigationContentEl: ElementRef;\n\n    /**\n     * Constructor\n     *\n     * @param {AnimationBuilder} _animationBuilder\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {ChangeDetectorRef} _changeDetectorRef\n     * @param {ElementRef} _elementRef\n     * @param {Renderer2} _renderer2\n     * @param {Router} _router\n     * @param {ScrollStrategyOptions} _scrollStrategyOptions\n     */\n    constructor(\n        private _animationBuilder: AnimationBuilder,\n        private _treoNavigationService: TreoNavigationService,\n        private _changeDetectorRef: ChangeDetectorRef,\n        private _elementRef: ElementRef,\n        private _renderer2: Renderer2,\n        private _router: Router,\n        private _scrollStrategyOptions: ScrollStrategyOptions\n    )\n    {\n        // Set the private defaults\n        this._animationsEnabled = false;\n        this._asideOverlay = null;\n        this._handleAsideOverlayClick = () => {\n            this.closeAside();\n        };\n        this._handleOverlayClick = () => {\n            this.close();\n        };\n        this._overlay = null;\n        this._scrollStrategy = this._scrollStrategyOptions.block();\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.appearanceChanged = new EventEmitter<TreoVerticalNavigationAppearance>();\n        this.modeChanged = new EventEmitter<TreoVerticalNavigationMode>();\n        this.openedChanged = new EventEmitter<boolean | ''>();\n        this.positionChanged = new EventEmitter<TreoVerticalNavigationPosition>();\n\n        this.onCollapsableItemCollapsed = new BehaviorSubject(null);\n        this.onCollapsableItemExpanded = new BehaviorSubject(null);\n        this.onRefreshed = new BehaviorSubject(null);\n\n        this.activeAsideItemId = null;\n        this.appearance = 'classic';\n        this.autoCollapse = true;\n        this.inner = false;\n        this.mode = 'side';\n        this.opened = false;\n        this.position = 'left';\n        this.transparentOverlay = false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter & getter for appearance\n     *\n     * @param value\n     */\n    @Input()\n    set appearance(value: TreoVerticalNavigationAppearance)\n    {\n        // If the value is the same, return...\n        if ( this._appearance === value )\n        {\n            return;\n        }\n\n        let appearanceClassName;\n\n        // Remove the previous appearance class\n        appearanceClassName = 'treo-vertical-navigation-appearance-' + this.appearance;\n        this._renderer2.removeClass(this._elementRef.nativeElement, appearanceClassName);\n\n        // Store the appearance\n        this._appearance = value;\n\n        // Add the new appearance class\n        appearanceClassName = 'treo-vertical-navigation-appearance-' + this.appearance;\n        this._renderer2.addClass(this._elementRef.nativeElement, appearanceClassName);\n\n        // Execute the observable\n        this.appearanceChanged.next(this.appearance);\n    }\n\n    get appearance(): TreoVerticalNavigationAppearance\n    {\n        return this._appearance;\n    }\n\n    /**\n     * Setter for treoScrollbarDirectives\n     */\n    @ViewChildren(TreoScrollbarDirective)\n    set treoScrollbarDirectives(treoScrollbarDirectives: QueryList<TreoScrollbarDirective>)\n    {\n        // Store the directives\n        this._treoScrollbarDirectives = treoScrollbarDirectives;\n\n        // Return, if there are no directives\n        if ( treoScrollbarDirectives.length === 0 )\n        {\n            return;\n        }\n\n        // Unsubscribe the previous subscriptions\n        if ( this._treoScrollbarDirectivesSubscription )\n        {\n            this._treoScrollbarDirectivesSubscription.unsubscribe();\n        }\n\n        // Update the scrollbars on collapsable items' collapse/expand\n        this._treoScrollbarDirectivesSubscription =\n            merge(\n                this.onCollapsableItemCollapsed,\n                this.onCollapsableItemExpanded\n            )\n                .pipe(\n                    takeUntil(this._unsubscribeAll),\n                    delay(250)\n                )\n                .subscribe(() => {\n\n                    // Loop through the scrollbars and update them\n                    treoScrollbarDirectives.forEach((treoScrollbarDirective) => {\n                        treoScrollbarDirective.update();\n                    });\n                });\n    }\n\n    /**\n     * Setter & getter for data\n     */\n    @Input()\n    set navigation(value: TreoNavigationItem[])\n    {\n        // Store the data\n        this._navigation = value;\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n    }\n\n    get navigation(): TreoNavigationItem[]\n    {\n        return this._navigation;\n    }\n\n    /**\n     * Setter & getter for inner\n     *\n     * @param value\n     */\n    @Input()\n    set inner(value: boolean)\n    {\n        // If the value is the same, return...\n        if ( this._inner === value )\n        {\n            return;\n        }\n\n        // Set the naked value\n        this._inner = value;\n\n        // Update the class\n        if ( this.inner )\n        {\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-vertical-navigation-inner');\n        }\n        else\n        {\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-vertical-navigation-inner');\n        }\n    }\n\n    get inner(): boolean\n    {\n        return this._inner;\n    }\n\n    /**\n     * Setter & getter for mode\n     *\n     * @param value\n     */\n    @Input()\n    set mode(value: TreoVerticalNavigationMode)\n    {\n        // If the value is the same, return...\n        if ( this._mode === value )\n        {\n            return;\n        }\n\n        // Disable the animations\n        this._disableAnimations();\n\n        // If the mode changes: 'over -> side'\n        if ( this.mode === 'over' && value === 'side' )\n        {\n            // Hide the overlay\n            this._hideOverlay();\n        }\n\n        // If the mode changes: 'side -> over'\n        if ( this.mode === 'side' && value === 'over' )\n        {\n            // Close the aside\n            this.closeAside();\n\n            // If the navigation is opened\n            if ( this.opened )\n            {\n                // Show the overlay\n                this._showOverlay();\n            }\n        }\n\n        let modeClassName;\n\n        // Remove the previous mode class\n        modeClassName = 'treo-vertical-navigation-mode-' + this.mode;\n        this._renderer2.removeClass(this._elementRef.nativeElement, modeClassName);\n\n        // Store the mode\n        this._mode = value;\n\n        // Add the new mode class\n        modeClassName = 'treo-vertical-navigation-mode-' + this.mode;\n        this._renderer2.addClass(this._elementRef.nativeElement, modeClassName);\n\n        // Execute the observable\n        this.modeChanged.next(this.mode);\n\n        // Enable the animations after a delay\n        // The delay must be bigger than the current transition-duration\n        // to make sure nothing will be animated while the mode changing\n        setTimeout(() => {\n            this._enableAnimations();\n        }, 500);\n    }\n\n    get mode(): TreoVerticalNavigationMode\n    {\n        return this._mode;\n    }\n\n    /**\n     * Setter & getter for opened\n     *\n     * @param value\n     */\n    @Input()\n    set opened(value: boolean | '')\n    {\n        // If the value is the same, return...\n        if ( this._opened === value )\n        {\n            return;\n        }\n\n        // If the provided value is an empty string,\n        // take that as a 'true'\n        if ( value === '' )\n        {\n            value = true;\n        }\n\n        // Set the opened value\n        this._opened = value;\n\n        // If the navigation opened, and the mode\n        // is 'over', show the overlay\n        if ( this.mode === 'over' )\n        {\n            if ( this._opened )\n            {\n                this._showOverlay();\n            }\n            else\n            {\n                this._hideOverlay();\n            }\n        }\n\n        if ( this.opened )\n        {\n            // Update styles and classes\n            this._renderer2.setStyle(this._elementRef.nativeElement, 'visibility', 'visible');\n            this._renderer2.addClass(this._elementRef.nativeElement, 'treo-vertical-navigation-opened');\n        }\n        else\n        {\n            // Update styles and classes\n            this._renderer2.setStyle(this._elementRef.nativeElement, 'visibility', 'hidden');\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-vertical-navigation-opened');\n        }\n\n        // Execute the observable\n        this.openedChanged.next(this.opened);\n    }\n\n    get opened(): boolean | ''\n    {\n        return this._opened;\n    }\n\n    /**\n     * Setter & getter for position\n     *\n     * @param value\n     */\n    @Input()\n    set position(value: TreoVerticalNavigationPosition)\n    {\n        // If the value is the same, return...\n        if ( this._position === value )\n        {\n            return;\n        }\n\n        let positionClassName;\n\n        // Remove the previous position class\n        positionClassName = 'treo-vertical-navigation-position-' + this.position;\n        this._renderer2.removeClass(this._elementRef.nativeElement, positionClassName);\n\n        // Store the position\n        this._position = value;\n\n        // Add the new position class\n        positionClassName = 'treo-vertical-navigation-position-' + this.position;\n        this._renderer2.addClass(this._elementRef.nativeElement, positionClassName);\n\n        // Execute the observable\n        this.positionChanged.next(this.position);\n    }\n\n    get position(): TreoVerticalNavigationPosition\n    {\n        return this._position;\n    }\n\n    /**\n     * Setter & getter for transparent overlay\n     *\n     * @param value\n     */\n    @Input()\n    set transparentOverlay(value: boolean | '')\n    {\n        // If the value is the same, return...\n        if ( this._opened === value )\n        {\n            return;\n        }\n\n        // If the provided value is an empty string,\n        // take that as a 'true' and set the opened value\n        if ( value === '' )\n        {\n            // Set the opened value\n            this._transparentOverlay = true;\n        }\n        else\n        {\n            // Set the transparent overlay value\n            this._transparentOverlay = value;\n        }\n    }\n\n    get transparentOverlay(): boolean | ''\n    {\n        return this._transparentOverlay;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Register the navigation component\n        this._treoNavigationService.registerComponent(this.name, this);\n\n        // Subscribe to the 'NavigationEnd' event\n        this._router.events\n            .pipe(\n                filter(event => event instanceof NavigationEnd),\n                takeUntil(this._unsubscribeAll)\n            )\n            .subscribe(() => {\n\n                if ( this.mode === 'over' && this.opened )\n                {\n                    // Close the navigation\n                    this.close();\n                }\n            });\n    }\n\n    /**\n     * After view init\n     */\n    ngAfterViewInit(): void\n    {\n        setTimeout(() => {\n\n            // If 'navigation content' element doesn't have\n            // perfect scrollbar activated on it...\n            if ( !this._navigationContentEl.nativeElement.classList.contains('ps') )\n            {\n                // Find the active item\n                const activeItem = this._navigationContentEl.nativeElement.querySelector('.treo-vertical-navigation-item-active');\n\n                // If the active item exists, scroll it into view\n                if ( activeItem )\n                {\n                    activeItem.scrollIntoView();\n                }\n            }\n            // Otherwise\n            else\n            {\n                // Go through all the scrollbar directives\n                this._treoScrollbarDirectives.forEach((treoScrollbarDirective) => {\n\n                    // Skip if not enabled\n                    if ( !treoScrollbarDirective.enabled )\n                    {\n                        return;\n                    }\n\n                    // Scroll to the active element\n                    treoScrollbarDirective.scrollToElement('.treo-vertical-navigation-item-active', -120, true);\n                });\n            }\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Deregister the navigation component from the registry\n        this._treoNavigationService.deregisterComponent(this.name);\n\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Enable the animations\n     *\n     * @private\n     */\n    private _enableAnimations(): void\n    {\n        // If the animations are already enabled, return...\n        if ( this._animationsEnabled )\n        {\n            return;\n        }\n\n        // Enable the animations\n        this._animationsEnabled = true;\n    }\n\n    /**\n     * Disable the animations\n     *\n     * @private\n     */\n    private _disableAnimations(): void\n    {\n        // If the animations are already disabled, return...\n        if ( !this._animationsEnabled )\n        {\n            return;\n        }\n\n        // Disable the animations\n        this._animationsEnabled = false;\n    }\n\n    /**\n     * Show the overlay\n     *\n     * @private\n     */\n    private _showOverlay(): void\n    {\n        // If there is already an overlay, return...\n        if ( this._asideOverlay )\n        {\n            return;\n        }\n\n        // Create the overlay element\n        this._overlay = this._renderer2.createElement('div');\n\n        // Add a class to the overlay element\n        this._overlay.classList.add('treo-vertical-navigation-overlay');\n\n        // Add a class depending on the transparentOverlay option\n        if ( this.transparentOverlay )\n        {\n            this._overlay.classList.add('treo-vertical-navigation-overlay-transparent');\n        }\n\n        // Append the overlay to the parent of the navigation\n        this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\n\n        // Enable block scroll strategy\n        this._scrollStrategy.enable();\n\n        // Create the enter animation and attach it to the player\n        this._player =\n            this._animationBuilder\n                .build([\n                    animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({opacity: 1}))\n                ]).create(this._overlay);\n\n        // Play the animation\n        this._player.play();\n\n        // Add an event listener to the overlay\n        this._overlay.addEventListener('click', this._handleOverlayClick);\n    }\n\n    /**\n     * Hide the overlay\n     *\n     * @private\n     */\n    private _hideOverlay(): void\n    {\n        if ( !this._overlay )\n        {\n            return;\n        }\n\n        // Create the leave animation and attach it to the player\n        this._player =\n            this._animationBuilder\n                .build([\n                    animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({opacity: 0}))\n                ]).create(this._overlay);\n\n        // Play the animation\n        this._player.play();\n\n        // Once the animation is done...\n        this._player.onDone(() => {\n\n            // If the overlay still exists...\n            if ( this._overlay )\n            {\n                // Remove the event listener\n                this._overlay.removeEventListener('click', this._handleOverlayClick);\n\n                // Remove the overlay\n                this._overlay.parentNode.removeChild(this._overlay);\n                this._overlay = null;\n            }\n\n            // Disable block scroll strategy\n            this._scrollStrategy.disable();\n        });\n    }\n\n    /**\n     * Show the aside overlay\n     *\n     * @private\n     */\n    private _showAsideOverlay(): void\n    {\n        // If there is already an overlay, return...\n        if ( this._asideOverlay )\n        {\n            return;\n        }\n\n        // Create the aside overlay element\n        this._asideOverlay = this._renderer2.createElement('div');\n\n        // Add a class to the aside overlay element\n        this._asideOverlay.classList.add('treo-vertical-navigation-aside-overlay');\n\n        // Append the aside overlay to the parent of the navigation\n        this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\n\n        // Create the enter animation and attach it to the player\n        this._player =\n            this._animationBuilder\n                .build([\n                    animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({opacity: 1}))\n                ]).create(this._asideOverlay);\n\n        // Play the animation\n        this._player.play();\n\n        // Add an event listener to the aside overlay\n        this._asideOverlay.addEventListener('click', this._handleAsideOverlayClick);\n    }\n\n    /**\n     * Hide the aside overlay\n     *\n     * @private\n     */\n    private _hideAsideOverlay(): void\n    {\n        if ( !this._asideOverlay )\n        {\n            return;\n        }\n\n        // Create the leave animation and attach it to the player\n        this._player =\n            this._animationBuilder\n                .build([\n                    animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({opacity: 0}))\n                ]).create(this._asideOverlay);\n\n        // Play the animation\n        this._player.play();\n\n        // Once the animation is done...\n        this._player.onDone(() => {\n\n            // If the aside overlay still exists...\n            if ( this._asideOverlay )\n            {\n                // Remove the event listener\n                this._asideOverlay.removeEventListener('click', this._handleAsideOverlayClick);\n\n                // Remove the aside overlay\n                this._asideOverlay.parentNode.removeChild(this._asideOverlay);\n                this._asideOverlay = null;\n            }\n        });\n    }\n\n    /**\n     * On mouseenter\n     *\n     * @private\n     */\n    @HostListener('mouseenter')\n    private _onMouseenter(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Add a class\n        this._renderer2.addClass(this._elementRef.nativeElement, 'treo-vertical-navigation-hover');\n    }\n\n    /**\n     * On mouseleave\n     *\n     * @private\n     */\n    @HostListener('mouseleave')\n    private _onMouseleave(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Remove the class\n        this._renderer2.removeClass(this._elementRef.nativeElement, 'treo-vertical-navigation-hover');\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Refresh the component to apply the changes\n     */\n    refresh(): void\n    {\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n\n        // Execute the observable\n        this.onRefreshed.next(true);\n    }\n\n    /**\n     * Open the navigation\n     */\n    open(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Open\n        this.opened = true;\n    }\n\n    /**\n     * Close the navigation\n     */\n    close(): void\n    {\n        // Enable the animations\n        this._enableAnimations();\n\n        // Close the aside\n        this.closeAside();\n\n        // Close\n        this.opened = false;\n    }\n\n    /**\n     * Toggle the opened status\n     */\n    toggle(): void\n    {\n        // Toggle\n        if ( this.opened )\n        {\n            this.close();\n        }\n        else\n        {\n            this.open();\n        }\n    }\n\n    /**\n     * Open the aside\n     *\n     * @param item\n     */\n    openAside(item: TreoNavigationItem): void\n    {\n        // Return if the item is disabled\n        if ( item.disabled )\n        {\n            return;\n        }\n\n        // Open\n        this.activeAsideItemId = item.id;\n\n        // Show the aside overlay\n        this._showAsideOverlay();\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /**\n     * Close the aside\n     */\n    closeAside(): void\n    {\n        // Close\n        this.activeAsideItemId = null;\n\n        // Hide the aside overlay\n        this._hideAsideOverlay();\n\n        // Mark for check\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /**\n     * Toggle the aside\n     *\n     * @param item\n     */\n    toggleAside(item: TreoNavigationItem): void\n    {\n        // Toggle\n        if ( this.activeAsideItemId === item.id )\n        {\n            this.closeAside();\n        }\n        else\n        {\n            this.openAside(item);\n        }\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/autogrow/autogrow.directive.ts",
    "content": "import { Directive, ElementRef, HostBinding, HostListener, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Directive({\n    selector: 'textarea[treoAutogrow]',\n    exportAs: 'treoAutogrow'\n})\nexport class TreoAutogrowDirective implements OnInit, OnDestroy\n{\n    @HostBinding('rows')\n    rows: number;\n\n    // Private\n    private _padding: number;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {ElementRef} _elementRef\n     * @param {Renderer2} _renderer2\n     */\n    constructor(\n        private _elementRef: ElementRef,\n        private _renderer2: Renderer2\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.padding = 8;\n        this.rows = 1;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for padding\n     *\n     * @param value\n     */\n    @Input('treoAutogrowVerticalPadding')\n    set padding(value)\n    {\n        // Store the value\n        this._padding = value;\n    }\n\n    get padding(): number\n    {\n        return this._padding;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Set base styles\n        this._renderer2.setStyle(this._elementRef.nativeElement, 'resize', 'none');\n        this._renderer2.setStyle(this._elementRef.nativeElement, 'overflow', 'hidden');\n\n        // Set the height for the first time\n        setTimeout(() => {\n            this._resize();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Resize on 'input' and 'ngModelChange' events\n     *\n     * @private\n     */\n    @HostListener('input')\n    @HostListener('ngModelChange')\n    private _resize(): void\n    {\n        // Set the height to 'auto' so we can correctly read the scrollHeight\n        this._renderer2.setStyle(this._elementRef.nativeElement, 'height', 'auto');\n\n        // Get the scrollHeight and subtract the vertical padding\n        const height = this._elementRef.nativeElement.scrollHeight - this.padding + 'px';\n        this._renderer2.setStyle(this._elementRef.nativeElement, 'height', height);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/autogrow/autogrow.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { TreoAutogrowDirective } from '@treo/directives/autogrow/autogrow.directive';\n\n@NgModule({\n    declarations: [\n        TreoAutogrowDirective\n    ],\n    exports     : [\n        TreoAutogrowDirective\n    ]\n})\nexport class TreoAutogrowModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/autogrow/index.ts",
    "content": "export * from '@treo/directives/autogrow/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/autogrow/public-api.ts",
    "content": "export * from '@treo/directives/autogrow/autogrow.directive';\nexport * from '@treo/directives/autogrow/autogrow.module';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/scrollbar/index.ts",
    "content": "export * from '@treo/directives/scrollbar/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/scrollbar/public-api.ts",
    "content": "export * from '@treo/directives/scrollbar/scrollbar.directive';\nexport * from '@treo/directives/scrollbar/scrollbar.module';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/scrollbar/scrollbar.directive.ts",
    "content": "import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Platform } from '@angular/cdk/platform';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport * as _ from 'lodash';\nimport { ScrollbarGeometry, ScrollbarPosition } from '@treo/directives/scrollbar/scrollbar.interfaces';\n\n// -----------------------------------------------------------------------------------------------------\n// Wrapper directive for the Perfect Scrollbar: https://github.com/mdbootstrap/perfect-scrollbar\n// Based on https://github.com/zefoy/ngx-perfect-scrollbar\n// -----------------------------------------------------------------------------------------------------\n@Directive({\n    selector: '[treoScrollbar]',\n    exportAs: 'treoScrollbar'\n})\nexport class TreoScrollbarDirective implements OnInit, OnDestroy\n{\n    isMobile: boolean;\n    ps: PerfectScrollbar | any;\n\n    // Private\n    private _animation: number | null;\n    private _enabled: boolean;\n    private _options: any;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {ElementRef} _elementRef\n     * @param {Platform} _platform\n     * @param {Router} _router\n     */\n    constructor(\n        private _elementRef: ElementRef,\n        private _platform: Platform,\n        private _router: Router\n    )\n    {\n        // Set the private defaults\n        this._animation = null;\n        this._options = {};\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.enabled = true;\n        this.isMobile = false;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Scrollbar options\n     *\n     * @param value\n     */\n    @Input()\n    set treoScrollbarOptions(value: any)\n    {\n        // Merge the options\n        this._options = _.merge({}, this._options, value);\n\n        // Destroy and re-init the PerfectScrollbar to update its options\n        setTimeout(() => {\n            this._destroy();\n        });\n\n        setTimeout(() => {\n            this._init();\n        });\n    }\n\n    get treoScrollbarOptions(): any\n    {\n        // Return the options\n        return this._options;\n    }\n\n    /**\n     * Is enabled\n     *\n     * @param value\n     */\n    @Input('treoScrollbar')\n    set enabled(value: boolean | '')\n    {\n        // If the value is an empty string, interpret it as 'true'\n        if ( value === '' )\n        {\n            value = true;\n        }\n\n        // If the value is the same, return...\n        if ( this._enabled === value )\n        {\n            return;\n        }\n\n        // Store the value\n        this._enabled = value;\n\n        // If enabled...\n        if ( this.enabled )\n        {\n            // Init the directive\n            this._init();\n        }\n        else\n        {\n            // Otherwise destroy it\n            this._destroy();\n        }\n    }\n\n    get enabled(): boolean | ''\n    {\n        // Return the enabled status\n        return this._enabled;\n    }\n\n    /**\n     * Getter for _elementRef\n     */\n    get elementRef(): ElementRef\n    {\n        return this._elementRef;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to window resize event\n        fromEvent(window, 'resize')\n            .pipe(\n                takeUntil(this._unsubscribeAll),\n                debounceTime(150)\n            )\n            .subscribe(() => {\n\n                // Update the PerfectScrollbar\n                this.update();\n            });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        this._destroy();\n\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Initialize\n     *\n     * @private\n     */\n    private _init(): void\n    {\n        // Return, if already initialized\n        if ( this.ps )\n        {\n            return;\n        }\n\n        // Check if is mobile\n        if ( this._platform.ANDROID || this._platform.IOS )\n        {\n            this.isMobile = true;\n        }\n\n        // Return if it's mobile or the platform is not a browser\n        if ( this.isMobile || !this._platform.isBrowser )\n        {\n            // Silently set the enabled to false\n            this._enabled = false;\n\n            return;\n        }\n\n        // Initialize the PerfectScrollbar\n        this.ps = new PerfectScrollbar(this._elementRef.nativeElement, {...this.treoScrollbarOptions});\n    }\n\n    /**\n     * Destroy\n     *\n     * @private\n     */\n    private _destroy(): void\n    {\n        if ( !this.ps )\n        {\n            return;\n        }\n\n        // Destroy the PerfectScrollbar\n        this.ps.destroy();\n\n        // Clean up\n        this.ps = null;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Update the scrollbar\n     */\n    update(): void\n    {\n        if ( !this.ps )\n        {\n            return;\n        }\n\n        // Update the PerfectScrollbar\n        this.ps.update();\n    }\n\n    /**\n     * Destroy the scrollbar\n     */\n    destroy(): void\n    {\n        this.ngOnDestroy();\n    }\n\n    /**\n     * Returns the geometry of the scrollable element\n     *\n     * @param prefix\n     */\n    geometry(prefix: string = 'scroll'): ScrollbarGeometry\n    {\n        const scrollbarGeometry = new ScrollbarGeometry(\n            this._elementRef.nativeElement[prefix + 'Left'],\n            this._elementRef.nativeElement[prefix + 'Top'],\n            this._elementRef.nativeElement[prefix + 'Width'],\n            this._elementRef.nativeElement[prefix + 'Height']);\n\n        return scrollbarGeometry;\n    }\n\n    /**\n     * Returns the position of the scrollable element\n     *\n     * @param absolute\n     */\n    position(absolute: boolean = false): ScrollbarPosition\n    {\n        let scrollbarPosition;\n\n        if ( !absolute && this.ps )\n        {\n            scrollbarPosition = new ScrollbarPosition(\n                this.ps.reach.x || 0,\n                this.ps.reach.y || 0\n            );\n        }\n        else\n        {\n            scrollbarPosition = new ScrollbarPosition(\n                this._elementRef.nativeElement.scrollLeft,\n                this._elementRef.nativeElement.scrollTop\n            );\n        }\n\n        return scrollbarPosition;\n    }\n\n    /**\n     * Scroll to\n     *\n     * @param x\n     * @param y\n     * @param speed\n     */\n    scrollTo(x: number, y?: number, speed?: number): void\n    {\n        if ( y == null && speed == null )\n        {\n            this.animateScrolling('scrollTop', x, speed);\n        }\n        else\n        {\n            if ( x != null )\n            {\n                this.animateScrolling('scrollLeft', x, speed);\n            }\n\n            if ( y != null )\n            {\n                this.animateScrolling('scrollTop', y, speed);\n            }\n        }\n    }\n\n    /**\n     * Scroll to X\n     *\n     * @param {number} x\n     * @param {number} speed\n     */\n    scrollToX(x: number, speed?: number): void\n    {\n        this.animateScrolling('scrollLeft', x, speed);\n    }\n\n    /**\n     * Scroll to Y\n     *\n     * @param {number} y\n     * @param {number} speed\n     */\n    scrollToY(y: number, speed?: number): void\n    {\n        this.animateScrolling('scrollTop', y, speed);\n    }\n\n    /**\n     * Scroll to top\n     *\n     * @param {number} offset\n     * @param {number} speed\n     */\n    scrollToTop(offset: number = 0, speed?: number): void\n    {\n        this.animateScrolling('scrollTop', offset, speed);\n    }\n\n    /**\n     * Scroll to bottom\n     *\n     * @param {number} offset\n     * @param {number} speed\n     */\n    scrollToBottom(offset: number = 0, speed?: number): void\n    {\n        const top = this._elementRef.nativeElement.scrollHeight - this._elementRef.nativeElement.clientHeight;\n        this.animateScrolling('scrollTop', top - offset, speed);\n    }\n\n    /**\n     * Scroll to left\n     *\n     * @param {number} offset\n     * @param {number} speed\n     */\n    scrollToLeft(offset: number = 0, speed?: number): void\n    {\n        this.animateScrolling('scrollLeft', offset, speed);\n    }\n\n    /**\n     * Scroll to right\n     *\n     * @param {number} offset\n     * @param {number} speed\n     */\n    scrollToRight(offset: number = 0, speed?: number): void\n    {\n        const left = this._elementRef.nativeElement.scrollWidth - this._elementRef.nativeElement.clientWidth;\n        this.animateScrolling('scrollLeft', left - offset, speed);\n    }\n\n    /**\n     * Scroll to element\n     *\n     * @param {string} qs\n     * @param {number} offset\n     * @param {boolean} ignoreVisible If true, scrollToElement won't happen if element is already inside the current viewport\n     * @param {number} speed\n     */\n    scrollToElement(qs: string, offset: number = 0, ignoreVisible: boolean = false, speed?: number): void\n    {\n        const element = this._elementRef.nativeElement.querySelector(qs);\n\n        if ( !element )\n        {\n            return;\n        }\n\n        const elementPos = element.getBoundingClientRect();\n        const scrollerPos = this._elementRef.nativeElement.getBoundingClientRect();\n\n        if ( this._elementRef.nativeElement.classList.contains('ps--active-x') )\n        {\n            if ( ignoreVisible && elementPos.right <= (scrollerPos.right - Math.abs(offset)) )\n            {\n                return;\n            }\n\n            const currentPos = this._elementRef.nativeElement['scrollLeft'];\n            const position = elementPos.left - scrollerPos.left + currentPos;\n\n            this.animateScrolling('scrollLeft', position + offset, speed);\n        }\n\n        if ( this._elementRef.nativeElement.classList.contains('ps--active-y') )\n        {\n            if ( ignoreVisible && elementPos.bottom <= (scrollerPos.bottom - Math.abs(offset)) )\n            {\n                return;\n            }\n\n            const currentPos = this._elementRef.nativeElement['scrollTop'];\n            const position = elementPos.top - scrollerPos.top + currentPos;\n\n            this.animateScrolling('scrollTop', position + offset, speed);\n        }\n    }\n\n    /**\n     * Animate scrolling\n     *\n     * @param target\n     * @param value\n     * @param speed\n     */\n    animateScrolling(target: string, value: number, speed?: number): void\n    {\n        if ( this._animation )\n        {\n            window.cancelAnimationFrame(this._animation);\n            this._animation = null;\n        }\n\n        if ( !speed || typeof window === 'undefined' )\n        {\n            this._elementRef.nativeElement[target] = value;\n        }\n        else if ( value !== this._elementRef.nativeElement[target] )\n        {\n            let newValue = 0;\n            let scrollCount = 0;\n\n            let oldTimestamp = performance.now();\n            let oldValue = this._elementRef.nativeElement[target];\n\n            const cosParameter = (oldValue - value) / 2;\n\n            const step = (newTimestamp: number) => {\n                scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));\n                newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));\n\n                // Only continue animation if scroll position has not changed\n                if ( this._elementRef.nativeElement[target] === oldValue )\n                {\n                    if ( scrollCount >= Math.PI )\n                    {\n                        this.animateScrolling(target, value, 0);\n                    }\n                    else\n                    {\n                        this._elementRef.nativeElement[target] = newValue;\n\n                        // On a zoomed out page the resulting offset may differ\n                        oldValue = this._elementRef.nativeElement[target];\n                        oldTimestamp = newTimestamp;\n\n                        this._animation = window.requestAnimationFrame(step);\n                    }\n                }\n            };\n\n            window.requestAnimationFrame(step);\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/scrollbar/scrollbar.interfaces.ts",
    "content": "export class ScrollbarGeometry\n{\n    public x: number;\n    public y: number;\n\n    public w: number;\n    public h: number;\n\n    constructor(x: number, y: number, w: number, h: number)\n    {\n        this.x = x;\n        this.y = y;\n        this.w = w;\n        this.h = h;\n    }\n}\n\nexport class ScrollbarPosition\n{\n    public x: number | 'start' | 'end';\n    public y: number | 'start' | 'end';\n\n    constructor(x: number | 'start' | 'end', y: number | 'start' | 'end')\n    {\n        this.x = x;\n        this.y = y;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/directives/scrollbar/scrollbar.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { TreoScrollbarDirective } from '@treo/directives/scrollbar/scrollbar.directive';\n\n@NgModule({\n    declarations: [\n        TreoScrollbarDirective\n    ],\n    exports     : [\n        TreoScrollbarDirective\n    ]\n})\nexport class TreoScrollbarModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/index.ts",
    "content": "export * from './treo.module';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/lib/mock-api/index.ts",
    "content": "export * from '@treo/lib/mock-api/mock-api.module';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/lib/mock-api/mock-api.interceptor.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, of, throwError } from 'rxjs';\nimport { delay, switchMap } from 'rxjs/operators';\nimport { TreoMockApiRequestHandler } from '@treo/lib/mock-api/mock-api.request-handler';\nimport { TreoMockApiService } from '@treo/lib/mock-api/mock-api.service';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreoMockApiInterceptor implements HttpInterceptor\n{\n    /**\n     * Constructor\n     *\n     * @param {TreoMockApiService} _treoMockApiService\n     */\n    constructor(\n        private _treoMockApiService: TreoMockApiService\n    )\n    {\n    }\n\n    /**\n     * Intercept\n     *\n     * @param request\n     * @param next\n     */\n    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>\n    {\n        // Try to get the request handler\n        const requestHandler: TreoMockApiRequestHandler = this._treoMockApiService.requestHandlers[request.method.toLowerCase()].get(request.url);\n\n        // If the request handler exists..\n        if ( requestHandler )\n        {\n            // Set the intercepted request on the requestHandler\n            requestHandler.interceptedRequest = request;\n\n            // Subscribe to the reply function observable\n            return requestHandler.replyCallback.pipe(\n                delay(requestHandler.delay),\n                switchMap((response) => {\n\n                    // Throw a not found response, if there is no response data\n                    if ( !response )\n                    {\n                        response = new HttpErrorResponse({\n                            error     : 'NOT FOUND',\n                            status    : 404,\n                            statusText: 'NOT FOUND'\n                        });\n\n                        return throwError(response);\n                    }\n\n                    // Parse the response data\n                    const data = {\n                        status: response[0],\n                        body  : response[1]\n                    };\n\n                    // If the status is in between 200 and 300,\n                    // it's a success response\n                    if ( data.status >= 200 && data.status < 300 )\n                    {\n                        response = new HttpResponse({\n                            body      : data.body,\n                            status    : data.status,\n                            statusText: 'OK'\n                        });\n\n                        return of(response);\n                    }\n\n                    // Error response\n                    response = new HttpErrorResponse({\n                        error     : data.body.error,\n                        status    : data.status,\n                        statusText: 'ERROR'\n                    });\n\n                    return throwError(response);\n\n                }));\n        }\n\n        // Pass through if the request handler does not exists\n        return next.handle(request);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/lib/mock-api/mock-api.interfaces.ts",
    "content": "export interface TreoMockApi\n{\n    register(): void;\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/lib/mock-api/mock-api.module.ts",
    "content": "import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { TreoMockApiInterceptor } from '@treo/lib/mock-api/mock-api.interceptor';\nimport { TreoMockApiService } from '@treo/lib/mock-api/mock-api.service';\n\n@NgModule({\n    providers: [\n        TreoMockApiService,\n        {\n            provide : HTTP_INTERCEPTORS,\n            useClass: TreoMockApiInterceptor,\n            multi   : true\n        }\n    ]\n})\nexport class TreoMockApiModule\n{\n    /**\n     * forRoot method for setting user configuration\n     *\n     * @param mockDataServices\n     */\n    static forRoot(mockDataServices: any[]): ModuleWithProviders<TreoMockApiModule>\n    {\n        return {\n            ngModule : TreoMockApiModule,\n            providers: [\n                {\n                    provide   : APP_INITIALIZER,\n                    deps      : mockDataServices,\n                    useFactory: () => () => null,\n                    multi     : true\n                },\n            ]\n        };\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/lib/mock-api/mock-api.request-handler.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { HttpRequest } from '@angular/common/http';\nimport { Observable, of, throwError } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Injectable()\nexport class TreoMockApiRequestHandler\n{\n    // Private\n    private _delay: number;\n    private _executionCount: number;\n    private _executionLimit: number;\n    private _interceptedRequest: HttpRequest<any>;\n    private _replyCallback: any;\n    private _url: string;\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n        // Set the private defaults\n        this._executionCount = 0;\n        this._executionLimit = 0;\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for delay\n     *\n     * @param value\n     */\n    set delay(value: number)\n    {\n        // Return, if the value is the same\n        if ( this._delay === value )\n        {\n            return;\n        }\n\n        // Store the delay\n        this._delay = value;\n    }\n\n    get delay(): number\n    {\n        return this._delay;\n    }\n\n    /**\n     * Setter and getter for url\n     *\n     * @param value\n     */\n    set url(value: string)\n    {\n        // Return, if the value is the same\n        if ( this._url === value )\n        {\n            return;\n        }\n\n        // Store the url\n        this._url = value;\n    }\n\n    get url(): string\n    {\n        return this._url;\n    }\n\n    /**\n     * Setter and getter for intercepted request\n     *\n     * @param value\n     */\n    set interceptedRequest(value: HttpRequest<any>)\n    {\n        // Return, if the value is the same\n        if ( this._interceptedRequest === value )\n        {\n            return;\n        }\n\n        // Store the intercepted request\n        this._interceptedRequest = value;\n    }\n\n    get interceptedRequest(): HttpRequest<any>\n    {\n        return this._interceptedRequest;\n    }\n\n    /**\n     * Getter for reply callback\n     */\n    get replyCallback(): Observable<any>\n    {\n        // Throw an error, if the execution limit has been reached\n        if ( this._executionLimit > 0 && this._executionCount === this._executionLimit )\n        {\n            return throwError('Execution limit reached');\n        }\n\n        // Throw an error, if the intercepted request has not been set\n        if ( !this.interceptedRequest )\n        {\n            return throwError('Intercepted request does not exist!');\n        }\n\n        // Increase the execution count\n        this._executionCount++;\n\n        // Execute the reply callback\n        const replyCallbackResult = this._replyCallback(this.interceptedRequest);\n\n        // If the result of the reply function is an observable...\n        if ( replyCallbackResult instanceof Observable )\n        {\n            // Return the result as it is\n            return replyCallbackResult.pipe(take(1));\n        }\n\n        // Otherwise, return the result as an observable\n        return of(replyCallbackResult).pipe(take(1));\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Reply\n     *\n     * @param callback\n     */\n    reply(callback: (req: HttpRequest<any>) => ([number, any | string] | Observable<any>)): void\n    {\n        // Store the reply callback\n        this._replyCallback = callback;\n    }\n\n    /**\n     * Reply once\n     *\n     * @param callback\n     */\n    replyOnce(callback: (req: HttpRequest<any>) => ([number, any | string] | Observable<any>)): void\n    {\n        // Set the execute limit to 1\n        this._executionLimit = 1;\n\n        // Call reply as normal\n        this.reply(callback);\n    }\n}\n\n"
  },
  {
    "path": "webapp/frontend/src/@treo/lib/mock-api/mock-api.service.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { TreoMockApiRequestHandler } from '@treo/lib/mock-api/mock-api.request-handler';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreoMockApiService\n{\n    requestHandlers: any;\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n        // Set the defaults\n        this.requestHandlers = {\n            delete: new Map<string, TreoMockApiRequestHandler>(),\n            get   : new Map<string, TreoMockApiRequestHandler>(),\n            patch : new Map<string, TreoMockApiRequestHandler>(),\n            post  : new Map<string, TreoMockApiRequestHandler>(),\n            put   : new Map<string, TreoMockApiRequestHandler>()\n        };\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Register 'delete' request handler\n     *\n     * @param url\n     * @param delay\n     */\n    onDelete(url: string, delay: number = 0): TreoMockApiRequestHandler\n    {\n        return this._registerRequestHandler('delete', url, delay);\n    }\n\n    /**\n     * Register 'get' request handler\n     *\n     * @param url\n     * @param delay\n     */\n    onGet(url: string, delay: number = 0): TreoMockApiRequestHandler\n    {\n        return this._registerRequestHandler('get', url, delay);\n    }\n\n    /**\n     * Register 'patch' request handler\n     *\n     * @param url\n     * @param delay\n     */\n    onPatch(url: string, delay: number = 0): TreoMockApiRequestHandler\n    {\n        return this._registerRequestHandler('patch', url, delay);\n    }\n\n    /**\n     * Register 'post' request handler\n     *\n     * @param url\n     * @param delay\n     */\n    onPost(url: string, delay: number = 0): TreoMockApiRequestHandler\n    {\n        return this._registerRequestHandler('post', url, delay);\n    }\n\n    /**\n     * Register 'put' request handler\n     *\n     * @param url\n     * @param delay\n     */\n    onPut(url: string, delay: number = 0): TreoMockApiRequestHandler\n    {\n        return this._registerRequestHandler('put', url, delay);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Register a request handler\n     *\n     * @param requestType\n     * @param url\n     * @param delay\n     * @private\n     */\n    private _registerRequestHandler(requestType, url, delay): TreoMockApiRequestHandler\n    {\n        // Create a new instance of TreoMockApiRequestHandler\n        const treoMockHttp = new TreoMockApiRequestHandler();\n\n        // Store the url\n        treoMockHttp.url = url;\n\n        // Store the delay\n        treoMockHttp.delay = delay;\n\n        // Store the request handler to access them from the interceptor\n        this.requestHandlers[requestType].set(url, treoMockHttp);\n\n        // Return the instance\n        return treoMockHttp;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/lib/mock-api/mock-api.utils.ts",
    "content": "export class TreoMockApiUtils\n{\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Generate a globally unique id\n     */\n    static guid(): string\n    {\n        /* tslint:disable */\n\n        let d = new Date().getTime();\n\n        // Use high-precision timer if available\n        if ( typeof performance !== 'undefined' && typeof performance.now === 'function' )\n        {\n            d += performance.now();\n        }\n\n        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n            const r = (d + Math.random() * 16) % 16 | 0;\n            d = Math.floor(d / 16);\n            return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n        });\n\n        /* tslint:enable */\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/pipes/find-by-key/find-by-key.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { TreoFindByKeyPipe } from '@treo/pipes/find-by-key/find-by-key.pipe';\n\n@NgModule({\n    declarations: [\n        TreoFindByKeyPipe\n    ],\n    exports     : [\n        TreoFindByKeyPipe\n    ]\n})\nexport class TreoFindByKeyPipeModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/pipes/find-by-key/find-by-key.pipe.ts",
    "content": "import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Finds an object from given source using the given key - value pairs\n */\n@Pipe({\n    name: 'treoFindByKey',\n    pure: false\n})\nexport class TreoFindByKeyPipe implements PipeTransform\n{\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n\n    /**\n     * Transform\n     *\n     * @param value A string or an array of strings to find from source\n     * @param key Key of the object property to look for\n     * @param source Array of objects to find from\n     */\n    transform(value: string | string[], key: string, source: any[]): any\n    {\n        // If the given value is an array of strings...\n        if ( Array.isArray(value) )\n        {\n            return value.map((item) => {\n                return source.find((sourceItem) => sourceItem[key] === item);\n            });\n        }\n\n        // If the value is a string...\n        return source.find(sourceItem => sourceItem[key] === value);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/pipes/find-by-key/index.ts",
    "content": "export * from '@treo/pipes/find-by-key/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/pipes/find-by-key/public-api.ts",
    "content": "export * from '@treo/pipes/find-by-key/find-by-key.pipe';\nexport * from '@treo/pipes/find-by-key/find-by-key.module';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/config/config.constants.ts",
    "content": "import { InjectionToken } from '@angular/core';\n\nexport const TREO_APP_CONFIG = new InjectionToken<any>('Default configuration for the app');\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/config/config.module.ts",
    "content": "import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { TreoConfigService } from '@treo/services/config/config.service';\nimport { TREO_APP_CONFIG } from '@treo/services/config/config.constants';\n\n@NgModule()\nexport class TreoConfigModule\n{\n    /**\n     * Constructor\n     *\n     * @param {TreoConfigService} _treoConfigService\n     */\n    constructor(\n        private _treoConfigService: TreoConfigService\n    )\n    {\n    }\n\n    /**\n     * forRoot method for setting user configuration\n     *\n     * @param config\n     */\n    static forRoot(config: any): ModuleWithProviders\n    {\n        return {\n            ngModule : TreoConfigModule,\n            providers: [\n                {\n                    provide : TREO_APP_CONFIG,\n                    useValue: config\n                }\n            ]\n        };\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/config/config.service.ts",
    "content": "import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport * as _ from 'lodash';\nimport { TREO_APP_CONFIG } from '@treo/services/config/config.constants';\nimport { AppConfig } from 'app/core/config/app.config';\n\nconst SCRUTINY_CONFIG_LOCAL_STORAGE_KEY = 'scrutiny';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TreoConfigService\n{\n    // Private\n    private _config: BehaviorSubject<any>;\n\n    /**\n     * Constructor\n     */\n    constructor(@Inject(TREO_APP_CONFIG) defaultConfig: any)\n    {\n        let currentScrutinyConfig = defaultConfig\n\n        const localConfigStr = localStorage.getItem(SCRUTINY_CONFIG_LOCAL_STORAGE_KEY)\n        if (localConfigStr){\n            // check localstorage for a value\n            const localConfig = JSON.parse(localConfigStr)\n            currentScrutinyConfig = Object.assign({}, currentScrutinyConfig, localConfig) // make sure defaults are available if missing from localStorage.\n        }\n        // Set the private defaults\n        this._config = new BehaviorSubject(currentScrutinyConfig);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for config\n     */\n    // Setter\n    set config(value: any)\n    {\n        // Merge the new config over to the current config\n        const config = _.merge({}, this._config.getValue(), value);\n\n        // Store the config in localstorage\n        localStorage.setItem(SCRUTINY_CONFIG_LOCAL_STORAGE_KEY, JSON.stringify(config));\n\n        // Execute the observable\n        this._config.next(config);\n    }\n\n    // Getter\n    get config$(): Observable<any>\n    {\n        return this._config.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Resets the config to the default\n     */\n    reset(): void\n    {\n        // Set the config\n        this._config.next(this.config);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/config/index.ts",
    "content": "export * from '@treo/services/config/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/config/public-api.ts",
    "content": "export * from '@treo/services/config/config.module';\nexport * from '@treo/services/config/config.service';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/media-watcher/index.ts",
    "content": "export * from '@treo/services/media-watcher/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/media-watcher/media-watcher.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { TreoMediaWatcherService } from '@treo/services/media-watcher/media-watcher.service';\n\n@NgModule({\n    providers: [\n        TreoMediaWatcherService\n    ]\n})\nexport class TreoMediaWatcherModule\n{\n    /**\n     * Constructor\n     *\n     * @param {TreoMediaWatcherService} _treoMediaWatcherService\n     */\n    constructor(\n        private _treoMediaWatcherService: TreoMediaWatcherService\n    )\n    {\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/media-watcher/media-watcher.service.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { treoBreakpoints } from '@treo/tailwind/exported/variables';\n\n@Injectable()\nexport class TreoMediaWatcherService\n{\n    private _onMediaChange: BehaviorSubject<{ matchingAliases: string[], matchingRules: any }>;\n\n    /**\n     * Constructor\n     *\n     * @param {BreakpointObserver} _breakpointObserver\n     */\n    constructor(\n        private _breakpointObserver: BreakpointObserver\n    )\n    {\n        // Set the defaults\n        this._onMediaChange = new BehaviorSubject(null);\n\n        // Initialize\n        this._init();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for _onMediaChange\n     */\n    get onMediaChange$(): Observable<{ matchingAliases: string[], matchingRules: any }>\n    {\n        return this._onMediaChange.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Initialize\n     *\n     * @private\n     */\n    private _init(): void\n    {\n        // Subscribe to the breakpoint observer\n        this._breakpointObserver.observe(Object.values(treoBreakpoints))\n            .subscribe((state) => {\n\n                const matchingAliases = [];\n                const matchingRules = {};\n\n                // If there are no matching rules, execute the observable and bail\n                if ( !state.matches )\n                {\n                    this._onMediaChange.next({\n                        matchingAliases,\n                        matchingRules\n                    });\n\n                    return;\n                }\n\n                // Go through the breakpoints and find the ones that match\n                for ( const [query, matches] of Object.entries(state.breakpoints) )\n                {\n                    if ( !matches )\n                    {\n                        continue;\n                    }\n\n                    // Get the alias of the matching query\n                    const alias = Object.keys(treoBreakpoints).find(key => treoBreakpoints[key] === query);\n\n                    // Prepare the observable values\n                    matchingAliases.push(alias);\n                    matchingRules[alias] = query;\n                }\n\n                // Execute the observable\n                this._onMediaChange.next({\n                    matchingAliases,\n                    matchingRules\n                });\n            });\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On media query change\n     *\n     * @param query\n     */\n    onMediaQueryChange$(query: string): Observable<BreakpointState>\n    {\n        return this._breakpointObserver.observe(query);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/media-watcher/public-api.ts",
    "content": "export * from '@treo/services/media-watcher/media-watcher.module';\nexport * from '@treo/services/media-watcher/media-watcher.service';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/splash-screen/index.ts",
    "content": "export * from '@treo/services/splash-screen/public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/splash-screen/public-api.ts",
    "content": "export * from '@treo/services/splash-screen/splash-screen.module';\nexport * from '@treo/services/splash-screen/splash-screen.service';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/splash-screen/splash-screen.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { TreoSplashScreenService } from '@treo/services/splash-screen/splash-screen.service';\n\n@NgModule({\n    providers: [\n        TreoSplashScreenService\n    ]\n})\nexport class TreoSplashScreenModule\n{\n    /**\n     * Constructor\n     *\n     * @param {TreoSplashScreenService} _treoSplashScreenService\n     */\n    constructor(\n        private _treoSplashScreenService: TreoSplashScreenService\n    )\n    {\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/services/splash-screen/splash-screen.service.ts",
    "content": "import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, take } from 'rxjs/operators';\n\n@Injectable()\nexport class TreoSplashScreenService\n{\n    /**\n     * Constructor\n     *\n     * @param {DOCUMENT} _document\n     * @param {Router} _router\n     */\n    constructor(\n        @Inject(DOCUMENT) private _document: any,\n        private _router: Router\n    )\n    {\n        // Initialize\n        this._init();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Initialize\n     *\n     * @private\n     */\n    private _init(): void\n    {\n        // Hide it on the first NavigationEnd event\n        this._router.events\n            .pipe(\n                filter(event => event instanceof NavigationEnd),\n                take(1)\n            )\n            .subscribe(() => {\n\n                // Hide the splash screen\n                this.hide();\n            });\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Show the splash screen\n     */\n    show(): void\n    {\n        this._document.body.classList.remove('treo-splash-screen-hidden');\n    }\n\n    /**\n     * Hide the splash screen\n     */\n    hide(): void\n    {\n        this._document.body.classList.add('treo-splash-screen-hidden');\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/base/_colors.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Generate and apply base theme colors\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $is-dark: map-get($theme, is-dark);\n\n    // Base color and background\n    & {\n        color: map-get($foreground, text);\n        background-color: map-get($background, background);\n    }\n\n    // Base border color for all elements\n    *,\n    *::before,\n    *::after {\n        border-color: map-get($foreground, divider);\n    }\n\n    // Force the disabled colors on disabled elements\n    [disabled] {\n\n        * {\n            color: map-get($foreground, disabled) !important;\n        }\n    }\n\n    .mat-icon {\n\n        @if ($is-dark) {\n            color: map-get($foreground, secondary-text);\n        } @else {\n            color: map-get($foreground, icon);\n        }\n    }\n\n    .text-card {\n        color: map-get($background, card);\n    }\n\n    .text-default {\n        color: map-get($foreground, text);\n    }\n\n    .text-secondary {\n        color: map-get($foreground, secondary-text);\n    }\n\n    .text-hint {\n        color: map-get($foreground, hint-text);\n    }\n\n    .text-disabled {\n        color: map-get($foreground, disabled-text);\n    }\n\n    .divider {\n        color: map-get($foreground, divider);\n    }\n\n    // Background colors\n    .bg-default {\n        background-color: map-get($background, background);\n    }\n\n    .bg-dialog,\n    .bg-card {\n        background-color: map-get($background, card);\n    }\n\n    .bg-hover {\n        background-color: map-get($background, hover);\n    }\n\n    // Dark - light variants\n    @if ($is-dark) {\n\n        &.dark\\:text-normal,\n        .dark\\:text-normal {\n            color: map-get($foreground, text);\n        }\n\n        &.dark\\:text-secondary,\n        .dark\\:text-secondary {\n            color: map-get($foreground, secondary-text);\n        }\n\n        &.dark\\:text-hint,\n        .dark\\:text-hint {\n            color: map-get($foreground, hint-text);\n        }\n\n        &.dark\\:text-disabled,\n        .dark\\:text-disabled {\n            color: map-get($foreground, disabled-text);\n        }\n\n        &.dark\\:text-divider,\n        .dark\\:text-divider {\n            color: map-get($foreground, divider);\n        }\n\n        &.dark\\:bg-default,\n        .dark\\:bg-default {\n            background-color: map-get($background, background);\n        }\n\n        &.dark\\:bg-dialog,\n        .dark\\:bg-dialog,\n        &.dark\\:bg-card,\n        .dark\\:bg-card {\n            background-color: map-get($background, card);\n        }\n\n        &.dark\\:bg-hover,\n        .dark\\:bg-hover {\n            background-color: map-get($background, hover);\n        }\n\n    } @else {\n\n        &.light\\:text-normal,\n        .light\\:text-normal {\n            color: map-get($foreground, text);\n        }\n\n        &.light\\:text-secondary,\n        .light\\:text-secondary {\n            color: map-get($foreground, secondary-text);\n        }\n\n        &.light\\:text-hint,\n        .light\\:text-hint {\n            color: map-get($foreground, hint-text);\n        }\n\n        &.light\\:text-disabled,\n        .light\\:text-disabled {\n            color: map-get($foreground, disabled-text);\n        }\n\n        &.light\\:text-divider,\n        .light\\:text-divider {\n            color: map-get($foreground, divider);\n        }\n\n        &.light\\:bg-default,\n        .light\\:bg-default {\n            background-color: map-get($background, background);\n        }\n\n        &.light\\:bg-dialog,\n        .light\\:bg-dialog,\n        &.light\\:bg-card,\n        .light\\:bg-card {\n            background-color: map-get($background, card);\n        }\n\n        &.light\\:bg-hover,\n        .light\\:bg-hover {\n            background-color: map-get($background, hover);\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/base/_preflight.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Manually forked from TailwindCSS preflight.css\n// -----------------------------------------------------------------------------------------------------\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * 1. Prevent padding and border from affecting element width\n * https://goo.gl/pYtbK7\n * 2. Change the default font family in all browsers (opinionated)\n */\n\nhtml {\n    box-sizing: border-box; /* 1 */\n    font-family: sans-serif; /* 2 */\n}\n\n*,\n*::before,\n*::after {\n    box-sizing: inherit;\n}\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nfigure,\np,\npre {\n    margin: 0;\n}\n\nbutton {\n    background: transparent;\n    padding: 0;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n    outline: 1px dotted;\n    outline: 5px auto -webkit-focus-ring-color;\n}\n\nfieldset {\n    margin: 0;\n    padding: 0;\n}\n\nol,\nul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the system font stack as a sane default.\n * 2. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 1 */\n    line-height: 1.5; /* 2 */\n}\n\n/**\n * Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n*,\n*::before,\n*::after {\n    border-width: 0;\n    border-style: solid;\n    // Default border color is defined in 'styles/base/_colors.scss' file for convenience\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\nimg {\n    border-style: solid;\n}\n\ntextarea {\n    resize: vertical;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n    color: inherit;\n    //opacity: 0.5;\n}\n\nbutton,\n[role=\"button\"] {\n    cursor: pointer;\n}\n\ntable {\n    border-collapse: collapse;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n    font-size: inherit;\n    font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n    color: inherit;\n    text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n    padding: 0;\n    line-height: inherit;\n    color: inherit;\n}\n\n/**\n * Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n */\n\npre,\ncode,\nkbd,\nsamp {\n    font-family: $treo-font-mono;\n}\n\n/**\n * Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n    display: block;\n    vertical-align: middle;\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their instrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nvideo {\n    max-width: 100%;\n    height: auto;\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Treo custom reset styles\n// -----------------------------------------------------------------------------------------------------\n\n* {\n    // Text rendering\n    text-rendering: optimizeLegibility;\n    -o-text-rendering: optimizeLegibility;\n    -ms-text-rendering: optimizeLegibility;\n    -moz-text-rendering: optimizeLegibility;\n    -webkit-text-rendering: optimizeLegibility;\n    -webkit-tap-highlight-color: transparent;\n\n    // Disable default focus outline\n    &:focus {\n        outline: none !important;\n    }\n\n    // Enable focus outline only on keyboard focused buttons\n    button.cdk-focused.cdk-keyboard-focused {\n        outline: 1px dotted !important;\n        outline: 5px auto -webkit-focus-ring-color !important;\n    }\n}\n\nhtml,\nbody {\n    display: flex;\n    flex-direction: column;\n    flex: 1 1 auto;\n    width: 100%;\n    min-height: 100%;\n    -webkit-font-smoothing: auto;\n    -moz-osx-font-smoothing: auto;\n}\n\nhr {\n    margin: 32px 0;\n    border-bottom-width: 1px;\n}\n\nimg {\n    width: 100%;\n    vertical-align: top;\n}\n\n// Fix: Disabled placeholder color is too faded on Safari\ninput[disabled] {\n    opacity: 1;\n    -webkit-text-fill-color: currentColor;\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/base/_theming.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Apply Angular Material theme and generate Treo color classes for the theme\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    // Generate Angular Material theme\n    @include angular-material-theme($theme);\n\n    // Generate Treo color classes for the theme\n    @include treo-color-classes(\n            (\n                primary: map-get($theme, primary),\n                accent: map-get($theme, accent),\n                warn: map-get($theme, warn)\n            )\n    );\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/base/_typography.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Angular Material typography config\n// -----------------------------------------------------------------------------------------------------\n@include angular-material-typography(\n        mat-typography-config(\n            $font-family: $treo-font-sans,\n            $title: mat-typography-level(1.25rem, 2rem, 600),\n            $body-2: mat-typography-level(0.875rem, 1.5rem, 600),\n            $button: mat-typography-level(0.875rem, 0.875rem, 500),\n            $input: mat-typography-level(0.875rem, 1.2857142857, 400) // line-height: 20px\n        )\n);\n\n// -----------------------------------------------------------------------------------------------------\n// @ General\n// -----------------------------------------------------------------------------------------------------\nhtml {\n    font-size: 16px;\n}\n\nbody {\n    font-size: 0.875rem;\n    font-family: $treo-font-sans;\n}\n\n// Headings\nh1, h2, h3, h4, h5, h6 {\n    margin: 1.25em 0 0.5em 0;\n}\n\nh1 {\n    font-size: 32px;\n    font-weight: 800;\n    letter-spacing: -0.022em;\n    line-height: 1.25;\n}\n\nh2 {\n    font-size: 32px;\n    font-weight: 600;\n    letter-spacing: -0.022em;\n    line-height: 1.25;\n}\n\nh3 {\n    font-size: 24px;\n    font-weight: 600;\n    letter-spacing: -0.019em;\n    line-height: 1.25;\n}\n\nh4 {\n    font-size: 20px;\n    font-weight: 500;\n    letter-spacing: -0.017em;\n}\n\nh5 {\n    font-size: 18px;\n    font-weight: 500;\n    letter-spacing: -0.014em;\n}\n\nh6 {\n    font-size: 16px;\n    font-weight: 500;\n    letter-spacing: -0.011em;\n}\n\n// Override links for web apps\na {\n    color: currentColor;\n    text-decoration: none;\n}\n\n// Link helper for applying default 'a' style\n.link {\n    cursor: pointer;\n\n    &:focus,\n    &:hover {\n        text-decoration: underline;\n    }\n}\n\n// Breadcrumb\n.breadcrumb {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    font-size: 12px;\n    font-weight: 700;\n    text-transform: uppercase;\n\n    .path {\n        white-space: nowrap;\n\n        &a {\n            color: inherit;\n        }\n\n        &.current {\n\n        }\n    }\n\n    .separator {\n        margin: 0 6px;\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Code and Pre\n// -----------------------------------------------------------------------------------------------------\ncode,\npre {\n    font-family: $treo-font-mono;\n    font-size: 14px;\n    line-height: 1.6;\n    border-radius: 4px;\n\n    -moz-tab-size: 4;\n    -o-tab-size: 4;\n    tab-size: 4;\n\n    -webkit-hyphens: none;\n    -moz-hyphens: none;\n    -ms-hyphens: none;\n    hyphens: none;\n\n    white-space: pre-wrap;\n    word-break: break-word;\n    word-wrap: break-word;\n}\n\npre {\n    padding: 24px;\n    margin: 0;\n    @include treo-elevation();\n}\n\n:not(pre) > code {\n    padding: 2px 5px;\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Rich text\n// -----------------------------------------------------------------------------------------------------\n.rich-text {\n\n    h1, h2, h3, h4, h5, h6 {\n        margin: 0;\n    }\n\n    h1 {\n        font-size: 36px;\n        font-weight: 600;\n        line-height: 1;\n    }\n\n    h1 + * {\n        margin-top: 32px;\n    }\n\n    h2 {\n        font-size: 24px;\n        font-weight: 600;\n        line-height: 1.25;\n    }\n\n    * + h2 {\n        margin-top: 32px;\n    }\n\n    h2 + * {\n        margin-top: 16px;\n    }\n\n    h3 {\n        font-size: 20px;\n        font-weight: 600;\n        line-height: 1.25;\n    }\n\n    * + h3 {\n        margin-top: 32px;\n    }\n\n    h2 + h3 {\n        margin-top: 16px;\n    }\n\n    h3 + * {\n        margin-top: 8px;\n    }\n\n    h4 {\n        font-size: 16px;\n        font-weight: 600;\n        line-height: 1.5;\n    }\n\n    * + h4 {\n        margin-top: 24px;\n    }\n\n    h3 + h4 {\n        margin-top: 8px;\n    }\n\n    h4 + * {\n        margin-top: 8px;\n    }\n\n    h5 {\n        font-size: 14px;\n        font-weight: 600;\n        line-height: 1.5;\n    }\n\n    h6 {\n        font-size: 14px;\n        font-weight: 500;\n        line-height: 1.5;\n    }\n\n    p {\n        line-height: 1.75;\n    }\n\n    p + p {\n        margin-top: 16px;\n    }\n\n    ol {\n        list-style-type: decimal;\n        padding-left: 20px;\n    }\n\n    * + ol {\n        margin-top: 16px;\n    }\n\n    ol + * {\n        margin-top: 16px;\n    }\n\n    li ol {\n        margin-top: 8px;\n    }\n\n    ul {\n        list-style-type: disc;\n        padding-left: 20px;\n    }\n\n    * + ul {\n        margin-top: 16px;\n    }\n\n    ul + *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) {\n        margin-top: 16px;\n    }\n\n    li ul {\n        margin-top: 8px;\n    }\n\n    li + li {\n        margin-top: 8px;\n    }\n\n    li p {\n        margin-top: 16px;\n    }\n\n    li p + p {\n        margin-top: 8px;\n    }\n\n    li:first-child p:first-child {\n        margin-top: 8px;\n    }\n\n    a {\n        font-weight: 500;\n    }\n\n    a:hover {\n        text-decoration: underline;\n    }\n\n    abbr {\n        cursor: help;\n        border-bottom-width: 1px;\n        border-bottom-style: dotted;\n    }\n\n    blockquote {\n        border-left-width: 3px;\n        font-style: italic;\n        margin: 16px 0;\n        padding-left: 16px;\n\n        footer {\n            font-style: normal;\n\n            &:before {\n                content: '\\2014 \\00A0';\n            }\n        }\n\n        &.reverse {\n            border-left-width: 0;\n            border-right-width: 3px;\n            text-align: right;\n            padding-left: 0;\n            padding-right: 16px;\n\n            footer {\n\n                &:before {\n                    content: '';\n                }\n\n                &:after {\n                    content: '\\2014 \\00A0';\n                }\n            }\n        }\n    }\n\n    * + blockquote {\n        margin-top: 16px;\n    }\n\n    blockquote + * {\n        margin-top: 16px;\n    }\n\n    dl {\n\n        dt {\n            font-weight: 700;\n        }\n\n        dd {\n            margin: 4px 0 16px 0;\n        }\n    }\n\n    fieldset {\n        margin-inline-start: 0;\n        margin-inline-end: 0;\n        padding-inline-start: 0;\n        padding-inline-end: 0;\n        padding-block-start: 0;\n        padding-block-end: 0;\n        width: 100%;\n        border-width: 1px;\n        border-radius: 4px;\n        padding: 24px;\n\n        legend {\n            padding: 0 6px;\n            margin-left: -6px;\n        }\n    }\n\n    img {\n        margin-top: 32px;\n        margin-bottom: 32px;\n    }\n\n    * + pre {\n        margin-top: 16px;\n    }\n\n    pre + * {\n        margin-top: 16px;\n    }\n\n    pre code {\n        padding: 0;\n    }\n\n    strong {\n        font-weight: 700;\n    }\n\n    // treo-highlight\n    * + .treo-highlight {\n        margin-top: 16px;\n    }\n\n    .treo-highlight + p {\n        margin-top: 24px;\n    }\n\n    // treo-message\n    * + treo-message {\n        margin-top: 24px;\n    }\n\n    treo-message + p {\n        margin-top: 24px;\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ General\n    // -----------------------------------------------------------------------------------------------------\n\n    // Link helper for applying default 'a' style\n    .link {\n        color: map-get($primary, default);\n        border-bottom-color: map-get($primary, default);\n    }\n\n    // Breadcrumb\n    .breadcrumb {\n\n        .path {\n            color: map-get($primary, default);\n\n            &.current {\n                color: map-get($foreground, secondary-text);\n            }\n        }\n\n        .separator {\n            color: map-get($foreground, secondary-text);\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Code and Pre\n    // -----------------------------------------------------------------------------------------------------\n    code,\n    pre {\n        @if ($is-dark) {\n            color: treo-color('cool-gray', 400);\n            background: treo-color('cool-gray', 800);\n        } @else {\n            background: #FFFFFF;\n            color: #728FCB;\n        }\n    }\n\n    :not(pre) > code {\n        @if ($is-dark) {\n            color: treo-color('cool-gray', 400);\n            background: treo-color('cool-gray', 700);\n        } @else {\n            color: treo-color('cool-gray', 500);\n            background: treo-color('cool-gray', 200);\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Rich text\n    // -----------------------------------------------------------------------------------------------------\n    .rich-text {\n\n        a {\n            color: map-get($primary, default);\n            border-bottom-color: map-get($primary, default);\n        }\n\n        mark {\n            background: #F7F49A;\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/components/_card.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Extended styles for treo-card\n// -----------------------------------------------------------------------------------------------------\ntreo-card {\n\n    &.auth-card {\n        margin: 8px;\n\n        @include treo-breakpoint('xs') {\n            justify-content: center;\n            width: 100%;\n            height: 100%;\n            margin: 0;\n            box-shadow: none;\n            border-radius: 0;\n        }\n\n        // Classic style\n        &.classic {\n\n            .content-container {\n                display: none !important;\n            }\n        }\n\n        // Modern style\n        &.modern,\n        &.modern-alt {\n            max-width: 1200px;\n            width: calc(100% - 16px);\n\n            @include treo-breakpoint('lt-md') {\n                width: auto;\n            }\n\n            .form-container {\n\n                @include treo-breakpoint('gt-sm') {\n                    padding: 64px;\n                }\n            }\n        }\n\n        &.modern-alt {\n\n            .form-container {\n                order: 2;\n            }\n\n            .content-container {\n                order: 1;\n            }\n        }\n\n        // Fullscreen style\n        &.fullscreen,\n        &.fullscreen-alt {\n            width: 100%;\n            height: 100%;\n            margin: 0;\n            box-shadow: none;\n            border-radius: 0;\n\n            @include treo-breakpoint('lt-md') {\n                justify-content: center;\n            }\n\n            .form-container {\n                width: 45%;\n\n                @include treo-breakpoint('lt-md') {\n                    width: auto;\n                    padding: 40px;\n                }\n\n                .form {\n                    margin: auto 32px auto auto;\n\n                    @include treo-breakpoint('lt-md') {\n                        margin: 0;\n                    }\n                }\n            }\n        }\n\n        &.fullscreen-alt {\n\n            .form-container {\n                order: 2;\n\n                .form {\n                    margin: auto auto auto 32px;\n\n                    @include treo-breakpoint('lt-md') {\n                        margin: 0;\n                    }\n                }\n            }\n\n            .content-container {\n                order: 1;\n            }\n        }\n\n        // Form container\n        .form-container {\n            display: flex;\n            flex-direction: column;\n            order: 1;\n            padding: 48px;\n\n            @include treo-breakpoint('xs') {\n                padding: 40px;\n            }\n\n            .form {\n                width: 100%;\n                min-width: 320px;\n                max-width: 320px;\n\n                @include treo-breakpoint('xs') {\n                    max-width: 0;\n                }\n\n                .logo {\n                    width: 48px;\n                }\n\n                .title {\n                    margin: 32px 0 0 0;\n                    font-size: 30px;\n                    font-weight: 800;\n                    letter-spacing: -0.022em;\n                    line-height: 1.25;\n                }\n\n                .subtitle {\n                    display: flex;\n                    align-items: baseline;\n                    margin-top: 2px;\n                    font-weight: 500;\n\n                    .link {\n                        margin-left: 4px;\n                    }\n                }\n\n                treo-message {\n                    margin-top: 32px;\n                    margin-bottom: -16px;\n                }\n\n                form {\n                    margin-top: 32px;\n\n                    .mat-form-field {\n                        width: 100%;\n                    }\n                }\n\n                .field-footer {\n                    display: flex;\n                    align-items: baseline;\n                    justify-content: space-between;\n                    margin: 6px 0 12px 0;\n\n                    .link {\n                        font-size: 13px;\n                        font-weight: 500;\n                    }\n                }\n\n                .submit-button {\n                    width: 100%;\n                    margin-top: 12px;\n                }\n\n                .sso {\n                    display: flex;\n                    flex-direction: column;\n\n                    .separator {\n                        position: relative;\n                        display: flex;\n                        align-items: center;\n                        justify-content: center;\n                        flex: 1 1 auto;\n                        margin: 32px 0;\n\n                        &:before,\n                        &:after {\n                            content: '';\n                            display: flex;\n                            flex: 1 1 auto;\n                            height: 1px;\n                        }\n\n                        &:before {\n                            margin-right: 8px;\n                        }\n\n                        &:after {\n                            margin-left: 8px;\n                        }\n                    }\n\n                    .buttons {\n                        display: flex;\n                        align-items: center;\n\n                        button {\n                            flex: 1 1 auto;\n                            margin-right: 8px;\n\n                            &:last-child {\n                                margin-right: 0;\n                            }\n\n                            .mat-icon {\n                                @include treo-icon-size(20);\n                            }\n                        }\n                    }\n                }\n\n                .form-footer {\n                    width: 100%;\n                    margin-top: 32px;\n                    font-size: 13px;\n                    font-weight: 500;\n\n                    .link {\n                        margin-left: 4px;\n                    }\n                }\n            }\n        }\n\n        // Content container\n        .content-container {\n            position: relative;\n            display: flex;\n            flex: 1 1 auto;\n            align-items: center;\n            justify-content: center;\n            order: 2;\n            overflow: hidden;\n\n            @include treo-breakpoint('lt-md') {\n                display: none;\n            }\n\n            .background {\n                position: absolute;\n                top: 0;\n                left: 0;\n                width: 100%;\n                height: 900px;\n                pointer-events: none;\n\n                path {\n                    opacity: 0.1;\n                }\n            }\n\n            .content {\n                position: relative;\n                display: flex;\n                flex-direction: column;\n                max-width: 480px;\n                width: 100%;\n                margin: 64px;\n\n                .title {\n                    display: flex;\n                    flex-direction: column;\n\n                    span {\n                        font-size: 40px;\n                        font-weight: 700;\n                        line-height: 1.2;\n                    }\n                }\n\n                .description {\n                    margin-top: 12px;\n                    font-size: 15px;\n                }\n\n                .learn-more-button {\n                    width: 160px;\n                    margin-top: 40px;\n                }\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $foreground: map-get($theme, foreground);\n    $is-dark: map-get($theme, is-dark);\n\n    treo-card {\n\n        &.auth-card {\n\n            @include treo-breakpoint('xs') {\n                background: transparent;\n            }\n\n            // Fullscreen style\n            &.fullscreen,\n            &.fullscreen-alt {\n\n                @include treo-breakpoint('lt-md') {\n                    background: transparent;\n                }\n            }\n\n            .form-container {\n\n                .form {\n\n                    .form-footer {\n\n                        span {\n                            color: map-get($foreground, secondary-text);\n                        }\n                    }\n\n                    .sso {\n\n                        .separator {\n                            color: map-get($foreground, secondary-text);\n\n                            &:before,\n                            &:after {\n                                background: map-get($foreground, divider);\n                            }\n                        }\n                    }\n                }\n            }\n\n            // Content container\n            .content-container {\n                @if ($is-dark) {\n                    background: treo-color('cool-gray', 700);\n                } @else {\n                    background: treo-color('indigo', 700);\n                }\n                color: white;\n\n                .background {\n\n                    path {\n                        @if ($is-dark) {\n                            fill: treo-color('cool-gray', 900);\n                        } @else {\n                            fill: treo-color('indigo', 100);\n                        }\n                    }\n                }\n\n                .content {\n\n                    .description {\n                        opacity: 0.7;\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/components/_input.scss",
    "content": "input {\n\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $foreground: map-get($theme, foreground);\n\n    input,\n    textarea {\n        background: transparent;\n\n        // Placeholder color\n        &::placeholder {\n            color: map-get($foreground, hint-text);\n        }\n\n        &::-moz-placeholder {\n            color: map-get($foreground, hint-text);\n        }\n\n        &::-webkit-input-placeholder {\n            color: map-get($foreground, hint-text);\n        }\n\n        &:-ms-input-placeholder {\n            color: map-get($foreground, hint-text);\n        }\n\n        &:-webkit-autofill {\n            -webkit-transition: 'background-color 9999s ease-out';\n            -webkit-transition-delay: 9999s;\n        }\n\n        &:-webkit-autofill:hover {\n            -webkit-transition: 'background-color 9999s ease-out';\n            -webkit-transition-delay: 9999s;\n        }\n\n        &:-webkit-autofill:focus {\n            -webkit-transition: 'background-color 9999s ease-out';\n            -webkit-transition-delay: 9999s;\n        }\n\n        &:-webkit-autofill:active {\n            -webkit-transition: 'background-color 9999s ease-out';\n            -webkit-transition-delay: 9999s;\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/components/_table.scss",
    "content": ".rich-text {\n\n    table {\n        width: 100%;\n        border-spacing: 0;\n\n        thead {\n\n            tr {\n\n                th {\n                    padding: 16px;\n                    border-bottom-width: 2px;\n                    text-align: left;\n                    font-weight: 500;\n\n                    &:first-child {\n                        padding-left: 24px;\n                    }\n\n                    &:last-child {\n                        padding-right: 24px;\n                    }\n                }\n            }\n        }\n\n        tbody {\n\n            tr {\n\n                td {\n                    padding: 16px;\n                    border-bottom-width: 1px;\n                    text-align: left;\n\n                    &:first-child {\n                        padding-left: 24px;\n                    }\n\n                    &:last-child {\n                        padding-right: 24px;\n                    }\n                }\n\n                &:last-child {\n\n                    td {\n                        border-bottom: none;\n                    }\n                }\n            }\n        }\n\n        tfoot {\n\n            tr {\n\n                th {\n                    padding: 16px;\n                    border-top-width: 2px;\n                    text-align: left;\n                    font-weight: 500;\n\n                    &:first-child {\n                        padding-left: 24px;\n                    }\n\n                    &:last-child {\n                        padding-right: 24px;\n                    }\n                }\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/layout/_content.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Common\n// -----------------------------------------------------------------------------------------------------\n\n// Header\n%content-layout-header {\n    display: flex;\n    padding: 40px;\n\n    @include treo-breakpoint('lt-md') {\n        flex-direction: column;\n    }\n\n    @include treo-breakpoint('xs') {\n        padding: 32px 24px;\n    }\n\n    .breadcrumb {\n        margin-bottom: 8px;\n    }\n\n    h1, h2, h3, h4, h5, h6 {\n        margin: 0;\n    }\n\n    .left {\n        align-self: center;\n        margin-right: 24px;\n\n        @include treo-breakpoint('lt-md') {\n            align-self: flex-start;\n            justify-self: center;\n        }\n    }\n\n    .right {\n        display: flex;\n        align-items: center;\n        align-self: center;\n        margin-left: auto;\n        white-space: nowrap;\n\n        @include treo-breakpoint('lt-md') {\n            align-self: flex-start;\n            justify-self: center;\n            margin-top: 24px;\n            margin-left: 0;\n        }\n    }\n}\n\n\n// -----------------------------------------------------------------------------------------------------\n// @ Content layout\n// -----------------------------------------------------------------------------------------------------\n.content-layout {\n    display: flex;\n    flex-direction: column;\n    flex: 1 1 auto;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Basic - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-basic-normal-scroll {\n\n        > .main {\n            flex: 1 1 auto;\n            padding: 40px;\n\n            @include treo-breakpoint('xs') {\n                padding: 24px;\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Basic - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-basic-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .main {\n            flex: 1 1 auto;\n            padding: 40px;\n\n            @include treo-breakpoint('xs') {\n                padding: 24px;\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Standard - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-standard-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .main {\n            flex: 1 1 auto;\n            padding: 40px;\n\n            @include treo-breakpoint('xs') {\n                padding: 24px;\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Standard - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-standard-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .main {\n            flex: 1 1 auto;\n            padding: 40px;\n\n            @include treo-breakpoint('xs') {\n                padding: 24px;\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Standard - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-standard-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .main {\n            flex: 1 1 auto;\n            padding: 40px;\n            overflow-y: auto;\n            -webkit-overflow-scrolling: touch;\n\n            @include treo-breakpoint('xs') {\n                padding: 24px;\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Tabs - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-tabs-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n            padding-bottom: 24px;\n        }\n\n        > .main {\n            flex: 1 1 auto;\n\n            .mat-tab-group {\n\n                .mat-tab-header {\n                    padding: 0 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 0 24px;\n                    }\n\n                    &.mat-tab-header-pagination-controls-enabled {\n                        padding: 0 32px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0;\n                        }\n                    }\n\n                    .mat-tab-header-pagination {\n                        padding: 0;\n                        box-shadow: none;\n                    }\n\n                    .mat-tab-label {\n                        min-width: 128px;\n                    }\n                }\n\n                .mat-tab-body-wrapper {\n\n                    .mat-tab-body {\n\n                        .mat-tab-body-content {\n                            padding: 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 24px;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Tabs - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-tabs-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n            padding-bottom: 24px;\n        }\n\n        > .main {\n            display: flex;\n            flex-direction: column;\n            flex: 1 1 auto;\n\n            .mat-tab-group {\n\n                .mat-tab-header {\n                    padding: 0 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 0 24px;\n                    }\n\n                    &.mat-tab-header-pagination-controls-enabled {\n                        padding: 0 32px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0;\n                        }\n                    }\n\n                    .mat-tab-header-pagination {\n                        padding: 0;\n                        box-shadow: none;\n                    }\n\n                    .mat-tab-label {\n                        min-width: 128px;\n                    }\n                }\n\n                .mat-tab-body-wrapper {\n\n                    .mat-tab-body {\n\n                        .mat-tab-body-content {\n                            padding: 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 24px;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Tabs - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-tabs-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n            padding-bottom: 24px;\n        }\n\n        > .main {\n            display: flex;\n            flex-direction: column;\n            flex: 1 1 auto;\n            overflow: hidden;\n\n            .mat-tab-group {\n                overflow: hidden;\n\n                .mat-tab-header {\n                    padding: 0 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 0 24px;\n                    }\n\n                    &.mat-tab-header-pagination-controls-enabled {\n                        padding: 0 32px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0;\n                        }\n                    }\n\n                    .mat-tab-header-pagination {\n                        padding: 0;\n                        box-shadow: none;\n                    }\n\n                    .mat-tab-label {\n                        min-width: 128px;\n                    }\n                }\n\n                .mat-tab-body-wrapper {\n\n                    .mat-tab-body {\n\n                        .mat-tab-body-content {\n                            padding: 40px;\n                            -webkit-overflow-scrolling: touch;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 24px;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Tabs navigation - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-tabs-navigation-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n            padding-bottom: 24px;\n        }\n\n        > .main {\n            display: flex;\n            flex-direction: column;\n            flex: 1 1 auto;\n\n            nav {\n                margin: 0;\n                padding: 0 40px;\n\n                @include treo-breakpoint('xs') {\n                    padding: 0 24px;\n                }\n\n                .mat-tab-link {\n                    min-width: 128px;\n                }\n            }\n\n            .main-inner {\n                flex: 1 1 auto;\n                padding: 40px;\n\n                @include treo-breakpoint('xs') {\n                    padding: 24px;\n                }\n\n                > *:not(router-outlet) {\n                    display: block;\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Tabs navigation - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-tabs-navigation-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n            padding-bottom: 24px;\n        }\n\n        > .main {\n            display: flex;\n            flex-direction: column;\n            flex: 1 1 auto;\n\n            nav {\n                margin: 0;\n                padding: 0 40px;\n\n                @include treo-breakpoint('xs') {\n                    padding: 0 24px;\n                }\n\n                .mat-tab-link {\n                    min-width: 128px;\n                }\n            }\n\n            .main-inner {\n                flex: 1 1 auto;\n                padding: 40px;\n\n                @include treo-breakpoint('xs') {\n                    padding: 24px;\n                }\n\n                > *:not(router-outlet) {\n                    display: block;\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Fullwidth - Tabs navigation - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.fullwidth-tabs-navigation-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n            padding-bottom: 24px;\n        }\n\n        > .main {\n            display: flex;\n            flex-direction: column;\n            flex: 1 1 auto;\n            overflow: hidden;\n\n            nav {\n                margin: 0;\n                padding: 0 40px;\n\n                @include treo-breakpoint('xs') {\n                    padding: 0 24px;\n                }\n\n                .mat-tab-link {\n                    min-width: 128px;\n                }\n            }\n\n            .main-inner {\n                flex: 1 1 auto;\n                padding: 40px;\n                overflow-y: auto;\n                -webkit-overflow-scrolling: touch;\n\n                @include treo-breakpoint('xs') {\n                    padding: 24px;\n                }\n\n                > *:not(router-outlet) {\n                    display: block;\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Basic - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-basic-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Basic - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-basic-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Basic - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-basic-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Standard - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-standard-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Standard - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-standard-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Standard - Drawer content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-standard-drawer-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Standard - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-standard-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n                    overflow-y: auto;\n                    -webkit-overflow-scrolling: touch;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs - Drawer content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-drawer-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    .mat-tab-group {\n                        height: 100%;\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n                                    -webkit-overflow-scrolling: touch;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs navigation - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-navigation-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs navigation - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-navigation-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs navigation - Drawer content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-navigation-drawer-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar fullheight - Tabs navigation - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-fullheight-tabs-navigation-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n                        overflow-y: auto;\n                        -webkit-overflow-scrolling: touch;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Standard - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-standard-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Standard - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-standard-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Standard - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-standard-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .main {\n                    padding: 40px;\n                    overflow-y: auto;\n                    -webkit-overflow-scrolling: touch;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Tabs - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-tabs-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                                height: 56px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Tabs - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-tabs-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                                height: 56px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Tabs - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-tabs-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .main {\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    .mat-tab-group {\n                        height: 100%;\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                                height: 56px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n                                    -webkit-overflow-scrolling: touch;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Tabs navigation - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-tabs-navigation-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                            height: 56px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Tabs navigation - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-tabs-navigation-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                            height: 56px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Left sidebar content - Tabs navigation - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.left-sidebar-content-tabs-navigation-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                            height: 56px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n                        overflow-y: auto;\n                        -webkit-overflow-scrolling: touch;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Basic - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-basic-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Basic - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-basic-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Basic - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-basic-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Standard - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-standard-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Standard - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-standard-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Standard - Drawer content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-standard-drawer-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Standard - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-standard-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .header {\n                    @extend %content-layout-header;\n                }\n\n                > .main {\n                    padding: 40px;\n                    overflow-y: auto;\n                    -webkit-overflow-scrolling: touch;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs - Drawer content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-drawer-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    .mat-tab-group {\n                        height: 100%;\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n                                    -webkit-overflow-scrolling: touch;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs navigation - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-navigation-normal-scroll {\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs navigation - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-navigation-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs navigation - Drawer content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-navigation-drawer-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar fullheight - Tabs navigation - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-fullheight-tabs-navigation-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .header {\n                    @extend %content-layout-header;\n                    padding-bottom: 24px;\n                }\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n                        overflow-y: auto;\n                        -webkit-overflow-scrolling: touch;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Standard - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-standard-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Standard - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-standard-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    padding: 40px;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Standard - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-standard-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .main {\n                    padding: 40px;\n                    overflow-y: auto;\n                    -webkit-overflow-scrolling: touch;\n\n                    @include treo-breakpoint('xs') {\n                        padding: 24px;\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Tabs - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-tabs-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                                height: 56px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Tabs - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-tabs-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    flex: 1 1 auto;\n\n                    .mat-tab-group {\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                                height: 56px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Tabs - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-tabs-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .main {\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    .mat-tab-group {\n                        height: 100%;\n\n                        .mat-tab-header {\n                            padding: 0 40px;\n\n                            @include treo-breakpoint('xs') {\n                                padding: 0 24px;\n                            }\n\n                            &.mat-tab-header-pagination-controls-enabled {\n                                padding: 0 32px;\n\n                                @include treo-breakpoint('xs') {\n                                    padding: 0;\n                                }\n                            }\n\n                            .mat-tab-header-pagination {\n                                padding: 0;\n                                box-shadow: none;\n                            }\n\n                            .mat-tab-label {\n                                min-width: 128px;\n                                height: 56px;\n                            }\n                        }\n\n                        .mat-tab-body-wrapper {\n\n                            .mat-tab-body {\n\n                                .mat-tab-body-content {\n                                    padding: 40px;\n                                    -webkit-overflow-scrolling: touch;\n\n                                    @include treo-breakpoint('xs') {\n                                        padding: 24px;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Tabs navigation - Normal scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-tabs-navigation-normal-scroll {\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                            height: 56px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Tabs navigation - Content scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-tabs-navigation-content-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow-y: auto;\n        -webkit-overflow-scrolling: touch;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            overflow: visible;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                            height: 56px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Right sidebar content - Tabs navigation - Inner scroll\n    // -----------------------------------------------------------------------------------------------------\n    &.right-sidebar-content-tabs-navigation-inner-scroll {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        overflow: hidden;\n\n        > .header {\n            @extend %content-layout-header;\n        }\n\n        > .mat-drawer-container {\n            flex: 1 1 auto;\n            height: 100%;\n\n            .mat-drawer {\n                min-width: 288px;\n                max-width: 288px;\n                width: 288px;\n            }\n\n            .mat-drawer-content {\n                display: flex;\n                flex-direction: column;\n                overflow: hidden;\n\n                > .main {\n                    display: flex;\n                    flex-direction: column;\n                    flex: 1 1 auto;\n                    overflow: hidden;\n\n                    nav {\n                        margin: 0;\n                        padding: 0 40px;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 24px;\n                        }\n\n                        .mat-tab-link {\n                            min-width: 128px;\n                            height: 56px;\n                        }\n                    }\n\n                    .main-inner {\n                        flex: 1 1 auto;\n                        padding: 40px;\n                        overflow-y: auto;\n                        -webkit-overflow-scrolling: touch;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 24px;\n                        }\n\n                        > *:not(router-outlet) {\n                            display: block;\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    .content-layout {\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Basic - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-basic-normal-scroll {\n\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Basic - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-basic-content-scroll {\n\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Standard - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-standard-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Standard - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-standard-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Standard - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-standard-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Tabs - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-tabs-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n            }\n\n            > .main {\n\n                .mat-tab-group {\n\n                    .mat-tab-header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Tabs - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-tabs-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n            }\n\n            > .main {\n\n                .mat-tab-group {\n\n                    .mat-tab-header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Tabs - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-tabs-inner-scroll {\n\n            > .header {\n                background: map-get($background, card);\n            }\n\n            > .main {\n\n                .mat-tab-group {\n\n                    .mat-tab-header {\n                        background: map-get($background, card);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Tabs navigation - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-tabs-navigation-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n            }\n\n            > .main {\n\n                nav {\n                    @if (not $is-dark) {\n                        background: map-get($background, card);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Tabs navigation - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-tabs-navigation-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n            }\n\n            > .main {\n\n                nav {\n                    @if (not $is-dark) {\n                        background: map-get($background, card);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Fullwidth - Tabs navigation - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.fullwidth-tabs-navigation-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n            }\n\n            > .main {\n\n                nav {\n                    @if (not $is-dark) {\n                        background: map-get($background, card);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Basic - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-basic-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Basic - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-basic-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Basic - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-basic-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Standard - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-standard-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Standard - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-standard-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Standard - Drawer content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-standard-drawer-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Standard - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-standard-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs - Drawer content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-drawer-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs navigation - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-navigation-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs navigation - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-navigation-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs navigation - Drawer content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-navigation-drawer-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar fullheight - Tabs navigation - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-fullheight-tabs-navigation-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Standard - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-standard-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Standard - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-standard-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Standard - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-standard-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Tabs - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-tabs-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Tabs - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-tabs-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Tabs - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-tabs-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Tabs navigation - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-tabs-navigation-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Tabs navigation - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-tabs-navigation-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Left sidebar content - Tabs navigation - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.left-sidebar-content-tabs-navigation-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Basic - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-basic-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Basic - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-basic-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Basic - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-basic-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Standard - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-standard-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Standard - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-standard-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Standard - Drawer content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-standard-drawer-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Standard - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-standard-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                        border-bottom: 1px solid map-get($foreground, divider);\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs - Drawer content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-drawer-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs navigation - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-navigation-normal-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs navigation - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-navigation-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs navigation - Drawer content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-navigation-drawer-content-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar fullheight - Tabs navigation - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-fullheight-tabs-navigation-inner-scroll {\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .header {\n                        @if (not $is-dark) {\n                            background: map-get($background, card);\n                        }\n                    }\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Standard - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-standard-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Standard - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-standard-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Standard - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-standard-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Tabs - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-tabs-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Tabs - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-tabs-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Tabs - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-tabs-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-group {\n\n                            .mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Tabs navigation - Normal scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-tabs-navigation-normal-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Tabs navigation - Content scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-tabs-navigation-content-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n\n        // -----------------------------------------------------------------------------------------------------\n        // @ Right sidebar content - Tabs navigation - Inner scroll\n        // -----------------------------------------------------------------------------------------------------\n        &.right-sidebar-content-tabs-navigation-inner-scroll {\n\n            > .header {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                border-bottom: 1px solid map-get($foreground, divider);\n            }\n\n            > .mat-drawer-container {\n\n                .mat-drawer-content {\n\n                    > .main {\n\n                        .mat-tab-nav-bar {\n\n                            &.mat-tab-header {\n                                @if (not $is-dark) {\n                                    background: map-get($background, card);\n                                }\n                            }\n                        }\n                    }\n                }\n\n                .mat-drawer {\n                    @if ($is-dark) {\n                        background: treo-color('cool-gray', 900);\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/main.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ This file meant to be imported only once!\n//   Use treo.scss to access to the Angular Material and Treo utilities\n// -----------------------------------------------------------------------------------------------------\n\n// 1. Utilities\n@import 'treo';\n\n// 2. Vendors\n@import 'vendors/normalize';\n@import 'vendors/angular-material';\n\n// 3. Base\n@import 'base/preflight';\n@import 'base/typography';\n@import 'base/colors';\n@import 'base/theming';\n\n// 4. Layout\n@import 'layout/content';\n\n// 5. Components\n@import 'components/card';\n@import 'components/input';\n@import 'components/table';\n\n// 6. Overrides\n@import 'overrides/angular-material';\n@import 'overrides/highlightjs';\n@import 'overrides/perfect-scrollbar';\n@import 'overrides/quill';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/overrides/_angular-material.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Angular Material styles, overrides and extensions\n// -----------------------------------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------------------------------\n// @ Accordion\n// -----------------------------------------------------------------------------------------------------\n.mat-accordion {\n\n    .mat-expansion-panel {\n        margin-bottom: 24px;\n        border-radius: 8px !important;\n        transition: box-shadow 225ms cubic-bezier(0.4, 0.0, 0.2, 1);\n        @include treo-elevation('default', true);\n\n        &:last-child {\n            margin-bottom: 0;\n        }\n\n        &.mat-expanded,\n        &:hover {\n            @include treo-elevation('lg', true);\n        }\n\n        .mat-expansion-panel-header {\n            font-size: 14px;\n\n            &[aria-disabled=true] {\n\n                .mat-expansion-panel-header-description {\n                    margin-right: 28px;\n                }\n            }\n\n            .mat-expansion-indicator {\n                display: inline-flex;\n                align-items: center;\n                justify-content: center;\n                width: 12px;\n                height: 12px;\n\n                // Do not override the border color of the expansion panel indicator\n                &:after {\n                    border-color: currentColor !important;\n                }\n            }\n        }\n\n        .mat-expansion-panel-body {\n            line-height: 1.7;\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Buttons\n// -----------------------------------------------------------------------------------------------------\n.mat-button,\n.mat-fab,\n.mat-flat-button,\n.mat-icon-button,\n.mat-mini-fab,\n.mat-raised-button,\n.mat-stroked-button {\n    display: inline-flex !important;\n    align-items: center;\n    justify-content: center;\n    height: 40px;\n    min-height: 40px;\n    max-height: 40px;\n    line-height: 1 !important;\n\n    .mat-button-wrapper {\n        display: inline-flex !important;\n        align-items: center;\n        justify-content: center;\n        height: 100%;\n    }\n\n    // Large button\n    &.treo-mat-button-large {\n        height: 48px;\n        min-height: 48px;\n        max-height: 48px;\n    }\n}\n\n.mat-fab {\n    max-height: 56px;\n}\n\n// Target all buttons\n.mat-button,\n.mat-fab,\n.mat-flat-button,\n.mat-icon-button,\n.mat-fab,\n.mat-mini-fab,\n.mat-raised-button,\n.mat-stroked-button {\n\n    // mat-progress-spinner inside buttons\n    .mat-progress-spinner {\n\n        &.mat-progress-spinner-indeterminate-animation[mode=indeterminate] {\n\n            circle {\n                stroke: currentColor;\n                animation-duration: 6000ms;\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Button Toggle\n// -----------------------------------------------------------------------------------------------------\n.mat-button-toggle-group {\n\n    &.mat-button-toggle-group-appearance-standard {\n\n        .mat-button-toggle + .mat-button-toggle {\n            background-clip: padding-box;\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Checkbox\n// -----------------------------------------------------------------------------------------------------\n.mat-checkbox {\n    display: inline-flex;\n\n    // Allow multiline text\n    .mat-checkbox-layout {\n        white-space: normal;\n\n        .mat-checkbox-inner-container {\n            display: inline-flex;\n            align-items: center;\n            margin: 0 8px 0 0;\n\n            // Add a zero-width space character to trick the container\n            // into being the same height as a single line of the label\n            &:after {\n                content: '\\200b';\n            }\n        }\n\n        .mat-checkbox-label {\n            line-height: inherit;\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Chip\n// -----------------------------------------------------------------------------------------------------\n.mat-chip {\n    font-weight: 500 !important;\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Form fields\n// -----------------------------------------------------------------------------------------------------\n\n// Treo only uses 'fill' style form fields and therefore\n// only provides fixes and tweaks for that style\n.mat-form-field.mat-form-field-appearance-fill {\n\n    // Disable floating mat-label\n    &.mat-form-field-has-label.mat-form-field-can-float.mat-form-field-should-float {\n\n        .mat-form-field-label-wrapper {\n\n            .mat-form-field-label {\n                width: 100% !important;\n                transform: none !important;\n            }\n        }\n    }\n\n    // Remove the default arrow for native select\n    &.mat-form-field-type-mat-native-select {\n\n        .mat-form-field-infix {\n\n            select {\n                top: auto;\n                margin-top: 0;\n                margin-bottom: 0;\n                padding-top: 0;\n                padding-right: 18px;\n            }\n\n            &:after {\n                display: none;\n            }\n        }\n    }\n\n    // Adjustments for mat-label\n    &.mat-form-field-has-label {\n\n        .mat-form-field-wrapper {\n            margin-top: 24px;\n        }\n    }\n\n    // Default style tweaks and enhancements\n    .mat-form-field-wrapper {\n        margin-bottom: 16px;\n        padding-bottom: 0;\n\n        .mat-form-field-flex {\n            position: relative;\n            display: flex;\n            align-items: stretch;\n            min-height: 48px;\n            border-radius: 6px;\n            padding: 0 16px;\n            border-width: 1px;\n            @include treo-elevation('sm');\n\n            .mat-form-field-prefix {\n\n                > .mat-icon {\n                    margin-right: 12px;\n                }\n\n                > .mat-icon-button {\n                    margin: 0 4px 0 -8px;\n                }\n\n                > .mat-select {\n                    margin-right: 10px;\n                }\n\n                > .mat-datepicker-toggle {\n                    margin-left: -8px;\n                }\n\n                > *:not(.mat-icon):not(.mat-icon-button):not(.mat-select):not(.mat-datepicker-toggle) {\n                    margin-right: 12px;\n                }\n            }\n\n            .mat-form-field-suffix {\n\n                > .mat-icon {\n                    margin-left: 12px;\n                }\n\n                > .mat-icon-button {\n                    margin: 0 -8px 0 4px;\n                }\n\n                > .mat-select {\n                    margin-left: 10px;\n                }\n\n                > .mat-datepicker-toggle {\n                    margin-right: -8px;\n                }\n            }\n\n            .mat-form-field-prefix,\n            .mat-form-field-suffix {\n                display: inline-flex;\n                align-items: center;\n                justify-content: center;\n\n                .mat-icon-button {\n                    width: 40px;\n                    min-width: 40px;\n                    height: 40px;\n                    min-height: 40px;\n                }\n\n                // Remove the margins from the mat-icon if it's inside a button\n                // Force the icon size to 24\n                .mat-button,\n                .mat-raised-button,\n                .mat-icon-button,\n                .mat-stroked-button,\n                .mat-flat-button,\n                .mat-fab,\n                .mat-mini-fab {\n\n                    .mat-icon {\n                        margin: 0 !important;\n                        @include treo-icon-size(24);\n                    }\n                }\n\n                // Datepicker default icon size\n                .mat-datepicker-toggle-default-icon {\n                    @include treo-icon-size(24);\n                }\n\n                // Make mat-select usable as\n                // prefix and suffix\n                .mat-select {\n                    display: flex;\n                    align-items: center;\n\n                    .mat-select-trigger {\n                        display: flex;\n                        align-items: center;\n\n                        .mat-select-value {\n                            display: flex;\n                            max-width: none;\n\n                            mat-select-trigger {\n\n                                .mat-icon {\n                                    margin: 0 !important;\n                                }\n                            }\n                        }\n\n                        .mat-select-arrow-wrapper {\n                            display: flex;\n                            align-items: center;\n                            transform: none;\n                            margin-left: 4px;\n\n                            .mat-select-arrow {\n                                min-height: 0;\n                            }\n                        }\n                    }\n                }\n            }\n\n            .mat-form-field-infix {\n                position: static;\n                display: flex;\n                align-items: center;\n                width: 88px;\n                padding: 0;\n                border: 0;\n\n                .mat-input-element {\n                    padding: 14px 0;\n                    margin-top: 0;\n                }\n\n                // Textarea\n                textarea.mat-input-element {\n                    display: flex;\n                    align-self: stretch;\n                    min-height: 36px;\n                    height: auto;\n                    margin: 10px 0;\n                    padding: 4px 6px 4px 0 !important;\n                    transform: none;\n                }\n\n                // Select\n                .mat-select {\n                    display: inline-flex;\n\n                    .mat-select-trigger {\n                        display: inline-flex;\n                        align-items: center;\n                        width: 100%;\n\n                        .mat-select-value {\n                            display: flex;\n                            position: relative;\n                            max-width: none;\n\n                            .mat-select-value-text {\n                                display: inline-flex;\n\n                                > * {\n                                    overflow: hidden;\n                                    white-space: nowrap;\n                                    text-overflow: ellipsis;\n                                }\n                            }\n                        }\n                    }\n\n                    .mat-select-arrow-wrapper {\n                        transform: translateY(0);\n\n                        .mat-select-arrow {\n                            margin: 0 0 0 8px;\n                        }\n                    }\n                }\n\n                // Chips\n                .mat-chip-list {\n                    width: 100%;\n                    margin: 0 -8px;\n\n                    .mat-chip-input {\n                        margin: 0 0 0 8px;\n                    }\n                }\n\n                .mat-form-field-label-wrapper {\n                    top: -25px;\n                    height: auto;\n                    padding-top: 0;\n                    overflow: visible;\n                    pointer-events: auto;\n\n                    .mat-form-field-label {\n                        position: relative;\n                        top: 0;\n                        margin-top: 0;\n                        backface-visibility: hidden;\n                        transition: none;\n                        font-weight: 500;\n                    }\n                }\n            }\n        }\n\n        // Remove the underline\n        .mat-form-field-underline {\n            display: none;\n        }\n\n        // Subscript tweaks\n        .mat-form-field-subscript-wrapper {\n            position: relative;\n            top: auto;\n            padding: 0;\n            margin-top: 0;\n            font-size: 12px;\n            font-weight: 500;\n            line-height: 1;\n\n            > div {\n                display: contents; // Remove the div from flow to stop the subscript animation\n            }\n\n            .mat-error,\n            .mat-hint {\n                display: block;\n                margin-top: 4px;\n            }\n        }\n    }\n\n    // Adds better alignment for textarea inputs\n    &.treo-mat-textarea {\n\n        &.mat-form-field.mat-form-field-appearance-fill {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n\n                    .mat-form-field-prefix,\n                    .mat-form-field-suffix {\n                        align-items: flex-start;\n                    }\n\n                    .mat-form-field-prefix {\n                        padding-top: 12px;\n                    }\n\n                    .mat-form-field-suffix {\n                        padding-top: 12px;\n                    }\n                }\n            }\n        }\n    }\n\n    // Removes subscript space\n    &.treo-mat-no-subscript {\n\n        &.mat-form-field.mat-form-field-appearance-fill {\n\n            .mat-form-field-wrapper {\n                padding-bottom: 0;\n                margin-bottom: 0;\n\n                .mat-form-field-subscript-wrapper {\n                    display: none !important;\n                    height: 0 !important;\n                }\n            }\n        }\n    }\n\n    // Rounded\n    &.treo-mat-rounded {\n\n        &.mat-form-field.mat-form-field-appearance-fill {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n                    border-radius: 24px;\n                }\n            }\n\n            // Emphasized affix\n            &.treo-mat-emphasized-affix {\n\n                .mat-form-field-wrapper {\n\n                    .mat-form-field-flex {\n\n                        .mat-form-field-prefix {\n                            border-radius: 24px 0 0 24px;\n                        }\n\n                        .mat-form-field-suffix {\n                            border-radius: 0 24px 24px 0;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Dense\n    &.treo-mat-dense {\n\n        &.mat-form-field.mat-form-field-appearance-fill {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n                    min-height: 40px;\n\n                    .mat-form-field-prefix,\n                    .mat-form-field-suffix {\n\n                        .mat-icon-button {\n                            width: 32px;\n                            min-width: 32px;\n                            height: 32px;\n                            min-height: 32px;\n                        }\n                    }\n\n                    .mat-form-field-prefix {\n\n                        > .mat-icon-button {\n                            margin-left: -4px;\n                            margin-right: 12px;\n                        }\n                    }\n\n                    .mat-form-field-suffix {\n\n                        > .mat-icon-button {\n                            margin-left: 12px;\n                            margin-right: -4px;\n                        }\n                    }\n\n                    .mat-form-field-infix {\n\n                        .mat-input-element {\n                            padding: 11px 0;\n                        }\n                    }\n                }\n            }\n        }\n\n        // Rounded\n        &.treo-mat-rounded {\n\n            &.mat-form-field.mat-form-field-appearance-fill {\n\n                .mat-form-field-wrapper {\n\n                    .mat-form-field-flex {\n                        border-radius: 20px;\n                    }\n                }\n            }\n\n            // Emphasized affix\n            &.treo-mat-emphasized-affix {\n\n                &.mat-form-field.mat-form-field-appearance-fill {\n\n                    .mat-form-field-wrapper {\n\n                        .mat-form-field-flex {\n\n                            .mat-form-field-prefix {\n                                border-radius: 20px 0 0 20px !important;\n                            }\n\n                            .mat-form-field-suffix {\n                                border-radius: 0 20px 20px 0 !important;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Emphasized affix\n    &.treo-mat-emphasized-affix {\n\n        .mat-form-field-wrapper {\n\n            .mat-form-field-flex {\n\n                .mat-form-field-prefix {\n                    margin: 0 16px 0 -16px;\n                    padding-left: 16px;\n                    border-radius: 6px 0 0 6px;\n                    border-right-width: 1px;\n\n                    > .mat-icon {\n                        margin-right: 16px;\n                    }\n\n                    > .mat-icon-button {\n                        margin: 0 8px 0 -8px;\n                    }\n\n                    > .mat-select {\n                        margin-right: 12px;\n                    }\n\n                    > .mat-datepicker-toggle {\n                        margin-right: 8px;\n                    }\n\n                    > *:not(.mat-icon):not(.mat-icon-button):not(.mat-select):not(.mat-datepicker-toggle) {\n                        margin-right: 16px;\n                    }\n                }\n\n                .mat-form-field-suffix {\n                    margin: 0 -16px 0 16px;\n                    padding-right: 16px;\n                    border-radius: 0 6px 6px 0;\n                    border-left-width: 1px;\n\n                    > .mat-icon {\n                        margin-left: 16px;\n                    }\n\n                    > .mat-icon-button {\n                        margin: 0 -8px 0 8px;\n                    }\n\n                    > .mat-select {\n                        margin: 0 -4px 0 16px;\n                    }\n\n                    > .mat-datepicker-toggle {\n                        margin-left: 8px;\n                    }\n\n                    > *:not(.mat-icon):not(.mat-icon-button):not(.mat-select):not(.mat-datepicker-toggle) {\n                        margin-left: 16px;\n                    }\n                }\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Icon\n// -----------------------------------------------------------------------------------------------------\n.mat-icon {\n    display: inline-flex !important;\n    align-items: center;\n    justify-content: center;\n    width: 24px;\n    min-width: 24px;\n    height: 24px;\n    min-height: 24px;\n    font-size: 24px;\n    line-height: 24px;\n    -webkit-appearance: none !important;\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Inputs\n// -----------------------------------------------------------------------------------------------------\n.mat-input-element {\n\n    &::placeholder {\n        transition: none !important;\n    }\n\n    &::-moz-placeholder {\n        transition: none !important;\n    }\n\n    &::-webkit-input-placeholder {\n        transition: none !important;\n    }\n\n    &:-ms-input-placeholder {\n        transition: none !important;\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Menu\n// -----------------------------------------------------------------------------------------------------\n.mat-menu-panel {\n    min-width: 144px !important;\n\n    .mat-menu-content {\n\n        .mat-menu-item {\n            display: flex;\n            align-items: center;\n\n            &.mat-menu-item-submenu-trigger {\n                padding-right: 40px;\n            }\n\n            .mat-icon {\n                margin-right: 12px;\n            }\n        }\n\n        // Divider within mat-menu\n        mat-divider {\n            margin: 8px 0;\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Paginator\n// -----------------------------------------------------------------------------------------------------\n.mat-paginator {\n\n    .mat-paginator-container {\n        padding: 8px 16px;\n\n        @include treo-breakpoint('xs') {\n            justify-content: space-between;\n        }\n\n        // Page size select\n        .mat-paginator-page-size {\n            align-items: center;\n            min-height: 40px;\n            margin: 8px;\n\n            .mat-paginator-page-size-label {\n                margin-right: 12px;\n\n                @include treo-breakpoint('xs') {\n                    display: none;\n                }\n            }\n\n            .mat-paginator-page-size-select {\n                margin: 0;\n\n                .mat-form-field-wrapper {\n                    margin-bottom: 0;\n\n                    .mat-form-field-flex {\n                        min-height: 32px;\n                        padding: 0 10px;\n                    }\n                }\n            }\n        }\n\n        // Range actions\n        .mat-paginator-range-actions {\n            margin: 8px 0;\n\n            .mat-paginator-range-label {\n                margin-right: 16px;\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Select\n// -----------------------------------------------------------------------------------------------------\n.mat-select {\n    display: inline-flex;\n\n    .mat-select-placeholder {\n        transition: none !important;\n    }\n\n    .mat-select-trigger {\n        display: inline-flex;\n        align-items: center;\n        width: 100%;\n        height: auto;\n\n        .mat-select-value {\n            display: flex;\n            position: relative;\n            max-width: none;\n\n            .mat-select-value-text {\n                display: inline-flex;\n\n                > * {\n                    overflow: hidden;\n                    white-space: nowrap;\n                    text-overflow: ellipsis;\n                }\n            }\n        }\n    }\n\n    .mat-select-arrow-wrapper {\n        transform: translateY(0);\n\n        .mat-select-arrow {\n            margin: 0 4px 0 2px;\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Stepper\n// -----------------------------------------------------------------------------------------------------\n.mat-step-icon {\n\n    // Do not override the mat-icon color\n    .mat-icon {\n        color: currentColor !important;\n    }\n}\n\n.mat-step-label,\n.mat-step-label-selected {\n    font-weight: 500 !important;\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Tabs\n// -----------------------------------------------------------------------------------------------------\n.mat-tab-label {\n    opacity: 0.87 !important;\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Textarea\n// -----------------------------------------------------------------------------------------------------\ntextarea.mat-input-element {\n    box-sizing: content-box !important;\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming overrides and fixes\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $warn: map-get($theme, warn);\n    $is-dark: map-get($theme, is-dark);\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accordion\n    // -----------------------------------------------------------------------------------------------------\n    .mat-accordion {\n\n        .mat-expansion-panel {\n\n            &:not(.mat-expanded) {\n\n                .mat-expansion-panel-header {\n\n                    &:not([aria-disabled=true]) {\n\n                        &.cdk-keyboard-focused,\n                        &.cdk-program-focused,\n                        &:hover {\n                            background: transparent !important;\n                        }\n                    }\n                }\n            }\n\n            .mat-expansion-panel-body {\n                color: map-get($foreground, secondary-text);\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Buttons\n    // -----------------------------------------------------------------------------------------------------\n\n    // Colored background buttons\n    .mat-flat-button,\n    .mat-raised-button,\n    .mat-fab,\n    .mat-mini-fab {\n\n        // Apply palette's contrasting color rather than main foreground color\n        @each $palette in (primary, accent, warn) {\n\n            $palette-contrast-color: map-get(map-get($theme, $palette), default-contrast);\n\n            &.mat-#{$palette}:not([disabled]) {\n\n                .mat-icon {\n                    color: $palette-contrast-color;\n                }\n            }\n        }\n\n        .mat-icon {\n            color: currentColor !important;\n        }\n\n        // Add hover and focus style on all buttons\n        .mat-button-focus-overlay {\n            @if ($is-dark) {\n                background-color: rgba(0, 0, 0, 0.05);\n            } @else {\n                background-color: rgba(treo-color('cool-gray', 400), 0.2);\n            }\n        }\n\n        // On palette colored buttons, use a darker color\n        @each $palette in (primary, accent, warn) {\n\n            &.mat-#{$palette} {\n\n                .mat-button-focus-overlay {\n                    background-color: rgba(0, 0, 0, 0.1);\n                }\n            }\n        }\n\n        &:hover,\n        &.cdk-keyboard-focused,\n        &.cdk-program-focused {\n\n            .mat-button-focus-overlay {\n                opacity: 1;\n            }\n        }\n\n        @media (hover: none) {\n\n            &:hover {\n\n                .mat-button-focus-overlay {\n                    opacity: 0 !important;\n                }\n            }\n        }\n\n        &[disabled] {\n\n            .mat-button-focus-overlay {\n                opacity: 0 !important;\n            }\n        }\n    }\n\n    // Transparent background buttons\n    .mat-button,\n    .mat-icon-button,\n    .mat-stroked-button {\n\n        // Apply palette's color rather than main foreground color\n        @each $palette in (primary, accent, warn) {\n\n            $palette-color: map-get(map-get($theme, $palette), default);\n\n            &.mat-#{$palette}:not([disabled]) {\n\n                .mat-icon {\n                    color: $palette-color;\n                }\n            }\n        }\n\n        // Add hover and focus styles\n        .mat-button-focus-overlay {\n            @if ($is-dark) {\n                background-color: rgba(0, 0, 0, 0.05) !important;\n            } @else {\n                background-color: rgba(treo-color('cool-gray', 400), 0.2) !important;\n            }\n        }\n\n        // On palette colored buttons, use a the palette color\n        @each $palette in (primary, accent, warn) {\n\n            &.mat-#{$palette} {\n\n                .mat-button-focus-overlay {\n                    background-color: rgba(map-get(map-get($theme, $palette), default), 0.1) !important;\n                }\n            }\n        }\n\n        &:hover,\n        &.cdk-keyboard-focused,\n        &.cdk-program-focused {\n\n            .mat-button-focus-overlay {\n                opacity: 1;\n            }\n        }\n\n        @media (hover: none) {\n\n            &:hover {\n\n                .mat-button-focus-overlay {\n                    opacity: 0 !important;\n                }\n            }\n        }\n\n        &[disabled] {\n\n            .mat-button-focus-overlay {\n                opacity: 0 !important;\n            }\n        }\n    }\n\n    // All buttons\n    .mat-flat-button,\n    .mat-raised-button,\n    .mat-fab,\n    .mat-mini-fab,\n    .mat-button,\n    .mat-icon-button,\n    .mat-stroked-button {\n\n        // Move mat-button-wrapper above the ripple and focus overlay\n        .mat-button-wrapper {\n            position: relative;\n            z-index: 2;\n        }\n\n        .mat-button-focus-overlay,\n        .mat-button-ripple {\n            z-index: 1;\n        }\n    }\n\n    // Stroked buttons\n    .mat-stroked-button {\n\n        // Border color\n        &:not([disabled]) {\n            @if ($is-dark) {\n                border-color: treo-color('cool-gray', 500);\n            } @else {\n                border-color: treo-color('cool-gray', 300);\n            }\n        }\n\n        &[disabled] {\n            @if ($is-dark) {\n                border-color: treo-color('cool-gray', 600);\n            } @else {\n                border-color: treo-color('cool-gray', 200);\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Drawer\n    // -----------------------------------------------------------------------------------------------------\n    .mat-drawer-backdrop.mat-drawer-shown {\n        background-color: rgba(0, 0, 0, 0.6);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Form fields\n    // -----------------------------------------------------------------------------------------------------\n\n    .mat-form-field.mat-form-field-appearance-fill {\n\n        .mat-form-field-label {\n            color: map-get($foreground, text) !important;\n        }\n\n        .mat-hint {\n            color: map-get($foreground, hint-text);\n        }\n\n        // Border color on disabled fields\n        &.mat-form-field-disabled {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n                    @if ($is-dark) {\n                        border-color: treo-color('cool-gray', 700);\n                    } @else {\n                        border-color: treo-color('cool-gray', 200);\n                    }\n                }\n            }\n        }\n\n\n        // Border color on invalid fields\n        &.mat-form-field-invalid {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n                    border-color: map-get($warn, default);\n                }\n            }\n        }\n\n        // Background color on focused fields\n        &.mat-focused {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n                    background-color: map-get($background, card);\n                }\n            }\n        }\n\n        // Border color on focused and valid fields\n        &.mat-focused:not(.mat-form-field-invalid) {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n                    border-color: map-get($primary, default);\n                }\n            }\n        }\n\n        // Placeholder\n        &.mat-form-field-hide-placeholder {\n\n            .mat-input-element {\n\n                &::placeholder {\n                    color: map-get($foreground, hint-text) !important;\n                    -webkit-text-fill-color: currentColor !important;\n                }\n\n                &::-moz-placeholder {\n                    color: map-get($foreground, hint-text) !important;\n                    -webkit-text-fill-color: currentColor !important;\n                }\n\n                &::-webkit-input-placeholder {\n                    color: map-get($foreground, hint-text) !important;\n                    -webkit-text-fill-color: currentColor !important;\n                }\n\n                &:-ms-input-placeholder {\n                    color: map-get($foreground, hint-text) !important;\n                    -webkit-text-fill-color: currentColor !important;\n                }\n            }\n        }\n\n        // Use svg arrow for native select\n        &.mat-form-field-type-mat-native-select {\n\n            .mat-form-field-infix {\n\n                select {\n                    @if ($is-dark) {\n                        background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2397a6ba' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5H7z'/%3E%3C/svg%3E\");\n                    } @else {\n                        background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%2364748B' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5H7z'/%3E%3C/svg%3E\");\n                    }\n                    background-repeat: no-repeat;\n                    background-position: right -7px center;\n                    background-size: 24px;\n                }\n            }\n        }\n\n\n        .mat-form-field-wrapper {\n\n            .mat-form-field-flex {\n                @if ($is-dark) {\n                    background-color: rgba(0, 0, 0, 0.05);\n                    border-color: treo-color('cool-gray', 500);\n                } @else {\n                    background-color: white;\n                    border-color: treo-color('cool-gray', 300);\n                }\n\n                .mat-form-field-prefix,\n                .mat-form-field-suffix {\n                    color: map-get($foreground, hint-text);\n\n                    .mat-icon,\n                    .mat-icon-button,\n                    .mat-select-value {\n                        color: map-get($foreground, hint-text);\n                    }\n                }\n            }\n        }\n\n        // Emphasized affix\n        &.treo-mat-emphasized-affix {\n\n            .mat-form-field-wrapper {\n\n                .mat-form-field-flex {\n\n                    .mat-form-field-prefix,\n                    .mat-form-field-suffix {\n                        background: map-get($background, background);\n                        @if ($is-dark) {\n                            border-color: treo-color('cool-gray', 500);\n                        } @else {\n                            border-color: treo-color('cool-gray', 300);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Inputs\n    // -----------------------------------------------------------------------------------------------------\n    .mat-input-element {\n\n        // Placeholder color\n        &::placeholder {\n            color: map-get($foreground, hint-text);\n        }\n\n        &::-moz-placeholder {\n            color: map-get($foreground, hint-text);\n        }\n\n        &::-webkit-input-placeholder {\n            color: map-get($foreground, hint-text);\n        }\n\n        &:-ms-input-placeholder {\n            color: map-get($foreground, hint-text);\n        }\n    }\n\n    // If inside an invalid form field\n    .mat-form-field-invalid {\n\n        .mat-input-element {\n\n            // Placeholder color (error)\n            &::placeholder {\n                color: map-get($warn, default);\n            }\n\n            &::-moz-placeholder {\n                color: map-get($warn, default);\n            }\n\n            &::-webkit-input-placeholder {\n                color: map-get($warn, default);\n            }\n\n            &:-ms-input-placeholder {\n                color: map-get($warn, default);\n            }\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Select\n    // -----------------------------------------------------------------------------------------------------\n    .mat-select {\n\n        // Placeholder color\n        .mat-select-placeholder {\n            color: map-get($foreground, hint-text);\n        }\n    }\n\n    // If inside an invalid form\n    .mat-form-field-invalid {\n\n        // Placeholder color (error)\n        .mat-select-placeholder {\n            color: map-get($warn, default);\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Toolbar\n    // -----------------------------------------------------------------------------------------------------\n    .mat-toolbar {\n\n        // Apply palette's contrasting color rather than main foreground color\n        @each $palette in (primary, accent, warn) {\n\n            $palette-contrast-color: map-get(map-get($theme, $palette), default-contrast);\n\n            &.mat-#{$palette} {\n\n                .mat-icon {\n                    color: $palette-contrast-color;\n                }\n\n                .text-secondary {\n                    color: rgba(rgba($palette-contrast-color, 1), 0.6);\n                }\n\n                .text-hint {\n                    color: rgba(rgba($palette-contrast-color, 1), 0.38);\n                }\n\n                .text-disabled {\n                    color: rgba(rgba($palette-contrast-color, 1), 0.38);\n                }\n\n                .divider {\n                    color: rgba($palette-contrast-color, 0.12);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/overrides/_highlightjs.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Highlight.js color scheme overrides\n// -----------------------------------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $foreground: map-get($theme, foreground);\n    $is-dark: map-get($theme, is-dark);\n\n    // DARK COLOR SCHEME\n    @if ($is-dark) {\n\n        code,\n        pre {\n\n            .hljs-built_in,\n            .hljs-selector-tag,\n            .hljs-section,\n            .hljs-link {\n                color: #8BE9FD;\n            }\n\n            .hljs-keyword {\n                color: #FF79C6;\n            }\n\n            .hljs,\n            .hljs-subst {\n                color: #F8F8F2;\n            }\n\n            .hljs-title {\n                color: #50FA7B;\n            }\n\n            .hljs-meta,\n            .hljs-type,\n            .hljs-symbol,\n            .hljs-bullet,\n            .hljs-addition,\n            .hljs-variable,\n            .hljs-template-tag,\n            .hljs-template-variable {\n                color: #F1FA8C;\n            }\n\n            .hljs-name {\n                color: #80DEEA;\n            }\n\n            .hljs-attr {\n                color: #E1BEE7;\n            }\n\n            .hljs-string {\n                color: #A5D6A7;\n            }\n\n            .hljs-comment,\n            .hljs-quote,\n            .hljs-deletion {\n                color: #6272A4;\n            }\n\n            .hljs-keyword,\n            .hljs-selector-tag,\n            .hljs-literal,\n            .hljs-title,\n            .hljs-section,\n            .hljs-doctag,\n            .hljs-type,\n            .hljs-name,\n            .hljs-strong {\n                font-weight: 700;\n            }\n\n            .hljs-literal,\n            .hljs-number {\n                color: #BD93F9;\n            }\n\n            .hljs-emphasis {\n                font-style: italic;\n            }\n        }\n    }\n        // LIGHT COLOR SCHEME\n    @else {\n\n        code[class*='language-'],\n        pre[class*='language-'] {\n\n            .hljs-comment,\n            .hljs-quote {\n                color: #A0A1A7;\n                font-style: italic;\n            }\n\n            .hljs-doctag,\n            .hljs-keyword,\n            .hljs-formula {\n                color: #A626A4;\n            }\n\n            .hljs-name {\n                color: #7986CB;\n            }\n\n            .hljs-tag {\n                color: #B9BBD2;\n            }\n\n            .hljs-section,\n            .hljs-selector-tag,\n            .hljs-deletion,\n            .hljs-subst {\n                color: #E45649;\n            }\n\n            .hljs-literal {\n                color: #0184BB;\n            }\n\n            .hljs-string,\n            .hljs-regexp,\n            .hljs-addition,\n            .hljs-attribute,\n            .hljs-meta-string {\n                color: #50A14F;\n            }\n\n            .hljs-built_in,\n            .hljs-class .hljs-title {\n                color: #C18401;\n            }\n\n            .hljs-attr,\n            .hljs-variable,\n            .hljs-template-variable,\n            .hljs-type,\n            .hljs-selector-class,\n            .hljs-selector-attr,\n            .hljs-selector-pseudo,\n            .hljs-number {\n                color: #BA68C8;\n            }\n\n            .hljs-symbol,\n            .hljs-bullet,\n            .hljs-link,\n            .hljs-meta,\n            .hljs-selector-id,\n            .hljs-title {\n                color: #4078F2;\n            }\n\n            .hljs-emphasis {\n                font-style: italic;\n            }\n\n            .hljs-strong {\n                font-weight: 700;\n            }\n\n            .hljs-link {\n                text-decoration: underline;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/overrides/_perfect-scrollbar.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Perfect scrollbar overrides\n// -----------------------------------------------------------------------------------------------------\n.ps {\n    position: relative;\n\n    &:hover,\n    &.ps--focus,\n    &.ps--scrolling-x,\n    &.ps--scrolling-y {\n\n        > .ps__rail-x,\n        > .ps__rail-y {\n            opacity: 1;\n        }\n    }\n\n    > .ps__rail-x,\n    > .ps__rail-y {\n        z-index: 99999;\n    }\n\n    > .ps__rail-x {\n        height: 14px;\n        background: transparent !important;\n        transition: none !important;\n\n        &:hover,\n        &:focus,\n        &.ps--clicking {\n            opacity: 1;\n\n            .ps__thumb-x {\n                height: 10px;\n            }\n        }\n\n        .ps__thumb-x {\n            background: rgba(0, 0, 0, 0.5);\n            box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.15);\n            height: 6px;\n            transition: height 225ms cubic-bezier(0.25, 0.8, 0.25, 1);\n        }\n    }\n\n    > .ps__rail-y {\n        width: 14px;\n        background: transparent !important;\n        transition: none !important;\n        left: auto !important;\n\n        &:hover,\n        &:focus,\n        &.ps--clicking {\n            opacity: 1;\n\n            .ps__thumb-y {\n                width: 10px;\n            }\n        }\n\n        .ps__thumb-y {\n            background: rgba(0, 0, 0, 0.5);\n            box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.15);\n            width: 6px;\n            transition: width 225ms cubic-bezier(0.25, 0.8, 0.25, 1);\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/overrides/_quill.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Quill editor style overrides\n// -----------------------------------------------------------------------------------------------------\n\n.ql-toolbar {\n    border-radius: 6px 6px 0 0;\n    padding: 0 !important;\n\n    .ql-formats {\n        margin: 11px 8px !important;\n    }\n\n    .ql-picker {\n\n        &.ql-expanded {\n\n            .ql-picker-options {\n                z-index: 10 !important;\n            }\n        }\n    }\n}\n\n.ql-container {\n    overflow: hidden;\n    border-radius: 0 0 6px 6px;\n    @include treo-elevation('sm');\n\n    .ql-editor {\n        min-height: 160px;\n        max-height: 160px;\n        height: 160px;\n    }\n}\n\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    .ql-toolbar {\n        @if ($is-dark) {\n            background-color: rgba(0, 0, 0, 0.05);\n            border-color: treo-color('cool-gray', 500);\n        } @else {\n            background: treo-color('cool-gray', 100);\n            border-color: treo-color('cool-gray', 300);\n        }\n\n        .ql-picker {\n\n            &.ql-expanded {\n\n                .ql-picker-label {\n                    @if ($is-dark) {\n                        border-color: treo-color('cool-gray', 500);\n                    } @else {\n                        border-color: treo-color('cool-gray', 300);\n                    }\n                }\n\n                .ql-picker-options {\n                    @if ($is-dark) {\n                        border-color: treo-color('cool-gray', 500);\n                    } @else {\n                        border-color: treo-color('cool-gray', 300);\n                    }\n                    background: map-get($background, card);\n                }\n            }\n\n            .ql-picker-label {\n                color: map-get($foreground, text);\n            }\n\n            .ql-picker-options {\n\n                .ql-picker-item {\n                    color: map-get($foreground, text);\n                }\n            }\n        }\n\n        .ql-stroke,\n        .ql-stroke-mitter {\n            stroke: map-get($foreground, icon);\n        }\n\n        .ql-fill {\n            fill: map-get($foreground, icon);\n        }\n\n        button:hover,\n        button:focus,\n        button.ql-active,\n        .ql-picker-label:hover,\n        .ql-picker-label.ql-active,\n        .ql-picker-item:hover,\n        .ql-picker-item.ql-selected {\n            color: map-get($primary, default) !important;\n\n            .ql-stroke,\n            .ql-stroke-mitter {\n                stroke: map-get($primary, default) !important;\n            }\n\n            .ql-fill {\n                fill: map-get($primary, default) !important;\n            }\n        }\n    }\n\n    .ql-container {\n        @if ($is-dark) {\n            border-color: treo-color('cool-gray', 500);\n        } @else {\n            border-color: treo-color('cool-gray', 300);\n        }\n\n        .ql-editor {\n            @if ($is-dark) {\n                background-color: rgba(0, 0, 0, 0.05);\n            } @else {\n                background-color: treo-color('cool-gray', 50);\n            }\n\n            &:focus {\n                background-color: map-get($background, card);\n            }\n\n            &.ql-blank::before {\n                color: map-get($foreground, hint-text);\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/treo.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Use this file to access to the core Angular Material and Treo utilities\n// -----------------------------------------------------------------------------------------------------\n\n// 1. Angular Material theming tools\n@import '~@angular/material/theming';\n\n// 2. Utilities\n@import '../tailwind/exported/variables';\n@import 'utilities/theming';\n@import 'utilities/breakpoints';\n@import 'utilities/colors';\n@import 'utilities/elevations';\n@import 'utilities/icons';\n@import 'utilities/keyframes';\n\n// 3. Themes definition file that includes $treo-themes map\n@import 'src/styles/themes';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/utilities/_breakpoints.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Mixins\n// -----------------------------------------------------------------------------------------------------\n\n///\n/// Wrap the mixin content with the given media breakpoint.\n/// If breakpoint name does not exist on the breakpoints list,\n/// apply the given name as a media rule.\n///\n/// @access public\n/// @param {String} $breakpoint - Name of the breakpoint or a media rule\n///\n@mixin treo-breakpoint($breakpoint) {\n\n    $mediaQuery: map-get($treo-breakpoints, $breakpoint);\n\n    @if ($mediaQuery != null) {\n\n        @media #{$mediaQuery} {\n            @content\n        }\n    } @else {\n\n        @media #{$breakpoint} {\n            @content\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/utilities/_colors.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Functions\n// -----------------------------------------------------------------------------------------------------\n\n///\n/// Get color from treo color maps\n///\n/// @access public\n/// @param {String} $color - Desired color\n/// @param {String|Number} $hue - Desired hue\n/// @param {Number} $opacity - Desired opacity\n///\n@function treo-color($color, $hue: 500, $opacity: 1) {\n\n    // Get the color palette\n    $palette: map-get($treo-colors, $color);\n\n    // Make sure the palette is available\n    @if ($palette == null) {\n        @error \"Color '#{$color}' is not available!\";\n    }\n\n    // Get the color\n    $color: map-get($palette, $hue);\n\n    // Make sure the hue is available\n    @if ($color == null) {\n        @error \"Hue '#{$hue}' is not available!\";\n    }\n\n    // Apply the opacity if possible\n    @if (type-of($color) == color) {\n        $color: rgba($color, $opacity);\n    }\n\n    // Return the color\n    @return $color;\n}\n\n///\n/// Get contrast color from treo color maps\n///\n/// @access public\n/// @param {String} $contrast - Desired contrast\n/// @param {String|Number} $hue - Desired hue\n/// @param {Number} $opacity - Desired opacity\n///\n@function treo-contrast($contrast, $hue: 500, $opacity: 1) {\n\n    // Get the color palette\n    $palette: map-get($treo-colors, $contrast);\n\n    // Make sure the palette is available\n    @if ($palette == null) {\n        @error \"Contrast '#{$contrast}' is not available!\";\n    }\n\n    // Get the contrast\n    $contrast: map-get(map-get($palette, contrast), $hue);\n\n    // Make sure the hue is available\n    @if ($contrast == null) {\n        @error \"Hue '#{$hue}' is not available!\";\n    }\n\n    // Apply the opacity if possible\n    @if (type-of($contrast) == color) {\n        $color: rgba($contrast, $opacity);\n    }\n\n    // Return the contrast\n    @return $contrast;\n}\n\n///\n/// Modify the Angular Material theme object to soften foreground colors\n/// on light themes and increase contrast on dark themes\n///\n/// @access private\n/// @param {Map} $theme - Angular Material theme map\n///\n@function _treo-modify-angular-material-theme-colors($theme) {\n\n    // Store the is-dark for convenience\n    $is-dark: map-get($theme, is-dark);\n\n    // Generate the modified foreground palette based on\n    // Angular Material's mat-xxx-theme-foreground map\n    $foreground: (\n        base: if($is-dark, white, black),\n        divider: if($is-dark, rgba(treo-color('cool-gray', 100), 0.12), treo-color('cool-gray', 200)),\n        dividers: if($is-dark, rgba(treo-color('cool-gray', 100), 0.12), treo-color('cool-gray', 200)),\n        disabled: if($is-dark, treo-color('cool-gray', 600), treo-color('cool-gray', 400)),\n        disabled-button: if($is-dark, treo-color('cool-gray', 800), treo-color('cool-gray', 400)),\n        disabled-text: if($is-dark, treo-color('cool-gray', 600), treo-color('cool-gray', 400)),\n        elevation: black,\n        hint-text: if($is-dark, treo-color('cool-gray', 500), treo-color('cool-gray', 400)),\n        secondary-text: if($is-dark, treo-color('cool-gray', 400), treo-color('cool-gray', 500)),\n        icon: if($is-dark, treo-color('cool-gray', 100), treo-color('cool-gray', 500)),\n        icons: if($is-dark, treo-color('cool-gray', 100), treo-color('cool-gray', 500)),\n        text: if($is-dark, white, treo-color('cool-gray', 800)),\n        slider-min: if($is-dark, white, treo-color('cool-gray', 800)),\n        slider-off: if($is-dark, treo-color('cool-gray', 500), treo-color('cool-gray', 300)),\n        slider-off-active: if($is-dark, treo-color('cool-gray', 400), treo-color('cool-gray', 400)),\n    );\n\n    // Generate the modified background palette based on\n    // Angular Material's mat-xxx-theme-background map\n    $background: (\n        status-bar: if($is-dark, treo-color('cool-gray', 900), treo-color('cool-gray', 300)),\n        app-bar: if($is-dark, treo-color('cool-gray', 900), white),\n        background: if($is-dark, treo-color('cool-gray', 900), treo-color('cool-gray', 100)),\n        hover: if($is-dark, rgba(255, 255, 255, 0.05), rgba(treo-color('cool-gray', 400), 0.12)),\n        card: if($is-dark, treo-color('cool-gray', 800), white),\n        dialog: if($is-dark, treo-color('cool-gray', 800), white),\n        disabled-button: if($is-dark, rgba(treo-color('cool-gray', 900), 0.38), rgba(treo-color('cool-gray', 400), 0.38)),\n        raised-button: if($is-dark, treo-color('cool-gray', 900), white),\n        focused-button: if($is-dark, treo-color('cool-gray', 200), treo-color('cool-gray', 500)),\n        selected-button: if($is-dark, rgba(255, 255, 255, 0.05), treo-color('cool-gray', 200)),\n        selected-disabled-button: if($is-dark, treo-color('cool-gray', 800), treo-color('cool-gray', 200)),\n        disabled-button-toggle: if($is-dark, treo-color('cool-gray', 900), treo-color('cool-gray', 300)),\n        unselected-chip: if($is-dark, treo-color('cool-gray', 600), treo-color('cool-gray', 200)),\n        disabled-list-option: if($is-dark, treo-color('cool-gray', 200), treo-color('cool-gray', 300)),\n        tooltip: if($is-dark, treo-color('cool-gray', 500), treo-color('cool-gray', 800)),\n    );\n\n    // Store the modified theme.\n    //\n    // Since modifications only being done on 'foreground'\n    // and 'background' palettes, add them from above but\n    // keep everything else original\n    $modified-theme: (\n        primary: map-get($theme, primary),\n        accent: map-get($theme, accent),\n        warn: map-get($theme, warn),\n        is-dark: map-get($theme, is-dark),\n        foreground: $foreground,\n        background: $background\n    );\n\n    // Return the modified theme\n    @return $modified-theme;\n}\n\n///\n/// Generate an Angular Material light theme\n/// and modify it before returning\n///\n/// @access public\n/// @param {Map} $primary-palette - Desired primary palette\n/// @param {Map} $accent-palette - Desired accent palette\n/// @param {Map} $warn-palette - Desired warn palette\n///\n@function treo-light-theme($primary-palette, $accent-palette, $warn-palette) {\n\n    // Generate the Angular Material theme\n    $angular-material-theme: mat-light-theme($primary-palette, $accent-palette, $warn-palette);\n\n    // Modify and return the theme\n    @return _treo-modify-angular-material-theme-colors($angular-material-theme);\n}\n\n///\n/// Generate an Angular Material dark theme\n/// and modify it before returning\n///\n/// @access public\n/// @param {Map} $primary-palette - Desired primary palette\n/// @param {Map} $accent-palette - Desired accent palette\n/// @param {Map} $warn-palette - Desired warn palette\n///\n@function treo-dark-theme($primary-palette, $accent-palette, $warn-palette) {\n\n    // Generate the Angular Material theme\n    $angular-material-theme: mat-dark-theme($primary-palette, $accent-palette, $warn-palette);\n\n    // Modify and return the theme\n    @return _treo-modify-angular-material-theme-colors($angular-material-theme);\n}\n\n///\n/// Generate an Angular Material compatible palette\n///\n/// @access public\n/// @param {Map} $palette - Name of the palette\n/// @param {Map} $default - Default hue\n/// @param {Map} $lighter - Lighter hue\n/// @param {Map} $darker - Darker hue\n/// @param {Map} $text - Text color\n///\n@function treo-palette($palette, $default: 500, $lighter: 100, $darker: 700, $text: $default) {\n    @return mat-palette(map-get($treo-colors, $palette), $default, $lighter, $darker, $text);\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Mixins\n// -----------------------------------------------------------------------------------------------------\n\n///\n/// Generate color classes\n///\n/// @access private\n/// @param {String} $color-name - Name of the color\n/// @param {Color} $color - Color\n/// @param {Color} $contrast-color - Contrasting color of the Color\n/// @param {String} $hue-value - Hue value of the Color\n///\n@mixin _generate-color-classes($color-name, $color, $contrast-color, $hue-value) {\n\n    // Text color\n    .text-#{$color-name}#{$hue-value} {\n        color: $color !important;\n    }\n\n    // Background color\n    .bg-#{$color-name}#{$hue-value} {\n        background: $color !important;\n    }\n\n    // Background and text color\n    .#{$color-name}#{$hue-value} {\n        background: $color !important;\n        color: $contrast-color !important;\n\n        // Icon\n        .mat-icon {\n            color: $contrast-color !important;\n        }\n\n        // Text\n        &.text-secondary,\n        .text-secondary {\n            color: rgba($contrast-color, 0.6) !important;\n        }\n\n        &.text-hint,\n        .text-hint {\n            color: rgba($contrast-color, 0.38) !important;\n        }\n\n        &.text-disabled,\n        .text-disabled {\n            color: rgba($contrast-color, 0.38) !important;\n        }\n\n        &.divider,\n        .divider {\n            color: rgba($contrast-color, 0.12) !important;\n        }\n    }\n\n    // Border color\n    .border-#{$color-name}#{$hue-value} {\n        border-color: $color !important;\n    }\n\n    .hover\\:border-#{$color-name}#{$hue-value}:hover {\n        border-color: $color !important;\n    }\n\n    .focus\\:border-#{$color-name}#{$hue-value}:focus {\n        border-color: $color !important;\n    }\n\n    .active\\:border-#{$color-name}#{$hue-value}:active {\n        border-color: $color !important;\n    }\n}\n\n///\n/// Generate helper classes for 'primary', 'accent' and 'warn' colors\n///\n/// @access public\n/// @param {Map} $palettes - Palettes to generate classes for\n///\n@mixin treo-color-classes($palettes) {\n\n    // Go through each palette\n    @each $palette-name, $palette in $palettes {\n\n        // Get each hue value\n        @each $hue in (100, 200, 300, 400, 500, 600, 700, 800, 900) {\n\n            // Get color and contrast\n            $color: map-get($palette, $hue);\n            $contrast: map-get($palette, '#{$hue}-contrast');\n\n            // If both color and its contrasting color exist, generate the color classes...\n            @if ($color != null and $contrast != null) {\n\n                // Generate color classes\n                @include _generate-color-classes($palette-name, $color, $contrast, '-#{$hue}');\n\n                // If the hue equals to 500, generate color classes one more time,\n                // but without the hue value suffix\n                @if ($hue == 500) {\n\n                    // Generate color classes\n                    @include _generate-color-classes($palette-name, $color, $contrast, '');\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/utilities/_elevations.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Mixins\n// -----------------------------------------------------------------------------------------------------\n\n///\n/// Adds an elevation from pre-defined elevations map. Elevation values are the same\n/// as default TailwindCSS elevations to keep things consistent.\n///\n/// @access public\n/// @param {String} $elevation - The amount of the elevation that the element will have\n/// @param {Boolean} $important - Whether to add an !important tag to the shadow rule\n/// @param {Color} $color - Color of the shadow\n///\n@mixin treo-elevation($elevation: 'default', $important: false, $color: rgb(0, 0, 0)) {\n\n    // Get the shadow value\n    $shadow: map-get($treo-elevations, $elevation);\n\n    // Throw an error if the shadow does not exist\n    @if ($shadow == null) {\n        @error 'Elevation `' + $elevation + '` does not exists!';\n    }\n\n    box-shadow: #{$shadow} if($important, !important, null);\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/utilities/_icons.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Mixins\n// -----------------------------------------------------------------------------------------------------\n\n///\n/// Correctly sets the icon size\n///\n/// @access public\n/// @param {String} $size - Size of the icon (px)\n/// @param {Boolean} $important - Set the '!important' tag on the rules\n///\n@mixin treo-icon-size($size, $important: false) {\n    width: #{($size) + 'px'} if($important, !important, null);\n    height: #{($size) + 'px'} if($important, !important, null);\n    min-width: #{($size) + 'px'} if($important, !important, null);\n    min-height: #{($size) + 'px'} if($important, !important, null);\n    font-size: #{($size) + 'px'} if($important, !important, null);\n    line-height: #{($size) + 'px'} if($important, !important, null);\n\n    svg {\n        width: #{($size) + 'px'} if($important, !important, null);\n        height: #{($size) + 'px'} if($important, !important, null);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/utilities/_keyframes.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Rotation - animation: rotation 8s infinite linear;\n// -----------------------------------------------------------------------------------------------------\n@keyframes rotation {\n    from {\n        transform: rotate(0deg);\n    }\n    to {\n        transform: rotate(359deg);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/utilities/_theming.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ Mixins\n// -----------------------------------------------------------------------------------------------------\n\n///\n/// Go through the each defined theme and apply it to whatever content this mixin has\n///\n/// @access public\n/// @param {Boolean} $encapsulated - Should the generated rules compatible with encapsulated components?\n///\n@mixin treo-theme($encapsulated: false) {\n\n    @each $class-name, $theme in $treo-themes {\n\n        // Set the theme as global so it can be accessible from outside\n        $theme: $theme !global;\n\n        // If encapsulated...\n        @if ($encapsulated) {\n\n            // Do everything inside a host context\n            :host-context(.#{$class-name}) {\n                @content;\n            }\n\n        } @else {\n\n            // Do everything openly\n            .#{$class-name} {\n                @content;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/vendors/_angular-material.scss",
    "content": "// Include core Angular Material styles from '~@angular/material/theming'\n@include mat-core();\n"
  },
  {
    "path": "webapp/frontend/src/@treo/styles/vendors/_normalize.scss",
    "content": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n   ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n    line-height: 1.15; /* 1 */\n    -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n   ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n    margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n    display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n    //font-size: 2em;\n    //margin: 0.67em 0;\n}\n\n/* Grouping content\n   ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n    box-sizing: content-box; /* 1 */\n    height: 0; /* 1 */\n    overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n    font-family: monospace, monospace; /* 1 */\n    font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n   ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n    background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n    border-bottom: none; /* 1 */\n    text-decoration: underline; /* 2 */\n    -webkit-text-decoration: underline dotted;\n    text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n    font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n    font-family: monospace, monospace; /* 1 */\n    font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n    font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n    font-size: 75%;\n    line-height: 0;\n    position: relative;\n    vertical-align: baseline;\n}\n\nsub {\n    bottom: -0.25em;\n}\n\nsup {\n    top: -0.5em;\n}\n\n/* Embedded content\n   ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n    border-style: none;\n}\n\n/* Forms\n   ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n    font-family: inherit; /* 1 */\n    font-size: 100%; /* 1 */\n    line-height: 1.15; /* 1 */\n    margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n    overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n    text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n    -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type='button']::-moz-focus-inner,\n[type='reset']::-moz-focus-inner,\n[type='submit']::-moz-focus-inner {\n    border-style: none;\n    padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type='button']:-moz-focusring,\n[type='reset']:-moz-focusring,\n[type='submit']:-moz-focusring {\n    outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n    padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n *    `fieldset` elements in all browsers.\n */\n\nlegend {\n    box-sizing: border-box; /* 1 */\n    color: inherit; /* 2 */\n    display: table; /* 1 */\n    max-width: 100%; /* 1 */\n    padding: 0; /* 3 */\n    white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n    vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n    overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type='checkbox'],\n[type='radio'] {\n    box-sizing: border-box; /* 1 */\n    padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type='number']::-webkit-inner-spin-button,\n[type='number']::-webkit-outer-spin-button {\n    height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type='search'] {\n    -webkit-appearance: textfield; /* 1 */\n    outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type='search']::-webkit-search-decoration {\n    -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n    -webkit-appearance: button; /* 1 */\n    font: inherit; /* 2 */\n}\n\n/* Interactive\n   ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n    display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n    display: list-item;\n}\n\n/* Misc\n   ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n    display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n    display: none;\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/export.css",
    "content": "/**\n * This file is being used by injecting custom TailwindCSS variants.\n *\n * These variants are different because these will not generate any\n * CSS rules, but they will generate SCSS variables from your Tailwind\n * config file.\n *\n * The generated output will be used by Treo.\n * Do NOT modify or use this file to generate your own variants.\n */\n\n@variants export-boxShadow, export-colors, export-fontFamily, export-screens {}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/export.js",
    "content": "#!/usr/bin/env node\n\nconst fs = require('fs');\nconst path = require('path');\nconst resolveConfig = require('tailwindcss/resolveConfig');\nconst buildMediaQuery = require('tailwindcss/lib/util/buildMediaQuery').default;\n\nif ( !process.argv[3] || !process.argv[5] )\n{\n    console.error('Usage: -c [Relative path to Tailwind config file] -o [Relative path to Output file]');\n    process.exit(1);\n}\n\nconst tailwindConfig = require(path.join(process.cwd(), process.argv[3]));\nconst output = process.argv[5];\nlet outputFileContents = '';\n\n// Read screens and build media queries\nconst screens = resolveConfig(tailwindConfig).theme.screens;\nlet queries = {};\nObject.keys(screens).forEach((key) => {\n    queries[key] = buildMediaQuery(screens[key])\n});\nqueries = JSON.stringify(queries);\nqueries = queries.replace(/\"/g, '\\'').replace(/,/g, ', ').replace(/:/g, ': ');\noutputFileContents = `${outputFileContents}export const treoBreakpoints = ${queries};\\n`;\n\n// Write the output file\nfs.writeFile(output, outputFileContents, (err) => {\n    if ( err )\n    {\n        return console.log(err);\n    }\n});\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/exported/_variables.scss",
    "content": "/**\n * This file is being used by injecting custom TailwindCSS variants.\n *\n * These variants are different because these will not generate any\n * CSS rules, but they will generate SCSS variables from your Tailwind\n * config file.\n *\n * The generated output will be used by Treo.\n * Do NOT modify or use this file to generate your own variants.\n */\n\n$treo-elevations: (\n  'xs': '0 0 0 1px rgba(0, 0, 0, 0.05)',\n 'sm': '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n 'default': '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n 'md': '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n 'lg': '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n 'xl': '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n 'inner': 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)',\n 'outline': '0 0 0 3px rgba(66, 153, 225, 0.5)',\n 'none': 'none',\n 'solid': '0 0 0 2px currentColor',\n ) !default;\n\n$treo-colors: (\n  'white': (\n  50: #FFFFFF,\n 100: #FFFFFF,\n 200: #FFFFFF,\n 300: #FFFFFF,\n 400: #FFFFFF,\n 500: #FFFFFF,\n 600: #FFFFFF,\n 700: #FFFFFF,\n 800: #FFFFFF,\n 900: #FFFFFF,\n contrast: (\n  50: #252F3F,\n 100: #252F3F,\n 200: #252F3F,\n 300: #252F3F,\n 400: #252F3F,\n 500: #252F3F,\n 600: #252F3F,\n 700: #252F3F,\n 800: #252F3F,\n 900: #252F3F,\n )\n),\n 'black': (\n  50: #000000,\n 100: #000000,\n 200: #000000,\n 300: #000000,\n 400: #000000,\n 500: #000000,\n 600: #000000,\n 700: #000000,\n 800: #000000,\n 900: #000000,\n contrast: (\n  50: #FFFFFF,\n 100: #FFFFFF,\n 200: #FFFFFF,\n 300: #FFFFFF,\n 400: #FFFFFF,\n 500: #FFFFFF,\n 600: #FFFFFF,\n 700: #FFFFFF,\n 800: #FFFFFF,\n 900: #FFFFFF,\n )\n),\n 'gray': (\n  50: #F9FAFB,\n 100: #F4F5F7,\n 200: #E5E7EB,\n 300: #D2D6DC,\n 400: #9FA6B2,\n 500: #6B7280,\n 600: #4B5563,\n 700: #374151,\n 800: #252F3F,\n 900: #161E2E,\n contrast: (\n  50: #161E2E,\n 100: #161E2E,\n 200: #161E2E,\n 300: #161E2E,\n 400: #161E2E,\n 500: #161E2E,\n 600: #F9FAFB,\n 700: #F9FAFB,\n 800: #F9FAFB,\n 900: #F9FAFB,\n )\n),\n 'cool-gray': (\n  50: #FBFDFE,\n 100: #F1F5F9,\n 200: #E2E8F0,\n 300: #CFD8E3,\n 400: #97A6BA,\n 500: #64748B,\n 600: #475569,\n 700: #364152,\n 800: #27303F,\n 900: #1A202E,\n contrast: (\n  50: #1A202E,\n 100: #1A202E,\n 200: #1A202E,\n 300: #1A202E,\n 400: #1A202E,\n 500: #1A202E,\n 600: #FBFDFE,\n 700: #FBFDFE,\n 800: #FBFDFE,\n 900: #FBFDFE,\n )\n),\n 'red': (\n  50: #FDF2F2,\n 100: #FDE8E8,\n 200: #FBD5D5,\n 300: #F8B4B4,\n 400: #F98080,\n 500: #F05252,\n 600: #E02424,\n 700: #C81E1E,\n 800: #9B1C1C,\n 900: #771D1D,\n contrast: (\n  50: #771D1D,\n 100: #771D1D,\n 200: #771D1D,\n 300: #771D1D,\n 400: #771D1D,\n 500: #771D1D,\n 600: #FDF2F2,\n 700: #FDF2F2,\n 800: #FDF2F2,\n 900: #FDF2F2,\n )\n),\n 'orange': (\n  50: #FFF8F1,\n 100: #FEECDC,\n 200: #FCD9BD,\n 300: #FDBA8C,\n 400: #FF8A4C,\n 500: #FF5A1F,\n 600: #D03801,\n 700: #B43403,\n 800: #8A2C0D,\n 900: #771D1D,\n contrast: (\n  50: #771D1D,\n 100: #771D1D,\n 200: #771D1D,\n 300: #771D1D,\n 400: #771D1D,\n 500: #771D1D,\n 600: #FFF8F1,\n 700: #FFF8F1,\n 800: #FFF8F1,\n 900: #FFF8F1,\n )\n),\n 'yellow': (\n  50: #FDFDEA,\n 100: #FDF6B2,\n 200: #FCE96A,\n 300: #FACA15,\n 400: #E3A008,\n 500: #C27803,\n 600: #9F580A,\n 700: #8E4B10,\n 800: #723B13,\n 900: #633112,\n contrast: (\n  50: #633112,\n 100: #633112,\n 200: #633112,\n 300: #633112,\n 400: #633112,\n 500: #633112,\n 600: #FDFDEA,\n 700: #FDFDEA,\n 800: #FDFDEA,\n 900: #FDFDEA,\n )\n),\n 'green': (\n  50: #F3FAF7,\n 100: #DEF7EC,\n 200: #BCF0DA,\n 300: #84E1BC,\n 400: #31C48D,\n 500: #0E9F6E,\n 600: #057A55,\n 700: #046C4E,\n 800: #03543F,\n 900: #014737,\n contrast: (\n  50: #014737,\n 100: #014737,\n 200: #014737,\n 300: #014737,\n 400: #014737,\n 500: #F3FAF7,\n 600: #F3FAF7,\n 700: #F3FAF7,\n 800: #F3FAF7,\n 900: #F3FAF7,\n )\n),\n 'teal': (\n  50: #EDFAFA,\n 100: #D5F5F6,\n 200: #AFECEF,\n 300: #7EDCE2,\n 400: #16BDCA,\n 500: #0694A2,\n 600: #047481,\n 700: #036672,\n 800: #05505C,\n 900: #014451,\n contrast: (\n  50: #014451,\n 100: #014451,\n 200: #014451,\n 300: #014451,\n 400: #014451,\n 500: #EDFAFA,\n 600: #EDFAFA,\n 700: #EDFAFA,\n 800: #EDFAFA,\n 900: #EDFAFA,\n )\n),\n 'blue': (\n  50: #EBF5FF,\n 100: #E1EFFE,\n 200: #C3DDFD,\n 300: #A4CAFE,\n 400: #76A9FA,\n 500: #3F83F8,\n 600: #1C64F2,\n 700: #1A56DB,\n 800: #1E429F,\n 900: #233876,\n contrast: (\n  50: #233876,\n 100: #233876,\n 200: #233876,\n 300: #233876,\n 400: #233876,\n 500: #EBF5FF,\n 600: #EBF5FF,\n 700: #EBF5FF,\n 800: #EBF5FF,\n 900: #EBF5FF,\n )\n),\n 'indigo': (\n  50: #F0F5FF,\n 100: #E5EDFF,\n 200: #CDDBFE,\n 300: #B4C6FC,\n 400: #8DA2FB,\n 500: #6875F5,\n 600: #5850EC,\n 700: #5145CD,\n 800: #42389D,\n 900: #362F78,\n contrast: (\n  50: #362F78,\n 100: #362F78,\n 200: #362F78,\n 300: #362F78,\n 400: #362F78,\n 500: #F0F5FF,\n 600: #F0F5FF,\n 700: #F0F5FF,\n 800: #F0F5FF,\n 900: #F0F5FF,\n )\n),\n 'purple': (\n  50: #F6F5FF,\n 100: #EDEBFE,\n 200: #DCD7FE,\n 300: #CABFFD,\n 400: #AC94FA,\n 500: #9061F9,\n 600: #7E3AF2,\n 700: #6C2BD9,\n 800: #5521B5,\n 900: #4A1D96,\n contrast: (\n  50: #4A1D96,\n 100: #4A1D96,\n 200: #4A1D96,\n 300: #4A1D96,\n 400: #4A1D96,\n 500: #F6F5FF,\n 600: #F6F5FF,\n 700: #F6F5FF,\n 800: #F6F5FF,\n 900: #F6F5FF,\n )\n),\n 'pink': (\n  50: #FDF2F8,\n 100: #FCE8F3,\n 200: #FAD1E8,\n 300: #F8B4D9,\n 400: #F17EB8,\n 500: #E74694,\n 600: #D61F69,\n 700: #BF125D,\n 800: #99154B,\n 900: #751A3D,\n contrast: (\n  50: #751A3D,\n 100: #751A3D,\n 200: #751A3D,\n 300: #751A3D,\n 400: #751A3D,\n 500: #FDF2F8,\n 600: #FDF2F8,\n 700: #FDF2F8,\n 800: #FDF2F8,\n 900: #FDF2F8,\n )\n),\n ) !default;\n\n$treo-font-sans: Inter,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\" !default;\n\n$treo-font-serif: Georgia,Cambria,\"Times New Roman\",Times,serif !default;\n\n$treo-font-mono: \"IBM Plex Mono\",Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace !default;\n\n$treo-breakpoints: (\n  xs: '(min-width: 0) and (max-width: 599px)',\n sm: '(min-width: 600px) and (max-width: 959px)',\n md: '(min-width: 960px) and (max-width: 1279px)',\n lg: '(min-width: 1280px) and (max-width: 1439px)',\n xl: '(min-width: 1440px)',\n lt-md: '(max-width: 959px)',\n lt-lg: '(max-width: 1279px)',\n lt-xl: '(max-width: 1439px)',\n gt-xs: '(min-width: 600px)',\n gt-sm: '(min-width: 960px)',\n gt-md: '(min-width: 1280px)',\n ) !default\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/exported/variables.ts",
    "content": "export const treoBreakpoints = {'xs': '(min-width:  0) and (max-width:  599px)', 'sm': '(min-width:  600px) and (max-width:  959px)', 'md': '(min-width:  960px) and (max-width:  1279px)', 'lg': '(min-width:  1280px) and (max-width:  1439px)', 'xl': '(min-width:  1440px)', 'lt-md': '(max-width:  200px)', 'lt-lg': '(max-width:  1279px)', 'lt-xl': '(max-width:  1439px)', 'gt-xs': '(min-width:  600px)', 'gt-sm': '(min-width:  960px)', 'gt-md': '(min-width:  1280px)'};\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/index.js",
    "content": "module.exports = [\n\n    // Exporter variants\n    require('./variants/export-box-shadow'),\n    require('./variants/export-colors'),\n    require('./variants/export-font-family'),\n    require('./variants/export-screens'),\n\n    // Variants\n    require('./variants/dark-light'),\n\n    // Utilities\n    require('./utilities/color-contrasts'),\n    require('./utilities/color-combinations'),\n    require('./utilities/icon-color'),\n    require('./utilities/icon-size'),\n    require('./utilities/mirror')\n];\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/utilities/color-combinations.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst _ = require('lodash');\n\n/**\n * Adds a component that combines both background and its contrasting color\n * for Tailwind colors. Also adds basic utilities for the combined colors\n * so we can do things like '.teal.text-secondary' or '.red .text-hint' etc.\n */\nmodule.exports = plugin(({addUtilities, variants, theme, e}) => {\n\n        const generateCombinedColorRules = (colorName, hueName, color) => {\n\n            const contrastColor = theme(`colorContrasts.${colorName}${hueName ? `.${hueName}` : ``}`);\n            const selector = `${colorName}${hueName && hueName !== 'default' ? `-${hueName}` : ``}`;\n\n            return {\n                [`.${e(selector)}`]: {\n                    backgroundColor: `${color} !important`,\n                    color          : `${contrastColor} !important`,\n\n                    '&.mat-icon, .mat-icon': {\n                        color: `${contrastColor} !important`\n                    },\n\n                    '&.text-secondary, .text-secondary': {\n                        color: `rgba(${contrastColor}, 0.7) !important`\n                    },\n\n                    '&.text-hint, .text-hint, &.text-disabled, .text-disabled': {\n                        color: `rgba(${contrastColor}, 0.38) !important`\n                    },\n\n                    '&.divider, .divider': {\n                        color: `rgba(${contrastColor}, 0.12) !important`\n                    }\n                },\n                [`.text-${e(selector)}`]: {\n\n                    '&.text-secondary, .text-secondary': {\n                        color: `rgba(${color}, 0.7) !important`\n                    },\n\n                    '&.text-hint, .text-hint, &.text-disabled, .text-disabled': {\n                        color: `rgba(${color}, 0.38) !important`\n                    },\n\n                    '&.divider, .divider': {\n                        color: `rgba(${color}, 0.12) !important`\n                    }\n                }\n            }\n        };\n\n        const utilities = _.map(theme('colors'), (value, colorName) => {\n\n            if ( _.isObject(value) )\n            {\n                return _.map(value, (color, hueName) => {\n                    return generateCombinedColorRules(colorName, hueName, color);\n                });\n            }\n            else\n            {\n                if ( value === 'transparent' || value === 'currentColor' )\n                {\n                    return;\n                }\n\n                return generateCombinedColorRules(colorName, '', value);\n            }\n        });\n\n        addUtilities(utilities, variants('colorCombinations'));\n    },\n    {\n        variants: {\n            colorCombinations: []\n        }\n    }\n);\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/utilities/color-contrasts.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst _ = require('lodash');\n\n/**\n * Adds utility classes for contrasting colors such as\n * 'text-red-200-contrast' and 'bg-blue-contrast'\n */\nmodule.exports = plugin(({addUtilities, variants, theme, e}) => {\n\n        const utilities = _.map(theme('colorContrasts'), (value, colorName) => {\n\n            if ( _.isObject(value) )\n            {\n                return _.map(value, (color, hueName) => {\n\n                    hueName = hueName === 'default' ? '' : `-${hueName}`;\n\n                    return {\n                        [`.${e(`text-${colorName}${hueName}-contrast`)}`]: {\n                            color: color\n                        },\n                        [`.${e(`bg-${colorName}${hueName}-contrast`)}`]  : {\n                            backgroundColor: color\n                        }\n                    }\n                });\n            }\n            else\n            {\n                return {\n                    [`.${e(`text-${colorName}-contrast`)}`]: {\n                        color: value\n                    },\n                    [`.${e(`bg-${colorName}-contrast`)}`]  : {\n                        backgroundColor: value\n                    }\n                }\n            }\n        });\n\n        addUtilities(utilities, variants('colorContrasts'));\n    },\n    {\n        theme   : {\n            colorContrasts: theme => ({\n                black      : theme('colors.white'),\n                white      : theme('colors.gray.800'),\n                gray       : {\n                    50     : theme('colors.gray.900'),\n                    100    : theme('colors.gray.900'),\n                    200    : theme('colors.gray.900'),\n                    300    : theme('colors.gray.900'),\n                    400    : theme('colors.gray.900'),\n                    500    : theme('colors.gray.900'),\n                    600    : theme('colors.gray.50'),\n                    700    : theme('colors.gray.50'),\n                    800    : theme('colors.gray.50'),\n                    900    : theme('colors.gray.50'),\n                    default: theme('colors.gray.900')\n                },\n                'cool-gray': {\n                    50     : theme('colors.cool-gray.900'),\n                    100    : theme('colors.cool-gray.900'),\n                    200    : theme('colors.cool-gray.900'),\n                    300    : theme('colors.cool-gray.900'),\n                    400    : theme('colors.cool-gray.900'),\n                    500    : theme('colors.cool-gray.900'),\n                    600    : theme('colors.cool-gray.50'),\n                    700    : theme('colors.cool-gray.50'),\n                    800    : theme('colors.cool-gray.50'),\n                    900    : theme('colors.cool-gray.50'),\n                    default: theme('colors.cool-gray.900')\n                },\n                red        : {\n                    50     : theme('colors.red.900'),\n                    100    : theme('colors.red.900'),\n                    200    : theme('colors.red.900'),\n                    300    : theme('colors.red.900'),\n                    400    : theme('colors.red.900'),\n                    500    : theme('colors.red.900'),\n                    600    : theme('colors.red.50'),\n                    700    : theme('colors.red.50'),\n                    800    : theme('colors.red.50'),\n                    900    : theme('colors.red.50'),\n                    default: theme('colors.red.900')\n                },\n                orange     : {\n                    50     : theme('colors.orange.900'),\n                    100    : theme('colors.orange.900'),\n                    200    : theme('colors.orange.900'),\n                    300    : theme('colors.orange.900'),\n                    400    : theme('colors.orange.900'),\n                    500    : theme('colors.orange.900'),\n                    600    : theme('colors.orange.50'),\n                    700    : theme('colors.orange.50'),\n                    800    : theme('colors.orange.50'),\n                    900    : theme('colors.orange.50'),\n                    default: theme('colors.orange.900')\n                },\n                yellow     : {\n                    50     : theme('colors.yellow.900'),\n                    100    : theme('colors.yellow.900'),\n                    200    : theme('colors.yellow.900'),\n                    300    : theme('colors.yellow.900'),\n                    400    : theme('colors.yellow.900'),\n                    500    : theme('colors.yellow.900'),\n                    600    : theme('colors.yellow.50'),\n                    700    : theme('colors.yellow.50'),\n                    800    : theme('colors.yellow.50'),\n                    900    : theme('colors.yellow.50'),\n                    default: theme('colors.yellow.900')\n                },\n                green      : {\n                    50     : theme('colors.green.900'),\n                    100    : theme('colors.green.900'),\n                    200    : theme('colors.green.900'),\n                    300    : theme('colors.green.900'),\n                    400    : theme('colors.green.900'),\n                    500    : theme('colors.green.50'),\n                    600    : theme('colors.green.50'),\n                    700    : theme('colors.green.50'),\n                    800    : theme('colors.green.50'),\n                    900    : theme('colors.green.50'),\n                    default: theme('colors.green.50')\n                },\n                teal       : {\n                    50     : theme('colors.teal.900'),\n                    100    : theme('colors.teal.900'),\n                    200    : theme('colors.teal.900'),\n                    300    : theme('colors.teal.900'),\n                    400    : theme('colors.teal.900'),\n                    500    : theme('colors.teal.50'),\n                    600    : theme('colors.teal.50'),\n                    700    : theme('colors.teal.50'),\n                    800    : theme('colors.teal.50'),\n                    900    : theme('colors.teal.50'),\n                    default: theme('colors.teal.50')\n                },\n                blue       : {\n                    50     : theme('colors.blue.900'),\n                    100    : theme('colors.blue.900'),\n                    200    : theme('colors.blue.900'),\n                    300    : theme('colors.blue.900'),\n                    400    : theme('colors.blue.900'),\n                    500    : theme('colors.blue.50'),\n                    600    : theme('colors.blue.50'),\n                    700    : theme('colors.blue.50'),\n                    800    : theme('colors.blue.50'),\n                    900    : theme('colors.blue.50'),\n                    default: theme('colors.blue.50')\n                },\n                indigo     : {\n                    50     : theme('colors.indigo.900'),\n                    100    : theme('colors.indigo.900'),\n                    200    : theme('colors.indigo.900'),\n                    300    : theme('colors.indigo.900'),\n                    400    : theme('colors.indigo.900'),\n                    500    : theme('colors.indigo.50'),\n                    600    : theme('colors.indigo.50'),\n                    700    : theme('colors.indigo.50'),\n                    800    : theme('colors.indigo.50'),\n                    900    : theme('colors.indigo.50'),\n                    default: theme('colors.indigo.50')\n                },\n                purple     : {\n                    50     : theme('colors.purple.900'),\n                    100    : theme('colors.purple.900'),\n                    200    : theme('colors.purple.900'),\n                    300    : theme('colors.purple.900'),\n                    400    : theme('colors.purple.900'),\n                    500    : theme('colors.purple.50'),\n                    600    : theme('colors.purple.50'),\n                    700    : theme('colors.purple.50'),\n                    800    : theme('colors.purple.50'),\n                    900    : theme('colors.purple.50'),\n                    default: theme('colors.purple.50')\n                },\n                pink       : {\n                    50     : theme('colors.pink.900'),\n                    100    : theme('colors.pink.900'),\n                    200    : theme('colors.pink.900'),\n                    300    : theme('colors.pink.900'),\n                    400    : theme('colors.pink.900'),\n                    500    : theme('colors.pink.50'),\n                    600    : theme('colors.pink.50'),\n                    700    : theme('colors.pink.50'),\n                    800    : theme('colors.pink.50'),\n                    900    : theme('colors.pink.50'),\n                    default: theme('colors.pink.50')\n                }\n            })\n        },\n        variants: {\n            colorContrasts: []\n        }\n    }\n);\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/utilities/icon-color.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst flattenColorPalette = require('tailwindcss/lib/util/flattenColorPalette').default;\nconst _ = require('lodash');\n\nmodule.exports = plugin(({addUtilities, e, theme, variants}) => {\n\n        const utilities = _.fromPairs(\n            _.map(flattenColorPalette(theme('iconColor')), (value, modifier) => {\n                return [\n                    `.${e(`icon-${modifier}`)}`,\n                    {\n                        [`.mat-icon`]: {\n                            color: value\n                        }\n                    }\n                ]\n            })\n        );\n\n        addUtilities(utilities, variants('iconColor'))\n    },\n    {\n        theme   : {\n            iconColor: theme => theme('colors')\n        },\n        variants: {\n            iconColor: []\n        }\n    });\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/utilities/icon-size.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst _ = require('lodash');\n\n/**\n * Adds utility classes for .mat-icon size\n */\nmodule.exports = plugin(({addUtilities, variants, theme, e}) => {\n\n        const utilities = _.map(theme('iconSize'), (value, key) => {\n\n            return {\n                [`.${e(`icon-size-${key}`)}`]: {\n                    width     : value,\n                    height    : value,\n                    minWidth  : value,\n                    minHeight : value,\n                    fontSize  : value,\n                    lineHeight: value,\n                    [`svg`]   : {\n                        width     : value,\n                        height    : value\n                    }\n                }\n            }\n        });\n\n        addUtilities(utilities, variants('iconSize'));\n    },\n    {\n        theme   : {\n            iconSize: {\n                12: '12px',\n                14: '14px',\n                16: '16px',\n                18: '18px',\n                20: '20px',\n                24: '24px',\n                32: '32px',\n                40: '40px',\n                48: '48px',\n                56: '56px',\n                64: '64px',\n                72: '72px',\n                80: '80px',\n                88: '88px',\n                96: '96px'\n            }\n        },\n        variants: {\n            iconSize: []\n        }\n    }\n);\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/utilities/mirror.js",
    "content": "const plugin = require('tailwindcss/plugin');\n\n/**\n * Adds utility classes for mirroring\n */\nmodule.exports = plugin(({addUtilities, variants}) => {\n\n        const utilities = {\n            [`.mirror`]         : {\n                transform: `scale(-1, 1)`\n            },\n            [`.mirror-vertical`]: {\n                transform: `scale(1, -1)`\n            }\n        };\n\n        addUtilities(utilities, variants('mirror'));\n    },\n    {\n        variants: {\n            mirror: []\n        }\n    }\n);\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/variants/dark-light.js",
    "content": "const plugin = require('tailwindcss/plugin');\n\n/**\n * Adds 'dark-light' variants\n */\nmodule.exports = plugin(({addVariant, e}) => {\n\n    const variant = ({modifySelectors, separator}) => {\n        modifySelectors(({className}) => {\n            return `[class*=\"theme-dark\"].${e(`dark${separator}${className}`)}, [class*=\"theme-dark\"] .${e(`dark${separator}${className}`)}, [class*=\"theme-light\"].${e(`light${separator}${className}`)}, [class*=\"theme-light\"] .${e(`light${separator}${className}`)}`\n        })\n    };\n\n    addVariant('dark-light', variant);\n});\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/variants/export-box-shadow.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst postcss = require('postcss');\nconst _ = require('lodash');\n\n/**\n * Exports 'boxShadow' configuration as an SCSS map\n */\nmodule.exports = plugin(({addVariant, theme}) => {\n\n    const variant = ({container}) => {\n\n        let map = '';\n\n        _.forEach(theme('boxShadow'), (value, key) => {\n            map = `${map} '${key}': '${theme('boxShadow.' + key)}',\\n`;\n        });\n\n        container.append(\n            postcss.decl({\n                prop : '$treo-elevations',\n                value: `(\\n ${map} ) !default`\n            })\n        );\n    };\n\n    addVariant('export-boxShadow', variant);\n});\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/variants/export-colors.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst postcss = require('postcss');\nconst _ = require('lodash');\n\n/**\n * Exports 'colors' configuration as an SCSS map\n */\nmodule.exports = plugin(({addVariant, theme}) => {\n\n        const variant = ({container}) => {\n\n            let map = '';\n\n            _.forEach(theme('colors'), (value, key) => {\n\n                let hues = '';\n                let contrasts = '';\n\n                if ( _.isObject(value) )\n                {\n                    // Hue\n                    _.forEach(value, (hueValue, hueName) => {\n\n                        // Skip the 'default' hue\n                        if ( hueName === 'default' )\n                        {\n                            return;\n                        }\n\n                        // Append the new entry\n                        hues = `${hues} ${hueName}: ${hueValue},\\n`;\n                    });\n\n                    // Contrasts\n                    _.forEach(theme('colorContrasts.' + key), (hueValue, hueName) => {\n\n                        // Skip the 'default' hue\n                        if ( hueName === 'default' )\n                        {\n                            return;\n                        }\n\n                        // Append the new entry\n                        contrasts = `${contrasts} ${hueName}: ${hueValue},\\n`;\n                    });\n                }\n                else\n                {\n                    // Skip the 'transparent' and 'current'\n                    if ( value === 'transparent' || value === 'currentColor' )\n                    {\n                        return;\n                    }\n\n                    // Hue\n                    [50, 100, 200, 300, 400, 500, 600, 700, 800, 900].forEach((hue) => {\n                        hues = `${hues} ${hue}: ${value},\\n`;\n                    });\n\n                    // Contrasts\n                    [50, 100, 200, 300, 400, 500, 600, 700, 800, 900].forEach((hue) => {\n                        contrasts = `${contrasts} ${hue}: ${theme('colorContrasts.' + key)},\\n`;\n                    });\n                }\n\n                // Append the new map\n                map = `${map} '${key}': (\\n ${hues} contrast: (\\n ${contrasts} )\\n),\\n`;\n            });\n\n            container.append(\n                postcss.decl({\n                    prop : '$treo-colors',\n                    value: `(\\n ${map} ) !default`\n                })\n            );\n        };\n\n        addVariant('export-colors', variant);\n    }\n);\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/variants/export-font-family.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst postcss = require('postcss');\nconst _ = require('lodash');\n\n/**\n * Exports 'fontFamily' configuration as an SCSS map\n */\nmodule.exports = plugin(({addVariant, theme}) => {\n\n    const variant = ({container}) => {\n\n        _.forEach(theme('fontFamily'), (value, key) => {\n\n            container.append(\n                postcss.decl({\n                    prop : `$treo-font-${key}`,\n                    value: `${value} !default`\n                })\n            );\n        });\n\n    };\n\n    addVariant('export-fontFamily', variant);\n});\n"
  },
  {
    "path": "webapp/frontend/src/@treo/tailwind/plugins/variants/export-screens.js",
    "content": "const plugin = require('tailwindcss/plugin');\nconst buildMediaQuery = require('tailwindcss/lib/util/buildMediaQuery').default;\nconst postcss = require('postcss');\nconst _ = require('lodash');\n\n/**\n * Exports 'screens' configuration as an SCSS map\n */\nmodule.exports = plugin(({addVariant, theme}) => {\n\n    const variant = ({container}) => {\n\n        let map = '';\n\n        _.forEach(theme('screens'), (value, key) => {\n            map = `${map} ${key}: '${buildMediaQuery(value)}',\\n`;\n        });\n\n        container.append(\n            postcss.decl({\n                prop : '$treo-breakpoints',\n                value: `(\\n ${map} ) !default`\n            })\n        );\n    };\n\n    addVariant('export-screens', variant);\n});\n"
  },
  {
    "path": "webapp/frontend/src/@treo/treo.module.ts",
    "content": "import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { TreoMediaWatcherModule } from '@treo/services/media-watcher/media-watcher.module';\nimport { TreoSplashScreenModule } from '@treo/services/splash-screen/splash-screen.module';\n\n@NgModule({\n    imports  : [\n        TreoMediaWatcherModule,\n        TreoSplashScreenModule\n    ],\n    providers: [\n        {\n            // Use the 'fill' appearance on form fields by default\n            provide : MAT_FORM_FIELD_DEFAULT_OPTIONS,\n            useValue: {\n                appearance: 'fill'\n            }\n        }\n    ]\n})\nexport class TreoModule\n{\n    /**\n     * Constructor\n     *\n     * @param parentModule\n     */\n    constructor(\n        @Optional() @SkipSelf() parentModule?: TreoModule\n    )\n    {\n        if ( parentModule )\n        {\n            throw new Error('TreoModule has already been loaded. Import this module in the AppModule only!');\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/@treo/validators/index.ts",
    "content": "export * from './public-api';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/validators/public-api.ts",
    "content": "export * from './validators';\n"
  },
  {
    "path": "webapp/frontend/src/@treo/validators/validators.ts",
    "content": "import { FormGroup, ValidatorFn } from '@angular/forms';\n\nexport class TreoValidators\n{\n    /**\n     * Check for empty (optional fields) values\n     *\n     * @param value\n     */\n    static isEmptyInputValue(value: any): boolean\n    {\n        return value == null || value.length === 0;\n    }\n\n    /**\n     * Must match validator\n     *\n     * @param controlPath A dot-delimited string values that define the path to the control.\n     * @param matchingControlPath A dot-delimited string values that define the path to the matching control.\n     */\n    static mustMatch(controlPath: string, matchingControlPath: string): ValidatorFn\n    {\n        return (formGroup: FormGroup): null => {\n\n            // Get the control and matching control\n            const control = formGroup.get(controlPath);\n            const matchingControl = formGroup.get(matchingControlPath);\n\n            // Return if control or matching control doesn't exist\n            if ( !control || !matchingControl )\n            {\n                return;\n            }\n\n            // Delete the mustMatch error to reset the error on the matching control\n            if ( matchingControl.hasError('mustMatch') )\n            {\n                delete matchingControl.errors.mustMatch;\n                matchingControl.updateValueAndValidity();\n            }\n\n            // Don't validate empty values on the matching control\n            // Don't validate if values are matching\n            if ( this.isEmptyInputValue(matchingControl.value) || control.value === matchingControl.value )\n            {\n                return;\n            }\n\n            // Set the validation error on the matching control\n            matchingControl.setErrors({mustMatch: true});\n        };\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/app.component.html",
    "content": "<router-outlet></router-outlet>\n"
  },
  {
    "path": "webapp/frontend/src/app/app.component.scss",
    "content": ":host {\n    display: flex;\n    flex: 1 1 auto;\n    width: 100%;\n    height: 100%;\n}"
  },
  {
    "path": "webapp/frontend/src/app/app.component.ts",
    "content": "import { Component } from '@angular/core';\n\n@Component({\n    selector   : 'app-root',\n    templateUrl: './app.component.html',\n    styleUrls  : ['./app.component.scss']\n})\nexport class AppComponent\n{\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/app.module.ts",
    "content": "import {enableProdMode, NgModule} from '@angular/core';\nimport {BrowserModule} from '@angular/platform-browser';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ExtraOptions, PreloadAllModules, RouterModule} from '@angular/router';\nimport {APP_BASE_HREF} from '@angular/common';\nimport {MarkdownModule} from 'ngx-markdown';\nimport {TreoModule} from '@treo';\nimport {ScrutinyConfigModule} from 'app/core/config/scrutiny-config.module';\nimport {TreoMockApiModule} from '@treo/lib/mock-api';\nimport {CoreModule} from 'app/core/core.module';\nimport {appConfig} from 'app/core/config/app.config';\nimport {mockDataServices} from 'app/data/mock';\nimport {LayoutModule} from 'app/layout/layout.module';\nimport {AppComponent} from 'app/app.component';\nimport {appRoutes, getAppBaseHref} from 'app/app.routing';\n\nconst routerConfig: ExtraOptions = {\n    scrollPositionRestoration: 'enabled',\n    preloadingStrategy: PreloadAllModules\n};\n\nlet dev = [\n    TreoMockApiModule.forRoot(mockDataServices),\n];\n\n// if production clear dev imports and set to prod mode\n// @ts-ignore\nif (process.env.NODE_ENV === 'production') {\n    dev = [];\n    enableProdMode();\n}\n\n@NgModule({\n    declarations: [\n        AppComponent,\n    ],\n    imports     : [\n        BrowserModule,\n        BrowserAnimationsModule,\n        RouterModule.forRoot(appRoutes, routerConfig),\n\n        // Treo & Treo Mock API\n        TreoModule,\n        ScrutinyConfigModule.forRoot(appConfig),\n        ...dev,\n\n        // Core\n        CoreModule,\n\n        // Layout\n        LayoutModule,\n\n        // 3rd party modules\n        MarkdownModule.forRoot({})\n    ],\n    bootstrap   : [\n        AppComponent\n    ],\n    providers: [\n        {\n            provide: APP_BASE_HREF,\n            useValue: getAppBaseHref()\n        }\n    ],\n})\nexport class AppModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/app.routing.ts",
    "content": "import { Route } from '@angular/router';\nimport { LayoutComponent } from 'app/layout/layout.component';\nimport { EmptyLayoutComponent } from 'app/layout/layouts/empty/empty.component';\n\n// @formatter:off\nexport function getAppBaseHref(): string {\n    return getBasePath() + '/web';\n}\n\n// @formatter:off\n// tslint:disable:max-line-length\nexport function getBasePath(): string {\n    return window.location.pathname.split('/web').slice(0, 1)[0];\n}\n\n// @formatter:off\n// tslint:disable:max-line-length\nexport const appRoutes: Route[] = [\n\n    // Redirect empty path to '/example'\n    {path: '', pathMatch : 'full', redirectTo: 'dashboard'},\n\n\n    // Landing routes\n    {\n        path: '',\n        component: EmptyLayoutComponent,\n        children   : [\n            {path: 'home', loadChildren: () => import('app/modules/landing/home/home.module').then(m => m.LandingHomeModule)},\n        ]\n    },\n\n    // Admin routes\n    {\n        path       : '',\n        component  : LayoutComponent,\n        children   : [\n\n            // Example\n            {path: 'dashboard', loadChildren: () => import('app/modules/dashboard/dashboard.module').then(m => m.DashboardModule)},\n            {path: 'device/:wwn', loadChildren: () => import('app/modules/detail/detail.module').then(m => m.DetailModule)}\n\n            // 404 & Catch all\n            // {path: '404-not-found', pathMatch: 'full', loadChildren: () => import('app/modules/admin/pages/errors/error-404/error-404.module').then(m => m.Error404Module)},\n            // {path: '**', redirectTo: '404-not-found'}\n        ]\n    }\n];\n"
  },
  {
    "path": "webapp/frontend/src/app/core/config/app.config.ts",
    "content": "import {Layout} from 'app/layout/layout.types';\n\n// Theme type\nexport type Theme = 'light' | 'dark' | 'system';\n\n// Device title to display on the dashboard\nexport type DashboardDisplay = 'name' | 'serial_id' | 'uuid' | 'label'\n\nexport type DashboardSort = 'status' | 'title' | 'age'\n\nexport type TemperatureUnit = 'celsius' | 'fahrenheit'\n\nexport type LineStroke = 'smooth' | 'straight' | 'stepline'\n\nexport type DevicePoweredOnUnit = 'humanize' | 'device_hours'\n\n\nexport enum MetricsNotifyLevel {\n    Warn = 1,\n    Fail = 2\n}\n\nexport enum MetricsStatusFilterAttributes {\n    All = 0,\n    Critical = 1\n}\n\nexport enum MetricsStatusThreshold {\n    Smart = 1,\n    Scrutiny = 2,\n\n    // shortcut\n    Both = 3\n}\n\n/**\n * AppConfig interface. Update this interface to strictly type your config\n * object.\n */\nexport interface AppConfig {\n    theme?: Theme;\n    layout?: Layout;\n\n    // Dashboard options\n    dashboard_display?: DashboardDisplay;\n    dashboard_sort?: DashboardSort;\n\n    temperature_unit?: TemperatureUnit;\n\n    file_size_si_units?: boolean;\n\n    powered_on_hours_unit?: DevicePoweredOnUnit;\n\n    line_stroke?: LineStroke;\n\n    // Settings from Scrutiny API\n    \n    collector?: {\n        discard_sct_temp_history?: boolean\n    }\n\n    metrics?: {\n        notify_level?: MetricsNotifyLevel\n        status_filter_attributes?: MetricsStatusFilterAttributes\n        status_threshold?: MetricsStatusThreshold\n        repeat_notifications?: boolean\n    }\n\n}\n\n/**\n * Default configuration for the entire application. This object is used by\n * \"ConfigService\" to set the default configuration.\n *\n * If you need to store global configuration for your app, you can use this\n * object to set the defaults. To access, update and reset the config, use\n * \"ConfigService\".\n */\nexport const appConfig: AppConfig = {\n    theme: 'light',\n    layout: 'material',\n\n    dashboard_display: 'name',\n    dashboard_sort: 'status',\n\n    temperature_unit: 'celsius',\n    file_size_si_units: false,\n    powered_on_hours_unit: 'humanize',\n\n    line_stroke: 'smooth',\n    \n    collector: {\n        discard_sct_temp_history : false,\n    },\n\n    metrics: {\n        notify_level: MetricsNotifyLevel.Fail,\n        status_filter_attributes: MetricsStatusFilterAttributes.All,\n        status_threshold: MetricsStatusThreshold.Both,\n        repeat_notifications: true\n    }\n};\n\n"
  },
  {
    "path": "webapp/frontend/src/app/core/config/scrutiny-config.module.ts",
    "content": "import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {ScrutinyConfigService} from 'app/core/config/scrutiny-config.service';\nimport {TREO_APP_CONFIG} from '@treo/services/config/config.constants';\n\n@NgModule()\nexport class ScrutinyConfigModule {\n    /**\n     * Constructor\n     *\n     * @param {ScrutinyConfigService} _scrutinyConfigService\n     */\n    constructor(\n        private _scrutinyConfigService: ScrutinyConfigService\n    ) {\n    }\n\n    /**\n     * forRoot method for setting user configuration\n     *\n     * @param config\n     */\n    static forRoot(config: any): ModuleWithProviders<ScrutinyConfigModule> {\n        return {\n            ngModule: ScrutinyConfigModule,\n            providers: [\n                {\n                    provide: TREO_APP_CONFIG,\n                    useValue: config\n                }\n            ]\n        };\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/config/scrutiny-config.service.ts",
    "content": "import {Inject, Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {TREO_APP_CONFIG} from '@treo/services/config/config.constants';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {getBasePath} from '../../app.routing';\nimport {map, tap} from 'rxjs/operators';\nimport {AppConfig} from './app.config';\nimport {merge} from 'lodash';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ScrutinyConfigService {\n    // Private\n    private _config: BehaviorSubject<AppConfig>;\n    private _defaultConfig: AppConfig;\n\n    constructor(\n        private _httpClient: HttpClient,\n        @Inject(TREO_APP_CONFIG) defaultConfig: AppConfig\n    ) {\n        // Set the private defaults\n        this._defaultConfig = defaultConfig\n        this._config = new BehaviorSubject(null);\n    }\n\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter & getter for config\n     */\n    set config(value: AppConfig) {\n        // get the current config, merge the new values, and then submit. (setTheme only sets a single key, not the whole obj)\n        const mergedSettings = merge({}, this._config.getValue(), value);\n\n        console.log('saving settings...', mergedSettings)\n        this._httpClient.post(getBasePath() + '/api/settings', mergedSettings).pipe(\n            map((response: any) => {\n                console.log('settings resp')\n                return response.settings\n            }),\n            tap((settings: AppConfig) => {\n                this._config.next(settings);\n                return settings\n            })\n        ).subscribe(resp => {\n            console.log('updated settings', resp)\n        })\n    }\n\n    get config$(): Observable<AppConfig> {\n        if (this._config.getValue()) {\n            console.log('using cached settings:', this._config.getValue())\n            return this._config.asObservable()\n        } else {\n            console.log('retrieving settings')\n            return this._httpClient.get(getBasePath() + '/api/settings').pipe(\n                map((response: any) => {\n                    return response.settings\n                }),\n                tap((settings: AppConfig) => {\n                    this._config.next(settings);\n                    return this._config.asObservable()\n                })\n            );\n        }\n\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Resets the config to the default\n     */\n    reset(): void {\n        // Set the config\n        this.config = this._defaultConfig\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/core.module.ts",
    "content": "import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\n\n@NgModule({\n    imports  : [\n        HttpClientModule\n    ],\n    providers: []\n})\nexport class CoreModule\n{\n    /**\n     * Constructor\n     *\n     * @param {DomSanitizer} _domSanitizer\n     * @param {MatIconRegistry} _matIconRegistry\n     * @param parentModule\n     */\n    constructor(\n        private _domSanitizer: DomSanitizer,\n        private _matIconRegistry: MatIconRegistry,\n        @Optional() @SkipSelf() parentModule?: CoreModule\n    )\n    {\n        // Do not allow multiple injections\n        if ( parentModule )\n        {\n            throw new Error('CoreModule has already been loaded. Import this module in the AppModule only.');\n        }\n\n        // Register icon sets\n        this._matIconRegistry.addSvgIconSet(this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-twotone.svg'));\n        this._matIconRegistry.addSvgIconSetInNamespace('mat_outline', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-outline.svg'));\n        this._matIconRegistry.addSvgIconSetInNamespace('iconsmind', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/iconsmind.svg'));\n        this._matIconRegistry.addSvgIconSetInNamespace('dripicons', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/dripicons.svg'));\n        this._matIconRegistry.addSvgIconSetInNamespace('feather', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/feather.svg'));\n        this._matIconRegistry.addSvgIconSetInNamespace('heroicons_outline', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/heroicons-outline.svg'));\n        this._matIconRegistry.addSvgIconSetInNamespace('heroicons_solid', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/heroicons-solid.svg'));\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/device-details-response-wrapper.ts",
    "content": "import {DeviceModel} from 'app/core/models/device-model';\nimport {SmartModel} from 'app/core/models/measurements/smart-model';\nimport {AttributeMetadataModel} from 'app/core/models/thresholds/attribute-metadata-model';\n\n// maps to webapp/backend/pkg/models/device_summary.go\nexport interface DeviceDetailsResponseWrapper {\n    success: boolean;\n    errors?: any[];\n    data: {\n        device: DeviceModel;\n        smart_results: SmartModel[];\n    },\n    metadata: { [key: string]: AttributeMetadataModel } | { [key: number]: AttributeMetadataModel };\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/device-model.ts",
    "content": "// maps to webapp/backend/pkg/models/device.go\nexport interface DeviceModel {\n    archived?: boolean;\n    wwn: string;\n    device_name?: string;\n    device_uuid?: string;\n    device_serial_id?: string;\n    device_label?: string;\n\n    manufacturer: string;\n    model_name: string;\n    interface_type: string;\n    interface_speed: string;\n    serial_number: string;\n    firmware: string;\n    rotational_speed: number;\n    capacity: number;\n    form_factor: string;\n    smart_support: boolean;\n    device_protocol: string;\n    device_type: string;\n\n    label: string;\n    host_id: string;\n\n    device_status: number;\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/device-summary-model.ts",
    "content": "import {DeviceModel} from 'app/core/models/device-model';\nimport {SmartTemperatureModel} from 'app/core/models/measurements/smart-temperature-model';\n\n// maps to webapp/backend/pkg/models/device_summary.go\nexport interface DeviceSummaryModel {\n    device: DeviceModel;\n    smart?: SmartSummary;\n    temp_history?: SmartTemperatureModel[];\n}\n\nexport interface SmartSummary {\n    collector_date?: string,\n    temp?: number\n    power_on_hours?: number\n}\n\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/device-summary-response-wrapper.ts",
    "content": "import {DeviceSummaryModel} from 'app/core/models/device-summary-model';\n\n// maps to webapp/backend/pkg/models/device_summary.go\nexport interface DeviceSummaryResponseWrapper {\n    success: boolean;\n    errors: any[];\n    data: {\n        summary: { [key: string]: DeviceSummaryModel }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/device-summary-temp-response-wrapper.ts",
    "content": "import {SmartTemperatureModel} from './measurements/smart-temperature-model';\n\nexport interface DeviceSummaryTempResponseWrapper {\n    success: boolean;\n    errors: any[];\n    data: {\n        temp_history: { [key: string]: SmartTemperatureModel[]; }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/measurements/smart-attribute-model.ts",
    "content": "// maps to webapp/backend/pkg/models/measurements/smart_ata_attribute.go\n// maps to webapp/backend/pkg/models/measurements/smart_nvme_attribute.go\n// maps to webapp/backend/pkg/models/measurements/smart_scsi_attribute.go\nexport interface SmartAttributeModel {\n    attribute_id: number | string\n    value: number\n    thresh: number\n    worst?: number\n    raw_value?: number\n    raw_string?: string\n    when_failed?: string\n\n    transformed_value: number\n    status: number\n    status_reason?: string\n    failure_rate?: number\n\n    chartData?: any[]\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/measurements/smart-model.ts",
    "content": "// maps to webapp/backend/pkg/models/measurements/smart.go\nimport {SmartAttributeModel} from './smart-attribute-model';\n\nexport interface SmartModel {\n    date: string;\n    device_wwn: string;\n    device_protocol: string;\n\n    temp: number;\n    power_on_hours: number;\n    power_cycle_count: number\n    attrs: { [key: string]: SmartAttributeModel }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/measurements/smart-temperature-model.ts",
    "content": "// maps to webapp/backend/pkg/models/measurements/smart_temperature.go\nexport interface SmartTemperatureModel {\n    date: string;\n    temp: number;\n}\n\n"
  },
  {
    "path": "webapp/frontend/src/app/core/models/thresholds/attribute-metadata-model.ts",
    "content": "// map to webapp/backend/pkg/thresholds/ata_attribute_metadata.go\n// map to webapp/backend/pkg/thresholds/nvme_attribute_metadata.go\n// map to webapp/backend/pkg/thresholds/scsi_attribute_metadata.go\nexport interface AttributeMetadataModel {\n    display_name: string\n    ideal: string\n    critical: boolean\n    description: string\n\n    transform_value_unit?: string\n    observed_thresholds?: any[]\n    display_type: string\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/device/details/index.ts",
    "content": "import { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\nimport { TreoMockApi } from '@treo/lib/mock-api/mock-api.interfaces';\nimport { TreoMockApiService } from '@treo/lib/mock-api/mock-api.service';\nimport { sda } from 'app/data/mock/device/details/sda';\nimport { sdb } from 'app/data/mock/device/details/sdb';\nimport { sdc } from 'app/data/mock/device/details/sdc';\nimport { sdd } from 'app/data/mock/device/details/sdd';\nimport { sde } from 'app/data/mock/device/details/sde';\nimport { sdf } from 'app/data/mock/device/details/sdf';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DetailsMockApi implements TreoMockApi\n{\n    // Private\n    private _details: any;\n\n    /**\n     * Constructor\n     *\n     * @param _treoMockApiService\n     */\n    constructor(\n        private _treoMockApiService: TreoMockApiService\n    )\n    {\n        // Register the API endpoints\n        this.register();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Register\n     */\n    register(): void\n    {\n        this._treoMockApiService\n            .onGet('/api/device/0x5002538e40a22954/details')\n            .reply(() => {\n\n                return [\n                    200,\n                    _.cloneDeep(sda)\n                ];\n            });\n\n        this._treoMockApiService\n            .onGet('/api/device/0x5000cca264eb01d7/details')\n            .reply(() => {\n\n                return [\n                    200,\n                    _.cloneDeep(sdb)\n                ];\n            });\n\n        this._treoMockApiService\n            .onGet('/api/device/0x5000cca264ec3183/details')\n            .reply(() => {\n\n                return [\n                    200,\n                    _.cloneDeep(sdc)\n                ];\n            });\n\n        this._treoMockApiService\n            .onGet('/api/device/0x5000cca252c859cc/details')\n            .reply(() => {\n\n                return [\n                    200,\n                    _.cloneDeep(sdd)\n                ];\n            });\n\n        this._treoMockApiService\n            .onGet('/api/device/0x5000cca264ebc248/details')\n            .reply(() => {\n\n                return [\n                    200,\n                    _.cloneDeep(sdf)\n                ];\n            });\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/device/details/sda.ts",
    "content": "export const sda = {\n    'data': {\n        'device': {\n            'CreatedAt': '2021-06-24T21:17:31.301226-07:00',\n            'UpdatedAt': '2021-10-24T16:37:56.981833-07:00',\n            'DeletedAt': null,\n            'wwn': '0x5002538e40a22954',\n            'device_name': 'sda',\n            'manufacturer': 'ATA',\n            'model_name': 'Samsung_SSD_860_EVO_500GB',\n            'interface_type': 'SCSI',\n            'interface_speed': '',\n            'serial_number': 'S3YZNB0KBXXXXXX',\n            'firmware': '002C',\n            'rotational_speed': 0,\n            'capacity': 500107862016,\n            'form_factor': '',\n            'smart_support': false,\n            'device_protocol': 'NVMe',\n            'device_type': '',\n            'label': '',\n            'host_id': '',\n            'device_status': 0,\n            'archived': false\n        },\n        'smart_results': [{\n            'date': '2021-10-24T23:20:44Z',\n            'device_wwn': '0x5002538e40a22954',\n            'device_protocol': 'NVMe',\n            'temp': 36,\n            'power_on_hours': 2401,\n            'power_cycle_count': 266,\n            'attrs': {\n                'available_spare': {\n                    'attribute_id': 'available_spare',\n                    'value': 100,\n                    'thresh': 10,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'controller_busy_time': {\n                    'attribute_id': 'controller_busy_time',\n                    'value': 3060,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'critical_comp_time': {\n                    'attribute_id': 'critical_comp_time',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'critical_warning': {\n                    'attribute_id': 'critical_warning',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'data_units_read': {\n                    'attribute_id': 'data_units_read',\n                    'value': 9511859,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'data_units_written': {\n                    'attribute_id': 'data_units_written',\n                    'value': 7773431,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'host_reads': {\n                    'attribute_id': 'host_reads',\n                    'value': 111303174,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'host_writes': {\n                    'attribute_id': 'host_writes',\n                    'value': 83170961,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'media_errors': {\n                    'attribute_id': 'media_errors',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'num_err_log_entries': {\n                    'attribute_id': 'num_err_log_entries',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'percentage_used': {\n                    'attribute_id': 'percentage_used',\n                    'value': 0,\n                    'thresh': 100,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'power_cycles': {\n                    'attribute_id': 'power_cycles',\n                    'value': 266,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'power_on_hours': {\n                    'attribute_id': 'power_on_hours',\n                    'value': 2401,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'temperature': {\n                    'attribute_id': 'temperature',\n                    'value': 36,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'unsafe_shutdowns': {\n                    'attribute_id': 'unsafe_shutdowns',\n                    'value': 43,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'warning_temp_time': {\n                    'attribute_id': 'warning_temp_time',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                }\n            },\n            'Status': 0\n        }]\n    },\n    'metadata': {\n        'available_spare': {\n            'display_name': 'Available Spare',\n            'ideal': 'high',\n            'critical': true,\n            'description': 'Contains a normalized percentage (0 to 100%) of the remaining spare capacity available.',\n            'display_type': ''\n        },\n        'controller_busy_time': {\n            'display_name': 'Controller Busy Time',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the amount of time the controller is busy with I/O commands. The controller is busy when there is a command outstanding to an I/O Queue (specifically, a command was issued via an I/O Submission Queue Tail doorbell write and the corresponding completion queue entry has not been posted yet to the associated I/O Completion Queue). This value is reported in minutes.',\n            'display_type': ''\n        },\n        'critical_comp_time': {\n            'display_name': 'Critical CompTime',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater the Critical Composite Temperature Threshold (CCTEMP) field in the Identify Controller data structure.',\n            'display_type': ''\n        },\n        'critical_warning': {\n            'display_name': 'Critical Warning',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'This field indicates critical warnings for the state of the controller. Each bit corresponds to a critical warning type; multiple bits may be set. If a bit is cleared to ‘0’, then that critical warning does not apply. Critical warnings may result in an asynchronous event notification to the host. Bits in this field represent the current associated state and are not persistent.',\n            'display_type': ''\n        },\n        'data_units_read': {\n            'display_name': 'Data Units Read',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the number of 512 byte data units the host has read from the controller; this value does not include metadata. This value is reported in thousands (i.e., a value of 1 corresponds to 1000 units of 512 bytes read) and is rounded up. When the LBA size is a value other than 512 bytes, the controller shall convert the amount of data read to 512 byte units.',\n            'display_type': ''\n        },\n        'data_units_written': {\n            'display_name': 'Data Units Written',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the number of 512 byte data units the host has written to the controller; this value does not include metadata. This value is reported in thousands (i.e., a value of 1 corresponds to 1000 units of 512 bytes written) and is rounded up. When the LBA size is a value other than 512 bytes, the controller shall convert the amount of data written to 512 byte units.',\n            'display_type': ''\n        },\n        'host_reads': {\n            'display_name': 'Host Reads',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the number of read commands completed by the controller',\n            'display_type': ''\n        },\n        'host_writes': {\n            'display_name': 'Host Writes',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the number of write commands completed by the controller',\n            'display_type': ''\n        },\n        'media_errors': {\n            'display_name': 'Media Errors',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Contains the number of occurrences where the controller detected an unrecovered data integrity error. Errors such as uncorrectable ECC, CRC checksum failure, or LBA tag mismatch are included in this field.',\n            'display_type': ''\n        },\n        'num_err_log_entries': {\n            'display_name': 'Numb Err Log Entries',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Contains the number of Error Information log entries over the life of the controller.',\n            'display_type': ''\n        },\n        'percentage_used': {\n            'display_name': 'Percentage Used',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Contains a vendor specific estimate of the percentage of NVM subsystem life used based on the actual usage and the manufacturer’s prediction of NVM life. A value of 100 indicates that the estimated endurance of the NVM in the NVM subsystem has been consumed, but may not indicate an NVM subsystem failure. The value is allowed to exceed 100. Percentages greater than 254 shall be represented as 255. This value shall be updated once per power-on hour (when the controller is not in a sleep state).',\n            'display_type': ''\n        },\n        'power_cycles': {\n            'display_name': 'Power Cycles',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the number of power cycles.',\n            'display_type': ''\n        },\n        'power_on_hours': {\n            'display_name': 'Power on Hours',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the number of power-on hours. Power on hours is always logging, even when in low power mode.',\n            'display_type': ''\n        },\n        'temperature': {\n            'display_name': 'Temperature',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'unsafe_shutdowns': {\n            'display_name': 'Unsafe Shutdowns',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the number of unsafe shutdowns. This count is incremented when a shutdown notification (CC.SHN) is not received prior to loss of power.',\n            'display_type': ''\n        },\n        'warning_temp_time': {\n            'display_name': 'Warning Temp Time',\n            'ideal': '',\n            'critical': false,\n            'description': 'Contains the amount of time in minutes that the controller is operational and the Composite Temperature is greater than or equal to the Warning Composite Temperature Threshold (WCTEMP) field and less than the Critical Composite Temperature Threshold (CCTEMP) field in the Identify Controller data structure.',\n            'display_type': ''\n        }\n    },\n    'success': true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/device/details/sdb.ts",
    "content": "export const sdb = {\n    'data': {\n        'device': {\n            'CreatedAt': '2021-06-24T21:17:31.302191-07:00',\n            'UpdatedAt': '2021-10-24T17:06:39.436996-07:00',\n            'DeletedAt': null,\n            'wwn': '0x5000cca264eb01d7',\n            'device_name': 'sdb',\n            'manufacturer': 'ATA',\n            'model_name': 'WDC_WD140EDFZ-11A0VA0',\n            'interface_type': 'SCSI',\n            'interface_speed': '',\n            'serial_number': '9RK1XXXXX',\n            'firmware': '81.00A81',\n            'rotational_speed': 0,\n            'capacity': 14000519643136,\n            'form_factor': '',\n            'smart_support': false,\n            'device_protocol': 'ATA',\n            'device_type': '',\n            'label': '',\n            'host_id': '',\n            'device_status': 2\n        },\n        'smart_results': [{\n            'date': '2021-10-24T20:34:04Z',\n            'device_wwn': '0x5000cca264eb01d7',\n            'device_protocol': 'ATA',\n            'temp': 32,\n            'power_on_hours': 1730,\n            'power_cycle_count': 9,\n            'attrs': {\n                '1': {\n                    'attribute_id': 1,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.034155719633986996\n                },\n                '10': {\n                    'attribute_id': 10,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.05459827163896099\n                },\n                '12': {\n                    'attribute_id': 12,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 9,\n                    'raw_string': '9',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.019835987118930823\n                },\n                '192': {\n                    'attribute_id': 192,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 329,\n                    'raw_string': '329',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.01634692899031039\n                },\n                '193': {\n                    'attribute_id': 193,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 329,\n                    'raw_string': '329',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '194': {\n                    'attribute_id': 194,\n                    'value': 51,\n                    'thresh': 0,\n                    'worst': 51,\n                    'raw_value': 163210330144,\n                    'raw_string': '32 (Min/Max 24/38)',\n                    'when_failed': '',\n                    'transformed_value': 32,\n                    'status': 0\n                },\n                '196': {\n                    'attribute_id': 196,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.007389855800729792\n                },\n                '197': {\n                    'attribute_id': 197,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.025540791394761345\n                },\n                '198': {\n                    'attribute_id': 198,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.028675322159886437\n                },\n                '199': {\n                    'attribute_id': 199,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '2': {\n                    'attribute_id': 2,\n                    'value': 135,\n                    'thresh': 54,\n                    'worst': 135,\n                    'raw_value': 108,\n                    'raw_string': '108',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '22': {\n                    'attribute_id': 22,\n                    'value': 100,\n                    'thresh': 25,\n                    'worst': 100,\n                    'raw_value': 100,\n                    'raw_string': '100',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '3': {\n                    'attribute_id': 3,\n                    'value': 81,\n                    'thresh': 1,\n                    'worst': 81,\n                    'raw_value': 30089675132,\n                    'raw_string': '380 (Average 380)',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 2,\n                    'status_reason': 'Observed Failure Rate for Attribute is greater than 10%',\n                    'failure_rate': 0.11452195377351217\n                },\n                '4': {\n                    'attribute_id': 4,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 9,\n                    'raw_string': '9',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.01989335424860646\n                },\n                '5': {\n                    'attribute_id': 5,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.025169175350572493\n                },\n                '7': {\n                    'attribute_id': 7,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.01087335627722523\n                },\n                '8': {\n                    'attribute_id': 8,\n                    'value': 133,\n                    'thresh': 20,\n                    'worst': 133,\n                    'raw_value': 18,\n                    'raw_string': '18',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '9': {\n                    'attribute_id': 9,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 1730,\n                    'raw_string': '1730',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                }\n            },\n            'Status': 0\n        }, {\n            'date': '2021-10-24T23:20:44Z',\n            'device_wwn': '0x5000cca264eb01d7',\n            'device_protocol': 'ATA',\n            'temp': 32,\n            'power_on_hours': 1730,\n            'power_cycle_count': 9,\n            'attrs': {\n                '1': {\n                    'attribute_id': 1,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.034155719633986996\n                },\n                '10': {\n                    'attribute_id': 10,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.05459827163896099\n                },\n                '12': {\n                    'attribute_id': 12,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 9,\n                    'raw_string': '9',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.019835987118930823\n                },\n                '192': {\n                    'attribute_id': 192,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 329,\n                    'raw_string': '329',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.01634692899031039\n                },\n                '193': {\n                    'attribute_id': 193,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 329,\n                    'raw_string': '329',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '194': {\n                    'attribute_id': 194,\n                    'value': 51,\n                    'thresh': 0,\n                    'worst': 51,\n                    'raw_value': 163210330144,\n                    'raw_string': '32 (Min/Max 24/38)',\n                    'when_failed': '',\n                    'transformed_value': 32,\n                    'status': 0\n                },\n                '196': {\n                    'attribute_id': 196,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.007389855800729792\n                },\n                '197': {\n                    'attribute_id': 197,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.025540791394761345\n                },\n                '198': {\n                    'attribute_id': 198,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.028675322159886437\n                },\n                '199': {\n                    'attribute_id': 199,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '2': {\n                    'attribute_id': 2,\n                    'value': 135,\n                    'thresh': 54,\n                    'worst': 135,\n                    'raw_value': 108,\n                    'raw_string': '108',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '22': {\n                    'attribute_id': 22,\n                    'value': 100,\n                    'thresh': 25,\n                    'worst': 100,\n                    'raw_value': 100,\n                    'raw_string': '100',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '3': {\n                    'attribute_id': 3,\n                    'value': 81,\n                    'thresh': 1,\n                    'worst': 81,\n                    'raw_value': 30089675132,\n                    'raw_string': '380 (Average 380)',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 2,\n                    'status_reason': 'Observed Failure Rate for Attribute is greater than 10%',\n                    'failure_rate': 0.11452195377351217\n                },\n                '4': {\n                    'attribute_id': 4,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 9,\n                    'raw_string': '9',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.01989335424860646\n                },\n                '5': {\n                    'attribute_id': 5,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.025169175350572493\n                },\n                '7': {\n                    'attribute_id': 7,\n                    'value': 100,\n                    'thresh': 1,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.01087335627722523\n                },\n                '8': {\n                    'attribute_id': 8,\n                    'value': 133,\n                    'thresh': 20,\n                    'worst': 133,\n                    'raw_value': 18,\n                    'raw_string': '18',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '9': {\n                    'attribute_id': 9,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 1730,\n                    'raw_string': '1730',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                }\n            },\n            'Status': 0\n        }]\n    },\n    'metadata': {\n        '1': {\n            'display_name': 'Read Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': '(Vendor specific raw value.) Stores data related to the rate of hardware read errors that occurred when reading data from a disk surface. The raw value has different structure for different vendors and is often not meaningful as a decimal number.',\n            'observed_thresholds': [{\n                'low': 80,\n                'high': 95,\n                'annual_failure_rate': 0.8879749768303985,\n                'error_interval': [0.682344353388663, 1.136105732920724]\n            }, {\n                'low': 95,\n                'high': 110,\n                'annual_failure_rate': 0.034155719633986996,\n                'error_interval': [0.030188482024981093, 0.038499386872354435]\n            }, {\n                'low': 110,\n                'high': 125,\n                'annual_failure_rate': 0.06390002135229157,\n                'error_interval': [0.05852004676110847, 0.06964160930553712]\n            }, {\n                'low': 125,\n                'high': 140,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 140,\n                'high': 155,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 155,\n                'high': 170,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 170,\n                'high': 185,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 185,\n                'high': 200,\n                'annual_failure_rate': 0.044823775021490854,\n                'error_interval': [0.032022762038723306, 0.06103725943096589]\n            }],\n            'display_type': 'normalized'\n        },\n        '10': {\n            'display_name': 'Spin Retry Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of retry of spin start attempts. This attribute stores a total count of the spin start attempts to reach the fully operational speed (under the condition that the first attempt was unsuccessful). An increase of this attribute value is a sign of problems in the hard disk mechanical subsystem.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.05459827163896099,\n                'error_interval': [0.05113785787727033, 0.05823122757702782]\n            }, {\n                'low': 0,\n                'high': 80,\n                'annual_failure_rate': 0.5555555555555556,\n                'error_interval': [0.014065448880161053, 3.095357439410498]\n            }],\n            'display_type': 'raw'\n        },\n        '11': {\n            'display_name': 'Recalibration Retries or Calibration Retry Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'This attribute indicates the count that recalibration was requested (under the condition that the first attempt was unsuccessful). An increase of this attribute value is a sign of problems in the hard disk mechanical subsystem.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.04658866433672694,\n                'error_interval': [0.03357701137320878, 0.06297433993055492]\n            }, {\n                'low': 0,\n                'high': 80,\n                'annual_failure_rate': 0.5555555555555556,\n                'error_interval': [0.014065448880161053, 3.095357439410498]\n            }, {\n                'low': 80,\n                'high': 160,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 160,\n                'high': 240,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 240,\n                'high': 320,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 320,\n                'high': 400,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 400,\n                'high': 480,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 480,\n                'high': 560,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }],\n            'display_type': 'raw'\n        },\n        '12': {\n            'display_name': 'Power Cycle Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'This attribute indicates the count of full hard disk power on/off cycles.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 13,\n                'annual_failure_rate': 0.019835987118930823,\n                'error_interval': [0.016560870164523494, 0.023569242386797896]\n            }, {\n                'low': 13,\n                'high': 26,\n                'annual_failure_rate': 0.038210930067894826,\n                'error_interval': [0.03353859179329295, 0.0433520775718649]\n            }, {\n                'low': 26,\n                'high': 39,\n                'annual_failure_rate': 0.11053528307302571,\n                'error_interval': [0.09671061589521368, 0.1257816678419765]\n            }, {\n                'low': 39,\n                'high': 52,\n                'annual_failure_rate': 0.16831189443375036,\n                'error_interval': [0.1440976510675928, 0.19543066007594895]\n            }, {\n                'low': 52,\n                'high': 65,\n                'annual_failure_rate': 0.20630344262550107,\n                'error_interval': [0.1693965932069108, 0.2488633537247856]\n            }, {\n                'low': 65,\n                'high': 78,\n                'annual_failure_rate': 0.1030972634140512,\n                'error_interval': [0.06734655535304743, 0.15106137807407605]\n            }, {\n                'low': 78,\n                'high': 91,\n                'annual_failure_rate': 0.12354840389522469,\n                'error_interval': [0.06578432170016109, 0.21127153335749593]\n            }],\n            'display_type': 'raw'\n        },\n        '13': {\n            'display_name': 'Soft Read Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Uncorrected read errors reported to the operating system.',\n            'display_type': 'normalized'\n        },\n        '170': {\n            'display_name': 'Available Reserved Space',\n            'ideal': '',\n            'critical': false,\n            'description': 'See attribute E8.',\n            'display_type': 'normalized'\n        },\n        '171': {\n            'display_name': 'SSD Program Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': '(Kingston) The total number of flash program operation failures since the drive was deployed.[33] Identical to attribute 181.',\n            'display_type': 'normalized'\n        },\n        '172': {\n            'display_name': 'SSD Erase Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': '(Kingston) Counts the number of flash erase failures. This attribute returns the total number of Flash erase operation failures since the drive was deployed. This attribute is identical to attribute 182.',\n            'display_type': 'normalized'\n        },\n        '173': {\n            'display_name': 'SSD Wear Leveling Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Counts the maximum worst erase count on any block.',\n            'display_type': 'normalized'\n        },\n        '174': {\n            'display_name': 'Unexpected Power Loss Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Also known as \"Power-off Retract Count\" per conventional HDD terminology. Raw value reports the number of unclean shutdowns, cumulative over the life of an SSD, where an \"unclean shutdown\" is the removal of power without STANDBY IMMEDIATE as the last command (regardless of PLI activity using capacitor power). Normalized value is always 100.',\n            'display_type': ''\n        },\n        '175': {\n            'display_name': 'Power Loss Protection Failure',\n            'ideal': '',\n            'critical': false,\n            'description': 'Last test result as microseconds to discharge cap, saturated at its maximum value. Also logs minutes since last test and lifetime number of tests. Raw value contains the following data:     Bytes 0-1: Last test result as microseconds to discharge cap, saturates at max value. Test result expected in range 25 \\u003c= result \\u003c= 5000000, lower indicates specific error code. Bytes 2-3: Minutes since last test, saturates at max value.Bytes 4-5: Lifetime number of tests, not incremented on power cycle, saturates at max value. Normalized value is set to one on test failure or 11 if the capacitor has been tested in an excessive temperature condition, otherwise 100.',\n            'display_type': 'normalized'\n        },\n        '176': {\n            'display_name': 'Erase Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'S.M.A.R.T. parameter indicates a number of flash erase command failures.',\n            'display_type': 'normalized'\n        },\n        '177': {\n            'display_name': 'Wear Range Delta',\n            'ideal': '',\n            'critical': false,\n            'description': 'Delta between most-worn and least-worn Flash blocks. It describes how good/bad the wearleveling of the SSD works on a more technical way. ',\n            'display_type': 'normalized'\n        },\n        '179': {\n            'display_name': 'Used Reserved Block Count Total',\n            'ideal': '',\n            'critical': false,\n            'description': 'Pre-Fail attribute used at least in Samsung devices.',\n            'display_type': 'normalized'\n        },\n        '180': {\n            'display_name': 'Unused Reserved Block Count Total',\n            'ideal': '',\n            'critical': false,\n            'description': '\"Pre-Fail\" attribute used at least in HP devices. ',\n            'display_type': 'normalized'\n        },\n        '181': {\n            'display_name': 'Program Fail Count Total',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total number of Flash program operation failures since the drive was deployed.',\n            'display_type': 'normalized'\n        },\n        '182': {\n            'display_name': 'Erase Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': '\"Pre-Fail\" Attribute used at least in Samsung devices.',\n            'display_type': 'normalized'\n        },\n        '183': {\n            'display_name': 'SATA Downshift Error Count or Runtime Bad Block',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Western Digital, Samsung or Seagate attribute: Either the number of downshifts of link speed (e.g. from 6Gbit/s to 3Gbit/s) or the total number of data blocks with detected, uncorrectable errors encountered during normal operation. Although degradation of this parameter can be an indicator of drive aging and/or potential electromechanical problems, it does not directly indicate imminent drive failure.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.09084549203210031,\n                'error_interval': [0.08344373475686712, 0.09872777224842152]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.05756065656498585,\n                'error_interval': [0.04657000847949464, 0.07036491775108872]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 0.6193088626208925,\n                'error_interval': [0.41784508895529787, 0.8841019099092139]\n            }, {\n                'low': 4,\n                'high': 8,\n                'annual_failure_rate': 0.5533447034299792,\n                'error_interval': [0.31628430884775033, 0.8985971312402635]\n            }, {\n                'low': 8,\n                'high': 16,\n                'annual_failure_rate': 0.3882388694727245,\n                'error_interval': [0.21225380267814295, 0.6513988534774338]\n            }, {\n                'low': 16,\n                'high': 35,\n                'annual_failure_rate': 0.37116708385481856,\n                'error_interval': [0.19763084005134446, 0.6347070173754686]\n            }, {\n                'low': 35,\n                'high': 70,\n                'annual_failure_rate': 0.2561146752205292,\n                'error_interval': [0.10297138269895259, 0.5276941165819332]\n            }, {\n                'low': 70,\n                'high': 130,\n                'annual_failure_rate': 0.40299684542586756,\n                'error_interval': [0.16202563309223209, 0.8303275247667772]\n            }, {\n                'low': 130,\n                'high': 260,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }],\n            'display_type': 'raw'\n        },\n        '184': {\n            'display_name': 'End-to-End error',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'This attribute is a part of Hewlett-Packard\"s SMART IV technology, as well as part of other vendors\" IO Error Detection and Correction schemas, and it contains a count of parity errors which occur in the data path to the media via the drive\"s cache RAM',\n            'observed_thresholds': [{\n                'low': 93,\n                'high': 94,\n                'annual_failure_rate': 1.631212012870933,\n                'error_interval': [1.055634407303844, 2.407990716767714]\n            }, {\n                'low': 94,\n                'high': 95,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 95,\n                'high': 96,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 96,\n                'high': 97,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 97,\n                'high': 97,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 97,\n                'high': 98,\n                'annual_failure_rate': 1.8069306930693072,\n                'error_interval': [0.04574752432804858, 10.067573453924245]\n            }, {\n                'low': 98,\n                'high': 99,\n                'annual_failure_rate': 0.8371559633027523,\n                'error_interval': [0.10138347095016888, 3.0240951820174824]\n            }, {\n                'low': 99,\n                'high': 100,\n                'annual_failure_rate': 0.09334816849865138,\n                'error_interval': [0.08689499010435861, 0.10015372448181788]\n            }],\n            'display_type': 'normalized'\n        },\n        '185': {\n            'display_name': 'Head Stability',\n            'ideal': '',\n            'critical': false,\n            'description': 'Western Digital attribute.',\n            'display_type': 'normalized'\n        },\n        '186': {\n            'display_name': 'Induced Op-Vibration Detection',\n            'ideal': '',\n            'critical': false,\n            'description': 'Western Digital attribute.',\n            'display_type': 'normalized'\n        },\n        '187': {\n            'display_name': 'Reported Uncorrectable Errors',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'The count of errors that could not be recovered using hardware ECC (see attribute 195).',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.028130798308190524,\n                'error_interval': [0.024487830609364304, 0.032162944988161336]\n            }, {\n                'low': 1,\n                'high': 1,\n                'annual_failure_rate': 0.33877621175661743,\n                'error_interval': [0.22325565823630591, 0.4929016016666955]\n            }, {\n                'low': 1,\n                'high': 3,\n                'annual_failure_rate': 0.24064820598237213,\n                'error_interval': [0.14488594021076606, 0.3758019832614595]\n            }, {\n                'low': 3,\n                'high': 6,\n                'annual_failure_rate': 0.5014425058387142,\n                'error_interval': [0.3062941096766342, 0.7744372808405151]\n            }, {\n                'low': 6,\n                'high': 11,\n                'annual_failure_rate': 0.38007108544136836,\n                'error_interval': [0.2989500188963677, 0.4764223967570595]\n            }, {\n                'low': 11,\n                'high': 20,\n                'annual_failure_rate': 0.5346094598348444,\n                'error_interval': [0.40595137663302483, 0.6911066985735377]\n            }, {\n                'low': 20,\n                'high': 35,\n                'annual_failure_rate': 0.8428063943161636,\n                'error_interval': [0.6504601819243522, 1.0742259350903411]\n            }, {\n                'low': 35,\n                'high': 65,\n                'annual_failure_rate': 1.4429071005017484,\n                'error_interval': [1.1405581860945952, 1.8008133631629157]\n            }, {\n                'low': 65,\n                'high': 120,\n                'annual_failure_rate': 1.6190935390549661,\n                'error_interval': [1.0263664163011208, 2.4294352761068576]\n            }],\n            'display_type': 'raw'\n        },\n        '188': {\n            'display_name': 'Command Timeout',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'The count of aborted operations due to HDD timeout. Normally this attribute value should be equal to zero.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.024893587674442153,\n                'error_interval': [0.020857343769186413, 0.0294830350167543]\n            }, {\n                'low': 0,\n                'high': 13,\n                'annual_failure_rate': 0.10044174089362015,\n                'error_interval': [0.0812633664077498, 0.1227848196758574]\n            }, {\n                'low': 13,\n                'high': 26,\n                'annual_failure_rate': 0.334030592234279,\n                'error_interval': [0.2523231196342665, 0.4337665082489293]\n            }, {\n                'low': 26,\n                'high': 39,\n                'annual_failure_rate': 0.36724705400842445,\n                'error_interval': [0.30398009356575617, 0.4397986538328568]\n            }, {\n                'low': 39,\n                'high': 52,\n                'annual_failure_rate': 0.29848155926978354,\n                'error_interval': [0.2509254838615984, 0.35242890006477073]\n            }, {\n                'low': 52,\n                'high': 65,\n                'annual_failure_rate': 0.2203079701535098,\n                'error_interval': [0.18366082845676174, 0.26212468677179274]\n            }, {\n                'low': 65,\n                'high': 78,\n                'annual_failure_rate': 0.3018169948863018,\n                'error_interval': [0.23779746376787655, 0.37776897542831006]\n            }, {\n                'low': 78,\n                'high': 91,\n                'annual_failure_rate': 0.32854928239235887,\n                'error_interval': [0.2301118782147336, 0.4548506948185028]\n            }, {\n                'low': 91,\n                'high': 104,\n                'annual_failure_rate': 0.28488916640649387,\n                'error_interval': [0.1366154288236293, 0.5239213202729072]\n            }],\n            'display_type': 'raw'\n        },\n        '189': {\n            'display_name': 'High Fly Writes',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'HDD manufacturers implement a flying height sensor that attempts to provide additional protections for write operations by detecting when a recording head is flying outside its normal operating range. If an unsafe fly height condition is encountered, the write process is stopped, and the information is rewritten or reallocated to a safe region of the hard drive. This attribute indicates the count of these errors detected over the lifetime of the drive.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.09070551401946862,\n                'error_interval': [0.08018892683853401, 0.10221801211956287]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.0844336097370013,\n                'error_interval': [0.07299813695315267, 0.09715235540340669]\n            }, {\n                'low': 2,\n                'high': 5,\n                'annual_failure_rate': 0.07943219628781906,\n                'error_interval': [0.06552176680630226, 0.09542233189887633]\n            }, {\n                'low': 5,\n                'high': 13,\n                'annual_failure_rate': 0.09208847603893404,\n                'error_interval': [0.07385765060838133, 0.11345557807163456]\n            }, {\n                'low': 13,\n                'high': 30,\n                'annual_failure_rate': 0.18161161650924224,\n                'error_interval': [0.13858879602902988, 0.23377015012749933]\n            }, {\n                'low': 30,\n                'high': 70,\n                'annual_failure_rate': 0.2678117886102384,\n                'error_interval': [0.19044036194841887, 0.36610753129699186]\n            }, {\n                'low': 70,\n                'high': 150,\n                'annual_failure_rate': 0.26126480798826107,\n                'error_interval': [0.15958733218826962, 0.4035023060905559]\n            }, {\n                'low': 150,\n                'high': 350,\n                'annual_failure_rate': 0.11337164155924832,\n                'error_interval': [0.030889956621649995, 0.2902764300762812]\n            }],\n            'display_type': 'raw'\n        },\n        '190': {\n            'display_name': 'Temperature Difference',\n            'ideal': '',\n            'critical': false,\n            'description': 'Value is equal to (100-temp. °C), allowing manufacturer to set a minimum threshold which corresponds to a maximum temperature. This also follows the convention of 100 being a best-case value and lower values being undesirable. However, some older drives may instead report raw Temperature (identical to 0xC2) or Temperature minus 50 here.',\n            'display_type': 'normalized'\n        },\n        '191': {\n            'display_name': 'G-sense Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors resulting from externally induced shock and vibration. ',\n            'display_type': 'normalized'\n        },\n        '192': {\n            'display_name': 'Power-off Retract Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Number of power-off or emergency retract cycles.',\n            'observed_thresholds': [{\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.02861098445412803,\n                'error_interval': [0.022345416230915037, 0.036088863823297186]\n            }, {\n                'low': 2,\n                'high': 6,\n                'annual_failure_rate': 0.0738571777154862,\n                'error_interval': [0.06406927746420421, 0.0847175264009771]\n            }, {\n                'low': 6,\n                'high': 16,\n                'annual_failure_rate': 0.11970378206823593,\n                'error_interval': [0.10830059875098269, 0.13198105985656441]\n            }, {\n                'low': 16,\n                'high': 40,\n                'annual_failure_rate': 0.027266868552620425,\n                'error_interval': [0.021131448605713823, 0.03462795920968522]\n            }, {\n                'low': 40,\n                'high': 100,\n                'annual_failure_rate': 0.011741682974559688,\n                'error_interval': [0.00430899071133239, 0.025556700631152028]\n            }, {\n                'low': 100,\n                'high': 250,\n                'annual_failure_rate': 0.012659940134091309,\n                'error_interval': [0.00607093338127348, 0.023282080653656938]\n            }, {\n                'low': 250,\n                'high': 650,\n                'annual_failure_rate': 0.01634692899031039,\n                'error_interval': [0.009522688540043157, 0.026173016865409605]\n            }, {\n                'low': 650,\n                'high': 1600,\n                'annual_failure_rate': 0.005190074354440066,\n                'error_interval': [0.0025908664180103293, 0.009286476666453648]\n            }],\n            'display_type': 'raw'\n        },\n        '193': {\n            'display_name': 'Load Cycle Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of load/unload cycles into head landing zone position.[45] Some drives use 225 (0xE1) for Load Cycle Count instead.',\n            'display_type': 'normalized'\n        },\n        '194': {\n            'display_name': 'Temperature',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Indicates the device temperature, if the appropriate sensor is fitted. Lowest byte of the raw value contains the exact temperature value (Celsius degrees).',\n            'transform_value_unit': '°C',\n            'display_type': 'transformed'\n        },\n        '195': {\n            'display_name': 'Hardware ECC Recovered',\n            'ideal': '',\n            'critical': false,\n            'description': '(Vendor-specific raw value.) The raw value has different structure for different vendors and is often not meaningful as a decimal number.',\n            'observed_thresholds': [{\n                'low': 12,\n                'high': 24,\n                'annual_failure_rate': 0.31472916829975706,\n                'error_interval': [0.15711166685282174, 0.5631374192486645]\n            }, {\n                'low': 24,\n                'high': 36,\n                'annual_failure_rate': 0.15250310197260136,\n                'error_interval': [0.10497611828070175, 0.21417105521823687]\n            }, {\n                'low': 36,\n                'high': 48,\n                'annual_failure_rate': 0.2193119102723874,\n                'error_interval': [0.16475385681835103, 0.28615447006525274]\n            }, {\n                'low': 48,\n                'high': 60,\n                'annual_failure_rate': 0.05672658497265746,\n                'error_interval': [0.043182904776447234, 0.07317316161437043]\n            }, {\n                'low': 60,\n                'high': 72,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 72,\n                'high': 84,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 84,\n                'high': 96,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 96,\n                'high': 108,\n                'annual_failure_rate': 0.04074570216566197,\n                'error_interval': [0.001031591863615295, 0.22702052218047528]\n            }],\n            'display_type': 'normalized'\n        },\n        '196': {\n            'display_name': 'Reallocation Event Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of remap operations. The raw value of this attribute shows the total count of attempts to transfer data from reallocated sectors to a spare area. Both successful and unsuccessful attempts are counted.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.007389855800729792,\n                'error_interval': [0.005652654139732716, 0.009492578928212054]\n            }, {\n                'low': 1,\n                'high': 1,\n                'annual_failure_rate': 0.026558331312151347,\n                'error_interval': [0.005476966404484466, 0.07761471429677293]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.02471894893674658,\n                'error_interval': [0.0006258296027540169, 0.13772516847438018]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 0.03200912040691046,\n                'error_interval': [0.0008104007642081744, 0.17834340416493005]\n            }, {\n                'low': 4,\n                'high': 7,\n                'annual_failure_rate': 0.043078012510326925,\n                'error_interval': [0.001090640849081295, 0.24001532369794615]\n            }, {\n                'low': 7,\n                'high': 11,\n                'annual_failure_rate': 0.033843300880853036,\n                'error_interval': [0.0008568381932559863, 0.18856280368036135]\n            }, {\n                'low': 11,\n                'high': 17,\n                'annual_failure_rate': 0.16979376647542252,\n                'error_interval': [0.035015556653263225, 0.49620943874336304]\n            }, {\n                'low': 17,\n                'high': 27,\n                'annual_failure_rate': 0.059042381106438044,\n                'error_interval': [0.0014948236677880642, 0.32896309247698113]\n            }, {\n                'low': 27,\n                'high': 45,\n                'annual_failure_rate': 0.24701105346266636,\n                'error_interval': [0.050939617608142244, 0.721871118983972]\n            }],\n            'display_type': 'raw'\n        },\n        '197': {\n            'display_name': 'Current Pending Sector Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of \"unstable\" sectors (waiting to be remapped, because of unrecoverable read errors). If an unstable sector is subsequently read successfully, the sector is remapped and this value is decreased. Read errors on a sector will not remap the sector immediately (since the correct value cannot be read and so the value to remap is not known, and also it might become readable later); instead, the drive firmware remembers that the sector needs to be remapped, and will remap it the next time it\"s written.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.025540791394761345,\n                'error_interval': [0.023161777231213983, 0.02809784482748174]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.34196613799103254,\n                'error_interval': [0.22723401523750225, 0.4942362818474496]\n            }, {\n                'low': 2,\n                'high': 6,\n                'annual_failure_rate': 0.6823772508117681,\n                'error_interval': [0.41083568090070416, 1.0656166047061635]\n            }, {\n                'low': 6,\n                'high': 16,\n                'annual_failure_rate': 0.6108100007493069,\n                'error_interval': [0.47336936083368364, 0.7757071095273286]\n            }, {\n                'low': 16,\n                'high': 40,\n                'annual_failure_rate': 0.9564879341127684,\n                'error_interval': [0.7701044196378299, 1.174355230793638]\n            }, {\n                'low': 40,\n                'high': 100,\n                'annual_failure_rate': 1.6519989942167461,\n                'error_interval': [1.328402276482456, 2.0305872327541317]\n            }, {\n                'low': 100,\n                'high': 250,\n                'annual_failure_rate': 2.5137741046831956,\n                'error_interval': [1.9772427971560862, 3.1510376077891613]\n            }, {\n                'low': 250,\n                'high': 650,\n                'annual_failure_rate': 3.3203378817413904,\n                'error_interval': [2.5883662702274406, 4.195047163573006]\n            }, {\n                'low': 650,\n                'high': 1600,\n                'annual_failure_rate': 3.133047210300429,\n                'error_interval': [1.1497731080460096, 6.819324775707182]\n            }],\n            'display_type': 'raw'\n        },\n        '198': {\n            'display_name': '(Offline) Uncorrectable Sector Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'The total count of uncorrectable errors when reading/writing a sector. A rise in the value of this attribute indicates defects of the disk surface and/or problems in the mechanical subsystem.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.028675322159886437,\n                'error_interval': [0.026159385510707116, 0.03136793218577656]\n            }, {\n                'low': 0,\n                'high': 2,\n                'annual_failure_rate': 0.8135764944275583,\n                'error_interval': [0.40613445471964466, 1.4557130815309443]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 1.1173469387755102,\n                'error_interval': [0.5773494680315332, 1.9517802404552516]\n            }, {\n                'low': 4,\n                'high': 6,\n                'annual_failure_rate': 1.3558692421991083,\n                'error_interval': [0.4402470522980859, 3.1641465148237544]\n            }, {\n                'low': 6,\n                'high': 8,\n                'annual_failure_rate': 0.7324414715719062,\n                'error_interval': [0.15104704003805655, 2.140504796291604]\n            }, {\n                'low': 8,\n                'high': 10,\n                'annual_failure_rate': 0.5777213677766163,\n                'error_interval': [0.43275294849366835, 0.7556737733062419]\n            }, {\n                'low': 10,\n                'high': 12,\n                'annual_failure_rate': 1.7464114832535886,\n                'error_interval': [0.47583835092536914, 4.471507017371231]\n            }, {\n                'low': 12,\n                'high': 14,\n                'annual_failure_rate': 2.6449275362318843,\n                'error_interval': [0.3203129951758959, 9.554387676519005]\n            }, {\n                'low': 14,\n                'high': 16,\n                'annual_failure_rate': 0.796943231441048,\n                'error_interval': [0.5519063550198366, 1.113648286331181]\n            }],\n            'display_type': 'raw'\n        },\n        '199': {\n            'display_name': 'UltraDMA CRC Error Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors in data transfer via the interface cable as determined by ICRC (Interface Cyclic Redundancy Check).',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 1,\n                'annual_failure_rate': 0.04068379316116366,\n                'error_interval': [0.037534031558106425, 0.04402730201866553]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.1513481259734218,\n                'error_interval': [0.12037165605991791, 0.18786293065527596]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 0.16849758722418978,\n                'error_interval': [0.12976367397863445, 0.2151676572000481]\n            }, {\n                'low': 4,\n                'high': 8,\n                'annual_failure_rate': 0.15385127340491614,\n                'error_interval': [0.10887431782430312, 0.21117289306426648]\n            }, {\n                'low': 8,\n                'high': 16,\n                'annual_failure_rate': 0.14882894050104387,\n                'error_interval': [0.09631424312463635, 0.2197008753522735]\n            }, {\n                'low': 16,\n                'high': 35,\n                'annual_failure_rate': 0.20878219917249793,\n                'error_interval': [0.14086447304552446, 0.29804957135975]\n            }, {\n                'low': 35,\n                'high': 70,\n                'annual_failure_rate': 0.13742940270409038,\n                'error_interval': [0.06860426267470295, 0.24589916335290812]\n            }, {\n                'low': 70,\n                'high': 130,\n                'annual_failure_rate': 0.22336578581363,\n                'error_interval': [0.11150339549604707, 0.39966309081252904]\n            }, {\n                'low': 130,\n                'high': 260,\n                'annual_failure_rate': 0.18277416124186283,\n                'error_interval': [0.07890890989692058, 0.3601379610272007]\n            }],\n            'display_type': 'raw'\n        },\n        '2': {\n            'display_name': 'Throughput Performance',\n            'ideal': 'high',\n            'critical': false,\n            'description': 'Overall (general) throughput performance of a hard disk drive. If the value of this attribute is decreasing there is a high probability that there is a problem with the disk.',\n            'display_type': 'normalized'\n        },\n        '200': {\n            'display_name': 'Multi-Zone Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors found when writing a sector. The higher the value, the worse the disk\"s mechanical condition is.',\n            'display_type': 'normalized'\n        },\n        '201': {\n            'display_name': 'Soft Read Error Rate',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count indicates the number of uncorrectable software read errors.',\n            'display_type': 'normalized'\n        },\n        '202': {\n            'display_name': 'Data Address Mark errors',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of Data Address Mark errors (or vendor-specific).',\n            'display_type': 'normalized'\n        },\n        '203': {\n            'display_name': 'Run Out Cancel',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The number of errors caused by incorrect checksum during the error correction.',\n            'display_type': 'normalized'\n        },\n        '204': {\n            'display_name': 'Soft ECC Correction',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of errors corrected by the internal error correction software.',\n            'display_type': ''\n        },\n        '205': {\n            'display_name': 'Thermal Asperity Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of errors due to high temperature.',\n            'display_type': 'normalized'\n        },\n        '206': {\n            'display_name': 'Flying Height',\n            'ideal': '',\n            'critical': false,\n            'description': 'Height of heads above the disk surface. If too low, head crash is more likely; if too high, read/write errors are more likely.',\n            'display_type': 'normalized'\n        },\n        '207': {\n            'display_name': 'Spin High Current',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Amount of surge current used to spin up the drive.',\n            'display_type': 'normalized'\n        },\n        '208': {\n            'display_name': 'Spin Buzz',\n            'ideal': '',\n            'critical': false,\n            'description': 'Count of buzz routines needed to spin up the drive due to insufficient power.',\n            'display_type': 'normalized'\n        },\n        '209': {\n            'display_name': 'Offline Seek Performance',\n            'ideal': '',\n            'critical': false,\n            'description': 'Drive\"s seek performance during its internal tests.',\n            'display_type': 'normalized'\n        },\n        '210': {\n            'display_name': 'Vibration During Write',\n            'ideal': '',\n            'critical': false,\n            'description': 'Found in Maxtor 6B200M0 200GB and Maxtor 2R015H1 15GB disks.',\n            'display_type': 'normalized'\n        },\n        '211': {\n            'display_name': 'Vibration During Write',\n            'ideal': '',\n            'critical': false,\n            'description': 'A recording of a vibration encountered during write operations.',\n            'display_type': 'normalized'\n        },\n        '212': {\n            'display_name': 'Shock During Write',\n            'ideal': '',\n            'critical': false,\n            'description': 'A recording of shock encountered during write operations.',\n            'display_type': 'normalized'\n        },\n        '22': {\n            'display_name': 'Current Helium Level',\n            'ideal': 'high',\n            'critical': false,\n            'description': 'Specific to He8 drives from HGST. This value measures the helium inside of the drive specific to this manufacturer. It is a pre-fail attribute that trips once the drive detects that the internal environment is out of specification.',\n            'display_type': 'normalized'\n        },\n        '220': {\n            'display_name': 'Disk Shift',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Distance the disk has shifted relative to the spindle (usually due to shock or temperature). Unit of measure is unknown.',\n            'display_type': 'normalized'\n        },\n        '221': {\n            'display_name': 'G-Sense Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors resulting from externally induced shock and vibration.',\n            'display_type': 'normalized'\n        },\n        '222': {\n            'display_name': 'Loaded Hours',\n            'ideal': '',\n            'critical': false,\n            'description': 'Time spent operating under data load (movement of magnetic head armature).',\n            'display_type': 'normalized'\n        },\n        '223': {\n            'display_name': 'Load/Unload Retry Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Count of times head changes position.',\n            'display_type': 'normalized'\n        },\n        '224': {\n            'display_name': 'Load Friction',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Resistance caused by friction in mechanical parts while operating.',\n            'display_type': 'normalized'\n        },\n        '225': {\n            'display_name': 'Load/Unload Cycle Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Total count of load cycles Some drives use 193 (0xC1) for Load Cycle Count instead. See Description for 193 for significance of this number. ',\n            'display_type': 'normalized'\n        },\n        '226': {\n            'display_name': 'Load \"In\"-time',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total time of loading on the magnetic heads actuator (time not spent in parking area).',\n            'display_type': 'normalized'\n        },\n        '227': {\n            'display_name': 'Torque Amplification Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of attempts to compensate for platter speed variations.[66]',\n            'display_type': ''\n        },\n        '228': {\n            'display_name': 'Power-Off Retract Cycle',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The number of power-off cycles which are counted whenever there is a \"retract event\" and the heads are loaded off of the media such as when the machine is powered down, put to sleep, or is idle.',\n            'display_type': ''\n        },\n        '230': {\n            'display_name': 'GMR Head Amplitude ',\n            'ideal': '',\n            'critical': false,\n            'description': 'Amplitude of \"thrashing\" (repetitive head moving motions between operations).',\n            'display_type': 'normalized'\n        },\n        '231': {\n            'display_name': 'Life Left',\n            'ideal': '',\n            'critical': false,\n            'description': 'Indicates the approximate SSD life left, in terms of program/erase cycles or available reserved blocks. A normalized value of 100 represents a new drive, with a threshold value at 10 indicating a need for replacement. A value of 0 may mean that the drive is operating in read-only mode to allow data recovery.',\n            'display_type': 'normalized'\n        },\n        '232': {\n            'display_name': 'Endurance Remaining',\n            'ideal': '',\n            'critical': false,\n            'description': 'Number of physical erase cycles completed on the SSD as a percentage of the maximum physical erase cycles the drive is designed to endure.',\n            'display_type': 'normalized'\n        },\n        '233': {\n            'display_name': 'Media Wearout Indicator',\n            'ideal': '',\n            'critical': false,\n            'description': 'Intel SSDs report a normalized value from 100, a new drive, to a minimum of 1. It decreases while the NAND erase cycles increase from 0 to the maximum-rated cycles.',\n            'display_type': 'normalized'\n        },\n        '234': {\n            'display_name': 'Average erase count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Decoded as: byte 0-1-2 = average erase count (big endian) and byte 3-4-5 = max erase count (big endian).',\n            'display_type': 'normalized'\n        },\n        '235': {\n            'display_name': 'Good Block Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Decoded as: byte 0-1-2 = good block count (big endian) and byte 3-4 = system (free) block count.',\n            'display_type': 'normalized'\n        },\n        '240': {\n            'display_name': 'Head Flying Hours',\n            'ideal': '',\n            'critical': false,\n            'description': 'Time spent during the positioning of the drive heads.[15][71] Some Fujitsu drives report the count of link resets during a data transfer.',\n            'display_type': 'normalized'\n        },\n        '241': {\n            'display_name': 'Total LBAs Written',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total count of LBAs written.',\n            'display_type': 'normalized'\n        },\n        '242': {\n            'display_name': 'Total LBAs Read',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total count of LBAs read.Some S.M.A.R.T. utilities will report a negative number for the raw value since in reality it has 48 bits rather than 32.',\n            'display_type': 'normalized'\n        },\n        '243': {\n            'display_name': 'Total LBAs Written Expanded',\n            'ideal': '',\n            'critical': false,\n            'description': 'The upper 5 bytes of the 12-byte total number of LBAs written to the device. The lower 7 byte value is located at attribute 0xF1.',\n            'display_type': 'normalized'\n        },\n        '244': {\n            'display_name': 'Total LBAs Read Expanded',\n            'ideal': '',\n            'critical': false,\n            'description': 'The upper 5 bytes of the 12-byte total number of LBAs read from the device. The lower 7 byte value is located at attribute 0xF2.',\n            'display_type': 'normalized'\n        },\n        '249': {\n            'display_name': 'NAND Writes (1GiB)',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total NAND Writes. Raw value reports the number of writes to NAND in 1 GB increments.',\n            'display_type': 'normalized'\n        },\n        '250': {\n            'display_name': 'Read Error Retry Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of errors while reading from a disk.',\n            'display_type': 'normalized'\n        },\n        '251': {\n            'display_name': 'Minimum Spares Remaining',\n            'ideal': '',\n            'critical': false,\n            'description': 'The Minimum Spares Remaining attribute indicates the number of remaining spare blocks as a percentage of the total number of spare blocks available.',\n            'display_type': 'normalized'\n        },\n        '252': {\n            'display_name': 'Newly Added Bad Flash Block',\n            'ideal': '',\n            'critical': false,\n            'description': 'The Newly Added Bad Flash Block attribute indicates the total number of bad flash blocks the drive detected since it was first initialized in manufacturing.',\n            'display_type': 'normalized'\n        },\n        '254': {\n            'display_name': 'Free Fall Protection',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of \"Free Fall Events\" detected.',\n            'display_type': 'normalized'\n        },\n        '3': {\n            'display_name': 'Spin-Up Time',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Average time of spindle spin up (from zero RPM to fully operational [milliseconds]).',\n            'observed_thresholds': [{\n                'low': 78,\n                'high': 96,\n                'annual_failure_rate': 0.11452195377351217,\n                'error_interval': [0.10591837762295722, 0.12363823501915781]\n            }, {\n                'low': 96,\n                'high': 114,\n                'annual_failure_rate': 0.040274562840558074,\n                'error_interval': [0.03465055611002801, 0.046551312468303144]\n            }, {\n                'low': 114,\n                'high': 132,\n                'annual_failure_rate': 0.009100406705780476,\n                'error_interval': [0.006530608971356785, 0.012345729280075591]\n            }, {\n                'low': 132,\n                'high': 150,\n                'annual_failure_rate': 0.008561351734020232,\n                'error_interval': [0.004273795939256936, 0.015318623141355509]\n            }, {\n                'low': 150,\n                'high': 168,\n                'annual_failure_rate': 0.015780508262068848,\n                'error_interval': [0.005123888078524015, 0.03682644215646287]\n            }, {\n                'low': 168,\n                'high': 186,\n                'annual_failure_rate': 0.05262688124794024,\n                'error_interval': [0.0325768689524594, 0.08044577830285578]\n            }, {\n                'low': 186,\n                'high': 204,\n                'annual_failure_rate': 0.01957419424036038,\n                'error_interval': [0.0023705257325185624, 0.0707087198669825]\n            }, {\n                'low': 204,\n                'high': 222,\n                'annual_failure_rate': 0.026050959960031404,\n                'error_interval': [0.0006595532020744994, 0.1451466588889228]\n            }],\n            'display_type': 'normalized'\n        },\n        '4': {\n            'display_name': 'Start/Stop Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'A tally of spindle start/stop cycles. The spindle turns on, and hence the count is increased, both when the hard disk is turned on after having before been turned entirely off (disconnected from power source) and when the hard disk returns from having previously been put to sleep mode.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 13,\n                'annual_failure_rate': 0.01989335424860646,\n                'error_interval': [0.016596548909440657, 0.023653263230617408]\n            }, {\n                'low': 13,\n                'high': 26,\n                'annual_failure_rate': 0.03776935438256488,\n                'error_interval': [0.03310396052098642, 0.04290806173460437]\n            }, {\n                'low': 26,\n                'high': 39,\n                'annual_failure_rate': 0.11022223828187004,\n                'error_interval': [0.09655110535164119, 0.12528657238811672]\n            }, {\n                'low': 39,\n                'high': 52,\n                'annual_failure_rate': 0.16289995457762474,\n                'error_interval': [0.13926541653588131, 0.18939614504497515]\n            }, {\n                'low': 52,\n                'high': 65,\n                'annual_failure_rate': 0.19358212432279714,\n                'error_interval': [0.15864522253849073, 0.23392418181765526]\n            }, {\n                'low': 65,\n                'high': 78,\n                'annual_failure_rate': 0.1157094940074447,\n                'error_interval': [0.07861898732346269, 0.16424039052527728]\n            }, {\n                'low': 78,\n                'high': 91,\n                'annual_failure_rate': 0.12262136155304391,\n                'error_interval': [0.0670382394080032, 0.20573780888032978]\n            }, {\n                'low': 91,\n                'high': 104,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }],\n            'display_type': 'raw'\n        },\n        '5': {\n            'display_name': 'Reallocated Sectors Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of reallocated sectors. The raw value represents a count of the bad sectors that have been found and remapped.Thus, the higher the attribute value, the more sectors the drive has had to reallocate. This value is primarily used as a metric of the life expectancy of the drive; a drive which has had any reallocations at all is significantly more likely to fail in the immediate months.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.025169175350572493,\n                'error_interval': [0.022768612038746357, 0.027753988579272894]\n            }, {\n                'low': 1,\n                'high': 4,\n                'annual_failure_rate': 0.027432608477803388,\n                'error_interval': [0.010067283827589948, 0.05970923963096652]\n            }, {\n                'low': 4,\n                'high': 16,\n                'annual_failure_rate': 0.07501976284584981,\n                'error_interval': [0.039944864177334186, 0.12828607921150972]\n            }, {\n                'low': 16,\n                'high': 70,\n                'annual_failure_rate': 0.23589260654405794,\n                'error_interval': [0.1643078435800227, 0.32806951196017664]\n            }, {\n                'low': 70,\n                'high': 260,\n                'annual_failure_rate': 0.36193219378600433,\n                'error_interval': [0.2608488901774093, 0.4892271827875412]\n            }, {\n                'low': 260,\n                'high': 1100,\n                'annual_failure_rate': 0.5676621428968173,\n                'error_interval': [0.4527895568499355, 0.702804359408436]\n            }, {\n                'low': 1100,\n                'high': 4500,\n                'annual_failure_rate': 1.5028253400346423,\n                'error_interval': [1.2681757596263297, 1.768305221795894]\n            }, {\n                'low': 4500,\n                'high': 17000,\n                'annual_failure_rate': 2.0659987547404763,\n                'error_interval': [1.6809790460512237, 2.512808045182302]\n            }, {\n                'low': 17000,\n                'high': 70000,\n                'annual_failure_rate': 1.7755385684503124,\n                'error_interval': [1.2796520259849835, 2.400012341226441]\n            }],\n            'display_type': 'raw'\n        },\n        '6': {\n            'display_name': 'Read Channel Margin',\n            'ideal': '',\n            'critical': false,\n            'description': 'Margin of a channel while reading data. The function of this attribute is not specified.',\n            'display_type': 'normalized'\n        },\n        '7': {\n            'display_name': 'Seek Error Rate',\n            'ideal': '',\n            'critical': false,\n            'description': '(Vendor specific raw value.) Rate of seek errors of the magnetic heads. If there is a partial failure in the mechanical positioning system, then seek errors will arise. Such a failure may be due to numerous factors, such as damage to a servo, or thermal widening of the hard disk. The raw value has different structure for different vendors and is often not meaningful as a decimal number.',\n            'observed_thresholds': [{\n                'low': 58,\n                'high': 76,\n                'annual_failure_rate': 0.2040131025936549,\n                'error_interval': [0.17032852883286412, 0.2424096283327138]\n            }, {\n                'low': 76,\n                'high': 94,\n                'annual_failure_rate': 0.08725919610118257,\n                'error_interval': [0.08077138510999876, 0.09412943212007528]\n            }, {\n                'low': 94,\n                'high': 112,\n                'annual_failure_rate': 0.01087335627722523,\n                'error_interval': [0.008732197944943352, 0.013380600544561905]\n            }, {\n                'low': 112,\n                'high': 130,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 130,\n                'high': 148,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 148,\n                'high': 166,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 166,\n                'high': 184,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 184,\n                'high': 202,\n                'annual_failure_rate': 0.05316285755900475,\n                'error_interval': [0.03370069132942804, 0.07977038905848267]\n            }],\n            'display_type': 'normalized'\n        },\n        '8': {\n            'display_name': 'Seek Time Performance',\n            'ideal': 'high',\n            'critical': false,\n            'description': 'Average performance of seek operations of the magnetic heads. If this attribute is decreasing, it is a sign of problems in the mechanical subsystem.',\n            'display_type': 'normalized'\n        },\n        '9': {\n            'display_name': 'Power-On Hours',\n            'ideal': '',\n            'critical': false,\n            'description': 'Count of hours in power-on state. The raw value of this attribute shows total count of hours (or minutes, or seconds, depending on manufacturer) in power-on state. By default, the total expected lifetime of a hard disk in perfect condition is defined as 5 years (running every day and night on all days). This is equal to 1825 days in 24/7 mode or 43800 hours. On some pre-2005 drives, this raw value may advance erratically and/or \"wrap around\" (reset to zero periodically).',\n            'display_type': 'normalized'\n        }\n    },\n    'success': true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/device/details/sdc.ts",
    "content": "export const sdc = {\n    'data': {\n        'device': {\n            'CreatedAt': '2021-06-24T21:17:31.303033-07:00',\n            'UpdatedAt': '2021-10-24T16:37:56.74865-07:00',\n            'DeletedAt': null,\n            'wwn': '0x5000cca264ec3183',\n            'device_name': 'sdc',\n            'manufacturer': 'ATA',\n            'model_name': 'WDC_WD140EDFZ-11A0VA0',\n            'interface_type': 'SCSI',\n            'interface_speed': '',\n            'serial_number': '9RK4XXXXX',\n            'firmware': 'MS1OA650',\n            'rotational_speed': 0,\n            'capacity': 14000519643136,\n            'form_factor': '',\n            'smart_support': false,\n            'device_protocol': 'ATA',\n            'device_type': '',\n            'label': '',\n            'host_id': '',\n            'device_status': 3\n        },\n        'smart_results': [{\n            'date': '2021-10-24T23:20:44Z',\n            'device_wwn': '0x5000cca264ec3183',\n            'device_protocol': 'ATA',\n            'temp': 25,\n            'power_on_hours': 65592,\n            'power_cycle_count': 86,\n            'attrs': {\n                '1': {\n                    'attribute_id': 1,\n                    'value': 100,\n                    'thresh': 16,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.034155719633986996\n                },\n                '10': {\n                    'attribute_id': 10,\n                    'value': 100,\n                    'thresh': 60,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.05459827163896099\n                },\n                '12': {\n                    'attribute_id': 12,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 86,\n                    'raw_string': '86',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 2,\n                    'status_reason': 'Observed Failure Rate for Attribute is greater than 10%',\n                    'failure_rate': 0.12354840389522469\n                },\n                '192': {\n                    'attribute_id': 192,\n                    'value': 95,\n                    'thresh': 0,\n                    'worst': 95,\n                    'raw_value': 6244,\n                    'raw_string': '6244',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '193': {\n                    'attribute_id': 193,\n                    'value': 95,\n                    'thresh': 0,\n                    'worst': 95,\n                    'raw_value': 6244,\n                    'raw_string': '6244',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '194': {\n                    'attribute_id': 194,\n                    'value': 240,\n                    'thresh': 0,\n                    'worst': 240,\n                    'raw_value': 167504969753,\n                    'raw_string': '25 (Min/Max 19/39)',\n                    'when_failed': '',\n                    'transformed_value': 25,\n                    'status': 0\n                },\n                '196': {\n                    'attribute_id': 196,\n                    'value': 1,\n                    'thresh': 0,\n                    'worst': 1,\n                    'raw_value': 3831,\n                    'raw_string': '3831',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 2,\n                    'status_reason': 'Could not determine Observed Failure Rate for Critical Attribute'\n                },\n                '197': {\n                    'attribute_id': 197,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 8,\n                    'raw_string': '8',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 1,\n                    'status_reason': 'Observed Failure Rate for Critical Attribute is greater than 10%',\n                    'failure_rate': 0.6108100007493069\n                },\n                '198': {\n                    'attribute_id': 198,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.028675322159886437\n                },\n                '199': {\n                    'attribute_id': 199,\n                    'value': 200,\n                    'thresh': 0,\n                    'worst': 200,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '2': {\n                    'attribute_id': 2,\n                    'value': 136,\n                    'thresh': 54,\n                    'worst': 136,\n                    'raw_value': 91,\n                    'raw_string': '91',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '3': {\n                    'attribute_id': 3,\n                    'value': 125,\n                    'thresh': 24,\n                    'worst': 125,\n                    'raw_value': 17192124596,\n                    'raw_string': '180 (Average 187)',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.009100406705780476\n                },\n                '4': {\n                    'attribute_id': 4,\n                    'value': 100,\n                    'thresh': 0,\n                    'worst': 100,\n                    'raw_value': 86,\n                    'raw_string': '86',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 2,\n                    'status_reason': 'Observed Failure Rate for Attribute is greater than 10%',\n                    'failure_rate': 0.12262136155304391\n                },\n                '5': {\n                    'attribute_id': 5,\n                    'value': 1,\n                    'thresh': 5,\n                    'worst': 1,\n                    'raw_value': 1975,\n                    'raw_string': '1975',\n                    'when_failed': 'now',\n                    'transformed_value': 0,\n                    'status': 1,\n                    'status_reason': 'Observed Failure Rate for Critical Attribute is greater than 10%',\n                    'failure_rate': 1.5028253400346423\n                },\n                '7': {\n                    'attribute_id': 7,\n                    'value': 100,\n                    'thresh': 67,\n                    'worst': 100,\n                    'raw_value': 0,\n                    'raw_string': '0',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0,\n                    'failure_rate': 0.01087335627722523\n                },\n                '8': {\n                    'attribute_id': 8,\n                    'value': 118,\n                    'thresh': 20,\n                    'worst': 118,\n                    'raw_value': 33,\n                    'raw_string': '33',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                '9': {\n                    'attribute_id': 9,\n                    'value': 91,\n                    'thresh': 0,\n                    'worst': 91,\n                    'raw_value': 65592,\n                    'raw_string': '65592',\n                    'when_failed': '',\n                    'transformed_value': 0,\n                    'status': 0\n                }\n            },\n            'Status': 0\n        }]\n    },\n    'metadata': {\n        '1': {\n            'display_name': 'Read Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': '(Vendor specific raw value.) Stores data related to the rate of hardware read errors that occurred when reading data from a disk surface. The raw value has different structure for different vendors and is often not meaningful as a decimal number.',\n            'observed_thresholds': [{\n                'low': 80,\n                'high': 95,\n                'annual_failure_rate': 0.8879749768303985,\n                'error_interval': [0.682344353388663, 1.136105732920724]\n            }, {\n                'low': 95,\n                'high': 110,\n                'annual_failure_rate': 0.034155719633986996,\n                'error_interval': [0.030188482024981093, 0.038499386872354435]\n            }, {\n                'low': 110,\n                'high': 125,\n                'annual_failure_rate': 0.06390002135229157,\n                'error_interval': [0.05852004676110847, 0.06964160930553712]\n            }, {\n                'low': 125,\n                'high': 140,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 140,\n                'high': 155,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 155,\n                'high': 170,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 170,\n                'high': 185,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 185,\n                'high': 200,\n                'annual_failure_rate': 0.044823775021490854,\n                'error_interval': [0.032022762038723306, 0.06103725943096589]\n            }],\n            'display_type': 'normalized'\n        },\n        '10': {\n            'display_name': 'Spin Retry Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of retry of spin start attempts. This attribute stores a total count of the spin start attempts to reach the fully operational speed (under the condition that the first attempt was unsuccessful). An increase of this attribute value is a sign of problems in the hard disk mechanical subsystem.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.05459827163896099,\n                'error_interval': [0.05113785787727033, 0.05823122757702782]\n            }, {\n                'low': 0,\n                'high': 80,\n                'annual_failure_rate': 0.5555555555555556,\n                'error_interval': [0.014065448880161053, 3.095357439410498]\n            }],\n            'display_type': 'raw'\n        },\n        '11': {\n            'display_name': 'Recalibration Retries or Calibration Retry Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'This attribute indicates the count that recalibration was requested (under the condition that the first attempt was unsuccessful). An increase of this attribute value is a sign of problems in the hard disk mechanical subsystem.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.04658866433672694,\n                'error_interval': [0.03357701137320878, 0.06297433993055492]\n            }, {\n                'low': 0,\n                'high': 80,\n                'annual_failure_rate': 0.5555555555555556,\n                'error_interval': [0.014065448880161053, 3.095357439410498]\n            }, {\n                'low': 80,\n                'high': 160,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 160,\n                'high': 240,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 240,\n                'high': 320,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 320,\n                'high': 400,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 400,\n                'high': 480,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 480,\n                'high': 560,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }],\n            'display_type': 'raw'\n        },\n        '12': {\n            'display_name': 'Power Cycle Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'This attribute indicates the count of full hard disk power on/off cycles.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 13,\n                'annual_failure_rate': 0.019835987118930823,\n                'error_interval': [0.016560870164523494, 0.023569242386797896]\n            }, {\n                'low': 13,\n                'high': 26,\n                'annual_failure_rate': 0.038210930067894826,\n                'error_interval': [0.03353859179329295, 0.0433520775718649]\n            }, {\n                'low': 26,\n                'high': 39,\n                'annual_failure_rate': 0.11053528307302571,\n                'error_interval': [0.09671061589521368, 0.1257816678419765]\n            }, {\n                'low': 39,\n                'high': 52,\n                'annual_failure_rate': 0.16831189443375036,\n                'error_interval': [0.1440976510675928, 0.19543066007594895]\n            }, {\n                'low': 52,\n                'high': 65,\n                'annual_failure_rate': 0.20630344262550107,\n                'error_interval': [0.1693965932069108, 0.2488633537247856]\n            }, {\n                'low': 65,\n                'high': 78,\n                'annual_failure_rate': 0.1030972634140512,\n                'error_interval': [0.06734655535304743, 0.15106137807407605]\n            }, {\n                'low': 78,\n                'high': 91,\n                'annual_failure_rate': 0.12354840389522469,\n                'error_interval': [0.06578432170016109, 0.21127153335749593]\n            }],\n            'display_type': 'raw'\n        },\n        '13': {\n            'display_name': 'Soft Read Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Uncorrected read errors reported to the operating system.',\n            'display_type': 'normalized'\n        },\n        '170': {\n            'display_name': 'Available Reserved Space',\n            'ideal': '',\n            'critical': false,\n            'description': 'See attribute E8.',\n            'display_type': 'normalized'\n        },\n        '171': {\n            'display_name': 'SSD Program Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': '(Kingston) The total number of flash program operation failures since the drive was deployed.[33] Identical to attribute 181.',\n            'display_type': 'normalized'\n        },\n        '172': {\n            'display_name': 'SSD Erase Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': '(Kingston) Counts the number of flash erase failures. This attribute returns the total number of Flash erase operation failures since the drive was deployed. This attribute is identical to attribute 182.',\n            'display_type': 'normalized'\n        },\n        '173': {\n            'display_name': 'SSD Wear Leveling Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Counts the maximum worst erase count on any block.',\n            'display_type': 'normalized'\n        },\n        '174': {\n            'display_name': 'Unexpected Power Loss Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Also known as \"Power-off Retract Count\" per conventional HDD terminology. Raw value reports the number of unclean shutdowns, cumulative over the life of an SSD, where an \"unclean shutdown\" is the removal of power without STANDBY IMMEDIATE as the last command (regardless of PLI activity using capacitor power). Normalized value is always 100.',\n            'display_type': ''\n        },\n        '175': {\n            'display_name': 'Power Loss Protection Failure',\n            'ideal': '',\n            'critical': false,\n            'description': 'Last test result as microseconds to discharge cap, saturated at its maximum value. Also logs minutes since last test and lifetime number of tests. Raw value contains the following data:     Bytes 0-1: Last test result as microseconds to discharge cap, saturates at max value. Test result expected in range 25 \\u003c= result \\u003c= 5000000, lower indicates specific error code. Bytes 2-3: Minutes since last test, saturates at max value.Bytes 4-5: Lifetime number of tests, not incremented on power cycle, saturates at max value. Normalized value is set to one on test failure or 11 if the capacitor has been tested in an excessive temperature condition, otherwise 100.',\n            'display_type': 'normalized'\n        },\n        '176': {\n            'display_name': 'Erase Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'S.M.A.R.T. parameter indicates a number of flash erase command failures.',\n            'display_type': 'normalized'\n        },\n        '177': {\n            'display_name': 'Wear Range Delta',\n            'ideal': '',\n            'critical': false,\n            'description': 'Delta between most-worn and least-worn Flash blocks. It describes how good/bad the wearleveling of the SSD works on a more technical way. ',\n            'display_type': 'normalized'\n        },\n        '179': {\n            'display_name': 'Used Reserved Block Count Total',\n            'ideal': '',\n            'critical': false,\n            'description': 'Pre-Fail attribute used at least in Samsung devices.',\n            'display_type': 'normalized'\n        },\n        '180': {\n            'display_name': 'Unused Reserved Block Count Total',\n            'ideal': '',\n            'critical': false,\n            'description': '\"Pre-Fail\" attribute used at least in HP devices. ',\n            'display_type': 'normalized'\n        },\n        '181': {\n            'display_name': 'Program Fail Count Total',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total number of Flash program operation failures since the drive was deployed.',\n            'display_type': 'normalized'\n        },\n        '182': {\n            'display_name': 'Erase Fail Count',\n            'ideal': '',\n            'critical': false,\n            'description': '\"Pre-Fail\" Attribute used at least in Samsung devices.',\n            'display_type': 'normalized'\n        },\n        '183': {\n            'display_name': 'SATA Downshift Error Count or Runtime Bad Block',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Western Digital, Samsung or Seagate attribute: Either the number of downshifts of link speed (e.g. from 6Gbit/s to 3Gbit/s) or the total number of data blocks with detected, uncorrectable errors encountered during normal operation. Although degradation of this parameter can be an indicator of drive aging and/or potential electromechanical problems, it does not directly indicate imminent drive failure.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.09084549203210031,\n                'error_interval': [0.08344373475686712, 0.09872777224842152]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.05756065656498585,\n                'error_interval': [0.04657000847949464, 0.07036491775108872]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 0.6193088626208925,\n                'error_interval': [0.41784508895529787, 0.8841019099092139]\n            }, {\n                'low': 4,\n                'high': 8,\n                'annual_failure_rate': 0.5533447034299792,\n                'error_interval': [0.31628430884775033, 0.8985971312402635]\n            }, {\n                'low': 8,\n                'high': 16,\n                'annual_failure_rate': 0.3882388694727245,\n                'error_interval': [0.21225380267814295, 0.6513988534774338]\n            }, {\n                'low': 16,\n                'high': 35,\n                'annual_failure_rate': 0.37116708385481856,\n                'error_interval': [0.19763084005134446, 0.6347070173754686]\n            }, {\n                'low': 35,\n                'high': 70,\n                'annual_failure_rate': 0.2561146752205292,\n                'error_interval': [0.10297138269895259, 0.5276941165819332]\n            }, {\n                'low': 70,\n                'high': 130,\n                'annual_failure_rate': 0.40299684542586756,\n                'error_interval': [0.16202563309223209, 0.8303275247667772]\n            }, {\n                'low': 130,\n                'high': 260,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }],\n            'display_type': 'raw'\n        },\n        '184': {\n            'display_name': 'End-to-End error',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'This attribute is a part of Hewlett-Packard\"s SMART IV technology, as well as part of other vendors\" IO Error Detection and Correction schemas, and it contains a count of parity errors which occur in the data path to the media via the drive\"s cache RAM',\n            'observed_thresholds': [{\n                'low': 93,\n                'high': 94,\n                'annual_failure_rate': 1.631212012870933,\n                'error_interval': [1.055634407303844, 2.407990716767714]\n            }, {\n                'low': 94,\n                'high': 95,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 95,\n                'high': 96,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 96,\n                'high': 97,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 97,\n                'high': 97,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 97,\n                'high': 98,\n                'annual_failure_rate': 1.8069306930693072,\n                'error_interval': [0.04574752432804858, 10.067573453924245]\n            }, {\n                'low': 98,\n                'high': 99,\n                'annual_failure_rate': 0.8371559633027523,\n                'error_interval': [0.10138347095016888, 3.0240951820174824]\n            }, {\n                'low': 99,\n                'high': 100,\n                'annual_failure_rate': 0.09334816849865138,\n                'error_interval': [0.08689499010435861, 0.10015372448181788]\n            }],\n            'display_type': 'normalized'\n        },\n        '185': {\n            'display_name': 'Head Stability',\n            'ideal': '',\n            'critical': false,\n            'description': 'Western Digital attribute.',\n            'display_type': 'normalized'\n        },\n        '186': {\n            'display_name': 'Induced Op-Vibration Detection',\n            'ideal': '',\n            'critical': false,\n            'description': 'Western Digital attribute.',\n            'display_type': 'normalized'\n        },\n        '187': {\n            'display_name': 'Reported Uncorrectable Errors',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'The count of errors that could not be recovered using hardware ECC (see attribute 195).',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.028130798308190524,\n                'error_interval': [0.024487830609364304, 0.032162944988161336]\n            }, {\n                'low': 1,\n                'high': 1,\n                'annual_failure_rate': 0.33877621175661743,\n                'error_interval': [0.22325565823630591, 0.4929016016666955]\n            }, {\n                'low': 1,\n                'high': 3,\n                'annual_failure_rate': 0.24064820598237213,\n                'error_interval': [0.14488594021076606, 0.3758019832614595]\n            }, {\n                'low': 3,\n                'high': 6,\n                'annual_failure_rate': 0.5014425058387142,\n                'error_interval': [0.3062941096766342, 0.7744372808405151]\n            }, {\n                'low': 6,\n                'high': 11,\n                'annual_failure_rate': 0.38007108544136836,\n                'error_interval': [0.2989500188963677, 0.4764223967570595]\n            }, {\n                'low': 11,\n                'high': 20,\n                'annual_failure_rate': 0.5346094598348444,\n                'error_interval': [0.40595137663302483, 0.6911066985735377]\n            }, {\n                'low': 20,\n                'high': 35,\n                'annual_failure_rate': 0.8428063943161636,\n                'error_interval': [0.6504601819243522, 1.0742259350903411]\n            }, {\n                'low': 35,\n                'high': 65,\n                'annual_failure_rate': 1.4429071005017484,\n                'error_interval': [1.1405581860945952, 1.8008133631629157]\n            }, {\n                'low': 65,\n                'high': 120,\n                'annual_failure_rate': 1.6190935390549661,\n                'error_interval': [1.0263664163011208, 2.4294352761068576]\n            }],\n            'display_type': 'raw'\n        },\n        '188': {\n            'display_name': 'Command Timeout',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'The count of aborted operations due to HDD timeout. Normally this attribute value should be equal to zero.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.024893587674442153,\n                'error_interval': [0.020857343769186413, 0.0294830350167543]\n            }, {\n                'low': 0,\n                'high': 13,\n                'annual_failure_rate': 0.10044174089362015,\n                'error_interval': [0.0812633664077498, 0.1227848196758574]\n            }, {\n                'low': 13,\n                'high': 26,\n                'annual_failure_rate': 0.334030592234279,\n                'error_interval': [0.2523231196342665, 0.4337665082489293]\n            }, {\n                'low': 26,\n                'high': 39,\n                'annual_failure_rate': 0.36724705400842445,\n                'error_interval': [0.30398009356575617, 0.4397986538328568]\n            }, {\n                'low': 39,\n                'high': 52,\n                'annual_failure_rate': 0.29848155926978354,\n                'error_interval': [0.2509254838615984, 0.35242890006477073]\n            }, {\n                'low': 52,\n                'high': 65,\n                'annual_failure_rate': 0.2203079701535098,\n                'error_interval': [0.18366082845676174, 0.26212468677179274]\n            }, {\n                'low': 65,\n                'high': 78,\n                'annual_failure_rate': 0.3018169948863018,\n                'error_interval': [0.23779746376787655, 0.37776897542831006]\n            }, {\n                'low': 78,\n                'high': 91,\n                'annual_failure_rate': 0.32854928239235887,\n                'error_interval': [0.2301118782147336, 0.4548506948185028]\n            }, {\n                'low': 91,\n                'high': 104,\n                'annual_failure_rate': 0.28488916640649387,\n                'error_interval': [0.1366154288236293, 0.5239213202729072]\n            }],\n            'display_type': 'raw'\n        },\n        '189': {\n            'display_name': 'High Fly Writes',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'HDD manufacturers implement a flying height sensor that attempts to provide additional protections for write operations by detecting when a recording head is flying outside its normal operating range. If an unsafe fly height condition is encountered, the write process is stopped, and the information is rewritten or reallocated to a safe region of the hard drive. This attribute indicates the count of these errors detected over the lifetime of the drive.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.09070551401946862,\n                'error_interval': [0.08018892683853401, 0.10221801211956287]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.0844336097370013,\n                'error_interval': [0.07299813695315267, 0.09715235540340669]\n            }, {\n                'low': 2,\n                'high': 5,\n                'annual_failure_rate': 0.07943219628781906,\n                'error_interval': [0.06552176680630226, 0.09542233189887633]\n            }, {\n                'low': 5,\n                'high': 13,\n                'annual_failure_rate': 0.09208847603893404,\n                'error_interval': [0.07385765060838133, 0.11345557807163456]\n            }, {\n                'low': 13,\n                'high': 30,\n                'annual_failure_rate': 0.18161161650924224,\n                'error_interval': [0.13858879602902988, 0.23377015012749933]\n            }, {\n                'low': 30,\n                'high': 70,\n                'annual_failure_rate': 0.2678117886102384,\n                'error_interval': [0.19044036194841887, 0.36610753129699186]\n            }, {\n                'low': 70,\n                'high': 150,\n                'annual_failure_rate': 0.26126480798826107,\n                'error_interval': [0.15958733218826962, 0.4035023060905559]\n            }, {\n                'low': 150,\n                'high': 350,\n                'annual_failure_rate': 0.11337164155924832,\n                'error_interval': [0.030889956621649995, 0.2902764300762812]\n            }],\n            'display_type': 'raw'\n        },\n        '190': {\n            'display_name': 'Temperature Difference',\n            'ideal': '',\n            'critical': false,\n            'description': 'Value is equal to (100-temp. °C), allowing manufacturer to set a minimum threshold which corresponds to a maximum temperature. This also follows the convention of 100 being a best-case value and lower values being undesirable. However, some older drives may instead report raw Temperature (identical to 0xC2) or Temperature minus 50 here.',\n            'display_type': 'normalized'\n        },\n        '191': {\n            'display_name': 'G-sense Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors resulting from externally induced shock and vibration. ',\n            'display_type': 'normalized'\n        },\n        '192': {\n            'display_name': 'Power-off Retract Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Number of power-off or emergency retract cycles.',\n            'observed_thresholds': [{\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.02861098445412803,\n                'error_interval': [0.022345416230915037, 0.036088863823297186]\n            }, {\n                'low': 2,\n                'high': 6,\n                'annual_failure_rate': 0.0738571777154862,\n                'error_interval': [0.06406927746420421, 0.0847175264009771]\n            }, {\n                'low': 6,\n                'high': 16,\n                'annual_failure_rate': 0.11970378206823593,\n                'error_interval': [0.10830059875098269, 0.13198105985656441]\n            }, {\n                'low': 16,\n                'high': 40,\n                'annual_failure_rate': 0.027266868552620425,\n                'error_interval': [0.021131448605713823, 0.03462795920968522]\n            }, {\n                'low': 40,\n                'high': 100,\n                'annual_failure_rate': 0.011741682974559688,\n                'error_interval': [0.00430899071133239, 0.025556700631152028]\n            }, {\n                'low': 100,\n                'high': 250,\n                'annual_failure_rate': 0.012659940134091309,\n                'error_interval': [0.00607093338127348, 0.023282080653656938]\n            }, {\n                'low': 250,\n                'high': 650,\n                'annual_failure_rate': 0.01634692899031039,\n                'error_interval': [0.009522688540043157, 0.026173016865409605]\n            }, {\n                'low': 650,\n                'high': 1600,\n                'annual_failure_rate': 0.005190074354440066,\n                'error_interval': [0.0025908664180103293, 0.009286476666453648]\n            }],\n            'display_type': 'raw'\n        },\n        '193': {\n            'display_name': 'Load Cycle Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of load/unload cycles into head landing zone position.[45] Some drives use 225 (0xE1) for Load Cycle Count instead.',\n            'display_type': 'normalized'\n        },\n        '194': {\n            'display_name': 'Temperature',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Indicates the device temperature, if the appropriate sensor is fitted. Lowest byte of the raw value contains the exact temperature value (Celsius degrees).',\n            'transform_value_unit': '°C',\n            'display_type': 'transformed'\n        },\n        '195': {\n            'display_name': 'Hardware ECC Recovered',\n            'ideal': '',\n            'critical': false,\n            'description': '(Vendor-specific raw value.) The raw value has different structure for different vendors and is often not meaningful as a decimal number.',\n            'observed_thresholds': [{\n                'low': 12,\n                'high': 24,\n                'annual_failure_rate': 0.31472916829975706,\n                'error_interval': [0.15711166685282174, 0.5631374192486645]\n            }, {\n                'low': 24,\n                'high': 36,\n                'annual_failure_rate': 0.15250310197260136,\n                'error_interval': [0.10497611828070175, 0.21417105521823687]\n            }, {\n                'low': 36,\n                'high': 48,\n                'annual_failure_rate': 0.2193119102723874,\n                'error_interval': [0.16475385681835103, 0.28615447006525274]\n            }, {\n                'low': 48,\n                'high': 60,\n                'annual_failure_rate': 0.05672658497265746,\n                'error_interval': [0.043182904776447234, 0.07317316161437043]\n            }, {\n                'low': 60,\n                'high': 72,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 72,\n                'high': 84,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 84,\n                'high': 96,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 96,\n                'high': 108,\n                'annual_failure_rate': 0.04074570216566197,\n                'error_interval': [0.001031591863615295, 0.22702052218047528]\n            }],\n            'display_type': 'normalized'\n        },\n        '196': {\n            'display_name': 'Reallocation Event Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of remap operations. The raw value of this attribute shows the total count of attempts to transfer data from reallocated sectors to a spare area. Both successful and unsuccessful attempts are counted.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.007389855800729792,\n                'error_interval': [0.005652654139732716, 0.009492578928212054]\n            }, {\n                'low': 1,\n                'high': 1,\n                'annual_failure_rate': 0.026558331312151347,\n                'error_interval': [0.005476966404484466, 0.07761471429677293]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.02471894893674658,\n                'error_interval': [0.0006258296027540169, 0.13772516847438018]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 0.03200912040691046,\n                'error_interval': [0.0008104007642081744, 0.17834340416493005]\n            }, {\n                'low': 4,\n                'high': 7,\n                'annual_failure_rate': 0.043078012510326925,\n                'error_interval': [0.001090640849081295, 0.24001532369794615]\n            }, {\n                'low': 7,\n                'high': 11,\n                'annual_failure_rate': 0.033843300880853036,\n                'error_interval': [0.0008568381932559863, 0.18856280368036135]\n            }, {\n                'low': 11,\n                'high': 17,\n                'annual_failure_rate': 0.16979376647542252,\n                'error_interval': [0.035015556653263225, 0.49620943874336304]\n            }, {\n                'low': 17,\n                'high': 27,\n                'annual_failure_rate': 0.059042381106438044,\n                'error_interval': [0.0014948236677880642, 0.32896309247698113]\n            }, {\n                'low': 27,\n                'high': 45,\n                'annual_failure_rate': 0.24701105346266636,\n                'error_interval': [0.050939617608142244, 0.721871118983972]\n            }],\n            'display_type': 'raw'\n        },\n        '197': {\n            'display_name': 'Current Pending Sector Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of \"unstable\" sectors (waiting to be remapped, because of unrecoverable read errors). If an unstable sector is subsequently read successfully, the sector is remapped and this value is decreased. Read errors on a sector will not remap the sector immediately (since the correct value cannot be read and so the value to remap is not known, and also it might become readable later); instead, the drive firmware remembers that the sector needs to be remapped, and will remap it the next time it\"s written.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.025540791394761345,\n                'error_interval': [0.023161777231213983, 0.02809784482748174]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.34196613799103254,\n                'error_interval': [0.22723401523750225, 0.4942362818474496]\n            }, {\n                'low': 2,\n                'high': 6,\n                'annual_failure_rate': 0.6823772508117681,\n                'error_interval': [0.41083568090070416, 1.0656166047061635]\n            }, {\n                'low': 6,\n                'high': 16,\n                'annual_failure_rate': 0.6108100007493069,\n                'error_interval': [0.47336936083368364, 0.7757071095273286]\n            }, {\n                'low': 16,\n                'high': 40,\n                'annual_failure_rate': 0.9564879341127684,\n                'error_interval': [0.7701044196378299, 1.174355230793638]\n            }, {\n                'low': 40,\n                'high': 100,\n                'annual_failure_rate': 1.6519989942167461,\n                'error_interval': [1.328402276482456, 2.0305872327541317]\n            }, {\n                'low': 100,\n                'high': 250,\n                'annual_failure_rate': 2.5137741046831956,\n                'error_interval': [1.9772427971560862, 3.1510376077891613]\n            }, {\n                'low': 250,\n                'high': 650,\n                'annual_failure_rate': 3.3203378817413904,\n                'error_interval': [2.5883662702274406, 4.195047163573006]\n            }, {\n                'low': 650,\n                'high': 1600,\n                'annual_failure_rate': 3.133047210300429,\n                'error_interval': [1.1497731080460096, 6.819324775707182]\n            }],\n            'display_type': 'raw'\n        },\n        '198': {\n            'display_name': '(Offline) Uncorrectable Sector Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'The total count of uncorrectable errors when reading/writing a sector. A rise in the value of this attribute indicates defects of the disk surface and/or problems in the mechanical subsystem.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.028675322159886437,\n                'error_interval': [0.026159385510707116, 0.03136793218577656]\n            }, {\n                'low': 0,\n                'high': 2,\n                'annual_failure_rate': 0.8135764944275583,\n                'error_interval': [0.40613445471964466, 1.4557130815309443]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 1.1173469387755102,\n                'error_interval': [0.5773494680315332, 1.9517802404552516]\n            }, {\n                'low': 4,\n                'high': 6,\n                'annual_failure_rate': 1.3558692421991083,\n                'error_interval': [0.4402470522980859, 3.1641465148237544]\n            }, {\n                'low': 6,\n                'high': 8,\n                'annual_failure_rate': 0.7324414715719062,\n                'error_interval': [0.15104704003805655, 2.140504796291604]\n            }, {\n                'low': 8,\n                'high': 10,\n                'annual_failure_rate': 0.5777213677766163,\n                'error_interval': [0.43275294849366835, 0.7556737733062419]\n            }, {\n                'low': 10,\n                'high': 12,\n                'annual_failure_rate': 1.7464114832535886,\n                'error_interval': [0.47583835092536914, 4.471507017371231]\n            }, {\n                'low': 12,\n                'high': 14,\n                'annual_failure_rate': 2.6449275362318843,\n                'error_interval': [0.3203129951758959, 9.554387676519005]\n            }, {\n                'low': 14,\n                'high': 16,\n                'annual_failure_rate': 0.796943231441048,\n                'error_interval': [0.5519063550198366, 1.113648286331181]\n            }],\n            'display_type': 'raw'\n        },\n        '199': {\n            'display_name': 'UltraDMA CRC Error Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors in data transfer via the interface cable as determined by ICRC (Interface Cyclic Redundancy Check).',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 1,\n                'annual_failure_rate': 0.04068379316116366,\n                'error_interval': [0.037534031558106425, 0.04402730201866553]\n            }, {\n                'low': 1,\n                'high': 2,\n                'annual_failure_rate': 0.1513481259734218,\n                'error_interval': [0.12037165605991791, 0.18786293065527596]\n            }, {\n                'low': 2,\n                'high': 4,\n                'annual_failure_rate': 0.16849758722418978,\n                'error_interval': [0.12976367397863445, 0.2151676572000481]\n            }, {\n                'low': 4,\n                'high': 8,\n                'annual_failure_rate': 0.15385127340491614,\n                'error_interval': [0.10887431782430312, 0.21117289306426648]\n            }, {\n                'low': 8,\n                'high': 16,\n                'annual_failure_rate': 0.14882894050104387,\n                'error_interval': [0.09631424312463635, 0.2197008753522735]\n            }, {\n                'low': 16,\n                'high': 35,\n                'annual_failure_rate': 0.20878219917249793,\n                'error_interval': [0.14086447304552446, 0.29804957135975]\n            }, {\n                'low': 35,\n                'high': 70,\n                'annual_failure_rate': 0.13742940270409038,\n                'error_interval': [0.06860426267470295, 0.24589916335290812]\n            }, {\n                'low': 70,\n                'high': 130,\n                'annual_failure_rate': 0.22336578581363,\n                'error_interval': [0.11150339549604707, 0.39966309081252904]\n            }, {\n                'low': 130,\n                'high': 260,\n                'annual_failure_rate': 0.18277416124186283,\n                'error_interval': [0.07890890989692058, 0.3601379610272007]\n            }],\n            'display_type': 'raw'\n        },\n        '2': {\n            'display_name': 'Throughput Performance',\n            'ideal': 'high',\n            'critical': false,\n            'description': 'Overall (general) throughput performance of a hard disk drive. If the value of this attribute is decreasing there is a high probability that there is a problem with the disk.',\n            'display_type': 'normalized'\n        },\n        '200': {\n            'display_name': 'Multi-Zone Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors found when writing a sector. The higher the value, the worse the disk\"s mechanical condition is.',\n            'display_type': 'normalized'\n        },\n        '201': {\n            'display_name': 'Soft Read Error Rate',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count indicates the number of uncorrectable software read errors.',\n            'display_type': 'normalized'\n        },\n        '202': {\n            'display_name': 'Data Address Mark errors',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of Data Address Mark errors (or vendor-specific).',\n            'display_type': 'normalized'\n        },\n        '203': {\n            'display_name': 'Run Out Cancel',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The number of errors caused by incorrect checksum during the error correction.',\n            'display_type': 'normalized'\n        },\n        '204': {\n            'display_name': 'Soft ECC Correction',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of errors corrected by the internal error correction software.',\n            'display_type': ''\n        },\n        '205': {\n            'display_name': 'Thermal Asperity Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of errors due to high temperature.',\n            'display_type': 'normalized'\n        },\n        '206': {\n            'display_name': 'Flying Height',\n            'ideal': '',\n            'critical': false,\n            'description': 'Height of heads above the disk surface. If too low, head crash is more likely; if too high, read/write errors are more likely.',\n            'display_type': 'normalized'\n        },\n        '207': {\n            'display_name': 'Spin High Current',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Amount of surge current used to spin up the drive.',\n            'display_type': 'normalized'\n        },\n        '208': {\n            'display_name': 'Spin Buzz',\n            'ideal': '',\n            'critical': false,\n            'description': 'Count of buzz routines needed to spin up the drive due to insufficient power.',\n            'display_type': 'normalized'\n        },\n        '209': {\n            'display_name': 'Offline Seek Performance',\n            'ideal': '',\n            'critical': false,\n            'description': 'Drive\"s seek performance during its internal tests.',\n            'display_type': 'normalized'\n        },\n        '210': {\n            'display_name': 'Vibration During Write',\n            'ideal': '',\n            'critical': false,\n            'description': 'Found in Maxtor 6B200M0 200GB and Maxtor 2R015H1 15GB disks.',\n            'display_type': 'normalized'\n        },\n        '211': {\n            'display_name': 'Vibration During Write',\n            'ideal': '',\n            'critical': false,\n            'description': 'A recording of a vibration encountered during write operations.',\n            'display_type': 'normalized'\n        },\n        '212': {\n            'display_name': 'Shock During Write',\n            'ideal': '',\n            'critical': false,\n            'description': 'A recording of shock encountered during write operations.',\n            'display_type': 'normalized'\n        },\n        '22': {\n            'display_name': 'Current Helium Level',\n            'ideal': 'high',\n            'critical': false,\n            'description': 'Specific to He8 drives from HGST. This value measures the helium inside of the drive specific to this manufacturer. It is a pre-fail attribute that trips once the drive detects that the internal environment is out of specification.',\n            'display_type': 'normalized'\n        },\n        '220': {\n            'display_name': 'Disk Shift',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Distance the disk has shifted relative to the spindle (usually due to shock or temperature). Unit of measure is unknown.',\n            'display_type': 'normalized'\n        },\n        '221': {\n            'display_name': 'G-Sense Error Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The count of errors resulting from externally induced shock and vibration.',\n            'display_type': 'normalized'\n        },\n        '222': {\n            'display_name': 'Loaded Hours',\n            'ideal': '',\n            'critical': false,\n            'description': 'Time spent operating under data load (movement of magnetic head armature).',\n            'display_type': 'normalized'\n        },\n        '223': {\n            'display_name': 'Load/Unload Retry Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Count of times head changes position.',\n            'display_type': 'normalized'\n        },\n        '224': {\n            'display_name': 'Load Friction',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Resistance caused by friction in mechanical parts while operating.',\n            'display_type': 'normalized'\n        },\n        '225': {\n            'display_name': 'Load/Unload Cycle Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Total count of load cycles Some drives use 193 (0xC1) for Load Cycle Count instead. See Description for 193 for significance of this number. ',\n            'display_type': 'normalized'\n        },\n        '226': {\n            'display_name': 'Load \"In\"-time',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total time of loading on the magnetic heads actuator (time not spent in parking area).',\n            'display_type': 'normalized'\n        },\n        '227': {\n            'display_name': 'Torque Amplification Count',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of attempts to compensate for platter speed variations.[66]',\n            'display_type': ''\n        },\n        '228': {\n            'display_name': 'Power-Off Retract Cycle',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'The number of power-off cycles which are counted whenever there is a \"retract event\" and the heads are loaded off of the media such as when the machine is powered down, put to sleep, or is idle.',\n            'display_type': ''\n        },\n        '230': {\n            'display_name': 'GMR Head Amplitude ',\n            'ideal': '',\n            'critical': false,\n            'description': 'Amplitude of \"thrashing\" (repetitive head moving motions between operations).',\n            'display_type': 'normalized'\n        },\n        '231': {\n            'display_name': 'Life Left',\n            'ideal': '',\n            'critical': false,\n            'description': 'Indicates the approximate SSD life left, in terms of program/erase cycles or available reserved blocks. A normalized value of 100 represents a new drive, with a threshold value at 10 indicating a need for replacement. A value of 0 may mean that the drive is operating in read-only mode to allow data recovery.',\n            'display_type': 'normalized'\n        },\n        '232': {\n            'display_name': 'Endurance Remaining',\n            'ideal': '',\n            'critical': false,\n            'description': 'Number of physical erase cycles completed on the SSD as a percentage of the maximum physical erase cycles the drive is designed to endure.',\n            'display_type': 'normalized'\n        },\n        '233': {\n            'display_name': 'Media Wearout Indicator',\n            'ideal': '',\n            'critical': false,\n            'description': 'Intel SSDs report a normalized value from 100, a new drive, to a minimum of 1. It decreases while the NAND erase cycles increase from 0 to the maximum-rated cycles.',\n            'display_type': 'normalized'\n        },\n        '234': {\n            'display_name': 'Average erase count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Decoded as: byte 0-1-2 = average erase count (big endian) and byte 3-4-5 = max erase count (big endian).',\n            'display_type': 'normalized'\n        },\n        '235': {\n            'display_name': 'Good Block Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'Decoded as: byte 0-1-2 = good block count (big endian) and byte 3-4 = system (free) block count.',\n            'display_type': 'normalized'\n        },\n        '240': {\n            'display_name': 'Head Flying Hours',\n            'ideal': '',\n            'critical': false,\n            'description': 'Time spent during the positioning of the drive heads.[15][71] Some Fujitsu drives report the count of link resets during a data transfer.',\n            'display_type': 'normalized'\n        },\n        '241': {\n            'display_name': 'Total LBAs Written',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total count of LBAs written.',\n            'display_type': 'normalized'\n        },\n        '242': {\n            'display_name': 'Total LBAs Read',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total count of LBAs read.Some S.M.A.R.T. utilities will report a negative number for the raw value since in reality it has 48 bits rather than 32.',\n            'display_type': 'normalized'\n        },\n        '243': {\n            'display_name': 'Total LBAs Written Expanded',\n            'ideal': '',\n            'critical': false,\n            'description': 'The upper 5 bytes of the 12-byte total number of LBAs written to the device. The lower 7 byte value is located at attribute 0xF1.',\n            'display_type': 'normalized'\n        },\n        '244': {\n            'display_name': 'Total LBAs Read Expanded',\n            'ideal': '',\n            'critical': false,\n            'description': 'The upper 5 bytes of the 12-byte total number of LBAs read from the device. The lower 7 byte value is located at attribute 0xF2.',\n            'display_type': 'normalized'\n        },\n        '249': {\n            'display_name': 'NAND Writes (1GiB)',\n            'ideal': '',\n            'critical': false,\n            'description': 'Total NAND Writes. Raw value reports the number of writes to NAND in 1 GB increments.',\n            'display_type': 'normalized'\n        },\n        '250': {\n            'display_name': 'Read Error Retry Rate',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of errors while reading from a disk.',\n            'display_type': 'normalized'\n        },\n        '251': {\n            'display_name': 'Minimum Spares Remaining',\n            'ideal': '',\n            'critical': false,\n            'description': 'The Minimum Spares Remaining attribute indicates the number of remaining spare blocks as a percentage of the total number of spare blocks available.',\n            'display_type': 'normalized'\n        },\n        '252': {\n            'display_name': 'Newly Added Bad Flash Block',\n            'ideal': '',\n            'critical': false,\n            'description': 'The Newly Added Bad Flash Block attribute indicates the total number of bad flash blocks the drive detected since it was first initialized in manufacturing.',\n            'display_type': 'normalized'\n        },\n        '254': {\n            'display_name': 'Free Fall Protection',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Count of \"Free Fall Events\" detected.',\n            'display_type': 'normalized'\n        },\n        '3': {\n            'display_name': 'Spin-Up Time',\n            'ideal': 'low',\n            'critical': false,\n            'description': 'Average time of spindle spin up (from zero RPM to fully operational [milliseconds]).',\n            'observed_thresholds': [{\n                'low': 78,\n                'high': 96,\n                'annual_failure_rate': 0.11452195377351217,\n                'error_interval': [0.10591837762295722, 0.12363823501915781]\n            }, {\n                'low': 96,\n                'high': 114,\n                'annual_failure_rate': 0.040274562840558074,\n                'error_interval': [0.03465055611002801, 0.046551312468303144]\n            }, {\n                'low': 114,\n                'high': 132,\n                'annual_failure_rate': 0.009100406705780476,\n                'error_interval': [0.006530608971356785, 0.012345729280075591]\n            }, {\n                'low': 132,\n                'high': 150,\n                'annual_failure_rate': 0.008561351734020232,\n                'error_interval': [0.004273795939256936, 0.015318623141355509]\n            }, {\n                'low': 150,\n                'high': 168,\n                'annual_failure_rate': 0.015780508262068848,\n                'error_interval': [0.005123888078524015, 0.03682644215646287]\n            }, {\n                'low': 168,\n                'high': 186,\n                'annual_failure_rate': 0.05262688124794024,\n                'error_interval': [0.0325768689524594, 0.08044577830285578]\n            }, {\n                'low': 186,\n                'high': 204,\n                'annual_failure_rate': 0.01957419424036038,\n                'error_interval': [0.0023705257325185624, 0.0707087198669825]\n            }, {\n                'low': 204,\n                'high': 222,\n                'annual_failure_rate': 0.026050959960031404,\n                'error_interval': [0.0006595532020744994, 0.1451466588889228]\n            }],\n            'display_type': 'normalized'\n        },\n        '4': {\n            'display_name': 'Start/Stop Count',\n            'ideal': '',\n            'critical': false,\n            'description': 'A tally of spindle start/stop cycles. The spindle turns on, and hence the count is increased, both when the hard disk is turned on after having before been turned entirely off (disconnected from power source) and when the hard disk returns from having previously been put to sleep mode.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 13,\n                'annual_failure_rate': 0.01989335424860646,\n                'error_interval': [0.016596548909440657, 0.023653263230617408]\n            }, {\n                'low': 13,\n                'high': 26,\n                'annual_failure_rate': 0.03776935438256488,\n                'error_interval': [0.03310396052098642, 0.04290806173460437]\n            }, {\n                'low': 26,\n                'high': 39,\n                'annual_failure_rate': 0.11022223828187004,\n                'error_interval': [0.09655110535164119, 0.12528657238811672]\n            }, {\n                'low': 39,\n                'high': 52,\n                'annual_failure_rate': 0.16289995457762474,\n                'error_interval': [0.13926541653588131, 0.18939614504497515]\n            }, {\n                'low': 52,\n                'high': 65,\n                'annual_failure_rate': 0.19358212432279714,\n                'error_interval': [0.15864522253849073, 0.23392418181765526]\n            }, {\n                'low': 65,\n                'high': 78,\n                'annual_failure_rate': 0.1157094940074447,\n                'error_interval': [0.07861898732346269, 0.16424039052527728]\n            }, {\n                'low': 78,\n                'high': 91,\n                'annual_failure_rate': 0.12262136155304391,\n                'error_interval': [0.0670382394080032, 0.20573780888032978]\n            }, {\n                'low': 91,\n                'high': 104,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }],\n            'display_type': 'raw'\n        },\n        '5': {\n            'display_name': 'Reallocated Sectors Count',\n            'ideal': 'low',\n            'critical': true,\n            'description': 'Count of reallocated sectors. The raw value represents a count of the bad sectors that have been found and remapped.Thus, the higher the attribute value, the more sectors the drive has had to reallocate. This value is primarily used as a metric of the life expectancy of the drive; a drive which has had any reallocations at all is significantly more likely to fail in the immediate months.',\n            'observed_thresholds': [{\n                'low': 0,\n                'high': 0,\n                'annual_failure_rate': 0.025169175350572493,\n                'error_interval': [0.022768612038746357, 0.027753988579272894]\n            }, {\n                'low': 1,\n                'high': 4,\n                'annual_failure_rate': 0.027432608477803388,\n                'error_interval': [0.010067283827589948, 0.05970923963096652]\n            }, {\n                'low': 4,\n                'high': 16,\n                'annual_failure_rate': 0.07501976284584981,\n                'error_interval': [0.039944864177334186, 0.12828607921150972]\n            }, {\n                'low': 16,\n                'high': 70,\n                'annual_failure_rate': 0.23589260654405794,\n                'error_interval': [0.1643078435800227, 0.32806951196017664]\n            }, {\n                'low': 70,\n                'high': 260,\n                'annual_failure_rate': 0.36193219378600433,\n                'error_interval': [0.2608488901774093, 0.4892271827875412]\n            }, {\n                'low': 260,\n                'high': 1100,\n                'annual_failure_rate': 0.5676621428968173,\n                'error_interval': [0.4527895568499355, 0.702804359408436]\n            }, {\n                'low': 1100,\n                'high': 4500,\n                'annual_failure_rate': 1.5028253400346423,\n                'error_interval': [1.2681757596263297, 1.768305221795894]\n            }, {\n                'low': 4500,\n                'high': 17000,\n                'annual_failure_rate': 2.0659987547404763,\n                'error_interval': [1.6809790460512237, 2.512808045182302]\n            }, {\n                'low': 17000,\n                'high': 70000,\n                'annual_failure_rate': 1.7755385684503124,\n                'error_interval': [1.2796520259849835, 2.400012341226441]\n            }],\n            'display_type': 'raw'\n        },\n        '6': {\n            'display_name': 'Read Channel Margin',\n            'ideal': '',\n            'critical': false,\n            'description': 'Margin of a channel while reading data. The function of this attribute is not specified.',\n            'display_type': 'normalized'\n        },\n        '7': {\n            'display_name': 'Seek Error Rate',\n            'ideal': '',\n            'critical': false,\n            'description': '(Vendor specific raw value.) Rate of seek errors of the magnetic heads. If there is a partial failure in the mechanical positioning system, then seek errors will arise. Such a failure may be due to numerous factors, such as damage to a servo, or thermal widening of the hard disk. The raw value has different structure for different vendors and is often not meaningful as a decimal number.',\n            'observed_thresholds': [{\n                'low': 58,\n                'high': 76,\n                'annual_failure_rate': 0.2040131025936549,\n                'error_interval': [0.17032852883286412, 0.2424096283327138]\n            }, {\n                'low': 76,\n                'high': 94,\n                'annual_failure_rate': 0.08725919610118257,\n                'error_interval': [0.08077138510999876, 0.09412943212007528]\n            }, {\n                'low': 94,\n                'high': 112,\n                'annual_failure_rate': 0.01087335627722523,\n                'error_interval': [0.008732197944943352, 0.013380600544561905]\n            }, {\n                'low': 112,\n                'high': 130,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 130,\n                'high': 148,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 148,\n                'high': 166,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 166,\n                'high': 184,\n                'annual_failure_rate': 0,\n                'error_interval': [0, 0]\n            }, {\n                'low': 184,\n                'high': 202,\n                'annual_failure_rate': 0.05316285755900475,\n                'error_interval': [0.03370069132942804, 0.07977038905848267]\n            }],\n            'display_type': 'normalized'\n        },\n        '8': {\n            'display_name': 'Seek Time Performance',\n            'ideal': 'high',\n            'critical': false,\n            'description': 'Average performance of seek operations of the magnetic heads. If this attribute is decreasing, it is a sign of problems in the mechanical subsystem.',\n            'display_type': 'normalized'\n        },\n        '9': {\n            'display_name': 'Power-On Hours',\n            'ideal': '',\n            'critical': false,\n            'description': 'Count of hours in power-on state. The raw value of this attribute shows total count of hours (or minutes, or seconds, depending on manufacturer) in power-on state. By default, the total expected lifetime of a hard disk in perfect condition is defined as 5 years (running every day and night on all days). This is equal to 1825 days in 24/7 mode or 43800 hours. On some pre-2005 drives, this raw value may advance erratically and/or \"wrap around\" (reset to zero periodically).',\n            'display_type': 'normalized'\n        }\n    },\n    'success': true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/device/details/sdd.ts",
    "content": "export const sdd = {\n    'data': {\n        'device': {\n            'CreatedAt': '2021-06-24T21:17:31.30374-07:00',\n            'UpdatedAt': '2021-10-24T16:37:57.013758-07:00',\n            'DeletedAt': null,\n            'wwn': '0x5000cca252c859cc',\n            'device_name': 'sdd',\n            'manufacturer': 'ATA',\n            'model_name': 'WDC_WD80EFAX-68LHPN0',\n            'interface_type': 'SCSI',\n            'interface_speed': '',\n            'serial_number': '7SGLXXXXX',\n            'firmware': '',\n            'rotational_speed': 0,\n            'capacity': 8001563222016,\n            'form_factor': '',\n            'smart_support': false,\n            'device_protocol': 'SCSI',\n            'device_type': '',\n            'label': '',\n            'host_id': '',\n            'device_status': 0\n        },\n        'smart_results': [{\n            'date': '2021-10-24T23:20:44Z',\n            'device_wwn': '0x5000cca252c859cc',\n            'device_protocol': 'SCSI',\n            'temp': 34,\n            'power_on_hours': 43549,\n            'power_cycle_count': 0,\n            'attrs': {\n                'read_correction_algorithm_invocations': {\n                    'attribute_id': 'read_correction_algorithm_invocations',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_errors_corrected_by_eccdelayed': {\n                    'attribute_id': 'read_errors_corrected_by_eccdelayed',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_errors_corrected_by_eccfast': {\n                    'attribute_id': 'read_errors_corrected_by_eccfast',\n                    'value': 300357663,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_errors_corrected_by_rereads_rewrites': {\n                    'attribute_id': 'read_errors_corrected_by_rereads_rewrites',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_total_errors_corrected': {\n                    'attribute_id': 'read_total_errors_corrected',\n                    'value': 300357663,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_total_uncorrected_errors': {\n                    'attribute_id': 'read_total_uncorrected_errors',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'scsi_grown_defect_list': {\n                    'attribute_id': 'scsi_grown_defect_list',\n                    'value': 56,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_correction_algorithm_invocations': {\n                    'attribute_id': 'write_correction_algorithm_invocations',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_errors_corrected_by_eccdelayed': {\n                    'attribute_id': 'write_errors_corrected_by_eccdelayed',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_errors_corrected_by_eccfast': {\n                    'attribute_id': 'write_errors_corrected_by_eccfast',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_errors_corrected_by_rereads_rewrites': {\n                    'attribute_id': 'write_errors_corrected_by_rereads_rewrites',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_total_errors_corrected': {\n                    'attribute_id': 'write_total_errors_corrected',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_total_uncorrected_errors': {\n                    'attribute_id': 'write_total_uncorrected_errors',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                }\n            },\n            'Status': 0\n        }]\n    },\n    'metadata': {\n        'read_correction_algorithm_invocations': {\n            'display_name': 'Read Correction Algorithm Invocations',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_errors_corrected_by_eccdelayed': {\n            'display_name': 'Read Errors Corrected by ECC Delayed',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_errors_corrected_by_eccfast': {\n            'display_name': 'Read Errors Corrected by ECC Fast',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_errors_corrected_by_rereads_rewrites': {\n            'display_name': 'Read Errors Corrected by ReReads/ReWrites',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'read_total_errors_corrected': {\n            'display_name': 'Read Total Errors Corrected',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_total_uncorrected_errors': {\n            'display_name': 'Read Total Uncorrected Errors',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'scsi_grown_defect_list': {\n            'display_name': 'Grown Defect List',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'write_correction_algorithm_invocations': {\n            'display_name': 'Write Correction Algorithm Invocations',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_errors_corrected_by_eccdelayed': {\n            'display_name': 'Write Errors Corrected by ECC Delayed',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_errors_corrected_by_eccfast': {\n            'display_name': 'Write Errors Corrected by ECC Fast',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_errors_corrected_by_rereads_rewrites': {\n            'display_name': 'Write Errors Corrected by ReReads/ReWrites',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'write_total_errors_corrected': {\n            'display_name': 'Write Total Errors Corrected',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_total_uncorrected_errors': {\n            'display_name': 'Write Total Uncorrected Errors',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        }\n    },\n    'success': true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/device/details/sde.ts",
    "content": "export const sde = {\n    'data': {\n        'device': {\n            'CreatedAt': '2021-06-24T21:17:31.304461-07:00',\n            'UpdatedAt': '2021-10-24T16:40:16.495248-07:00',\n            'DeletedAt': null,\n            'wwn': '0x5000cca264ebc248',\n            'device_name': 'sde',\n            'manufacturer': 'ATA',\n            'model_name': 'WDC_WD140EDFZ-11A0VA0',\n            'interface_type': 'SCSI',\n            'interface_speed': '',\n            'serial_number': '9RK3XXXXX',\n            'firmware': '',\n            'rotational_speed': 0,\n            'capacity': 14000519643136,\n            'form_factor': '',\n            'smart_support': false,\n            'device_protocol': 'SCSI',\n            'device_type': '',\n            'label': '',\n            'host_id': '',\n            'device_status': 0\n        },\n        'smart_results': [{\n            'date': '2021-10-24T23:20:44Z',\n            'device_wwn': '0x5000cca264ebc248',\n            'device_protocol': 'SCSI',\n            'temp': 31,\n            'power_on_hours': 5675,\n            'power_cycle_count': 0,\n            'attrs': {\n                'read_correction_algorithm_invocations': {\n                    'attribute_id': 'read_correction_algorithm_invocations',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_errors_corrected_by_eccdelayed': {\n                    'attribute_id': 'read_errors_corrected_by_eccdelayed',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_errors_corrected_by_eccfast': {\n                    'attribute_id': 'read_errors_corrected_by_eccfast',\n                    'value': 1410362924,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_errors_corrected_by_rereads_rewrites': {\n                    'attribute_id': 'read_errors_corrected_by_rereads_rewrites',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_total_errors_corrected': {\n                    'attribute_id': 'read_total_errors_corrected',\n                    'value': 1410362924,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'read_total_uncorrected_errors': {\n                    'attribute_id': 'read_total_uncorrected_errors',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'scsi_grown_defect_list': {\n                    'attribute_id': 'scsi_grown_defect_list',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_correction_algorithm_invocations': {\n                    'attribute_id': 'write_correction_algorithm_invocations',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_errors_corrected_by_eccdelayed': {\n                    'attribute_id': 'write_errors_corrected_by_eccdelayed',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_errors_corrected_by_eccfast': {\n                    'attribute_id': 'write_errors_corrected_by_eccfast',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_errors_corrected_by_rereads_rewrites': {\n                    'attribute_id': 'write_errors_corrected_by_rereads_rewrites',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_total_errors_corrected': {\n                    'attribute_id': 'write_total_errors_corrected',\n                    'value': 0,\n                    'thresh': -1,\n                    'transformed_value': 0,\n                    'status': 0\n                },\n                'write_total_uncorrected_errors': {\n                    'attribute_id': 'write_total_uncorrected_errors',\n                    'value': 0,\n                    'thresh': 0,\n                    'transformed_value': 0,\n                    'status': 0\n                }\n            },\n            'Status': 0\n        }]\n    },\n    'metadata': {\n        'read_correction_algorithm_invocations': {\n            'display_name': 'Read Correction Algorithm Invocations',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_errors_corrected_by_eccdelayed': {\n            'display_name': 'Read Errors Corrected by ECC Delayed',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_errors_corrected_by_eccfast': {\n            'display_name': 'Read Errors Corrected by ECC Fast',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_errors_corrected_by_rereads_rewrites': {\n            'display_name': 'Read Errors Corrected by ReReads/ReWrites',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'read_total_errors_corrected': {\n            'display_name': 'Read Total Errors Corrected',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'read_total_uncorrected_errors': {\n            'display_name': 'Read Total Uncorrected Errors',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'scsi_grown_defect_list': {\n            'display_name': 'Grown Defect List',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'write_correction_algorithm_invocations': {\n            'display_name': 'Write Correction Algorithm Invocations',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_errors_corrected_by_eccdelayed': {\n            'display_name': 'Write Errors Corrected by ECC Delayed',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_errors_corrected_by_eccfast': {\n            'display_name': 'Write Errors Corrected by ECC Fast',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_errors_corrected_by_rereads_rewrites': {\n            'display_name': 'Write Errors Corrected by ReReads/ReWrites',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        },\n        'write_total_errors_corrected': {\n            'display_name': 'Write Total Errors Corrected',\n            'ideal': '',\n            'critical': false,\n            'description': '',\n            'display_type': ''\n        },\n        'write_total_uncorrected_errors': {\n            'display_name': 'Write Total Uncorrected Errors',\n            'ideal': 'low',\n            'critical': true,\n            'description': '',\n            'display_type': ''\n        }\n    },\n    'success': true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/device/details/sdf.ts",
    "content": "export const sdf = {\n    'data': {\n        'device': {\n            'CreatedAt': '2021-06-24T21:17:31.305246-07:00',\n            'UpdatedAt': '2021-06-24T21:17:31.305246-07:00',\n            'DeletedAt': null,\n            'wwn': '0x50014ee20b2a72a9',\n            'device_name': 'sdf',\n            'manufacturer': 'ATA',\n            'model_name': 'WDC_WD60EFRX-68MYMN1',\n            'interface_type': 'SCSI',\n            'interface_speed': '',\n            'serial_number': 'WD-WXL1HXXXXX',\n            'firmware': '',\n            'rotational_speed': 0,\n            'capacity': 6001175126016,\n            'form_factor': '',\n            'smart_support': false,\n            'device_protocol': '',\n            'device_type': '',\n            'label': '',\n            'host_id': '',\n            'device_status': 0\n        },\n        'smart_results': []\n    },\n    'metadata': null,\n    'success': true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/index.ts",
    "content": "import { SummaryMockApi } from 'app/data/mock/summary';\nimport { DetailsMockApi } from 'app/data/mock/device/details';\n\nexport const mockDataServices = [\n    SummaryMockApi,\n    DetailsMockApi,\n];\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/summary/data.ts",
    "content": "import * as moment from 'moment';\n\n/* tslint:disable:max-line-length */\nexport const summary = {\n    'data': {\n        'summary': {\n            '0x5000c500673e6b5f': {\n                'device': {\n                    'CreatedAt': '2021-04-30T08:17:13.155217-07:00',\n                    'UpdatedAt': '2021-04-30T08:17:13.155217-07:00',\n                    'DeletedAt': null,\n                    'wwn': '0x5000c500673e6b5f',\n                    'device_name': 'sdg',\n                    'device_label': '14TB-WD-DRIVE2',\n                    'device_uuid': '',\n                    'device_serial_id': 'ata-ST6000DX000-1H217Z-Z4DXXXXX',\n                    'manufacturer': 'ATA',\n                    'model_name': 'ST6000DX000-1H217Z',\n                    'interface_type': 'SCSI',\n                    'interface_speed': '',\n                    'serial_number': 'Z4DXXXXX',\n                    'firmware': '',\n                    'rotational_speed': 0,\n                    'capacity': 6001175126016,\n                    'form_factor': '',\n                    'smart_support': false,\n                    'device_protocol': '',\n                    'device_type': '',\n                    'label': '',\n                    'host_id': '',\n                    'device_status': 0,\n                    'archived': false\n                }\n            },\n            '0x5000cca252c859cc': {\n                'device': {\n                    'CreatedAt': '2021-04-30T08:17:13.152705-07:00',\n                    'UpdatedAt': '2021-05-02T14:22:50.357164-07:00',\n                    'DeletedAt': null,\n                    'wwn': '0x5000cca252c859cc',\n                    'device_name': 'sdd',\n                    'device_label': '14TB-WD-DRIVE1',\n                    'device_uuid': '806cf4bc-d160-4d96-8ee9-3ab7cf2a2e1f',\n                    'device_serial_id': 'ata-WDC_WD80EFAX-68LHPN0-7SGLXXXXX',\n                    'manufacturer': 'ATA',\n                    'model_name': 'WDC_WD80EFAX-68LHPN0',\n                    'interface_type': 'SCSI',\n                    'interface_speed': '',\n                    'serial_number': '7SGLXXXXX',\n                    'firmware': '',\n                    'rotational_speed': 0,\n                    'capacity': 8001563222016,\n                    'form_factor': '',\n                    'smart_support': false,\n                    'device_protocol': '',\n                    'device_type': '',\n                    'label': '',\n                    'host_id': '',\n                    'device_status': 0,\n                    'archived': false\n                },\n                'smart': {\n                    'collector_date': '2020-08-21T22:27:02Z',\n                    'temp': 34,\n                    'power_on_hours': 43549\n                },\n                'temp_history': [{\n                    'date': '2020-08-21T22:27:02Z',\n                    'temp': 34\n                }]\n            },\n            '0x5000cca264eb01d7': {\n                'device': {\n                    'CreatedAt': '2021-04-28T20:52:49.047154-07:00',\n                    'UpdatedAt': '2021-05-02T14:22:49.86136-07:00',\n                    'DeletedAt': null,\n                    'wwn': '0x5000cca264eb01d7',\n                    'device_name': 'sdb',\n                    'device_label': '14TB-WD-DRIVE5',\n                    'device_uuid': '8125ec6d-a7e4-4950-ac84-72d6a4d67128',\n                    'device_serial_id': 'ata-WDC_WD140EDFZ-11A0VA0-9RK1XXXXX',\n                    'manufacturer': 'ATA',\n                    'model_name': 'WDC_WD140EDFZ-11A0VA0',\n                    'interface_type': 'SCSI',\n                    'interface_speed': '',\n                    'serial_number': '9RK1XXXXX',\n                    'firmware': '81.00A81',\n                    'rotational_speed': 0,\n                    'capacity': 14000519643136,\n                    'form_factor': '',\n                    'smart_support': false,\n                    'device_protocol': '',\n                    'device_type': '',\n                    'label': '',\n                    'host_id': '',\n                    'device_status': 0,\n                    'archived': false\n                },\n                'smart': {\n                    'collector_date': '2020-06-21T00:03:30Z',\n                    'temp': 32,\n                    'power_on_hours': 1730\n                },\n                'temp_history': [{\n                    'date': '2020-06-21T00:03:30Z',\n                    'temp': 32\n                }]\n            },\n            '0x5000cca264ebc248': {\n                'device': {\n                    'CreatedAt': '2021-04-30T08:17:13.153782-07:00',\n                    'UpdatedAt': '2021-05-02T14:22:50.385282-07:00',\n                    'DeletedAt': null,\n                    'wwn': '0x5000cca264ebc248',\n                    'device_name': 'sde',\n                    'device_label': '14TB-WD-DRIVE3',\n                    'device_uuid': '9eb60cde-d6d0-4172-b520-b241a6a5477f',\n                    'device_serial_id': 'ata-WDC_WD140EDFZ-11A0VA0-9RK3XXXXX',\n                    'manufacturer': 'ATA',\n                    'model_name': 'WDC_WD140EDFZ-11A0VA0',\n                    'interface_type': 'SCSI',\n                    'interface_speed': '',\n                    'serial_number': '9RK3XXXXX',\n                    'firmware': '',\n                    'rotational_speed': 0,\n                    'capacity': 14000519643136,\n                    'form_factor': '',\n                    'smart_support': false,\n                    'device_protocol': '',\n                    'device_type': '',\n                    'label': '',\n                    'host_id': '',\n                    'device_status': 0,\n                    'archived': false\n                }\n            },\n            '0x5000cca264ec3183': {\n                'device': {\n                    'CreatedAt': '2021-04-30T08:17:13.151906-07:00',\n                    'UpdatedAt': '2021-05-02T14:49:51.645012-07:00',\n                    'DeletedAt': null,\n                    'wwn': '0x5000cca264ec3183',\n                    'device_name': 'sdc',\n                    'device_label': '14TB-WD-DRIVE6',\n                    'device_uuid': 'e1378723-7861-49b9-8e01-0bd063f0ecdd',\n                    'device_serial_id': 'ata-WDC_WD140EDFZ-11A0VA0-9RK4XXXXX',\n                    'manufacturer': 'ATA',\n                    'model_name': 'WDC_WD140EDFZ-11A0VA0',\n                    'interface_type': 'SCSI',\n                    'interface_speed': '',\n                    'serial_number': '9RK4XXXXX',\n                    'firmware': 'RVT02B6Q',\n                    'rotational_speed': 0,\n                    'capacity': 14000519643136,\n                    'form_factor': '',\n                    'smart_support': false,\n                    'device_protocol': '',\n                    'device_type': '',\n                    'label': '',\n                    'host_id': 'custom host id',\n                    'device_status': 1,\n                    'archived': false\n                },\n                'smart': {\n                    'collector_date': '2020-09-13T16:29:23Z',\n                    'temp': 36,\n                    'power_on_hours': 14551\n                },\n                'temp_history': [{\n                    'date': '2020-07-08T13:48:23Z',\n                    'temp': 25\n                }, {\n                    'date': '2020-09-12T19:19:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T19:29:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T19:39:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T19:49:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T19:59:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T20:09:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T20:19:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T20:29:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T20:39:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T20:49:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T20:59:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T21:09:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T21:19:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-12T21:29:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-12T21:39:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T21:49:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T21:59:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T22:09:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T22:19:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T22:29:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T22:39:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T22:49:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T22:59:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T23:09:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T23:19:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T23:29:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T23:39:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T23:49:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-12T23:59:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T00:09:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T00:19:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T00:29:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T00:39:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T00:49:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T00:59:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T01:09:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T01:19:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T01:29:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T01:39:23Z',\n                    'temp': 36\n                }, {\n                    'date': '2020-09-13T01:49:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T01:59:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T02:09:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T02:19:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T02:29:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T02:39:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T02:49:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T02:59:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T03:09:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T03:19:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T03:29:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T03:39:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T03:49:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T03:59:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T04:09:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T04:19:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T04:29:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T04:39:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T04:49:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T04:59:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T05:09:23Z',\n                    'temp': 37\n                }, {\n                    'date': '2020-09-13T05:19:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T05:29:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T05:39:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T05:49:23Z',\n                    'temp': 42\n                }, {\n                    'date': '2020-09-13T05:59:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T06:09:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T06:19:23Z',\n                    'temp': 42\n                }, {\n                    'date': '2020-09-13T06:29:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T06:39:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T06:49:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T06:59:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T07:09:23Z',\n                    'temp': 40\n                }, {\n                    'date': '2020-09-13T07:19:23Z',\n                    'temp': 40\n                }, {\n                    'date': '2020-09-13T07:29:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T07:39:23Z',\n                    'temp': 43\n                }, {\n                    'date': '2020-09-13T07:49:23Z',\n                    'temp': 42\n                }, {\n                    'date': '2020-09-13T07:59:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T08:09:23Z',\n                    'temp': 42\n                }, {\n                    'date': '2020-09-13T08:19:23Z',\n                    'temp': 42\n                }, {\n                    'date': '2020-09-13T08:29:23Z',\n                    'temp': 41\n                }, {\n                    'date': '2020-09-13T08:39:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T08:49:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T08:59:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T09:09:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T09:19:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T09:29:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T09:39:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T09:49:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T09:59:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T10:09:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T10:19:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T10:29:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T10:39:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T10:49:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T10:59:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T11:09:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T11:19:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T11:29:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T11:39:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T11:49:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T11:59:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T12:09:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T12:19:23Z',\n                    'temp': 38\n                }, {\n                    'date': '2020-09-13T12:29:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T12:39:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T12:49:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T12:59:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T13:09:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T13:19:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T13:29:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T13:39:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T13:49:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T13:59:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T14:09:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T14:19:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T14:29:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T14:39:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T14:49:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T14:59:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T15:09:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T15:19:23Z',\n                    'temp': 40\n                }, {\n                    'date': '2020-09-13T15:29:23Z',\n                    'temp': 40\n                }, {\n                    'date': '2020-09-13T15:39:23Z',\n                    'temp': 40\n                }, {\n                    'date': '2020-09-13T15:49:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T15:59:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T16:09:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T16:19:23Z',\n                    'temp': 39\n                }, {\n                    'date': '2020-09-13T16:29:23Z',\n                    'temp': 39\n                }]\n            },\n            '0x50014ee20b2a72a9': {\n                'device': {\n                    'CreatedAt': '2021-04-30T08:17:13.15451-07:00',\n                    'UpdatedAt': '2021-04-30T08:17:13.15451-07:00',\n                    'DeletedAt': null,\n                    'wwn': '0x50014ee20b2a72a9',\n                    'device_name': 'sdf',\n                    'device_label': '8.0TB-WD-4',\n                    'device_uuid': 'fc684dcc-aa2f-44f3-a958-d302dc7dd46d',\n                    'device_serial_id': 'ata-WDC_WD60EFRX-68MYMN1-WXL1HXXXXX',\n                    'manufacturer': 'ATA',\n                    'model_name': 'WDC_WD60EFRX-68MYMN1',\n                    'interface_type': 'SCSI',\n                    'interface_speed': '',\n                    'serial_number': 'WD-WXL1HXXXXX',\n                    'firmware': '',\n                    'rotational_speed': 0,\n                    'capacity': 6001175126016,\n                    'form_factor': '',\n                    'smart_support': false,\n                    'device_protocol': '',\n                    'device_type': '',\n                    'label': '',\n                    'host_id': '',\n                    'device_status': 0,\n                    'archived': false\n                }\n            },\n            '0x5002538e40a22954': {\n                'device': {\n                    'CreatedAt': '2021-04-30T08:17:13.150792-07:00',\n                    'UpdatedAt': '2021-05-02T14:22:50.330706-07:00',\n                    'DeletedAt': null,\n                    'wwn': '0x5002538e40a22954',\n                    'device_name': 'sda',\n                    'device_label': '',\n                    'device_uuid': '',\n                    'device_serial_id': 'ata-Samsung_SSD_860_EVO_500GB-S3YZNB0KBXXXXXX',\n                    'manufacturer': 'ATA',\n                    'model_name': 'Samsung_SSD_860_EVO_500GB',\n                    'interface_type': 'SCSI',\n                    'interface_speed': '',\n                    'serial_number': 'S3YZNB0KBXXXXXX',\n                    'firmware': '002C',\n                    'rotational_speed': 0,\n                    'capacity': 500107862016,\n                    'form_factor': '',\n                    'smart_support': false,\n                    'device_protocol': '',\n                    'device_type': '',\n                    'label': '',\n                    'host_id': '',\n                    'device_status': 0,\n                    'archived': false\n                },\n                'smart': {\n                    'collector_date': '2020-06-10T12:01:02Z',\n                    'temp': 36,\n                    'power_on_hours': 2401\n                },\n                'temp_history': [{\n                    'date': '2020-06-10T12:01:02Z',\n                    'temp': 36\n                }]\n            }\n        }\n    },\n    'success': true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/summary/index.ts",
    "content": "import { Injectable } from '@angular/core';\nimport * as _ from 'lodash';\nimport { TreoMockApi } from '@treo/lib/mock-api/mock-api.interfaces';\nimport { TreoMockApiService } from '@treo/lib/mock-api/mock-api.service';\nimport { summary as summaryData } from 'app/data/mock/summary/data';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SummaryMockApi implements TreoMockApi\n{\n    // Private\n    private _summary: any;\n\n    /**\n     * Constructor\n     *\n     * @param _treoMockApiService\n     */\n    constructor(\n        private _treoMockApiService: TreoMockApiService\n    )\n    {\n        // Set the data\n        this._summary = summaryData;\n\n        // Register the API endpoints\n        this.register();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Register\n     */\n    register(): void\n    {\n        // -----------------------------------------------------------------------------------------------------\n        // @ Sales - GET\n        // -----------------------------------------------------------------------------------------------------\n        this._treoMockApiService\n            .onGet('/api/summary')\n            .reply(() => {\n\n                return [\n                    200,\n                    _.cloneDeep(this._summary)\n                ];\n            });\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/data/mock/summary/temp_history.ts",
    "content": "/* tslint:disable */\nexport const temp_history = {\n    \"data\": {\n        \"temp_history\": {\n            \"0x5000cca252c859cc\": [{\n                \"date\": \"2022-07-01T22:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-01T23:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-02T00:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-02T01:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-02T22:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-02T23:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-03T00:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-03T01:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-03T22:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-03T23:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-04T00:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-04T01:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-04T22:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-04T23:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-05T00:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-05T01:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-05T22:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-05T23:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-06T00:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-06T01:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-06T04:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-06T05:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-06T06:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-06T22:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T23:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-07T00:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-07T01:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-07T03:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T04:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T05:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T06:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T07:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-07T22:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T23:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-08T00:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-08T01:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-08T13:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-08T14:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-08T15:00:00Z\",\n                \"temp\": 35\n            }],\n            \"0x5000cca264eb01d7\": [{\n                \"date\": \"2022-07-01T22:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-01T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-02T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-02T01:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-02T22:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-02T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-03T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-03T01:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-03T22:00:00Z\",\n                \"temp\": 44\n            }, {\n                \"date\": \"2022-07-03T23:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-04T00:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-04T01:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-04T22:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-04T23:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-05T00:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-05T01:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-05T22:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-05T23:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T00:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T01:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T04:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-06T05:00:00Z\",\n                \"temp\": 45\n            }, {\n                \"date\": \"2022-07-06T06:00:00Z\",\n                \"temp\": 44\n            }, {\n                \"date\": \"2022-07-06T22:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-06T23:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T00:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T01:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T03:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T04:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T05:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T06:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-07T07:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-07T22:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T23:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-08T00:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-08T01:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-08T13:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-08T14:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-08T15:00:00Z\",\n                \"temp\": 39\n            }],\n            \"0x5000cca264ebc248\": [{\n                \"date\": \"2022-07-01T22:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-01T23:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-02T00:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-02T01:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-02T22:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-02T23:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-03T00:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-03T01:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-03T22:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-03T23:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-04T00:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-04T01:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-04T22:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-04T23:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-05T00:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-05T01:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-05T22:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-05T23:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-06T00:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-06T01:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-06T04:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T05:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-06T06:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T22:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-06T23:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-07T00:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-07T01:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-07T03:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-07T04:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-07T05:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-07T06:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T07:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-07T22:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-07T23:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T00:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T01:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T13:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-08T14:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-08T15:00:00Z\",\n                \"temp\": 33\n            }],\n            \"0x5000cca264ec3183\": [{\n                \"date\": \"2022-07-01T22:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-01T23:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-02T00:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-02T01:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-02T22:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-02T23:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-03T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-03T01:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-03T22:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-03T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-04T00:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-04T01:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-04T22:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-04T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-05T00:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-05T01:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-05T22:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-05T23:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T00:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T01:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T04:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-06T05:00:00Z\",\n                \"temp\": 42\n            }, {\n                \"date\": \"2022-07-06T06:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T22:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-06T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-07T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-07T01:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-07T03:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T04:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T05:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-07T06:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T07:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T22:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-07T23:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-08T00:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-08T01:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-08T13:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-08T14:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-08T15:00:00Z\",\n                \"temp\": 37\n            }],\n            \"0x5000cca28ed7fcd8\": [{\n                \"date\": \"2022-07-01T22:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-01T23:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-02T00:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-02T01:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-02T22:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-02T23:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-03T00:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-03T01:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-03T22:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-03T23:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-04T00:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-04T01:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-04T22:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-04T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-05T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-05T01:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-05T22:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-05T23:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T00:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T01:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T04:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T05:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-06T06:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-06T22:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-06T23:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-07T00:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-07T01:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-07T03:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-07T04:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T05:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-07T06:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-07T07:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-07T22:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-07T23:00:00Z\",\n                \"temp\": 35\n            }, {\n                \"date\": \"2022-07-08T00:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T01:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T13:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-08T14:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T15:00:00Z\",\n                \"temp\": 34\n            }],\n            \"0x5000cca28fc25581\": [{\n                \"date\": \"2022-07-01T22:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-01T23:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-02T00:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-02T01:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-02T22:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-02T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-03T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-03T01:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-03T22:00:00Z\",\n                \"temp\": 46\n            }, {\n                \"date\": \"2022-07-03T23:00:00Z\",\n                \"temp\": 46\n            }, {\n                \"date\": \"2022-07-04T00:00:00Z\",\n                \"temp\": 46\n            }, {\n                \"date\": \"2022-07-04T01:00:00Z\",\n                \"temp\": 46\n            }, {\n                \"date\": \"2022-07-04T22:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-04T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-05T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-05T01:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-05T22:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-05T23:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T00:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T01:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T04:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-06T05:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-06T06:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-06T22:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-06T23:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T00:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T01:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T03:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T04:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T05:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T06:00:00Z\",\n                \"temp\": 41\n            }, {\n                \"date\": \"2022-07-07T07:00:00Z\",\n                \"temp\": 40\n            }, {\n                \"date\": \"2022-07-07T22:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-07T23:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-08T00:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-08T01:00:00Z\",\n                \"temp\": 39\n            }, {\n                \"date\": \"2022-07-08T13:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-08T14:00:00Z\",\n                \"temp\": 38\n            }, {\n                \"date\": \"2022-07-08T15:00:00Z\",\n                \"temp\": 38\n            }],\n            \"0x5002538e40a22954\": [{\n                \"date\": \"2022-07-01T19:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-01T20:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-01T21:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-01T22:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-01T23:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-02T00:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-02T01:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-02T03:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-02T04:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-02T05:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-02T06:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-02T07:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T08:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T09:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T10:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-02T11:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-02T12:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T13:00:00Z\",\n                \"temp\": 28\n            }, {\n                \"date\": \"2022-07-02T14:00:00Z\",\n                \"temp\": 28\n            }, {\n                \"date\": \"2022-07-02T15:00:00Z\",\n                \"temp\": 28\n            }, {\n                \"date\": \"2022-07-02T16:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T17:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T18:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T19:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T20:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T21:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T22:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-02T23:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T00:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T01:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T03:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-03T04:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-03T05:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-03T06:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T07:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T08:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T09:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-03T10:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T11:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-03T12:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-03T13:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T14:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T15:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-03T16:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T17:00:00Z\",\n                \"temp\": 29\n            }, {\n                \"date\": \"2022-07-03T18:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-03T19:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-03T20:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-03T21:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-03T22:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-03T23:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T00:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T01:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T03:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T04:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-04T05:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T06:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T07:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T08:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T09:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T10:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T11:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T12:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T13:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T14:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T15:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T16:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T17:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T18:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T19:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-04T20:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T21:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T22:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-04T23:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T00:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T01:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T03:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T04:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T05:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T06:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T07:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T08:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T09:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T10:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T11:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T12:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T13:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T14:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T15:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T16:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T17:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T18:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T19:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-05T20:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T21:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T22:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-05T23:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T00:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T01:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T02:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T03:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T04:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T05:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T06:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T07:00:00Z\",\n                \"temp\": 37\n            }, {\n                \"date\": \"2022-07-06T08:00:00Z\",\n                \"temp\": 36\n            }, {\n                \"date\": \"2022-07-06T09:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T10:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T11:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T12:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T13:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T14:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T15:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T16:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T17:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-06T18:00:00Z\",\n                \"temp\": 33\n            }, {\n                \"date\": \"2022-07-06T19:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T20:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-06T21:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-06T22:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-06T23:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T00:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T01:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T02:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T03:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T04:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T05:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T06:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T07:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T08:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T09:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T10:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T11:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T12:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T13:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T14:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T15:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T16:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T17:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T18:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T19:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T20:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T21:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-07T22:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-07T23:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T00:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T01:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T02:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-08T03:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T04:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T05:00:00Z\",\n                \"temp\": 32\n            }, {\n                \"date\": \"2022-07-08T06:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T07:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T08:00:00Z\",\n                \"temp\": 34\n            }, {\n                \"date\": \"2022-07-08T09:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T10:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-08T11:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-08T12:00:00Z\",\n                \"temp\": 30\n            }, {\n                \"date\": \"2022-07-08T13:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T14:00:00Z\",\n                \"temp\": 31\n            }, {\n                \"date\": \"2022-07-08T15:00:00Z\",\n                \"temp\": 31\n            }]\n        }\n    },\n    \"success\": true\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device/dashboard-device.component.html",
    "content": "<div\n        [ngClass]=\"{ 'border-green': deviceStatusForModelWithThreshold(deviceSummary.device, !!deviceSummary.smart, config.metrics.status_threshold) == 'passed',\n                                'border-red': deviceStatusForModelWithThreshold(deviceSummary.device, !!deviceSummary.smart, config.metrics.status_threshold) == 'failed',\n                                 'text-disabled': deviceSummary.device.archived }\"\n     class=\"relative flex flex-col flex-auto p-6 pr-3 pb-3 bg-card rounded border-l-4 shadow-md overflow-hidden\">\n    <div class=\"absolute bottom-0 right-0 w-24 h-24 -m-6\">\n        <mat-icon class=\"icon-size-96 opacity-12 text-green\"\n                  *ngIf=\"deviceStatusForModelWithThreshold(deviceSummary.device, !!deviceSummary.smart, config.metrics.status_threshold) == 'passed'\"\n                  [svgIcon]=\"'heroicons_outline:check-circle'\"></mat-icon>\n        <mat-icon class=\"icon-size-96 opacity-12 text-red\"\n                  *ngIf=\"deviceStatusForModelWithThreshold(deviceSummary.device, !!deviceSummary.smart, config.metrics.status_threshold) == 'failed'\"\n                  [svgIcon]=\"'heroicons_outline:exclamation-circle'\"></mat-icon>\n        <mat-icon class=\"icon-size-96 opacity-12 text-yellow\"\n                  *ngIf=\"deviceStatusForModelWithThreshold(deviceSummary.device, !!deviceSummary.smart, config.metrics.status_threshold) == 'unknown'\"\n                  [svgIcon]=\"'heroicons_outline:question-mark-circle'\"></mat-icon>\n    </div>\n    <div class=\"flex items-center\">\n        <div class=\"flex flex-col\">\n            <a [routerLink]=\"'/device/'+ deviceSummary.device.wwn\"\n               class=\"font-bold text-md text-secondary uppercase tracking-wider\">{{deviceSummary.device | deviceTitle:config.dashboard_display}}</a>\n            <div [ngClass]=\"classDeviceLastUpdatedOn(deviceSummary)\" class=\"font-medium text-sm\" *ngIf=\"deviceSummary.smart\">\n                Last Updated on {{deviceSummary.smart.collector_date | date:'MMMM dd, yyyy - HH:mm' }}\n            </div>\n        </div>\n        <div class=\"ml-auto\" *ngIf=\"deviceSummary.device\">\n            <mat-icon *ngIf=\"deviceSummary.device.archived\"\n                      [svgIcon]=\"'archive'\"></mat-icon>\n            <button mat-icon-button\n                    [matMenuTriggerFor]=\"previousStatementMenu\">\n                <mat-icon [svgIcon]=\"'more_vert'\"></mat-icon>\n            </button>\n            <mat-menu #previousStatementMenu=\"matMenu\">\n                <a mat-menu-item [routerLink]=\"'/device/'+ deviceSummary.device.wwn\">\n                                <span class=\"flex items-center\">\n                                    <mat-icon class=\"icon-size-20 mr-3\"\n                                              [svgIcon]=\"'assessment'\"></mat-icon>\n                                    <span>View Details</span>\n                                </span>\n                </a>\n                <a mat-menu-item\n                   (click)=\"openArchiveDialog()\">\n                                <span class=\"flex items-center\">\n                                    <mat-icon class=\"icon-size-20 mr-3\"\n                                              [svgIcon]=\"deviceSummary.device.archived ? 'unarchive':'archive'\"></mat-icon>\n                                    <span>{{deviceSummary.device.archived ? \"Unarchive\" : \"Archive\"}} Device</span>\n                                </span>\n                </a>\n                <a mat-menu-item (click)=\"openDeleteDialog()\">\n                                <span class=\"flex items-center\">\n                                    <mat-icon class=\"icon-size-20 mr-3\"\n                                              [svgIcon]=\"'delete_forever'\"></mat-icon>\n                                    <span>Delete Device</span>\n                                </span>\n                </a>\n            </mat-menu>\n        </div>\n    </div>\n    <div class=\"flex flex-row flex-wrap mt-4 -mx-6\">\n        <div class=\"flex flex-col mx-6 my-3 xs:w-full\">\n            <div class=\"font-semibold text-xs text-hint uppercase tracking-wider leading-none\">Status</div>\n            <div class=\"mt-2 font-medium text-3xl leading-none\"\n                 *ngIf=\"deviceSummary.smart?.collector_date; else unknownStatus\">{{ deviceStatusForModelWithThreshold(deviceSummary.device, !!deviceSummary.smart, config.metrics.status_threshold) | titlecase}}</div>\n            <ng-template #unknownStatus><div class=\"mt-2 font-medium text-3xl leading-none\">No Data</div></ng-template>\n        </div>\n        <div class=\"flex flex-col mx-6 my-3 xs:w-full\">\n            <div class=\"font-semibold text-xs text-hint uppercase tracking-wider leading-none\">Temperature</div>\n            <div class=\"mt-2 font-medium text-3xl leading-none\"\n                 *ngIf=\"deviceSummary.smart?.collector_date; else unknownTemp\">{{ deviceSummary.smart?.temp | temperature:config.temperature_unit:true }}</div>\n            <ng-template #unknownTemp><div class=\"mt-2 font-medium text-3xl leading-none\">--</div></ng-template>\n        </div>\n        <div class=\"flex flex-col mx-6 my-3 xs:w-full\">\n            <div class=\"font-semibold text-xs text-hint uppercase tracking-wider leading-none\">Capacity</div>\n            <div\n                class=\"mt-2 font-medium text-3xl leading-none\">{{ deviceSummary.device.capacity | fileSize:config.file_size_si_units}}</div>\n        </div>\n        <div class=\"flex flex-col mx-6 my-3 xs:w-full\">\n            <div class=\"font-semibold text-xs text-hint uppercase tracking-wider leading-none\">Powered On</div>\n            <div class=\"mt-2 font-medium text-3xl leading-none\" *ngIf=\"deviceSummary.smart?.power_on_hours; else unknownPoweredOn\">{{ deviceSummary.smart?.power_on_hours | deviceHours:config.powered_on_hours_unit:{ round: true, largest: 1, units: ['y', 'd', 'h'] } }}</div>\n            <ng-template #unknownPoweredOn><div class=\"mt-2 font-medium text-3xl leading-none\">--</div></ng-template>\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device/dashboard-device.component.scss",
    "content": ".text-disabled{\n    opacity: 0.8;\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device/dashboard-device.component.spec.ts",
    "content": "import {async, ComponentFixture, TestBed} from '@angular/core/testing';\n\nimport {DashboardDeviceComponent} from './dashboard-device.component';\nimport {MatDialog} from '@angular/material/dialog';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {SharedModule} from 'app/shared/shared.module';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {TREO_APP_CONFIG} from '@treo/services/config/config.constants';\nimport {DeviceSummaryModel} from 'app/core/models/device-summary-model';\nimport * as moment from 'moment';\nimport {HttpClientTestingModule} from '@angular/common/http/testing';\nimport {HttpClient} from '@angular/common/http';\nimport {ScrutinyConfigService} from 'app/core/config/scrutiny-config.service';\nimport {of} from 'rxjs';\nimport {MetricsStatusThreshold} from 'app/core/config/app.config';\n\ndescribe('DashboardDeviceComponent', () => {\n    let component: DashboardDeviceComponent;\n    let fixture: ComponentFixture<DashboardDeviceComponent>;\n\n    const matDialogSpy = jasmine.createSpyObj('MatDialog', ['open']);\n    // const configServiceSpy = jasmine.createSpyObj('ScrutinyConfigService', ['config$']);\n    let configService: ScrutinyConfigService;\n    let httpClientSpy: jasmine.SpyObj<HttpClient>;\n\n    beforeEach(async(() => {\n\n        httpClientSpy = jasmine.createSpyObj('HttpClient', ['get']);\n        configService = new ScrutinyConfigService(httpClientSpy, {});\n\n        TestBed.configureTestingModule({\n            imports: [\n                MatButtonModule,\n                MatIconModule,\n                MatMenuModule,\n                SharedModule,\n                HttpClientTestingModule,\n            ],\n            providers: [\n                {provide: MatDialog, useValue: matDialogSpy},\n                {provide: TREO_APP_CONFIG, useValue: {dashboard_display: 'name', metrics: {status_threshold: 3}}},\n                {provide: ScrutinyConfigService, useValue: configService}\n            ],\n            declarations: [DashboardDeviceComponent]\n        })\n            .compileComponents();\n    }));\n\n    beforeEach(() => {\n        // configServiceSpy.config$.and.returnValue(of({'success': true}));\n        fixture = TestBed.createComponent(DashboardDeviceComponent);\n        component = fixture.componentInstance;\n    });\n\n    it('should create', () => {\n        expect(component).toBeTruthy();\n    });\n\n    describe('#classDeviceLastUpdatedOn()', () => {\n\n        it('if non-zero device status, should be red', () => {\n            httpClientSpy.get.and.returnValue(of({\n                settings: {\n                    metrics: {\n                        status_threshold: MetricsStatusThreshold.Both,\n                    }\n                }\n            }));\n            component.ngOnInit()\n            // component.deviceSummary = summary.data.summary['0x5000c500673e6b5f'] as DeviceSummaryModel\n            expect(component.classDeviceLastUpdatedOn({\n                device: {\n                    device_status: 2,\n                },\n                smart: {\n                    collector_date: moment().subtract(13, 'days').toISOString()\n                },\n            } as DeviceSummaryModel)).toBe('text-red')\n        });\n\n        it('if non-zero device status, should be red', () => {\n            httpClientSpy.get.and.returnValue(of({\n                settings: {\n                    metrics: {\n                        status_threshold: MetricsStatusThreshold.Both,\n                    }\n                }\n            }));\n            component.ngOnInit()\n            expect(component.classDeviceLastUpdatedOn({\n                device: {\n                    device_status: 2\n                },\n                smart: {\n                    collector_date: moment().subtract(13, 'days').toISOString()\n                },\n            } as DeviceSummaryModel)).toBe('text-red')\n        });\n\n        it('if healthy device status and updated in the last two weeks, should be green', () => {\n            httpClientSpy.get.and.returnValue(of({\n                settings: {\n                    metrics: {\n                        status_threshold: MetricsStatusThreshold.Both,\n                    }\n                }\n            }));\n            component.ngOnInit()\n            expect(component.classDeviceLastUpdatedOn({\n                device: {\n                    device_status: 0\n                },\n                smart: {\n                    collector_date: moment().subtract(13, 'days').toISOString()\n                }\n            } as DeviceSummaryModel)).toBe('text-green')\n        });\n\n        it('if healthy device status and updated more than two weeks ago, but less than 1 month, should be yellow', () => {\n            httpClientSpy.get.and.returnValue(of({\n                settings: {\n                    metrics: {\n                        status_threshold: MetricsStatusThreshold.Both,\n                    }\n                }\n            }));\n            component.ngOnInit()\n            expect(component.classDeviceLastUpdatedOn({\n                device: {\n                    device_status: 0\n                },\n                smart: {\n                    collector_date: moment().subtract(3, 'weeks').toISOString()\n                }\n            } as DeviceSummaryModel)).toBe('text-yellow')\n        });\n\n        it('if healthy device status and updated more 1 month ago, should be red', () => {\n            httpClientSpy.get.and.returnValue(of({\n                settings: {\n                    metrics: {\n                        status_threshold: MetricsStatusThreshold.Both,\n                    }\n                }\n            }));\n            component.ngOnInit()\n            expect(component.classDeviceLastUpdatedOn({\n                device: {\n                    device_status: 0\n                },\n                smart: {\n                    collector_date: moment().subtract(5, 'weeks').toISOString()\n                }\n            } as DeviceSummaryModel)).toBe('text-red')\n        });\n    })\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device/dashboard-device.component.ts",
    "content": "import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport * as moment from 'moment';\nimport {takeUntil} from 'rxjs/operators';\nimport {AppConfig} from 'app/core/config/app.config';\nimport {ScrutinyConfigService} from 'app/core/config/scrutiny-config.service';\nimport {Subject} from 'rxjs';\nimport {MatDialog} from '@angular/material/dialog';\nimport {DashboardDeviceDeleteDialogComponent} from 'app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.component';\nimport {DeviceTitlePipe} from 'app/shared/device-title.pipe';\nimport {DeviceSummaryModel} from 'app/core/models/device-summary-model';\nimport {DeviceStatusPipe} from 'app/shared/device-status.pipe';\nimport {DashboardDeviceArchiveDialogComponent} from '../dashboard-device-archive-dialog/dashboard-device-archive-dialog.component';\nimport {DashboardDeviceArchiveDialogService} from '../dashboard-device-archive-dialog/dashboard-device-archive-dialog.service';\n\n@Component({\n    selector: 'app-dashboard-device',\n    templateUrl: './dashboard-device.component.html',\n    styleUrls: ['./dashboard-device.component.scss']\n})\nexport class DashboardDeviceComponent implements OnInit {\n\n    constructor(\n        private _configService: ScrutinyConfigService,\n        private _archiveService: DashboardDeviceArchiveDialogService,\n        public dialog: MatDialog,\n    ) {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    @Input() deviceSummary: DeviceSummaryModel;\n    @Output() deviceArchived = new EventEmitter<string>();\n    @Output() deviceUnarchived = new EventEmitter<string>();\n    @Output() deviceDeleted = new EventEmitter<string>();\n\n    config: AppConfig;\n\n    private _unsubscribeAll: Subject<void>;\n\n    deviceStatusForModelWithThreshold = DeviceStatusPipe.deviceStatusForModelWithThreshold\n\n    ngOnInit(): void {\n        // Subscribe to config changes\n        this._configService.config$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((config: AppConfig) => {\n                this.config = config;\n            });\n    }\n\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    classDeviceLastUpdatedOn(deviceSummary: DeviceSummaryModel): string {\n        const deviceStatus = DeviceStatusPipe.deviceStatusForModelWithThreshold(deviceSummary.device, !!deviceSummary.smart, this.config.metrics.status_threshold)\n        if (deviceStatus === 'failed') {\n            return 'text-red' // if the device has failed, always highlight in red\n        } else if (deviceStatus === 'passed') {\n            if (moment().subtract(14, 'days').isBefore(deviceSummary.smart.collector_date)) {\n                // this device was updated in the last 2 weeks.\n                return 'text-green'\n            } else if (moment().subtract(1, 'months').isBefore(deviceSummary.smart.collector_date)) {\n                // this device was updated in the last month\n                return 'text-yellow'\n            } else {\n                // last updated more than a month ago.\n                return 'text-red'\n            }\n        } else {\n            return ''\n        }\n    }\n\n    openArchiveDialog(): void {\n        if(this.deviceSummary.device.archived){\n            this._archiveService.unarchiveDevice(this.deviceSummary.device.wwn).subscribe((result) => {\n                if(result) {\n                    this.deviceUnarchived.emit(this.deviceSummary.device.wwn)\n                }\n            })\n            return;\n        }\n        const dialogRef = this.dialog.open(DashboardDeviceArchiveDialogComponent, {\n            data: {\n                wwn: this.deviceSummary.device.wwn,\n                title: DeviceTitlePipe.deviceTitleWithFallback(this.deviceSummary.device, this.config.dashboard_display)\n            }\n        });\n        dialogRef.afterClosed().subscribe(result => {\n            if(result) {\n                this.deviceArchived.emit(this.deviceSummary.device.wwn);\n            }\n        })\n    }\n\n    openDeleteDialog(): void {\n        const dialogRef = this.dialog.open(DashboardDeviceDeleteDialogComponent, {\n            // width: '250px',\n            data: {\n                wwn: this.deviceSummary.device.wwn,\n                title: DeviceTitlePipe.deviceTitleWithFallback(this.deviceSummary.device, this.config.dashboard_display)\n            }\n        });\n\n        dialogRef.afterClosed().subscribe(result => {\n            console.log('The dialog was closed', result);\n            if (result.success) {\n                this.deviceDeleted.emit(this.deviceSummary.device.wwn)\n            }\n        });\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device/dashboard-device.module.ts",
    "content": "import {NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {SharedModule} from 'app/shared/shared.module';\nimport {DashboardDeviceComponent} from 'app/layout/common/dashboard-device/dashboard-device.component'\nimport {dashboardRoutes} from '../../../modules/dashboard/dashboard.routing';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {DashboardDeviceDeleteDialogModule} from 'app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.module';\nimport {DashboardDeviceArchiveDialogModule} from '../dashboard-device-archive-dialog/dashboard-device-archive-dialog.module';\n\n@NgModule({\n    declarations: [\n        DashboardDeviceComponent\n    ],\n    imports: [\n        RouterModule.forChild([]),\n        RouterModule.forChild(dashboardRoutes),\n        MatButtonModule,\n        MatIconModule,\n        MatMenuModule,\n        SharedModule,\n        DashboardDeviceDeleteDialogModule,\n        DashboardDeviceArchiveDialogModule\n    ],\n    exports: [\n        DashboardDeviceComponent,\n    ],\n    providers: []\n})\nexport class DashboardDeviceModule {\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-archive-dialog/dashboard-device-archive-dialog.component.html",
    "content": "<h2 mat-dialog-title>Archive {{data.title}}?</h2>\n<mat-dialog-content>This will remove the device from Scrutiny dashboard, unless you toggle show archived. <strong>Any data about the device\n    itself will remain untouched.</strong></mat-dialog-content>\n<mat-dialog-actions>\n    <button mat-button mat-dialog-close>Cancel</button>\n    <button class=\"yellow-600\" mat-button (click)=\"onArchiveClick()\">\n        <mat-icon class=\"icon-size-20 mr-3\"\n                  [svgIcon]=\"'archive'\"></mat-icon>\n        Archive\n    </button>\n</mat-dialog-actions>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-archive-dialog/dashboard-device-archive-dialog.component.scss",
    "content": ""
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-archive-dialog/dashboard-device-archive-dialog.component.spec.ts",
    "content": "import {async, ComponentFixture, TestBed} from '@angular/core/testing';\n\nimport {DashboardDeviceArchiveDialogComponent} from './dashboard-device-archive-dialog.component';\nimport {HttpClientModule} from '@angular/common/http';\nimport {MAT_DIALOG_DATA, MatDialogModule, MatDialogRef} from '@angular/material/dialog';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {SharedModule} from '../../../shared/shared.module';\nimport {DashboardDeviceArchiveDialogService} from './dashboard-device-archive-dialog.service';\nimport {of} from 'rxjs';\n\n\ndescribe('DashboardDeviceArchiveDialogComponent', () => {\n    let component: DashboardDeviceArchiveDialogComponent;\n    let fixture: ComponentFixture<DashboardDeviceArchiveDialogComponent>;\n\n    const matDialogRefSpy = jasmine.createSpyObj('MatDialogRef', ['closeDialog', 'close']);\n    const dashboardDeviceArchiveDialogServiceSpy = jasmine.createSpyObj('DashboardDeviceArchiveDialogService', ['archiveDevice']);\n\n    beforeEach(async(() => {\n        TestBed.configureTestingModule({\n            imports: [\n                HttpClientModule,\n                MatDialogModule,\n                MatButtonModule,\n                MatIconModule,\n                SharedModule,\n            ],\n            providers: [\n                {provide: MatDialogRef, useValue: matDialogRefSpy},\n                {provide: MAT_DIALOG_DATA, useValue: {wwn: 'test-wwn', title: 'my-test-device-title'}},\n                {provide: DashboardDeviceArchiveDialogService, useValue: dashboardDeviceArchiveDialogServiceSpy}\n            ],\n            declarations: [DashboardDeviceArchiveDialogComponent]\n        })\n            .compileComponents()\n    }));\n\n    beforeEach(() => {\n        fixture = TestBed.createComponent(DashboardDeviceArchiveDialogComponent);\n        component = fixture.componentInstance;\n        fixture.detectChanges();\n    });\n\n    it('should create', () => {\n        expect(component).toBeTruthy();\n    });\n\n    it('should close the component if cancel is clicked', () => {\n        matDialogRefSpy.closeDialog.calls.reset();\n        matDialogRefSpy.closeDialog()\n        expect(matDialogRefSpy.closeDialog).toHaveBeenCalled();\n    });\n\n    it('should attempt to archive device if archive is clicked', () => {\n        dashboardDeviceArchiveDialogServiceSpy.archiveDevice.and.returnValue(of({'success': true}));\n\n        component.onArchiveClick()\n        expect(dashboardDeviceArchiveDialogServiceSpy.archiveDevice).toHaveBeenCalledWith('test-wwn');\n        expect(dashboardDeviceArchiveDialogServiceSpy.archiveDevice.calls.count())\n            .withContext('one call')\n            .toBe(1);\n    });\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-archive-dialog/dashboard-device-archive-dialog.component.ts",
    "content": "import {Component, Inject, OnInit} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {DashboardDeviceArchiveDialogService} from 'app/layout/common/dashboard-device-archive-dialog/dashboard-device-archive-dialog.service';\n\n@Component({\n  selector: 'app-dashboard-device-archive-dialog',\n  templateUrl: './dashboard-device-archive-dialog.component.html',\n  styleUrls: ['./dashboard-device-archive-dialog.component.scss'],\n})\nexport class DashboardDeviceArchiveDialogComponent implements OnInit {\n\n    constructor(\n        public dialogRef: MatDialogRef<DashboardDeviceArchiveDialogComponent>,\n        @Inject(MAT_DIALOG_DATA) public data: {wwn: string, title: string},\n        private _archiveService: DashboardDeviceArchiveDialogService,\n    ) {\n    }\n\n  ngOnInit(): void {\n  }\n\n  onArchiveClick(): void {\n      this._archiveService.archiveDevice(this.data.wwn)\n          .subscribe((data) => {\n              this.dialogRef.close(data);\n          });\n\n  }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-archive-dialog/dashboard-device-archive-dialog.module.ts",
    "content": "import {NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {SharedModule} from 'app/shared/shared.module';\nimport {dashboardRoutes} from 'app/modules/dashboard/dashboard.routing';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {DashboardDeviceArchiveDialogComponent} from './dashboard-device-archive-dialog.component';\n\n@NgModule({\n    declarations: [\n        DashboardDeviceArchiveDialogComponent\n    ],\n    imports: [\n        RouterModule.forChild([]),\n        RouterModule.forChild(dashboardRoutes),\n        MatButtonModule,\n        MatIconModule,\n        SharedModule,\n        MatDialogModule\n    ],\n    exports     : [\n        DashboardDeviceArchiveDialogComponent,\n    ],\n    providers   : []\n})\nexport class DashboardDeviceArchiveDialogModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-archive-dialog/dashboard-device-archive-dialog.service.ts",
    "content": "import {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {getBasePath} from 'app/app.routing';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DashboardDeviceArchiveDialogService\n{\n\n\n    /**\n     * Constructor\n     *\n     * @param {HttpClient} _httpClient\n     */\n    constructor(\n        private _httpClient: HttpClient\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n\n    archiveDevice(wwn: string): Observable<any>\n    {\n        return this._httpClient.post( `${getBasePath()}/api/device/${wwn}/archive`, {});\n    }\n\n    unarchiveDevice(wwn: string): Observable<any>\n    {\n        return this._httpClient.post( `${getBasePath()}/api/device/${wwn}/unarchive`, {});\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.component.html",
    "content": "<h2 mat-dialog-title>Delete {{data.title}}?</h2>\n<mat-dialog-content>This will remove the device and all historical data from Scrutiny. <strong>Any data on the device\n    itself will remain untouched.</strong></mat-dialog-content>\n<mat-dialog-actions>\n    <button mat-button mat-dialog-close>Cancel</button>\n    <!-- The mat-dialog-close directive optionally accepts a value as a result for the dialog. -->\n    <button class=\"red-600\" mat-button (click)=\"onDeleteClick()\">\n        <mat-icon class=\"icon-size-20 mr-3\"\n                  [svgIcon]=\"'delete_forever'\"></mat-icon>\n        Delete\n    </button>\n</mat-dialog-actions>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.component.scss",
    "content": ""
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.component.spec.ts",
    "content": "import {async, ComponentFixture, TestBed} from '@angular/core/testing';\n\nimport {DashboardDeviceDeleteDialogComponent} from './dashboard-device-delete-dialog.component';\nimport {HttpClientModule} from '@angular/common/http';\nimport {MAT_DIALOG_DATA, MatDialogModule, MatDialogRef} from '@angular/material/dialog';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {SharedModule} from '../../../shared/shared.module';\nimport {DashboardDeviceDeleteDialogService} from './dashboard-device-delete-dialog.service';\nimport {of} from 'rxjs';\n\n\ndescribe('DashboardDeviceDeleteDialogComponent', () => {\n    let component: DashboardDeviceDeleteDialogComponent;\n    let fixture: ComponentFixture<DashboardDeviceDeleteDialogComponent>;\n\n    const matDialogRefSpy = jasmine.createSpyObj('MatDialogRef', ['closeDialog', 'close']);\n    const dashboardDeviceDeleteDialogServiceSpy = jasmine.createSpyObj('DashboardDeviceDeleteDialogService', ['deleteDevice']);\n\n    beforeEach(async(() => {\n        TestBed.configureTestingModule({\n            imports: [\n                HttpClientModule,\n                MatDialogModule,\n                MatButtonModule,\n                MatIconModule,\n                SharedModule,\n            ],\n            providers: [\n                {provide: MatDialogRef, useValue: matDialogRefSpy},\n                {provide: MAT_DIALOG_DATA, useValue: {wwn: 'test-wwn', title: 'my-test-device-title'}},\n                {provide: DashboardDeviceDeleteDialogService, useValue: dashboardDeviceDeleteDialogServiceSpy}\n            ],\n            declarations: [DashboardDeviceDeleteDialogComponent]\n        })\n            .compileComponents()\n    }));\n\n    beforeEach(() => {\n        fixture = TestBed.createComponent(DashboardDeviceDeleteDialogComponent);\n        component = fixture.componentInstance;\n        fixture.detectChanges();\n    });\n\n    it('should create', () => {\n        expect(component).toBeTruthy();\n    });\n\n    it('should close the component if cancel is clicked', () => {\n        matDialogRefSpy.closeDialog.calls.reset();\n        matDialogRefSpy.closeDialog()\n        expect(matDialogRefSpy.closeDialog).toHaveBeenCalled();\n    });\n\n    it('should attempt to delete device if delete is clicked', () => {\n        dashboardDeviceDeleteDialogServiceSpy.deleteDevice.and.returnValue(of({'success': true}));\n\n        component.onDeleteClick()\n        expect(dashboardDeviceDeleteDialogServiceSpy.deleteDevice).toHaveBeenCalledWith('test-wwn');\n        expect(dashboardDeviceDeleteDialogServiceSpy.deleteDevice.calls.count())\n            .withContext('one call')\n            .toBe(1);\n    });\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.component.ts",
    "content": "import {Component, Inject, OnInit} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {DashboardDeviceDeleteDialogService} from 'app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.service';\n\n@Component({\n  selector: 'app-dashboard-device-delete-dialog',\n  templateUrl: './dashboard-device-delete-dialog.component.html',\n  styleUrls: ['./dashboard-device-delete-dialog.component.scss']\n})\nexport class DashboardDeviceDeleteDialogComponent implements OnInit {\n\n    constructor(\n        public dialogRef: MatDialogRef<DashboardDeviceDeleteDialogComponent>,\n        @Inject(MAT_DIALOG_DATA) public data: {wwn: string, title: string},\n        private _deleteService: DashboardDeviceDeleteDialogService,\n    ) {\n    }\n\n  ngOnInit(): void {\n  }\n\n  onDeleteClick(): void {\n      this._deleteService.deleteDevice(this.data.wwn)\n          .subscribe((data) => {\n              this.dialogRef.close(data);\n          });\n\n  }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.module.ts",
    "content": "import {NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {SharedModule} from 'app/shared/shared.module';\nimport {DashboardDeviceDeleteDialogComponent} from 'app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.component'\nimport {dashboardRoutes} from 'app/modules/dashboard/dashboard.routing';\nimport {MatDialogModule} from '@angular/material/dialog';\n\n@NgModule({\n    declarations: [\n        DashboardDeviceDeleteDialogComponent\n    ],\n    imports: [\n        RouterModule.forChild([]),\n        RouterModule.forChild(dashboardRoutes),\n        MatButtonModule,\n        MatIconModule,\n        SharedModule,\n        MatDialogModule\n    ],\n    exports     : [\n        DashboardDeviceDeleteDialogComponent,\n    ],\n    providers   : []\n})\nexport class DashboardDeviceDeleteDialogModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-device-delete-dialog/dashboard-device-delete-dialog.service.ts",
    "content": "import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { getBasePath } from 'app/app.routing';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DashboardDeviceDeleteDialogService\n{\n\n\n    /**\n     * Constructor\n     *\n     * @param {HttpClient} _httpClient\n     */\n    constructor(\n        private _httpClient: HttpClient\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n\n    deleteDevice(wwn: string): Observable<any>\n    {\n        return this._httpClient.delete( `${getBasePath()}/api/device/${wwn}`, {});\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-settings/dashboard-settings.component.html",
    "content": "<h2 mat-dialog-title>Scrutiny Settings</h2>\n<mat-dialog-content class=\"mat-typography\">\n\n    <div class=\"flex flex-col p-8 pb-0 overflow-hidden\">\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Dark Mode</mat-label>\n                <mat-select [(ngModel)]=\"theme\">\n                    <mat-option value=\"system\">System</mat-option>\n                    <mat-option value=\"dark\">Dark</mat-option>\n                    <mat-option value=\"light\">Light</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Display Title</mat-label>\n                <mat-select [(ngModel)]=\"dashboardDisplay\">\n                    <mat-option value=\"name\">Name</mat-option>\n                    <mat-option value=\"serial_id\">Serial ID</mat-option>\n                    <mat-option value=\"uuid\">UUID</mat-option>\n                    <mat-option value=\"label\">Label</mat-option>\n                </mat-select>\n            </mat-form-field>\n\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pl-3\">\n                <mat-label>Sort By</mat-label>\n                <mat-select [(ngModel)]=\"dashboardSort\">\n                    <mat-option value=\"status\">Status</mat-option>\n                    <mat-option value=\"title\">Title</mat-option>\n                    <mat-option value=\"age\">Age</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Temperature</mat-label>\n                <mat-select [(ngModel)]=\"temperatureUnit\">\n                    <mat-option value=\"celsius\">Celsius</mat-option>\n                    <mat-option value=\"fahrenheit\">Fahrenheit</mat-option>\n                </mat-select>\n            </mat-form-field>\n\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>File Size</mat-label>\n                <mat-select [(ngModel)]=\"fileSizeSIUnits\">\n                    <mat-option [value]=true>SI Units (GB)</mat-option>\n                    <mat-option [value]=false>Binary Units (GiB)</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Powered On Format</mat-label>\n                <mat-select [(ngModel)]=\"poweredOnHoursUnit\">\n                    <mat-option value=\"humanize\">Humanize</mat-option>\n                    <mat-option value=\"device_hours\">Device Hours</mat-option>\n                </mat-select>\n            </mat-form-field>\n\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Line stroke</mat-label>\n                <mat-select [(ngModel)]=\"lineStroke\">\n                    <mat-option value=\"smooth\">Smooth</mat-option>\n                    <mat-option value=\"straight\">Straight</mat-option>\n                    <mat-option value=\"stepline\">Stepline</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Device Status - Thresholds</mat-label>\n                <mat-select [(ngModel)]=statusThreshold>\n                    <mat-option [value]=1>Smart</mat-option>\n                    <mat-option [value]=2>Scrutiny</mat-option>\n                    <mat-option [value]=3>Both</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Notify - Filter Attributes</mat-label>\n                <mat-select [(ngModel)]=statusFilterAttributes>\n                    <mat-option [value]=0>All</mat-option>\n                    <mat-option [value]=1>Critical</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\">\n                <mat-label>Repeat Notifications</mat-label>\n                <mat-select [(ngModel)]=repeatNotifications>\n                    <mat-option [value]=true>Always</mat-option>\n                    <mat-option [value]=false>Only when the value has changed</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"mt-6 mb-2\">\n            <h3 class=\"text-lg font-medium\">Quirks</h3>\n            <div class=\"w-full border-b mt-1\"></div>\n        </div>\n\n        <div class=\"flex flex-col mt-5 gt-md:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3 gt-md:pr-3\"\n                matTooltip=\"Discard historical temperature data retrieved from the SMART Command Transport (SCT) Data Table, which may be inaccurate for some drives. The current temperature is always stored.\"\n                matTooltipPosition=\"right\">\n                <mat-label>Discard SCT Temperature History</mat-label>\n                <mat-select [(ngModel)]=discardSCTTempHistory>\n                    <mat-option [value]=true>Enabled</mat-option>\n                    <mat-option [value]=false>Disabled</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n    </div>\n\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n    <button mat-button mat-dialog-close>Cancel</button>\n    <button mat-button mat-dialog-close (click)=\"saveSettings()\" cdkFocusInitial>Save</button>\n</mat-dialog-actions>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-settings/dashboard-settings.component.scss",
    "content": ""
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-settings/dashboard-settings.component.ts",
    "content": "import {Component, OnInit} from '@angular/core';\nimport {\n    AppConfig,\n    DashboardDisplay,\n    DashboardSort,\n    MetricsStatusFilterAttributes,\n    MetricsStatusThreshold,\n    TemperatureUnit,\n    LineStroke,\n    Theme,\n    DevicePoweredOnUnit\n} from 'app/core/config/app.config';\nimport {ScrutinyConfigService} from 'app/core/config/scrutiny-config.service';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n@Component({\n    selector: 'app-dashboard-settings',\n    templateUrl: './dashboard-settings.component.html',\n    styleUrls: ['./dashboard-settings.component.scss']\n})\nexport class DashboardSettingsComponent implements OnInit {\n\n    dashboardDisplay: string;\n    dashboardSort: string;\n    temperatureUnit: string;\n    fileSizeSIUnits: boolean;\n    poweredOnHoursUnit: string;\n    lineStroke: string;\n    theme: string;\n    discardSCTTempHistory: boolean;\n    statusThreshold: number;\n    statusFilterAttributes: number;\n    repeatNotifications: boolean;\n\n    // Private\n    private _unsubscribeAll: Subject<void>;\n\n    constructor(\n        private _configService: ScrutinyConfigService,\n    ) {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    ngOnInit(): void {\n        // Subscribe to config changes\n        this._configService.config$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((config: AppConfig) => {\n\n                // Store the config\n                this.dashboardDisplay = config.dashboard_display;\n                this.dashboardSort = config.dashboard_sort;\n                this.temperatureUnit = config.temperature_unit;\n                this.fileSizeSIUnits = config.file_size_si_units;\n                this.poweredOnHoursUnit = config.powered_on_hours_unit;\n                this.lineStroke = config.line_stroke;\n                this.theme = config.theme;\n\n                this.discardSCTTempHistory = config.collector.discard_sct_temp_history;\n\n                this.statusFilterAttributes = config.metrics.status_filter_attributes;\n                this.statusThreshold = config.metrics.status_threshold;\n                this.repeatNotifications = config.metrics.repeat_notifications;\n\n            });\n\n    }\n\n    saveSettings(): void {\n        const newSettings: AppConfig = {\n            dashboard_display: this.dashboardDisplay as DashboardDisplay,\n            dashboard_sort: this.dashboardSort as DashboardSort,\n            temperature_unit: this.temperatureUnit as TemperatureUnit,\n            file_size_si_units: this.fileSizeSIUnits,\n            powered_on_hours_unit: this.poweredOnHoursUnit as DevicePoweredOnUnit,\n            line_stroke: this.lineStroke as LineStroke,\n            theme: this.theme as Theme,\n            collector: {\n                discard_sct_temp_history: this.discardSCTTempHistory\n            },\n            metrics: {\n                status_filter_attributes: this.statusFilterAttributes as MetricsStatusFilterAttributes,\n                status_threshold: this.statusThreshold as MetricsStatusThreshold,\n                repeat_notifications: this.repeatNotifications\n            }\n        }\n        this._configService.config = newSettings\n        console.log(`Saved Settings: ${JSON.stringify(newSettings)}`)\n    }\n\n    formatLabel(value: number): number {\n        return value;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/dashboard-settings/dashboard-settings.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { SharedModule } from 'app/shared/shared.module';\nimport {DashboardSettingsComponent} from 'app/layout/common/dashboard-settings/dashboard-settings.component'\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonToggleModule} from '@angular/material/button-toggle';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\n@NgModule({\n    declarations: [\n        DashboardSettingsComponent\n    ],\n    imports     : [\n        RouterModule.forChild([]),\n        MatAutocompleteModule,\n        MatDialogModule,\n        MatButtonModule,\n        MatSelectModule,\n        MatFormFieldModule,\n        MatIconModule,\n        MatInputModule,\n        MatButtonToggleModule,\n        MatTabsModule,\n        MatTooltipModule,\n        MatSliderModule,\n        MatSlideToggleModule,\n        SharedModule\n    ],\n    exports     : [\n        DashboardSettingsComponent\n    ],\n    providers   : []\n})\nexport class DashboardSettingsModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/detail-settings/detail-settings.component.html",
    "content": "<h2 mat-dialog-title>Scrutiny Settings</h2>\n<mat-dialog-content class=\"mat-typography\">\n\n    <form class=\"flex flex-col p-8 pb-0 \">\n        <div class=\"flex flex-col gt-xs:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3\">\n                <mat-label>Threshold Data</mat-label>\n                <mat-select [value]=\"'scrutiny'\">\n                    <mat-option  value=\"scrutiny\">Scrutiny</mat-option>\n                    <mat-option value=\"name\" disabled>Manufacturer</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n\n        <div class=\"flex flex-col gt-xs:flex-row\">\n            <mat-form-field class=\"flex-auto gt-xs:pr-3\">\n                <mat-label>Notifications</mat-label>\n                <mat-select [value]=\"'enable'\">\n                    <mat-option  value=\"enable\">Enabled</mat-option>\n                    <mat-option value=\"disable\" disabled>Disabled</mat-option>\n                </mat-select>\n            </mat-form-field>\n        </div>\n    </form>\n\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n    <button mat-button mat-dialog-close>Cancel</button>\n    <button mat-button matTooltip=\"not yet implemented\" [mat-dialog-close]=\"true\" cdkFocusInitial>Save</button>\n</mat-dialog-actions>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/detail-settings/detail-settings.component.scss",
    "content": ""
  },
  {
    "path": "webapp/frontend/src/app/layout/common/detail-settings/detail-settings.component.spec.ts",
    "content": "import { async, ComponentFixture, TestBed } from '@angular/core/testing';\n\nimport { DetailSettingsComponent } from './detail-settings.component';\n\ndescribe('DetailSettingsComponent', () => {\n  let component: DetailSettingsComponent;\n  let fixture: ComponentFixture<DetailSettingsComponent>;\n\n  beforeEach(async(() => {\n    TestBed.configureTestingModule({\n      declarations: [ DetailSettingsComponent ]\n    })\n    .compileComponents();\n  }));\n\n  beforeEach(() => {\n    fixture = TestBed.createComponent(DetailSettingsComponent);\n    component = fixture.componentInstance;\n    fixture.detectChanges();\n  });\n\n  it('should create', () => {\n    expect(component).toBeTruthy();\n  });\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/detail-settings/detail-settings.component.ts",
    "content": "import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-detail-settings',\n  templateUrl: './detail-settings.component.html',\n  styleUrls: ['./detail-settings.component.scss']\n})\nexport class DetailSettingsComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/detail-settings/detail-settings.module.ts",
    "content": "import {NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {SharedModule} from 'app/shared/shared.module';\nimport {DetailSettingsComponent} from 'app/layout/common/detail-settings/detail-settings.component'\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\n@NgModule({\n    declarations: [\n        DetailSettingsComponent\n    ],\n    imports: [\n        RouterModule.forChild([]),\n        MatAutocompleteModule,\n        MatDialogModule,\n        MatButtonModule,\n        MatSelectModule,\n        MatFormFieldModule,\n        MatIconModule,\n        MatInputModule,\n        MatButtonToggleModule,\n        MatTabsModule,\n        MatTooltipModule,\n        MatSliderModule,\n        MatSlideToggleModule,\n        SharedModule\n    ],\n    exports: [\n        DetailSettingsComponent\n    ],\n    providers: []\n})\nexport class DetailSettingsModule {\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/search/search.component.html",
    "content": "<!-- Open button, 'bar' only -->\n<button class=\"search-toggle-open\"\n        mat-icon-button\n        *ngIf=\"appearance === 'bar' && !opened\"\n        (click)=\"open()\">\n    <mat-icon [svgIcon]=\"'search'\"></mat-icon>\n</button>\n\n<!-- Search container -->\n<div class=\"search-container\"\n     *ngIf=\"appearance === 'basic' || (appearance === 'bar' && opened)\"\n     [@.disabled]=\"appearance === 'basic'\"\n     @slideInTop\n     @slideOutTop>\n\n    <mat-form-field class=\"treo-mat-no-subscript search-input\"\n                    #searchInput>\n        <mat-icon matPrefix\n                  [svgIcon]=\"'search'\"></mat-icon>\n        <input matInput\n               [formControl]=\"searchControl\"\n               [placeholder]=\"'Search for a page or a contact'\"\n               [matAutocomplete]=\"matAutocomplete\"\n               (keydown)=\"onKeydown($event)\">\n    </mat-form-field>\n\n    <mat-autocomplete [class]=\"'search-results search-results-appearance-' + appearance\"\n                      #matAutocomplete=\"matAutocomplete\"\n                      [disableRipple]=\"true\">\n\n        <mat-option class=\"no-results\"\n                    *ngIf=\"results && !results.length\">\n            No results found!\n        </mat-option>\n\n        <mat-option *ngFor=\"let result of results\"\n                    [routerLink]=\"result.link\">\n\n            <!-- Page result -->\n            <div class=\"result page-result\"\n                 *ngIf=\"result.resultType === 'page'\">\n                <div class=\"badge\">Page</div>\n                <div class=\"title\">\n                    <span [innerHTML]=\"result.title\"></span>\n                    <span class=\"link\"\n                          [routerLink]=\"result.link\">{{result.link}}</span>\n                </div>\n            </div>\n\n            <!-- Contact result -->\n            <div class=\"result contact-result\"\n                 *ngIf=\"result.resultType === 'contact'\">\n                <div class=\"badge\">Contact</div>\n                <div class=\"title\">\n                    <span [innerHTML]=\"result.title\"></span>\n                </div>\n                <div class=\"image\">\n                    <img *ngIf=\"result.avatar\"\n                         [src]=\"result.avatar\">\n                    <mat-icon *ngIf=\"!result.avatar\"\n                              [svgIcon]=\"'account_circle'\"></mat-icon>\n                </div>\n            </div>\n\n        </mat-option>\n\n    </mat-autocomplete>\n\n    <!-- Close button, 'bar' only -->\n    <button class=\"search-toggle-close\"\n            mat-icon-button\n            *ngIf=\"appearance === 'bar'\"\n            (click)=\"close()\">\n        <mat-icon [svgIcon]=\"'close'\"></mat-icon>\n    </button>\n\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/search/search.component.scss",
    "content": "@import 'treo';\n\nsearch {\n    display: flex;\n\n    // Bar appearance\n    &.search-appearance-bar {\n\n        .search-container {\n            position: absolute;\n            display: flex;\n            align-items: center;\n            flex: 1 0 auto;\n            top: 0;\n            right: 0;\n            bottom: 0;\n            left: 0;\n            z-index: 99;\n\n            .search-input {\n                flex: 1 0 auto;\n                height: 100%;\n\n                .mat-form-field-wrapper {\n                    height: 100%;\n\n                    .mat-form-field-flex {\n                        height: 100%;\n                        padding: 0 72px 0 32px;\n                        border: none;\n                        border-radius: 0 !important;\n\n                        @include treo-breakpoint('xs') {\n                            padding: 0 56px 0 24px\n                        }\n                    }\n                }\n            }\n\n            .search-toggle-close {\n                position: absolute;\n                top: 50%;\n                right: 32px;\n                margin-top: -20px;\n                min-width: 40px;\n                width: 40px;\n                min-height: 40px;\n                height: 40px;\n\n                @include treo-breakpoint('xs') {\n                    right: 8px;\n                }\n            }\n        }\n    }\n\n    // Basic appearance\n    &.search-appearance-basic {\n        width: 100%;\n        max-width: 400px;\n\n        .search-container {\n            display: flex;\n            align-items: center;\n            flex: 1 0 auto;\n            overflow: hidden;\n\n            .search-icon {\n                margin-left: 16px;\n            }\n\n            .search-input {\n                width: 100%;\n            }\n        }\n    }\n}\n\n// Search results panel\n.search-results {\n    max-height: 512px !important;\n\n    &:before,\n    &:after {\n        content: ' ';\n        position: absolute;\n        width: 0;\n        height: 0;\n        bottom: 100%;\n        left: 30px;\n        border: solid transparent;\n        pointer-events: none;\n    }\n\n    &:before {\n        border-width: 9px;\n        margin-left: -9px;\n    }\n\n    &:after {\n        border-width: 8px;\n        margin-left: -8px;\n    }\n\n    // Bar appearance\n    &.search-results-appearance-bar {\n        border-top-width: 1px;\n        border-radius: 0 0 4px 4px;\n        @include treo-elevation('md', true);\n\n        .mat-option {\n            padding: 0 40px;\n\n            @include treo-breakpoint('xs') {\n                padding: 0 24px\n            }\n        }\n    }\n\n    // Basic appearance\n    &.search-results-appearance-basic {\n        margin-top: 8px;\n        border-radius: 4px;\n        @include treo-elevation('2xl', true);\n\n        .mat-option {\n            padding: 0 32px;\n\n            @include treo-breakpoint('xs') {\n                padding: 0 24px\n            }\n        }\n    }\n\n    .mat-option {\n        height: 56px;\n        line-height: 56px;\n        font-size: 14px;\n\n        &.no-results {\n            pointer-events: none;\n        }\n\n        .mat-option-text {\n\n            .result {\n                display: flex;\n                align-items: center;\n\n                &.contact-result {\n\n                    .image {\n                        display: flex;\n                        align-items: center;\n                        justify-content: center;\n                        width: 32px;\n                        min-width: 32px;\n                        max-width: 32px;\n                        height: 32px;\n                        min-height: 32px;\n                        max-height: 32px;\n                        margin-left: auto;\n                        border-radius: 50%;\n                        overflow: hidden;\n\n                        .mat-icon {\n                            margin: 0;\n                            @include treo-icon-size(20);\n                        }\n                    }\n                }\n\n                &.page-result {\n\n                    .title {\n                        display: flex;\n                        flex-direction: column;\n\n                        span {\n                            overflow: hidden;\n                            text-overflow: ellipsis;\n                            white-space: nowrap;\n                            line-height: normal;\n                        }\n\n                        .link {\n                            margin-top: 4px;\n                            line-height: normal;\n                            font-size: 12px;\n                            text-decoration: none !important;\n                        }\n                    }\n                }\n\n                .badge {\n                    padding: 3px 6px;\n                    margin-right: 16px;\n                    border-radius: 3px;\n                    font-size: 11px;\n                    line-height: normal;\n                }\n\n                .title {\n                    overflow: hidden;\n                    text-overflow: ellipsis;\n\n                    mark {\n                        font-weight: 500;\n                    }\n                }\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    search {\n\n        // Basic appearance\n        &.search-appearance-basic {\n            background: transparent;\n        }\n\n        // Bar appearance\n        &.search-appearance-bar {\n\n            .search-container {\n                background: map-get($background, card);\n\n                .search-input {\n\n                    .mat-form-field-wrapper {\n\n                        .mat-form-field-flex {\n                            background: transparent;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    // Search results panel\n    .search-results {\n\n        &:before {\n            border-color: transparent;\n            border-bottom-color: map-get($foreground, divider);\n        }\n\n        &:after {\n            border-color: transparent;\n            border-bottom-color: map-get($background, card);\n        }\n\n        .mat-option {\n\n            @include treo-breakpoint('xs') {\n                background: transparent !important;\n            }\n\n            @include treo-breakpoint('gt-xs') {\n                &:hover:not(.mat-option-disabled),\n                &:focus:not(.mat-option-disabled) {\n                    box-shadow: inset 4px 0 0 map-get($primary, default);\n                }\n            }\n\n            &.no-results {\n\n                .mat-option-text {\n                    color: map-get($foreground, secondary-text);\n                }\n            }\n\n            .mat-option-text {\n\n                .result {\n\n                    &.contact-result {\n\n                        .badge {\n                            background: treo-color('blue', 500);\n                            color: treo-contrast('blue', 500);\n                        }\n                    }\n\n                    &.page-result {\n\n                        .badge {\n                            background: treo-color('purple', 500);\n                            color: treo-contrast('purple', 500);\n                        }\n\n                        .title {\n\n                            .link {\n                                color: map-get($foreground, secondary-text);\n                            }\n                        }\n                    }\n\n                    .image {\n                        @if ($is-dark) {\n                            background: rgba(0, 0, 0, 0.05);\n                        } @else {\n                            background: map-get($primary, 100);\n                        }\n\n                        .mat-icon {\n                            color: map-get($primary, default);\n                        }\n                    }\n\n                    .title {\n\n                        mark {\n                            background: transparent;\n                            color: map-get($primary, default);\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/search/search.component.ts",
    "content": "import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { HttpClient } from '@angular/common/http';\nimport { MatFormField } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\nimport { debounceTime, filter, map, takeUntil } from 'rxjs/operators';\nimport { TreoAnimations } from '@treo/animations/public-api';\nimport { getBasePath } from 'app/app.routing';\n\n@Component({\n    selector     : 'search',\n    templateUrl  : './search.component.html',\n    styleUrls    : ['./search.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    exportAs     : 'treoSearch',\n    animations   : TreoAnimations\n})\nexport class SearchComponent implements OnInit, OnDestroy\n{\n    results: any[] | null;\n    searchControl: FormControl;\n\n    // Debounce\n    @Input()\n    debounce: number;\n\n    // Min. length\n    @Input()\n    minLength: number;\n\n    // Search\n    @Output()\n    search: EventEmitter<any>;\n\n    // Private\n    private _appearance: 'basic' | 'bar';\n    private _opened: boolean;\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {ElementRef} _elementRef\n     * @param {HttpClient} _httpClient\n     * @param {Renderer2} _renderer2\n     */\n    constructor(\n        private _elementRef: ElementRef,\n        private _httpClient: HttpClient,\n        private _renderer2: Renderer2\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.appearance = 'basic';\n        this.debounce = this.debounce || 300;\n        this.minLength = this.minLength || 2;\n        this.opened = false;\n        this.results = null;\n        this.searchControl = new FormControl();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Setter and getter for appearance\n     *\n     * @param value\n     */\n    @Input()\n    set appearance(value: 'basic' | 'bar')\n    {\n        // If the value is the same, return...\n        if ( this._appearance === value )\n        {\n            return;\n        }\n\n        // Make sure the search is closed, before\n        // changing the appearance to prevent issues\n        this.close();\n\n        let appearanceClassName;\n\n        // Remove the previous appearance class\n        appearanceClassName = 'search-appearance-' + this.appearance;\n        this._renderer2.removeClass(this._elementRef.nativeElement, appearanceClassName);\n\n        // Store the appearance\n        this._appearance = value;\n\n        // Add the new appearance class\n        appearanceClassName = 'search-appearance-' + this.appearance;\n        this._renderer2.addClass(this._elementRef.nativeElement, appearanceClassName);\n    }\n\n    get appearance(): 'basic' | 'bar'\n    {\n        return this._appearance;\n    }\n\n    /**\n     * Setter and getter for opened\n     *\n     * @param value\n     */\n    set opened(value: boolean)\n    {\n        // If the value is the same, return...\n        if ( this._opened === value )\n        {\n            return;\n        }\n\n        // Store the opened status\n        this._opened = value;\n\n        // If opened...\n        if ( value )\n        {\n            // Add opened class\n            this._renderer2.addClass(this._elementRef.nativeElement, 'search-opened');\n        }\n        else\n        {\n            // Remove opened class\n            this._renderer2.removeClass(this._elementRef.nativeElement, 'search-opened');\n        }\n    }\n\n    get opened(): boolean\n    {\n        return this._opened;\n    }\n\n    /**\n     * Setter and getter for search input\n     *\n     * @param value\n     */\n    @ViewChild('searchInput')\n    set searchInput(value: MatFormField)\n    {\n        // Return if the appearance is basic, since we don't want\n        // basic search to be focused as soon as the page loads\n        if ( this.appearance === 'basic' )\n        {\n            return;\n        }\n\n        // If the value exists, it means that the search input\n        // is now in the DOM and we can focus on the input..\n        if ( value )\n        {\n            // Give Angular time to complete the change detection cycle\n            setTimeout(() => {\n\n                // Focus to the input element\n                value._inputContainerRef.nativeElement.children[0].focus();\n            });\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to the search field value changes\n        this.searchControl.valueChanges\n            .pipe(\n                debounceTime(this.debounce),\n                takeUntil(this._unsubscribeAll),\n                map((value) => {\n\n                    // Set the search results to null if there is no value or\n                    // the length of the value is smaller than the minLength\n                    // so the autocomplete panel can be closed\n                    if ( !value || value.length < this.minLength )\n                    {\n                        this.results = null;\n                    }\n\n                    // Continue\n                    return value;\n                }),\n                filter((value) => {\n\n                    // Filter out undefined/null/false statements and also\n                    // filter out the values that are smaller than minLength\n                    return value && value.length >= this.minLength;\n                })\n            )\n            .subscribe((value) => {\n                this._httpClient.post(getBasePath() + '/api/common/search', {query: value})\n                    .subscribe((response: any) => {\n                        this.results = response.results;\n                    });\n            });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On keydown of the search input\n     *\n     * @param event\n     */\n    onKeydown(event): void\n    {\n        // Listen for escape to close the search\n        // if the appearance is 'bar'\n        if ( this.appearance === 'bar' )\n        {\n            // Escape\n            if ( event.keyCode === 27 )\n            {\n                // Close the search\n                this.close();\n            }\n        }\n    }\n\n    /**\n     * Open the search\n     * Used in 'bar'\n     */\n    open(): void\n    {\n        // Return, if it's already opened\n        if ( this.opened )\n        {\n            return;\n        }\n\n        // Open the search\n        this.opened = true;\n    }\n\n    /**\n     * Close the search\n     * * Used in 'bar'\n     */\n    close(): void\n    {\n        // Return, if it's already closed\n        if ( !this.opened )\n        {\n            return;\n        }\n\n        // Clear the search input\n        this.searchControl.setValue('');\n\n        // Close the search\n        this.opened = false;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/common/search/search.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { SearchComponent } from 'app/layout/common/search/search.component';\n\n@NgModule({\n    declarations: [\n        SearchComponent\n    ],\n    imports     : [\n        RouterModule.forChild([]),\n        MatAutocompleteModule,\n        MatButtonModule,\n        MatFormFieldModule,\n        MatIconModule,\n        MatInputModule,\n        SharedModule\n    ],\n    exports     : [\n        SearchComponent\n    ],\n    providers   : [\n        {\n            provide   : MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n            useFactory: (overlay: Overlay) => {\n                return () => overlay.scrollStrategies.block();\n            },\n            deps      : [Overlay]\n        }\n    ]\n})\nexport class SearchModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layout.component.html",
    "content": "<!-- ----------------------------------------------------------------------------------------------------- -->\n<!-- Empty layout -->\n<!-- ----------------------------------------------------------------------------------------------------- -->\n<empty-layout *ngIf=\"layout === 'empty'\"></empty-layout>\n\n<!-- ----------------------------------------------------------------------------------------------------- -->\n<!-- Layouts with horizontal navigation -->\n<!-- ----------------------------------------------------------------------------------------------------- -->\n\n<!-- Material -->\n<material-layout *ngIf=\"layout === 'material'\"></material-layout>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layout.component.scss",
    "content": "layout {\n    display: flex;\n    flex: 1 1 auto;\n    width: 100%;\n    max-width: 100%;\n    min-width: 0;\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layout.component.ts",
    "content": "import {Component, Inject, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {MatSlideToggleChange} from '@angular/material/slide-toggle';\nimport {Subject} from 'rxjs';\nimport {filter, takeUntil} from 'rxjs/operators';\nimport {ScrutinyConfigService} from 'app/core/config/scrutiny-config.service';\nimport {TreoDrawerService} from '@treo/components/drawer';\nimport {Layout} from 'app/layout/layout.types';\nimport {AppConfig, Theme} from 'app/core/config/app.config';\n\n@Component({\n    selector: 'layout',\n    templateUrl: './layout.component.html',\n    styleUrls: ['./layout.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class LayoutComponent implements OnInit, OnDestroy {\n    config: AppConfig;\n    layout: Layout;\n    theme: Theme;\n\n    // Private\n    private _unsubscribeAll: Subject<void>;\n    private systemPrefersDark: boolean;\n\n    /**\n     * Constructor\n     *\n     * @param {ActivatedRoute} _activatedRoute\n     * @param {ScrutinyConfigService} _scrutinyConfigService\n     * @param {TreoDrawerService} _treoDrawerService\n     * @param {DOCUMENT} _document\n     * @param {Router} _router\n     */\n    constructor(\n        private _activatedRoute: ActivatedRoute,\n        private _scrutinyConfigService: ScrutinyConfigService,\n        private _treoDrawerService: TreoDrawerService,\n        @Inject(DOCUMENT) private _document: any,\n        private _router: Router\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        this.systemPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to config changes\n        this._scrutinyConfigService.config$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((config: AppConfig) => {\n\n                // Store the config\n                this.config = config;\n\n                // Store the theme\n                this.theme = config.theme;\n\n                // Update the selected theme class name on body\n                const themeName = 'treo-theme-' + this.determineTheme(config);\n                this._document.body.classList.forEach((className) => {\n                    if ( className.startsWith('treo-theme-') && className !== themeName )\n                    {\n                        this._document.body.classList.remove(className);\n                        this._document.body.classList.add(themeName);\n                        return;\n                    }\n                });\n\n                // Update the layout\n                this._updateLayout();\n            });\n\n        // Subscribe to NavigationEnd event\n        this._router.events.pipe(\n            filter(event => event instanceof NavigationEnd),\n            takeUntil(this._unsubscribeAll)\n        ).subscribe(() => {\n\n            // Update the layout\n            this._updateLayout();\n        });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Checks if theme should be set to dark based on config & system settings\n     */\n    private determineTheme(config:AppConfig): string {\n        if (config.theme === 'system') {\n            return this.systemPrefersDark ? 'dark' : 'light'\n        } else {\n            return config.theme\n        }\n    }\n\n    /**\n     * Update the selected layout\n     */\n    private _updateLayout(): void\n    {\n        // Get the current activated route\n        let route = this._activatedRoute;\n        while ( route.firstChild )\n        {\n            route = route.firstChild;\n        }\n\n        // 1. Set the layout from the config\n        this.layout = this.config.layout;\n\n        // 2. Get the query parameter from the current route and\n        // set the layout and save the layout to the config\n        const layoutFromQueryParam = (route.snapshot.queryParamMap.get('layout') as Layout);\n        if ( layoutFromQueryParam )\n        {\n            this.config.layout = this.layout = layoutFromQueryParam;\n        }\n\n        // 3. Iterate through the paths and change the layout as we find\n        // a config for it.\n        //\n        // The reason we do this is that there might be empty grouping\n        // paths or componentless routes along the path. Because of that,\n        // we cannot just assume that the layout configuration will be\n        // in the last path's config or in the first path's config.\n        //\n        // So, we get all the paths that matched starting from root all\n        // the way to the current activated route, walk through them one\n        // by one and change the layout as we find the layout config. This\n        // way, layout configuration can live anywhere within the path and\n        // we won't miss it.\n        //\n        // Also, this will allow overriding the layout in any time so we\n        // can have different layouts for different routes.\n        const paths = route.pathFromRoot;\n        paths.forEach((path) => {\n\n            // Check if there is a 'layout' data\n            if ( path.routeConfig && path.routeConfig.data && path.routeConfig.data.layout )\n            {\n                // Set the layout\n                this.layout = path.routeConfig.data.layout;\n            }\n        });\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Set the layout on the config\n     *\n     * @param layout\n     */\n    setLayout(layout: Layout): void {\n        // Clear the 'layout' query param to allow layout changes\n        this._router.navigate([], {\n            queryParams: {\n                layout: null\n            },\n            queryParamsHandling: 'merge'\n        }).then(() => {\n\n            // Set the config\n            this._scrutinyConfigService.config = {layout};\n        });\n    }\n\n    /**\n     * Set the theme on the config\n     *\n     * @param change\n     */\n    setTheme(change: MatSlideToggleChange): void\n    {\n        this._scrutinyConfigService.config = {theme: change.checked ? 'dark' : 'light'};\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layout.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { TreoDrawerModule } from '@treo/components/drawer';\nimport { LayoutComponent } from 'app/layout/layout.component';\nimport { EmptyLayoutModule } from 'app/layout/layouts/empty/empty.module';\nimport { MaterialLayoutModule } from 'app/layout/layouts/horizontal/material/material.module';\n\nimport { SharedModule } from 'app/shared/shared.module';\n\nconst modules = [\n    // Empty\n    EmptyLayoutModule,\n\n    // Horizontal navigation\n    MaterialLayoutModule,\n];\n\n@NgModule({\n    declarations: [\n        LayoutComponent,\n    ],\n    imports     : [\n        TreoDrawerModule,\n        SharedModule,\n        ...modules\n    ],\n    exports     : [\n        ...modules\n    ]\n})\nexport class LayoutModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layout.types.ts",
    "content": "export type Layout = 'empty' |\n    'centered' | 'enterprise' | 'material' | 'modern' |\n    'basic' | 'classic' | 'classy' | 'compact' | 'dense' | 'futuristic' | 'thin';\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/empty/empty.component.html",
    "content": "<!-- Container -->\n<div class=\"container\">\n\n    <!-- Content -->\n    <div class=\"content\">\n\n        <!-- *ngIf=\"true\" hack is required here for router-outlet to work correctly. Otherwise,\n             it won't register the changes on the layout and won't update the view. -->\n        <router-outlet *ngIf=\"true\"></router-outlet>\n\n    </div>\n\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/empty/empty.component.scss",
    "content": "@import 'treo';\n\nempty-layout {\n    position: relative;\n    display: flex;\n    flex: 1 1 auto;\n    width: 100%;\n\n    // Container\n    > .container {\n        display: flex;\n        flex-direction: column;\n        flex: 1 1 auto;\n        width: 100%;\n\n        // Content\n        > .content {\n            display: flex;\n            flex-direction: column;\n            flex: 1 0 auto;\n\n            > *:not(router-outlet) {\n                position: relative;\n                display: flex;\n                flex: 1 0 auto;\n                flex-wrap: wrap;\n                width: 100%;\n                min-width: 100%;\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/empty/empty.component.ts",
    "content": "import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n    selector     : 'empty-layout',\n    templateUrl  : './empty.component.html',\n    styleUrls    : ['./empty.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class EmptyLayoutComponent implements OnInit, OnDestroy\n{\n    // Private\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/empty/empty.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { EmptyLayoutComponent } from 'app/layout/layouts/empty/empty.component';\n\n@NgModule({\n    declarations: [\n        EmptyLayoutComponent\n    ],\n    imports     : [\n        RouterModule,\n        SharedModule\n    ],\n    exports     : [\n        EmptyLayoutComponent\n    ]\n})\nexport class EmptyLayoutModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/horizontal/material/material.component.html",
    "content": "<!-- Navigation -->\n<treo-vertical-navigation class=\"bg-cool-gray-900 theme-dark\"\n                         *ngIf=\"isScreenSmall\"\n                         [appearance]=\"'classic'\"\n                         [mode]=\"'over'\"\n                         [name]=\"'mainNavigation'\"\n                         [navigation]=\"data.navigation.default\"\n                         [opened]=\"false\">\n\n    <div treoVerticalNavigationContentHeader>\n        <a class=\"logo\" routerLink=\"/dashboard\">\n            <img src=\"assets/images/logo/scrutiny-logo-white-text.png\">\n        </a>\n    </div>\n\n</treo-vertical-navigation>\n\n<!-- Wrapper -->\n<div class=\"wrapper\">\n\n    <!-- Header -->\n    <div class=\"header\">\n\n        <!-- Header container -->\n        <div class=\"container\">\n\n            <!-- Top bar -->\n            <div class=\"top-bar\">\n\n                <!-- Logo -->\n                <a class=\"logo\"\n                     routerLink=\"/dashboard\"\n                     *ngIf=\"!isScreenSmall\">\n                    <img class=\"logo-text\"\n                         src=\"assets/images/logo/scrutiny-logo-dark-text.png\">\n                    <img class=\"logo-text-on-dark\"\n                         src=\"assets/images/logo/scrutiny-logo-white-text.png\">\n                </a>\n\n                <!-- Spacer -->\n                <div class=\"spacer\"></div>\n                <code>{{appVersion}}</code>\n\n                <!-- Shortcuts -->\n<!--                <shortcuts [shortcuts]=\"data.shortcuts\"></shortcuts>-->\n\n                <!-- Notifications -->\n<!--                <notifications [notifications]=\"data.notifications\"></notifications>-->\n\n\n\n            </div>\n\n\n        </div>\n\n    </div>\n\n    <!-- Content -->\n    <div class=\"content\">\n\n        <!-- *ngIf=\"true\" hack is required here for router-outlet to work correctly. Otherwise,\n             it won't register the changes on the layout and won't update the view. -->\n        <router-outlet *ngIf=\"true\"></router-outlet>\n\n    </div>\n\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/horizontal/material/material.component.scss",
    "content": "@import 'treo';\n\nmaterial-layout {\n    position: relative;\n    display: flex;\n    flex: 1 1 auto;\n    width: 100%;\n\n    > treo-vertical-navigation {\n\n        .treo-vertical-navigation-content-header {\n\n            .logo {\n                display: flex;\n                align-items: center;\n                height: 80px;\n                min-height: 80px;\n                max-height: 80px;\n                padding: 24px 32px 0 32px;\n\n                img {\n                    max-width: 96px;\n                }\n            }\n        }\n    }\n\n    > .wrapper {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        flex: 1 1 auto;\n        min-width: 0;\n\n        > .header {\n            position: relative;\n            display: flex;\n            justify-content: center;\n            width: 100%;\n            overflow: hidden;\n            z-index: 49;\n\n            .container {\n                position: relative;\n                max-width: 1440px;\n                width: calc(100% - 64px);\n                margin: 48px 32px 0 32px;\n                padding: 16px 0 12px 0;\n                border-bottom-width: 1px;\n                border-radius: 12px 12px 0 0;\n                box-shadow: 0 0 25px 0 rgba(0, 0, 0, 0.1), 0 0 10px 0 rgba(0, 0, 0, 0.04);\n                overflow: hidden;\n\n                @include treo-breakpoint('lt-md') {\n                    margin-top: 32px;\n                    padding: 12px 0;\n                }\n\n                @include treo-breakpoint('xs') {\n                    width: 100%;\n                    margin: 0;\n                    padding: 0;\n                    border-radius: 0;\n                    box-shadow: none;\n                }\n\n                .top-bar,\n                .bottom-bar {\n                    display: flex;\n                    flex: 1 1 auto;\n                    align-items: center;\n                    height: 64px;\n                    max-height: 64px;\n                    min-height: 64px;\n                }\n\n                .top-bar {\n                    position: relative;\n                    padding: 0 24px;\n\n                    @include treo-breakpoint('lt-md') {\n                        padding: 0 16px;\n                    }\n                }\n\n                .bottom-bar {\n                    padding: 0 16px;\n                }\n\n                .logo {\n                    display: flex;\n                    align-items: center;\n                    margin: 0 8px;\n\n                    img {\n                        width: 150px;\n                        min-width: 100px;\n                        max-width: 175px;\n                    }\n                }\n\n                .navigation-toggle-button {\n                    margin-right: 8px;\n                }\n\n                .spacer {\n                    display: flex;\n                    flex: 1 1 auto;\n                    height: 1px;\n                }\n\n                search {\n                    margin-right: 8px;\n                }\n\n                shortcuts {\n                    margin-right: 8px;\n                }\n\n                messages {\n                    margin-right: 8px;\n                }\n\n                notifications {\n                    margin-right: 8px;\n                }\n            }\n        }\n\n        > .content {\n            display: flex;\n            flex-direction: column;\n            flex: 1 1 auto;\n            max-width: 1440px;\n            width: calc(100% - 64px);\n            margin: 0 32px;\n            box-shadow: 0 0 25px 0 rgba(0, 0, 0, 0.1), 0 0 10px 0 rgba(0, 0, 0, 0.04);\n\n            @include treo-breakpoint('xs') {\n                width: 100%;\n                margin: 0;\n                box-shadow: none;\n            }\n\n            > *:not(router-outlet) {\n                position: relative;\n                display: flex;\n                flex: 1 1 auto;\n            }\n        }\n\n        > .footer {\n            display: flex;\n            flex: 1 1 auto;\n            align-items: center;\n            justify-content: flex-start;\n            max-width: 1440px;\n            width: calc(100% - 64px);\n            height: 80px;\n            max-height: 80px;\n            min-height: 80px;\n            margin: 0 32px;\n            padding: 0 24px;\n            z-index: 49;\n            border-top-width: 1px;\n            box-shadow: 0 0 25px 0 rgba(0, 0, 0, 0.1), 0 0 10px 0 rgba(0, 0, 0, 0.04);\n\n            @include treo-breakpoint('xs') {\n                width: 100%;\n                margin: 0;\n                box-shadow: none;\n            }\n\n            @include treo-breakpoint('xs') {\n                height: 56px;\n                max-height: 56px;\n                min-height: 56px;\n            }\n        }\n    }\n\n    &.fixed-header {\n\n        > .wrapper {\n\n            > .header {\n                position: sticky;\n                top: 0;\n            }\n        }\n    }\n\n    &.fixed-footer {\n\n        > .wrapper {\n\n            > .footer {\n                position: sticky;\n                bottom: 0;\n            }\n        }\n    }\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $is-dark: map-get($theme, is-dark);\n\n    material-layout {\n\n        > .wrapper {\n            @if ($is-dark) {\n                background: map-get($background, card);\n            } @else {\n                background: treo-color('cool-gray', 200);\n            }\n\n            > .header {\n                background: map-get($primary, 700);\n\n                .container {\n                    background: map-get($background, card);\n\n                    .logo {\n\n                        .logo-text {\n                            @if ($is-dark) {\n                                display: none;\n                            }\n                        }\n\n                        .logo-text-on-dark {\n                            @if (not $is-dark) {\n                                display: none;\n                            }\n                        }\n                    }\n                }\n            }\n\n            > .content {\n                background: map-get($background, background);\n            }\n\n            > .footer {\n                @if (not $is-dark) {\n                    background: map-get($background, card);\n                }\n                color: map-get($foreground, secondary-text);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/horizontal/material/material.component.ts",
    "content": "import { Component, HostBinding, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Data, Router } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TreoMediaWatcherService } from '@treo/services/media-watcher';\nimport { TreoNavigationService } from '@treo/components/navigation';\nimport {versionInfo} from 'environments/versions';\n\n@Component({\n    selector     : 'material-layout',\n    templateUrl  : './material.component.html',\n    styleUrls    : ['./material.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class MaterialLayoutComponent implements OnInit, OnDestroy\n{\n    appVersion: string;\n    data: any;\n    isScreenSmall: boolean;\n\n    @HostBinding('class.fixed-header')\n    fixedHeader: boolean;\n\n    @HostBinding('class.fixed-footer')\n    fixedFooter: boolean;\n\n    // Private\n    private _unsubscribeAll: Subject<void>;\n\n    /**\n     * Constructor\n     *\n     * @param {ActivatedRoute} _activatedRoute\n     * @param {TreoMediaWatcherService} _treoMediaWatcherService\n     * @param {TreoNavigationService} _treoNavigationService\n     * @param {Router} _router\n     */\n    constructor(\n        private _activatedRoute: ActivatedRoute,\n        private _treoMediaWatcherService: TreoMediaWatcherService,\n        private _treoNavigationService: TreoNavigationService,\n        private _router: Router\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.fixedHeader = false;\n        this.fixedFooter = false;\n\n        this.appVersion = versionInfo.version\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for current year\n     */\n    get currentYear(): number\n    {\n        return new Date().getFullYear();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n        // Subscribe to the resolved route data\n        this._activatedRoute.data.subscribe((data: Data) => {\n            this.data = data.initialData;\n        });\n\n        // Subscribe to media changes\n        this._treoMediaWatcherService.onMediaChange$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe(({matchingAliases}) => {\n\n                // Check if the breakpoint is 'lt-md'\n                this.isScreenSmall = matchingAliases.includes('lt-md');\n            });\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Toggle navigation\n     *\n     * @param key\n     */\n    toggleNavigation(key): void\n    {\n        // Get the navigation\n        const navigation = this._treoNavigationService.getComponent(key);\n\n        if ( navigation )\n        {\n            // Toggle the opened status\n            navigation.toggle();\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/layout/layouts/horizontal/material/material.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TreoNavigationModule } from '@treo/components/navigation';\nimport { SearchModule } from 'app/layout/common/search/search.module';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { MaterialLayoutComponent } from 'app/layout/layouts/horizontal/material/material.component';\n\n@NgModule({\n    declarations: [\n        MaterialLayoutComponent\n    ],\n    imports     : [\n        HttpClientModule,\n        RouterModule,\n        MatButtonModule,\n        MatDividerModule,\n        MatIconModule,\n        MatMenuModule,\n        TreoNavigationModule,\n        SearchModule,\n        SharedModule\n    ],\n    exports     : [\n        MaterialLayoutComponent\n    ]\n})\nexport class MaterialLayoutModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.component.html",
    "content": "<div *ngIf=\"summaryData; else emptyDashboard\">\n    <div class=\"flex flex-col flex-auto w-full p-8 xs:p-2\">\n\n        <div class=\"flex flex-wrap w-full\">\n\n            <div class=\"flex items-center justify-between w-full my-4 px-4 xs:pr-0\">\n                <div class=\"mr-6\">\n                    <h2 class=\"m-0\">Dashboard</h2>\n                    <div class=\"text-secondary tracking-tight\">Drive health at a glance</div>\n                </div>\n                <!-- Action buttons -->\n                <div class=\"flex items-center\">\n                    <button class=\"xs:hidden\" mat-stroked-button\n                            [color]=\"showArchived ? 'primary' : null\"\n                            (click)=\"showArchived=!showArchived\">\n                        <mat-icon class=\"icon-size-20\"\n                                  [color]=\"showArchived ? 'primary' : null\"\n                                  [svgIcon]=\"'archive'\"></mat-icon>\n                                <span class=\"ml-2\">Archived</span>\n                    </button>\n                    <button matTooltip=\"not yet implemented\" class=\"ml-2 xs:hidden\" mat-stroked-button>\n                        <mat-icon class=\"icon-size-20\"\n                                  [svgIcon]=\"'save'\"></mat-icon>\n                        <span class=\"ml-2\">Export</span>\n                    </button>\n                    <button class=\"ml-2 xs:hidden\"\n                            (click)=\"openDialog()\"\n                            mat-stroked-button>\n                        <mat-icon class=\"icon-size-20 rotate-90 mirror\"\n                                  [svgIcon]=\"'tune'\"></mat-icon>\n                        <span class=\"ml-2\">Settings</span>\n                    </button>\n\n                    <!-- Actions menu (visible on xs) -->\n                    <div class=\"hidden xs:flex\">\n                        <button [matMenuTriggerFor]=\"actionsMenu\"\n                                mat-icon-button>\n                            <mat-icon [svgIcon]=\"'more_vert'\"></mat-icon>\n                        </button>\n                        <mat-menu #actionsMenu=\"matMenu\">\n                            <button mat-menu-item (click)=\"showArchived=!showArchived\">\n                                <mat-icon class=\"icon-size-20\"\n                                          [color]=\"showArchived ? 'primary' : null\"\n                                          [svgIcon]=\"'archive'\"></mat-icon>\n                                <span class=\"ml-2\">Archived</span>\n                            </button>\n                            <button mat-menu-item\n                                    matTooltip=\"not yet implemented\">\n                                <mat-icon class=\"icon-size-20\"\n                                          [svgIcon]=\"'save'\"></mat-icon>\n                                <span class=\"ml-2\">Export</span>\n                            </button>\n                            <button mat-menu-item (click)=\"openDialog()\">\n                                <mat-icon class=\"icon-size-20 rotate-90 mirror\"\n                                          [svgIcon]=\"'tune'\"></mat-icon>\n                                <span class=\"ml-2\">Settings</span>\n                            </button>\n                        </mat-menu>\n                    </div>\n                </div>\n            </div>\n\n\n            <div class=\"flex flex-wrap w-full\" *ngFor=\"let hostId of hostGroups | keyvalue\">\n                <h3 class=\"ml-4\" *ngIf=\"hostId.key\">{{ hostId.key }}</h3>\n                <div class=\"flex flex-wrap w-full\">\n                    <ng-container *ngFor=\"let deviceSummary of (deviceSummariesForHostGroup(hostId.value) | deviceSort:config.dashboard_sort:config.dashboard_display )\">\n                        <app-dashboard-device *ngIf=\"showArchived || !deviceSummary.device.archived\"\n                                              (deviceArchived)=\"onDeviceArchived($event)\"\n                                              (deviceUnarchived)=\"onDeviceUnarchived($event)\"\n                                              (deviceDeleted)=\"onDeviceDeleted($event)\"\n                                              class=\"flex gt-sm:w-1/2 min-w-80 p-4\"\n                                              [deviceSummary]=\"deviceSummary\"></app-dashboard-device>\n                    </ng-container>\n                </div>\n            </div>\n\n\n            <!-- Drive Temperatures -->\n            <div class=\"flex flex-auto w-full min-w-80 h-90 p-4\">\n                <div class=\"flex flex-col flex-auto bg-card shadow-md rounded overflow-hidden\">\n                    <div class=\"flex flex-col p-6 pr-4 pb-4\">\n                        <div class=\"flex items-center justify-between\">\n                            <div class=\"flex flex-col\">\n                                <div class=\"font-bold text-md text-secondary uppercase tracking-wider mr-4\">Temperature</div>\n                                <div class=\"text-sm text-hint font-medium\">Temperature history for each device</div>\n                            </div>\n                            <div>\n                                <button class=\"h-8 min-h-8 px-2\"\n                                        mat-button\n                                        [matMenuTriggerFor]=\"tempRangeMenu\">\n                                    <span class=\"font-medium text-sm text-hint\">{{ tempDurationKey }}</span>\n                                </button>\n                                <mat-menu #tempRangeMenu=\"matMenu\">\n                                    <button (click)=\"changeSummaryTempDuration('forever')\" mat-menu-item>forever</button>\n                                    <button (click)=\"changeSummaryTempDuration('year')\" mat-menu-item>year</button>\n                                    <button (click)=\"changeSummaryTempDuration('month')\" mat-menu-item>month</button>\n                                    <button (click)=\"changeSummaryTempDuration('week')\" mat-menu-item>week</button>\n                                    <button (click)=\"changeSummaryTempDuration('day')\" mat-menu-item>day</button>\n                                </mat-menu>\n                            </div>\n                        </div>\n\n                    </div>\n                    <div class=\"flex flex-col flex-auto\">\n                        <apx-chart #tempChart *ngIf=\"temperatureOptions\" class=\"flex-auto w-full h-full\"\n                                   [chart]=\"temperatureOptions.chart\"\n                                   [colors]=\"temperatureOptions.colors\"\n                                   [fill]=\"temperatureOptions.fill\"\n                                   [series]=\"temperatureOptions.series\"\n                                   [stroke]=\"temperatureOptions.stroke\"\n                                   [tooltip]=\"temperatureOptions.tooltip\"\n                                   [xaxis]=\"temperatureOptions.xaxis\"></apx-chart>\n                    </div>\n                </div>\n            </div>\n\n        </div>\n\n    </div>\n</div>\n\n<ng-template #emptyDashboard>\n    <div class=\"dashboard-placeholder content-layout fullwidth-basic-content-scroll\">\n        <img class=\"image\"\n             src=\"assets/images/dashboard-placeholder.png\">\n\n        <h1>No Devices Detected!</h1>\n        <p style=\"max-width:700px;\">Scrutiny includes a Collector agent that you must run on all of your systems. The Collector is responsible for detecting connected storage\n            devices and collecting S.M.A.R.T data on a configurable schedule.</p>\n\n        <p><br/>You can trigger the Collector manually by running the following command, then refreshing this page:</p>\n        <code>scrutiny-collector-metrics run</code>\n\n    </div>\n</ng-template>\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.component.scss",
    "content": "@import 'treo';\n\nexample {\n\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $accent: map-get($theme, accent);\n    $warn: map-get($theme, warn);\n    $is-dark: map-get($theme, is-dark);\n\n    example {\n\n    }\n}\n\n.dashboard-placeholder {\n    align-items: center;\n    justify-content: center;\n    padding: 32px;\n\n    img {\n        max-width:500px;\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.component.ts",
    "content": "import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    OnDestroy,\n    OnInit,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {ApexOptions, ChartComponent} from 'ng-apexcharts';\nimport {DashboardService} from 'app/modules/dashboard/dashboard.service';\nimport {MatDialog} from '@angular/material/dialog';\nimport {DashboardSettingsComponent} from 'app/layout/common/dashboard-settings/dashboard-settings.component';\nimport {AppConfig} from 'app/core/config/app.config';\nimport {ScrutinyConfigService} from 'app/core/config/scrutiny-config.service';\nimport {Router} from '@angular/router';\nimport {TemperaturePipe} from 'app/shared/temperature.pipe';\nimport {DeviceTitlePipe} from 'app/shared/device-title.pipe';\nimport {DeviceSummaryModel} from 'app/core/models/device-summary-model';\n\n@Component({\n    selector       : 'example',\n    templateUrl    : './dashboard.component.html',\n    styleUrls      : ['./dashboard.component.scss'],\n    encapsulation  : ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DashboardComponent implements OnInit, AfterViewInit, OnDestroy\n{\n    summaryData: { [key: string]: DeviceSummaryModel };\n    hostGroups: { [hostId: string]: string[] } = {}\n    temperatureOptions: ApexOptions;\n    tempDurationKey = 'week'\n    config: AppConfig;\n    showArchived: boolean;\n\n    // Private\n    private _unsubscribeAll: Subject<void>;\n    @ViewChild('tempChart', { static: false }) tempChart: ChartComponent;\n\n    /**\n     * Constructor\n     *\n     * @param {DashboardService} _dashboardService\n     * @param {ScrutinyConfigService} _configService\n     * @param {MatDialog} dialog\n     * @param {Router} router\n     */\n    constructor(\n        private _dashboardService: DashboardService,\n        private _configService: ScrutinyConfigService,\n        public dialog: MatDialog,\n        private router: Router,\n    )\n    {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void\n    {\n\n        // Subscribe to config changes\n        this._configService.config$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((config: AppConfig) => {\n\n                // check if the old config and the new config do not match.\n                const oldConfig = JSON.stringify(this.config)\n                const newConfig = JSON.stringify(config)\n\n                if(oldConfig !== newConfig){\n                    console.log(`Configuration updated: ${newConfig} vs ${oldConfig}`)\n                    // Store the config\n                    this.config = config;\n\n                    if(oldConfig){\n                        console.log('reloading component...')\n                        this.refreshComponent()\n                    }\n                }\n            });\n\n        // Get the data\n        this._dashboardService.data$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((data) => {\n\n                // Store the data\n                this.summaryData = data;\n\n                // generate group data.\n                for (const wwn in this.summaryData) {\n                    const hostid = this.summaryData[wwn].device.host_id\n                    const hostDeviceList = this.hostGroups[hostid] || []\n                    hostDeviceList.push(wwn)\n                    this.hostGroups[hostid] = hostDeviceList\n                }\n                console.log(this.hostGroups)\n\n                // Prepare the chart data\n                this._prepareChartData();\n            });\n    }\n\n    /**\n     * After view init\n     */\n    ngAfterViewInit(): void\n    {}\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void\n    {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n    private refreshComponent(): void {\n\n        const currentUrl = this.router.url;\n        this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n        this.router.onSameUrlNavigation = 'reload';\n        this.router.navigate([currentUrl]);\n    }\n\n    private _deviceDataTemperatureSeries(): any[] {\n        const deviceTemperatureSeries = []\n\n        console.log('DEVICE DATA SUMMARY', this.summaryData)\n\n        for (const wwn in this.summaryData) {\n            const deviceSummary = this.summaryData[wwn]\n            if (!deviceSummary.temp_history) {\n                continue\n            }\n\n            const deviceName = DeviceTitlePipe.deviceTitleWithFallback(deviceSummary.device, this.config.dashboard_display)\n\n            const deviceSeriesMetadata = {\n                name: deviceName,\n                data: []\n            }\n\n            for(const tempHistory of deviceSummary.temp_history){\n                const newDate = new Date(tempHistory.date);\n                let temperature;\n                switch (this.config.temperature_unit) {\n                    case 'celsius':\n                        temperature = tempHistory.temp;\n                        break\n                    case 'fahrenheit':\n                        temperature = TemperaturePipe.celsiusToFahrenheit(tempHistory.temp)\n                        break\n                }\n                deviceSeriesMetadata.data.push({\n                    x: newDate,\n                    y: temperature\n                })\n            }\n            deviceTemperatureSeries.push(deviceSeriesMetadata)\n        }\n        return deviceTemperatureSeries\n    }\n    /**\n     * Prepare the chart data from the data\n     *\n     * @private\n     */\n    private _prepareChartData(): void\n    {\n        // Account balance\n        this.temperatureOptions = {\n            chart  : {\n                animations: {\n                    speed           : 400,\n                    animateGradually: {\n                        enabled: false\n                    }\n                },\n                fontFamily: 'inherit',\n                foreColor : 'inherit',\n                width     : '100%',\n                height    : '100%',\n                type      : 'area',\n                sparkline : {\n                    enabled: true\n                }\n            },\n            colors : ['#667eea', '#9066ea', '#66c0ea', '#66ead2', '#d266ea', '#66ea90'],\n            fill   : {\n                colors : ['#b2bef4', '#c7b2f4', '#b2dff4', '#b2f4e8', '#e8b2f4', '#b2f4c7'],\n                opacity: 0.5,\n                type   : 'gradient'\n            },\n            series : this._deviceDataTemperatureSeries(),\n            stroke : {\n                curve: this.config.line_stroke,\n                width: 2\n            },\n            tooltip: {\n                theme: 'dark',\n                shared: true,\n                intersect: false,\n                x    : {\n                    format: 'MMM dd, yyyy HH:mm:ss'\n                },\n                y    : {\n\n                    formatter: (value) => {\n                        return TemperaturePipe.formatTemperature(value, this.config.temperature_unit, true) as string;\n                    }\n                }\n            },\n            xaxis: {\n                type: 'datetime',\n                labels: {\n                    datetimeUTC: false\n                }\n            }\n        };\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    deviceSummariesForHostGroup(hostGroupWWNs: string[]): DeviceSummaryModel[] {\n        const deviceSummaries: DeviceSummaryModel[] = []\n        for (const wwn of hostGroupWWNs) {\n            if (this.summaryData[wwn]) {\n                deviceSummaries.push(this.summaryData[wwn])\n            }\n        }\n        return deviceSummaries\n    }\n\n    openDialog(): void {\n        const dialogRef = this.dialog.open(DashboardSettingsComponent, {width: '600px',});\n\n        dialogRef.afterClosed().subscribe(result => {\n            console.log(`Dialog result: ${result}`);\n        });\n    }\n\n    onDeviceDeleted(wwn: string): void {\n        delete this.summaryData[wwn] // remove the device from the summary list.\n    }\n\n    onDeviceArchived(wwn: string): void {\n        this.summaryData[wwn].device.archived = true;\n    }\n\n    onDeviceUnarchived(wwn: string): void {\n        this.summaryData[wwn].device.archived = false;\n    }\n\n    /*\n    DURATION_KEY_DAY    = \"day\"\n    DURATION_KEY_WEEK    = \"week\"\n    DURATION_KEY_MONTH   = \"month\"\n    DURATION_KEY_YEAR    = \"year\"\n    DURATION_KEY_FOREVER = \"forever\"\n     */\n\n    changeSummaryTempDuration(durationKey: string): void {\n        this.tempDurationKey = durationKey\n\n        this._dashboardService.getSummaryTempData(durationKey)\n            .subscribe((tempHistoryData) => {\n\n                // given a list of device temp history, override the data in the \"summary\" object.\n                for (const wwn in this.summaryData) {\n                    // console.log(`Updating ${wwn}, length: ${this.data.data.summary[wwn].temp_history.length}`)\n                    this.summaryData[wwn].temp_history = tempHistoryData[wwn] || []\n                }\n\n                // Prepare the chart series data\n                this.tempChart.updateSeries(this._deviceDataTemperatureSeries())\n            });\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any\n    {\n        return item.id || index;\n    }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { DashboardComponent } from 'app/modules/dashboard/dashboard.component';\nimport { dashboardRoutes } from 'app/modules/dashboard/dashboard.routing';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { NgApexchartsModule } from 'ng-apexcharts';\nimport { MatTooltipModule } from '@angular/material/tooltip'\nimport { DashboardSettingsModule } from 'app/layout/common/dashboard-settings/dashboard-settings.module';\nimport { DashboardDeviceModule } from 'app/layout/common/dashboard-device/dashboard-device.module';\n\n@NgModule({\n    declarations: [\n        DashboardComponent\n    ],\n    imports: [\n        RouterModule.forChild(dashboardRoutes),\n        MatButtonModule,\n        MatDividerModule,\n        MatTooltipModule,\n        MatIconModule,\n        MatMenuModule,\n        MatProgressBarModule,\n        MatSortModule,\n        MatTableModule,\n        NgApexchartsModule,\n        SharedModule,\n        DashboardSettingsModule,\n        DashboardDeviceModule\n    ]\n})\nexport class DashboardModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.resolvers.ts",
    "content": "import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {DashboardService} from 'app/modules/dashboard/dashboard.service';\nimport {DeviceSummaryModel} from 'app/core/models/device-summary-model';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DashboardResolver implements Resolve<any> {\n    /**\n     * Constructor\n     *\n     * @param {FinanceService} _dashboardService\n     */\n    constructor(\n        private _dashboardService: DashboardService\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Resolver\n     *\n     * @param route\n     * @param state\n     */\n    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<{ [p: string]: DeviceSummaryModel }> {\n        return this._dashboardService.getSummaryData();\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.routing.ts",
    "content": "import { Route } from '@angular/router';\nimport { DashboardComponent } from 'app/modules/dashboard/dashboard.component';\nimport {DashboardResolver} from 'app/modules/dashboard/dashboard.resolvers';\n\nexport const dashboardRoutes: Route[] = [\n    {\n        path     : '',\n        component: DashboardComponent,\n        resolve  : {\n            sales: DashboardResolver\n        }\n    }\n];\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.service.spec.ts",
    "content": "import {HttpClient} from '@angular/common/http';\nimport {DashboardService} from './dashboard.service';\nimport {of} from 'rxjs';\nimport {summary} from 'app/data/mock/summary/data'\nimport {temp_history} from 'app/data/mock/summary/temp_history'\nimport {DeviceSummaryModel} from 'app/core/models/device-summary-model';\nimport {SmartTemperatureModel} from 'app/core/models/measurements/smart-temperature-model';\n\ndescribe('DashboardService', () => {\n    let service: DashboardService;\n    let httpClientSpy: jasmine.SpyObj<HttpClient>;\n\n    beforeEach(() => {\n        httpClientSpy = jasmine.createSpyObj('HttpClient', ['get']);\n        service = new DashboardService(httpClientSpy);\n    });\n\n    it('should unwrap and return getSummaryData() (HttpClient called once)', (done: DoneFn) => {\n        httpClientSpy.get.and.returnValue(of(summary));\n\n        service.getSummaryData().subscribe(value => {\n            expect(value).toBe(summary.data.summary as { [key: string]: DeviceSummaryModel });\n            done();\n        });\n        expect(httpClientSpy.get.calls.count())\n            .withContext('one call')\n            .toBe(1);\n    });\n\n    it('should unwrap and return getSummaryTempData() (HttpClient called once)', (done: DoneFn) => {\n        // const expectedHeroes: any[] =\n        //     [{ id: 1, name: 'A' }, { id: 2, name: 'B' }];\n\n        httpClientSpy.get.and.returnValue(of(temp_history));\n\n        service.getSummaryTempData('weekly').subscribe(value => {\n            expect(value).toBe(temp_history.data.temp_history as { [key: string]: SmartTemperatureModel[] });\n            done();\n        });\n        expect(httpClientSpy.get.calls.count())\n            .withContext('one call')\n            .toBe(1);\n    });\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/dashboard/dashboard.service.ts",
    "content": "import {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {map, tap} from 'rxjs/operators';\nimport {getBasePath} from 'app/app.routing';\nimport {DeviceSummaryResponseWrapper} from 'app/core/models/device-summary-response-wrapper';\nimport {DeviceSummaryModel} from 'app/core/models/device-summary-model';\nimport {SmartTemperatureModel} from 'app/core/models/measurements/smart-temperature-model';\nimport {DeviceSummaryTempResponseWrapper} from 'app/core/models/device-summary-temp-response-wrapper';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DashboardService {\n    // Observables\n    private _data: BehaviorSubject<{ [p: string]: DeviceSummaryModel }>;\n\n    /**\n     * Constructor\n     *\n     * @param {HttpClient} _httpClient\n     */\n    constructor(\n        private _httpClient: HttpClient\n    )\n    {\n        // Set the private defaults\n        this._data = new BehaviorSubject(null);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for data\n     */\n    get data$(): Observable<{ [p: string]: DeviceSummaryModel }> {\n        return this._data.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Get data\n     */\n    getSummaryData(): Observable<{ [key: string]: DeviceSummaryModel }> {\n        return this._httpClient.get(getBasePath() + '/api/summary').pipe(\n            map((response: DeviceSummaryResponseWrapper) => {\n                // console.log(\"FILTERING=----\", response.data.summary)\n                return response.data.summary\n            }),\n            tap((response: { [key: string]: DeviceSummaryModel }) => {\n                this._data.next(response);\n            })\n        );\n    }\n\n    getSummaryTempData(durationKey: string): Observable<{ [key: string]: SmartTemperatureModel[] }> {\n        const params = {}\n        if (durationKey) {\n            params['duration_key'] = durationKey\n        }\n\n        return this._httpClient.get(getBasePath() + '/api/summary/temp', {params: params}).pipe(\n            map((response: DeviceSummaryTempResponseWrapper) => {\n                return response.data.temp_history\n            })\n        );\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.component.html",
    "content": "<div class=\"flex flex-col flex-auto w-full p-8 xs:p-2\">\n\n    <div class=\"flex flex-wrap w-full\">\n\n        <div class=\"flex items-center justify-between w-full my-4 px-4 xs:pr-0\">\n            <div class=\"mr-6\">\n                <h2 class=\"m-0\">Drive Details - {{device | deviceTitle:config.dashboard_display}} </h2>\n                <div class=\"text-secondary tracking-tight\">Dive into S.M.A.R.T data</div>\n            </div>\n            <!-- Action buttons -->\n            <div class=\"flex items-center\">\n                <button class=\"xs:hidden\"\n                        matTooltip=\"not yet implemented\"\n                        mat-stroked-button>\n                    <mat-icon class=\"icon-size-20\"\n                              [svgIcon]=\"'save'\"></mat-icon>\n                    <span class=\"ml-2\">Export</span>\n                </button>\n                <button class=\"ml-2 xs:hidden\"\n                        matTooltip=\"not yet implemented\"\n                        mat-stroked-button>\n                    <mat-icon class=\"icon-size-20 rotate-90 mirror\"\n                              [svgIcon]=\"'tune'\"></mat-icon>\n                    <span class=\"ml-2\">Settings</span>\n                </button>\n\n                <!-- Actions menu (visible on xs) -->\n                <div class=\"hidden xs:flex\">\n                    <button [matMenuTriggerFor]=\"actionsMenu\"\n                            mat-icon-button>\n                        <mat-icon [svgIcon]=\"'more_vert'\"></mat-icon>\n                    </button>\n                    <mat-menu #actionsMenu=\"matMenu\">\n                        <button mat-menu-item\n                                matTooltip=\"not yet implemented\">\n                            <mat-icon class=\"icon-size-20\"\n                                      [svgIcon]=\"'save'\"></mat-icon>\n                            <span class=\"ml-2\">Export</span>\n                        </button>\n                        <button mat-menu-item\n                                (click)=\"openDialog()\">\n                            <mat-icon class=\"icon-size-20 rotate-90 mirror\"\n                                      [svgIcon]=\"'tune'\"></mat-icon>\n                            <span class=\"ml-2\">Settings</span>\n                        </button>\n                    </mat-menu>\n                </div>\n            </div>\n        </div>\n\n\n        <!-- Card -->\n        <div class=\"flex flex-auto w-1/4 p-4 lt-md:w-full\">\n            <treo-card class=\"flex flex-auto p-4 flex-col flex-auto filter-list\">\n                <div class=\"flex flex-col grid grid-cols-2\">\n                    <div *ngIf=\"device\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>\n                            <span class=\"inline-flex items-center font-bold text-xs px-2 py-2px rounded-full tracking-wide uppercase\"\n                                  [ngClass]=\"{'red-200': deviceStatusForModelWithThreshold(device, !!smart_results, config.metrics.status_threshold) == 'failed',\n                                  'green-200': device?.device_status == 0}\">\n                                <span class=\"w-2 h-2 rounded-full mr-2\"\n                                      [ngClass]=\"{'bg-red': device?.device_status != 0,\n                                  'bg-green': device?.device_status == 0}\"></span>\n                                <span\n                                    class=\"pr-2px leading-relaxed whitespace-no-wrap\">{{device | deviceStatus:!!smart_results:config.metrics.status_threshold:true}}</span>\n                            </span>\n                        </div>\n                        <div class=\"text-secondary text-md\">Status</div>\n                    </div>\n\n                    <div *ngIf=\"device?.host_id\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.host_id}}</div>\n                        <div class=\"text-secondary text-md\">Host ID</div>\n                    </div>\n\n                    <div *ngIf=\"device?.device_uuid\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.device_uuid}}</div>\n                        <div class=\"text-secondary text-md\">Device UUID</div>\n                    </div>\n                    <div *ngIf=\"device?.device_label\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.device_label}}</div>\n                        <div class=\"text-secondary text-md\">Device Label</div>\n                    </div>\n\n                    <div *ngIf=\"device?.device_type && device?.device_type != 'ata' && device?.device_type != 'scsi'\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.device_type | uppercase}}</div>\n                        <div class=\"text-secondary text-md\">Device Type</div>\n                    </div>\n                    <div *ngIf=\"device?.manufacturer\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.manufacturer}}</div>\n                        <div class=\"text-secondary text-md\">Model Family</div>\n                    </div>\n                    <div class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.model_name}}</div>\n                        <div class=\"text-secondary text-md\">Device Model</div>\n                    </div>\n                    <div class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.serial_number}}</div>\n                        <div class=\"text-secondary text-md\">Serial Number</div>\n                    </div>\n                    <div class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.wwn}}</div>\n                        <div class=\"text-secondary text-md\">LU WWN Device Id</div>\n                    </div>\n                    <div class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.firmware}}</div>\n                        <div class=\"text-secondary text-md\">Firmware Version</div>\n                    </div>\n                    <div class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.capacity | fileSize:config.file_size_si_units}}</div>\n                        <div class=\"text-secondary text-md\">Capacity</div>\n                    </div>\n                    <div *ngIf=\"device?.rotational_speed\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.rotational_speed}} RPM</div>\n                        <div class=\"text-secondary text-md\">Rotation Rate</div>\n                    </div>\n                    <div *ngIf=\"device?.device_protocol\" class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{device?.device_protocol}}</div>\n                        <div class=\"text-secondary text-md\">Protocol</div>\n                    </div>\n                    <div class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{smart_results[0]?.power_cycle_count}}</div>\n                        <div class=\"text-secondary text-md\">Power Cycle Count</div>\n                    </div>\n                    <div *ngIf=\"smart_results[0]?.power_on_hours\"  class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div matTooltip=\"{{humanizeDuration(smart_results[0]?.power_on_hours * 60 * 60 * 1000, { conjunction: ' and ', serialComma: false })}}\">{{ smart_results[0]?.power_on_hours | deviceHours:config.powered_on_hours_unit:{ round: true, largest: 1, units: ['y', 'd', 'h'] } }}</div>\n                        <div class=\"text-secondary text-md\">Powered On</div>\n                    </div>\n                    <div class=\"my-2 col-span-2 lt-md:col-span-1\">\n                        <div>{{smart_results[0]?.temp | temperature:config.temperature_unit:true}}</div>\n                        <div class=\"text-secondary text-md\">Temperature</div>\n                    </div>\n                </div>\n            </treo-card>\n        </div>\n        <!-- S.M.A.R.T. Data table -->\n        <div class=\"flex flex-auto w-3/4 p-4 lt-md:w-full\">\n            <div class=\"flex flex-col flex-auto w-full bg-card shadow-md rounded \">\n                <div class=\"p-6\">\n                    <div class=\"font-bold text-md text-secondary uppercase tracking-wider\">S.M.A.R.T {{device?.device_protocol}} Attributes</div>\n                    <div class=\"text-sm text-hint font-medium\">{{this.smartAttributeDataSource.data.length}} visible, {{getHiddenAttributes()}} hidden</div>\n                </div>\n                <div class=\"overflow-auto\">\n                    <table class=\"w-full bg-transparent\"\n                           mat-table\n                           matSort\n                           multiTemplateDataRows\n                           [dataSource]=\"smartAttributeDataSource\"\n                           [trackBy]=\"trackByFn\"\n                           #smartAttributeTable>\n\n                        <!-- Status -->\n                        <ng-container matColumnDef=\"status\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    Status\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"inline-flex items-center font-bold text-xs px-2 py-2px rounded-full tracking-wide uppercase\"\n                                      [ngClass]=\"{'red-200': getAttributeStatusName(attribute.status) === 'failed',\n                                      'green-200': getAttributeStatusName(attribute.status) === 'passed',\n                                      'yellow-200': getAttributeStatusName(attribute.status) === 'warn'\n                                      }\">\n                                    <span class=\"w-2 h-2 rounded-full mr-2\"\n                                          [ngClass]=\"{'bg-red': getAttributeStatusName(attribute.status) === 'failed',\n                                      'bg-green': getAttributeStatusName(attribute.status) === 'passed',\n                                      'bg-yellow': getAttributeStatusName(attribute.status) === 'warn'}\"></span>\n                                    <span class=\"pr-2px leading-relaxed whitespace-no-wrap\" matTooltip=\"{{attribute.status_reason}}\">{{getAttributeStatusName(attribute.status)}}</span>\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- ID -->\n                        <ng-container matColumnDef=\"id\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    ID\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"pr-6 font-medium text-sm text-secondary whitespace-no-wrap\">\n                                    {{attribute.attribute_id}} ({{toHex(attribute.attribute_id)}})\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- Name -->\n                        <ng-container matColumnDef=\"name\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    Name\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"pr-6 whitespace-no-wrap\" matTooltip=\"click for more details.\">\n                                    {{getAttributeName(attribute)}} <mat-icon *ngIf=\"getAttributeDescription(attribute)\" class=\"icon-size-10\" [svgIcon]=\"'info'\"></mat-icon>\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- Value -->\n                        <ng-container matColumnDef=\"value\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    Value\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"pr-6 whitespace-no-wrap\" matTooltip=\"{{getAttributeValueType(attribute)}}\">\n                                    {{getAttributeValue(attribute)}}\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- Worst -->\n                        <ng-container matColumnDef=\"worst\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    Worst\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"pr-6 whitespace-no-wrap\">\n                                    {{getAttributeWorst(attribute)}}\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- Threshold -->\n                        <ng-container matColumnDef=\"thresh\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    Threshold\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"pr-6 whitespace-no-wrap\">\n                                    {{getAttributeThreshold(attribute)}}\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- Ideal -->\n                        <ng-container matColumnDef=\"ideal\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    Ideal\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"pr-6 font-medium whitespace-no-wrap\">\n                                    {{getAttributeIdeal(attribute) }}\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- Observed Failure Rate -->\n                        <ng-container matColumnDef=\"failure\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\" matTooltip=\"Failure rate is based on data provided by BackBlaze. The current attribute value is matched against the observed failure categories and an annual failure rate is determined.\">\n                                    Failure Rate <mat-icon [svgIcon]=\"'info'\"></mat-icon>\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n                                <span class=\"pr-6 font-medium whitespace-no-wrap\">\n                                    {{attribute.failure_rate | percent}}\n                                </span>\n                            </td>\n                        </ng-container>\n\n                        <!-- History -->\n                        <ng-container matColumnDef=\"history\">\n                            <th class=\"bg-cool-gray-50 dark:bg-cool-gray-700 border-t\"\n                                mat-header-cell\n                                mat-sort-header\n                                *matHeaderCellDef>\n                                <span class=\"whitespace-no-wrap\">\n                                    History\n                                </span>\n                            </th>\n                            <td mat-cell\n                                *matCellDef=\"let attribute\">\n\n                                <span class=\"font-medium whitespace-no-wrap\">\n                                    <apx-chart\n                                        [series]=\"attribute.chartData\"\n                                        [chart]=\"commonSparklineOptions.chart\"\n                                        [tooltip]=\"commonSparklineOptions.tooltip\"\n                                        [stroke]=\"commonSparklineOptions.stroke\"\n                                        [annotations]=\"attribute.chartDataReferenceLine\"\n                                    ></apx-chart>\n                                </span>\n                            </td>\n                        </ng-container>\n\n\n                        <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\n                        <ng-container matColumnDef=\"expandedDetail\">\n                            <td mat-cell *matCellDef=\"let attribute\" [attr.colspan]=\"smartAttributeTableColumns.length\">\n\n\n\n                                <div class=\"attribute-detail\"\n                                     [@detailExpand]=\"attribute == expandedAttribute ? 'expanded' : 'collapsed'\">\n\n                                    <div class=\"flex flex-auto w-1/3 min-w-80 py-4\">\n                                        <div class=\"flex flex-col flex-auto justify-end text-md pb-3\">\n                                            {{getAttributeDescription(attribute)}}\n                                        </div>\n                                    </div>\n                                    <div class=\"flex flex-auto w-2/3 min-w-80\">\n                                        <div class=\"flex flex-col flex-auto justify-end text-md px-6 pb-3\">\n                                            <div class=\"flex items-center justify-between py-3 border-b last:border-b-0 ng-star-inserted\">\n                                                <div class=\"flex items-center w-1/4\">Type</div>\n                                                <div class=\"flex items-center w-1/4\">Value</div>\n                                                <div class=\"flex items-center w-1/4\">Worst/Thresh</div>\n                                                <div class=\"flex items-center w-1/4\">Failure %</div>\n                                            </div>\n\n                                            <div class=\"flex items-center justify-between py-3 border-b last:border-b-0 ng-star-inserted\">\n                                                <div class=\"flex items-center w-1/4\">\n                                                    <div class=\"flex-shrink-0 w-2 h-2 mr-3 rounded-full\"\n                                                         [ngClass]=\"{'bg-red': getAttributeScrutinyStatusName(attribute.status) === 'failed',\n                                                          'bg-green': getAttributeScrutinyStatusName(attribute.status) === 'passed',\n                                                          'bg-yellow': getAttributeScrutinyStatusName(attribute.status) === 'warn'}\"></div>\n                                                    <div class=\"truncate\">Scrutiny</div>\n                                                </div>\n                                                <div class=\"w-1/4 items-center font-medium\">{{getAttributeValue(attribute)}}</div>\n                                                <div class=\"w-1/4 items-center text-secondary\">--</div>\n                                                <div class=\"w-1/4 items-center text-secondary\">{{(attribute.failure_rate | percent) || '--'}}</div>\n                                            </div>\n\n                                            <div class=\"flex items-center justify-between py-3 border-b last:border-b-0 ng-star-inserted\">\n                                                <div class=\"flex items-center w-1/4\">\n                                                    <div class=\"flex-shrink-0 w-2 h-2 mr-3 rounded-full\"\n                                                         [ngClass]=\"{'bg-red': getAttributeSmartStatusName(attribute.status) === 'failed',\n                                                          'bg-green': getAttributeSmartStatusName(attribute.status) === 'passed'}\"\n                                                    ></div>\n                                                    <div class=\"truncate\">Normalized</div>\n                                                </div>\n                                                <div class=\"w-1/4 items-center font-medium\">{{attribute.value}}</div>\n                                                <div class=\"w-1/4 items-center text-secondary\">{{getAttributeWorst(attribute) || '--' }}/{{getAttributeThreshold(attribute)}}</div>\n                                                <div class=\"w-1/4 items-center text-secondary\">--</div>\n                                            </div>\n\n                                            <div class=\"flex items-center justify-between py-3 border-b last:border-b-0 ng-star-inserted\">\n                                                <div class=\"flex items-center w-1/4\">\n                                                    <div class=\"flex-shrink-0 w-2 h-2 mr-3 rounded-full\"></div>\n                                                    <div class=\"truncate\">Raw</div>\n                                                </div>\n                                                <div class=\"w-1/4 items-center font-medium\">{{attribute.raw_value}}</div>\n                                                <div class=\"w-1/4 items-center text-secondary\">--</div>\n                                                <div class=\"w-1/4 items-center text-secondary\">--</div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </td>\n                        </ng-container>\n\n\n                        <!-- Footer -->\n                        <ng-container matColumnDef=\"recentOrdersTableFooter\">\n                            <td class=\"px-3 border-none\"\n                                mat-footer-cell\n                                *matFooterCellDef\n                                colspan=\"6\">\n                                <button mat-button\n                                        (click)=\"toggleOnlyCritical()\"\n                                        [color]=\"'primary'\">\n                                    <span *ngIf=\"onlyCritical\">Show all attributes</span>\n                                    <span *ngIf=\"!onlyCritical\">Show critical attributes</span>\n                                </button>\n                            </td>\n                        </ng-container>\n\n                        <tr mat-header-row\n                            *matHeaderRowDef=\"smartAttributeTableColumns\"></tr>\n                        <tr class=\"attribute-row h-16\"\n                            mat-row\n                            [ngClass]=\"{'yellow-50': getAttributeCritical(row)}\"\n                            [class.attribute-expanded-row]=\"expandedAttribute === row\"\n                            (click)=\"expandedAttribute = expandedAttribute === row ? null : row\"\n                            *matRowDef=\"let row; columns: smartAttributeTableColumns;\"></tr>\n                        <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"attribute-detail-row\"></tr>\n                        <tr class=\"h-16\"\n                            mat-footer-row\n                            *matFooterRowDef=\"['recentOrdersTableFooter']\"></tr>\n                    </table>\n                </div>\n            </div>\n        </div>\n\n    </div>\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.component.scss",
    "content": "@import 'treo';\n\ndetail {\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n    $background: map-get($theme, background);\n    $foreground: map-get($theme, foreground);\n    $primary: map-get($theme, primary);\n    $accent: map-get($theme, accent);\n    $warn: map-get($theme, warn);\n    $is-dark: map-get($theme, is-dark);\n\n    detail {\n    }\n\n\n}\n\n//table {\n//    width: 100%;\n//}\n\n$primary: map-get($theme, primary);\n$is-dark: map-get($theme, is-dark);\ntr.attribute-detail-row {\n    height: 0;\n}\n\n//tr.attribute-row:not(.attribute-expanded-row):hover {\n//    @if ($is-dark) {\n//        background: rgba(0, 0, 0, 0.05);\n//    } @else {\n//        background: map-get($primary, 50);\n//    }\n//}\n\ntr.attribute-row:not(.attribute-expanded-row):active {\n    background: #efefef;\n}\n\n.attribute-row td {\n    border-bottom-width: 0;\n}\n\n.attribute-detail {\n    overflow: hidden;\n    display: flex;\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.component.ts",
    "content": "import humanizeDuration from 'humanize-duration';\nimport {AfterViewInit, Component, Inject, LOCALE_ID, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ApexOptions} from 'ng-apexcharts';\nimport {AppConfig} from 'app/core/config/app.config';\nimport {DetailService} from './detail.service';\nimport {DetailSettingsComponent} from 'app/layout/common/detail-settings/detail-settings.component';\nimport {MatDialog} from '@angular/material/dialog';\nimport {MatSort} from '@angular/material/sort';\nimport {MatTableDataSource} from '@angular/material/table';\nimport {Subject} from 'rxjs';\nimport {ScrutinyConfigService} from 'app/core/config/scrutiny-config.service';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {formatDate} from '@angular/common';\nimport {takeUntil} from 'rxjs/operators';\nimport {DeviceModel} from 'app/core/models/device-model';\nimport {SmartModel} from 'app/core/models/measurements/smart-model';\nimport {SmartAttributeModel} from 'app/core/models/measurements/smart-attribute-model';\nimport {AttributeMetadataModel} from 'app/core/models/thresholds/attribute-metadata-model';\nimport {DeviceStatusPipe} from 'app/shared/device-status.pipe';\n\n// from Constants.go - these must match\nconst AttributeStatusPassed = 0\nconst AttributeStatusFailedSmart = 1\nconst AttributeStatusWarningScrutiny = 2\nconst AttributeStatusFailedScrutiny = 4\n\n\n@Component({\n    selector: 'detail',\n    templateUrl: './detail.component.html',\n    styleUrls: ['./detail.component.scss'],\n    animations: [\n        trigger('detailExpand', [\n            state('collapsed', style({height: '0px', minHeight: '0'})),\n            state('expanded', style({height: '*'})),\n            transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n        ]),\n    ],\n})\n\nexport class DetailComponent implements OnInit, AfterViewInit, OnDestroy {\n\n    /**\n     * Constructor\n     *\n     * @param {DetailService} _detailService\n     * @param {MatDialog} dialog\n     * @param {ScrutinyConfigService} _configService\n     * @param {string} locale\n     */\n    constructor(\n        private _detailService: DetailService,\n        public dialog: MatDialog,\n        private _configService: ScrutinyConfigService,\n        @Inject(LOCALE_ID) public locale: string\n    ) {\n        // Set the private defaults\n        this._unsubscribeAll = new Subject();\n\n        // Set the defaults\n        this.smartAttributeDataSource = new MatTableDataSource();\n        // this.recentTransactionsTableColumns = ['status', 'id', 'name', 'value', 'worst', 'thresh'];\n        this.smartAttributeTableColumns = ['status', 'id', 'name', 'value', 'worst', 'thresh', 'ideal', 'failure', 'history'];\n\n        this.systemPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n    }\n\n    config: AppConfig;\n\n    onlyCritical = true;\n    // data: any;\n    expandedAttribute: SmartAttributeModel | null;\n\n    metadata: { [p: string]: AttributeMetadataModel } | { [p: number]: AttributeMetadataModel };\n    device: DeviceModel;\n    // tslint:disable-next-line:variable-name\n    smart_results: SmartModel[];\n\n    commonSparklineOptions: Partial<ApexOptions>;\n    smartAttributeDataSource: MatTableDataSource<SmartAttributeModel>;\n    smartAttributeTableColumns: string[];\n\n    @ViewChild('smartAttributeTable', {read: MatSort})\n    smartAttributeTableMatSort: MatSort;\n\n    // Private\n    private _unsubscribeAll: Subject<void>;\n    private systemPrefersDark: boolean;\n\n    readonly humanizeDuration = humanizeDuration;\n\n    deviceStatusForModelWithThreshold = DeviceStatusPipe.deviceStatusForModelWithThreshold\n    // -----------------------------------------------------------------------------------------------------\n    // @ Lifecycle hooks\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * On init\n     */\n    ngOnInit(): void {\n        // Subscribe to config changes\n        this._configService.config$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((config: AppConfig) => {\n\n                this.config = config;\n            });\n\n        // Get the data\n        this._detailService.data$\n            .pipe(takeUntil(this._unsubscribeAll))\n            .subscribe((respWrapper) => {\n\n                // Store the data\n                // this.data = data;\n                this.device = respWrapper.data.device;\n                this.smart_results = respWrapper.data.smart_results\n                this.metadata = respWrapper.metadata;\n\n\n                // Store the table data\n                this.smartAttributeDataSource.data = this._generateSmartAttributeTableDataSource(this.smart_results);\n\n                // Prepare the chart data\n                this._prepareChartData();\n            });\n    }\n\n    /**\n     * After view init\n     */\n    ngAfterViewInit(): void {\n        // Make the data source sortable\n        this.smartAttributeDataSource.sort = this.smartAttributeTableMatSort;\n    }\n\n    /**\n     * On destroy\n     */\n    ngOnDestroy(): void {\n        // Unsubscribe from all subscriptions\n        this._unsubscribeAll.next();\n        this._unsubscribeAll.complete();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Private methods\n    // -----------------------------------------------------------------------------------------------------\n\n    getAttributeStatusName(attributeStatus: number): string {\n        // tslint:disable:no-bitwise\n\n        if (attributeStatus === AttributeStatusPassed) {\n            return 'passed'\n\n        } else if ((attributeStatus & AttributeStatusFailedScrutiny) !== 0 || (attributeStatus & AttributeStatusFailedSmart) !== 0) {\n            return 'failed'\n        } else if ((attributeStatus & AttributeStatusWarningScrutiny) !== 0) {\n            return 'warn'\n        }\n        return ''\n        // tslint:enable:no-bitwise\n    }\n\n    getAttributeScrutinyStatusName(attributeStatus: number): string {\n        // tslint:disable:no-bitwise\n        if ((attributeStatus & AttributeStatusFailedScrutiny) !== 0) {\n            return 'failed'\n        } else if ((attributeStatus & AttributeStatusWarningScrutiny) !== 0) {\n            return 'warn'\n        } else {\n            return 'passed'\n        }\n        // tslint:enable:no-bitwise\n    }\n\n    getAttributeSmartStatusName(attributeStatus: number): string {\n        // tslint:disable:no-bitwise\n        if ((attributeStatus & AttributeStatusFailedSmart) !== 0) {\n            return 'failed'\n        } else {\n            return 'passed'\n        }\n        // tslint:enable:no-bitwise\n    }\n\n\n    getAttributeName(attributeData: SmartAttributeModel): string {\n        const attributeMetadata = this.metadata[attributeData.attribute_id]\n        if (!attributeMetadata) {\n            return 'Unknown Attribute Name'\n        } else {\n            return attributeMetadata.display_name\n        }\n    }\n\n    getAttributeDescription(attributeData: SmartAttributeModel): string {\n        const attributeMetadata = this.metadata[attributeData.attribute_id]\n        if (!attributeMetadata) {\n            return 'Unknown'\n        } else {\n            return attributeMetadata.description\n        }\n    }\n\n    getAttributeValue(attributeData: SmartAttributeModel): number {\n        if (this.isAta()) {\n            const attributeMetadata = this.metadata[attributeData.attribute_id]\n            if (!attributeMetadata) {\n                return attributeData.value\n            } else if (attributeMetadata.display_type === 'raw') {\n                return attributeData.raw_value\n            } else if (attributeMetadata.display_type === 'transformed' && attributeData.transformed_value) {\n                return attributeData.transformed_value\n            } else {\n                return attributeData.value\n            }\n        } else {\n            return attributeData.value\n        }\n    }\n\n    getAttributeValueType(attributeData: SmartAttributeModel): string {\n        if (this.isAta()) {\n            const attributeMetadata = this.metadata[attributeData.attribute_id]\n            if (!attributeMetadata) {\n                return ''\n            } else {\n                return attributeMetadata.display_type\n            }\n        } else {\n            return ''\n        }\n    }\n\n    getAttributeIdeal(attributeData: SmartAttributeModel): string {\n        if (this.isAta()) {\n            return this.metadata[attributeData.attribute_id]?.display_type === 'raw' ? this.metadata[attributeData.attribute_id]?.ideal : ''\n        } else {\n            return this.metadata[attributeData.attribute_id]?.ideal\n        }\n    }\n\n    getAttributeWorst(attributeData: SmartAttributeModel): number | string {\n        const attributeMetadata = this.metadata[attributeData.attribute_id]\n        if (!attributeMetadata) {\n            return attributeData.worst\n        } else {\n            return attributeMetadata?.display_type === 'normalized' ? attributeData.worst : ''\n        }\n    }\n\n    getAttributeThreshold(attributeData: SmartAttributeModel): number | string {\n        if (this.isAta()) {\n            const attributeMetadata = this.metadata[attributeData.attribute_id]\n            if (!attributeMetadata || attributeMetadata.display_type === 'normalized') {\n                return attributeData.thresh\n            } else {\n                // if(this.data.metadata[attribute_data.attribute_id].observed_thresholds){\n                //\n                // } else {\n                // }\n                // return ''\n                return attributeData.thresh\n            }\n        } else {\n            return (attributeData.thresh === -1 ? '' : attributeData.thresh)\n        }\n    }\n\n    getAttributeCritical(attributeData: SmartAttributeModel): boolean {\n        return this.metadata[attributeData.attribute_id]?.critical\n    }\n\n    getHiddenAttributes(): number {\n        if (!this.smart_results || this.smart_results.length === 0) {\n            return 0\n        }\n\n        let attributesLength = 0\n        const attributes = this.smart_results[0]?.attrs\n        if (attributes) {\n            attributesLength = Object.keys(attributes).length\n        }\n\n        return attributesLength - this.smartAttributeDataSource.data.length\n    }\n\n    isAta(): boolean {\n        return this.device.device_protocol === 'ATA'\n    }\n\n    isScsi(): boolean {\n        return this.device.device_protocol === 'SCSI'\n    }\n\n    isNvme(): boolean {\n        return this.device.device_protocol === 'NVMe'\n    }\n\n    private _generateSmartAttributeTableDataSource(smartResults: SmartModel[]): SmartAttributeModel[] {\n        const smartAttributeDataSource: SmartAttributeModel[] = [];\n\n        if (smartResults.length === 0) {\n            return smartAttributeDataSource\n        }\n        const latestSmartResult = smartResults[0];\n        let attributes: { [p: string]: SmartAttributeModel } = {}\n        if (this.isScsi()) {\n            this.smartAttributeTableColumns = ['status', 'name', 'value', 'thresh', 'history'];\n            attributes = latestSmartResult.attrs\n        } else if (this.isNvme()) {\n            this.smartAttributeTableColumns = ['status', 'name', 'value', 'thresh', 'ideal', 'history'];\n            attributes = latestSmartResult.attrs\n        } else {\n            // ATA\n            attributes = latestSmartResult.attrs\n            this.smartAttributeTableColumns = ['status', 'id', 'name', 'value', 'thresh', 'ideal', 'failure', 'history'];\n        }\n\n        for (const attrId in attributes) {\n            const attr = attributes[attrId]\n\n            // chart history data\n            if (!attr.chartData) {\n\n\n                const attrHistory = []\n                for (const smartResult of smartResults) {\n                    // attrHistory.push(this.getAttributeValue(smart_result.attrs[attrId]))\n\n                    const chartDatapoint = {\n                        x: formatDate(smartResult.date, 'MMMM dd, yyyy - HH:mm', this.locale),\n                        y: this.getAttributeValue(smartResult.attrs[attrId])\n                    }\n                    const attributeStatusName = this.getAttributeStatusName(smartResult.attrs[attrId].status)\n                    if (attributeStatusName === 'failed') {\n                        chartDatapoint['strokeColor'] = '#F05252'\n                        chartDatapoint['fillColor'] = '#F05252'\n                    } else if (attributeStatusName === 'warn') {\n                        chartDatapoint['strokeColor'] = '#C27803'\n                        chartDatapoint['fillColor'] = '#C27803'\n                    }\n                    attrHistory.push(chartDatapoint)\n                }\n\n                // var rawHistory = (attr.history || []).map(hist_attr => this.getAttributeValue(hist_attr)).reverse()\n                // rawHistory.push(this.getAttributeValue(attr))\n\n                attributes[attrId].chartData = [\n                    {\n                        name: 'chart-line-sparkline',\n                        // attrHistory needs to be reversed, so the newest data is on the right\n                        // fixes #339\n                        data: attrHistory.reverse()\n                    }\n                ]\n            }\n            // determine when to include the attributes in table.\n\n            if (!this.onlyCritical || this.onlyCritical && this.metadata[attr.attribute_id]?.critical || attr.value < attr.thresh) {\n                smartAttributeDataSource.push(attr)\n            }\n        }\n        return smartAttributeDataSource\n    }\n\n    /**\n     * Prepare the chart data from the data\n     *\n     * @private\n     */\n    private _prepareChartData(): void {\n\n        // Account balance\n        this.commonSparklineOptions = {\n            chart: {\n                type: 'bar',\n                width: 100,\n                height: 25,\n                sparkline: {\n                    enabled: true\n                },\n                animations: {\n                    enabled: false\n                }\n            },\n            // theme:{\n            //     // @ts-ignore\n            //     // mode:\n            //     mode: 'dark',\n            // },\n            tooltip: {\n                fixed: {\n                    enabled: false\n                },\n                x: {\n                    show: true\n                },\n                y: {\n                    title: {\n                        formatter: (seriesName) => {\n                            return '';\n                        }\n                    }\n                },\n                marker: {\n                    show: false\n                },\n                theme: this.determineTheme(this.config)\n\n            },\n            stroke: {\n                width: 2,\n                colors: ['#667EEA']\n            }\n        };\n    }\n\n    private determineTheme(config: AppConfig): string {\n        if (config.theme === 'system') {\n            return this.systemPrefersDark ? 'dark' : 'light'\n        } else {\n            return config.theme\n        }\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    toHex(decimalNumb: number | string): string {\n        return '0x' + Number(decimalNumb).toString(16).padStart(2, '0').toUpperCase()\n    }\n\n    toggleOnlyCritical(): void {\n        this.onlyCritical = !this.onlyCritical\n        this.smartAttributeDataSource.data = this._generateSmartAttributeTableDataSource(this.smart_results);\n    }\n\n    openDialog(): void {\n        const dialogRef = this.dialog.open(DetailSettingsComponent);\n\n        dialogRef.afterClosed().subscribe(result => {\n            console.log(`Dialog result: ${result}`);\n        });\n    }\n\n    /**\n     * Track by function for ngFor loops\n     *\n     * @param index\n     * @param item\n     */\n    trackByFn(index: number, item: any): any {\n        return index;\n        // return item.id || index;\n    }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { DetailComponent } from 'app/modules/detail/detail.component';\nimport { detailRoutes } from 'app/modules/detail/detail.routing';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip'\nimport { NgApexchartsModule } from 'ng-apexcharts';\nimport { TreoCardModule } from '@treo/components/card';\nimport {DetailSettingsModule} from 'app/layout/common/detail-settings/detail-settings.module';\n\n@NgModule({\n    declarations: [\n        DetailComponent\n    ],\n    imports     : [\n        RouterModule.forChild(detailRoutes),\n        MatButtonModule,\n        MatDividerModule,\n        MatTooltipModule,\n        MatIconModule,\n        MatMenuModule,\n        MatProgressBarModule,\n        MatSortModule,\n        MatTableModule,\n        NgApexchartsModule,\n        TreoCardModule,\n        SharedModule,\n        DetailSettingsModule,\n    ]\n})\nexport class DetailModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.resolvers.ts",
    "content": "import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {DetailService} from 'app/modules/detail/detail.service';\nimport {DeviceDetailsResponseWrapper} from 'app/core/models/device-details-response-wrapper';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DetailResolver implements Resolve<any> {\n    /**\n     * Constructor\n     *\n     * @param {FinanceService} _detailService\n     */\n    constructor(\n        private _detailService: DetailService\n    )\n    {\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Resolver\n     *\n     * @param route\n     * @param state\n     */\n    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<DeviceDetailsResponseWrapper> {\n        return this._detailService.getData(route.params.wwn);\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.routing.ts",
    "content": "import { Route } from '@angular/router';\nimport { DetailComponent } from 'app/modules/detail/detail.component';\nimport {DetailResolver} from './detail.resolvers';\n\nexport const detailRoutes: Route[] = [\n    {\n        path     : '',\n        component: DetailComponent,\n        resolve  : {\n            sales: DetailResolver\n        }\n    }\n];\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.service.spec.ts",
    "content": "import {HttpClient} from '@angular/common/http';\nimport {DetailService} from './detail.service';\nimport {of} from 'rxjs';\nimport {sda} from 'app/data/mock/device/details/sda'\nimport {DeviceDetailsResponseWrapper} from 'app/core/models/device-details-response-wrapper';\n\ndescribe('DetailService', () => {\n    describe('#getData', () => {\n        let service: DetailService;\n        let httpClientSpy: jasmine.SpyObj<HttpClient>;\n\n        beforeEach(() => {\n            httpClientSpy = jasmine.createSpyObj('HttpClient', ['get']);\n            service = new DetailService(httpClientSpy);\n        });\n        it('should return getData() (HttpClient called once)', (done: DoneFn) => {\n            httpClientSpy.get.and.returnValue(of(sda));\n\n            service.getData('test').subscribe(value => {\n                expect(value).toBe(sda as DeviceDetailsResponseWrapper);\n                done();\n            });\n            expect(httpClientSpy.get.calls.count())\n                .withContext('one call')\n                .toBe(1);\n        });\n    })\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/detail/detail.service.ts",
    "content": "import {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {getBasePath} from 'app/app.routing';\nimport {DeviceDetailsResponseWrapper} from 'app/core/models/device-details-response-wrapper';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DetailService {\n    // Observables\n    private _data: BehaviorSubject<DeviceDetailsResponseWrapper>;\n\n    /**\n     * Constructor\n     *\n     * @param {HttpClient} _httpClient\n     */\n    constructor(\n        private _httpClient: HttpClient\n    ) {\n        // Set the private defaults\n        this._data = new BehaviorSubject(null);\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Accessors\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Getter for data\n     */\n    get data$(): Observable<DeviceDetailsResponseWrapper> {\n        return this._data.asObservable();\n    }\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Public methods\n    // -----------------------------------------------------------------------------------------------------\n\n    /**\n     * Get data\n     */\n    getData(wwn): Observable<DeviceDetailsResponseWrapper> {\n        return this._httpClient.get(getBasePath() + `/api/device/${wwn}/details`).pipe(\n            tap((response: DeviceDetailsResponseWrapper) => {\n                this._data.next(response);\n            })\n        );\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/landing/home/home.component.html",
    "content": "<div class=\"flex flex-col items-center justify-center w-full h-full cool-gray-900\">\n    <div class=\"flex flex-col items-center max-w-lg rich-text\">\n        <img class=\"w-20\"\n             src=\"assets/images/logo/scrutiny-logo-white.svg\">\n        <h2>Landing Module</h2>\n        <p>\n            This can be the landing or the welcome page of your application. If you have an SSR (Server Side Rendering) setup, or if you don't need to have Search engine\n            visibility and optimizations, you can even use this page as your primary landing page.\n        </p>\n        <p>\n            This is a separate \"module\", it has its own directory and routing setup and also it's completely separated from the actual application. This is also a simple example of\n            multiple applications setup. You can have different entry points and essentially have different applications within the same codebase.\n        </p>\n        <a class=\"mt-10 no-underline\"\n           mat-raised-button\n           [color]=\"'primary'\"\n           [routerLink]=\"'/apps/analytics-dashboard'\">\n            Launch the App\n        </a>\n    </div>\n</div>\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/landing/home/home.component.scss",
    "content": "@import 'treo';\n\nlanding-home {\n\n}\n\n// -----------------------------------------------------------------------------------------------------\n// @ Theming\n// -----------------------------------------------------------------------------------------------------\n@include treo-theme {\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/landing/home/home.component.ts",
    "content": "import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector     : 'landing-home',\n    templateUrl  : './home.component.html',\n    styleUrls    : ['./home.component.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class LandingHomeComponent\n{\n    /**\n     * Constructor\n     */\n    constructor()\n    {\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/landing/home/home.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { LandingHomeComponent } from 'app/modules/landing/home/home.component';\nimport { landingHomeRoutes } from 'app/modules/landing/home/home.routing';\n\n@NgModule({\n    declarations: [\n        LandingHomeComponent\n    ],\n    imports     : [\n        RouterModule.forChild(landingHomeRoutes),\n        MatButtonModule,\n        SharedModule\n    ]\n})\nexport class LandingHomeModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/modules/landing/home/home.routing.ts",
    "content": "import { Route } from '@angular/router';\nimport { LandingHomeComponent } from 'app/modules/landing/home/home.component';\n\nexport const landingHomeRoutes: Route[] = [\n    {\n        path     : '',\n        component: LandingHomeComponent\n    }\n];\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-hours.pipe.spec.ts",
    "content": "import { DeviceHoursPipe } from \"./device-hours.pipe\";\n\ndescribe(\"DeviceHoursPipe\", () => {\n  it(\"create an instance\", () => {\n    const pipe = new DeviceHoursPipe();\n    expect(pipe).toBeTruthy();\n  });\n\n  describe(\"#transform\", () => {\n    const testCases = [\n      {\n        input: 12345,\n        configuration: \"device_hours\",\n        result: \"12345 hours\",\n      },\n      {\n        input: 15273,\n        configuration: \"humanize\",\n        result: \"1 year, 8 months, 3 weeks, 6 days, 15 hours\",\n      },\n      {\n        input: 48,\n        configuration: null,\n        result: \"2 days\",\n      },\n      {\n        input: 168,\n        configuration: \"scrutiny\",\n        result: \"1 week\",\n      },\n      {\n        input: null,\n        configuration: \"device_hours\",\n        result: \"Unknown\",\n      },\n      {\n        input: null,\n        configuration: \"humanize\",\n        result: \"Unknown\",\n      },\n    ];\n\n    testCases.forEach((test, index) => {\n      it(`format input '${test.input}' with configuration '${test.configuration}', should be '${test.result}' (testcase: ${index + 1})`, () => {\n        // test\n        const pipe = new DeviceHoursPipe();\n        const formatted = pipe.transform(test.input, test.configuration);\n        expect(formatted).toEqual(test.result);\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-hours.pipe.ts",
    "content": "import { Pipe, PipeTransform } from '@angular/core';\nimport humanizeDuration from 'humanize-duration';\n\n@Pipe({ name: 'deviceHours' })\nexport class DeviceHoursPipe implements PipeTransform {\n    static format(hoursOfRunTime: number, unit: string, humanizeConfig: object): string {\n      if (hoursOfRunTime === null) {\n        return 'Unknown';\n      }\n      if (unit === 'device_hours') {\n          return `${hoursOfRunTime} hours`;\n        }\n        return humanizeDuration(hoursOfRunTime * 60 * 60 * 1000, humanizeConfig);\n    }\n\n  transform(hoursOfRunTime: number, unit = 'humanize', humanizeConfig: any = {}): string {\n        return DeviceHoursPipe.format(hoursOfRunTime, unit, humanizeConfig)\n  }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-sort.pipe.spec.ts",
    "content": "import { DeviceSortPipe } from './device-sort.pipe';\n\ndescribe('DeviceSortPipe', () => {\n  it('create an instance', () => {\n    const pipe = new DeviceSortPipe();\n    expect(pipe).toBeTruthy();\n  });\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-sort.pipe.ts",
    "content": "import { Pipe, PipeTransform } from '@angular/core';\nimport {DeviceTitlePipe} from 'app/shared/device-title.pipe';\n\n@Pipe({\n  name: 'deviceSort'\n})\nexport class DeviceSortPipe implements PipeTransform {\n\n    statusCompareFn(a: any, b: any): number {\n        function deviceStatus(deviceSummary): number {\n            if(!deviceSummary.smart){\n                return 0\n            } else if (deviceSummary.device.device_status === 0){\n                return 1\n            } else {\n                return deviceSummary.device.device_status * -1 // will return range from -1, -2, -3\n            }\n        }\n\n        const left = deviceStatus(a)\n        const right = deviceStatus(b)\n\n        return left - right;\n    }\n\n    titleCompareFn(dashboardDisplay: string) {\n        return function (a: any, b: any){\n            const _dashboardDisplay = dashboardDisplay\n            const left = DeviceTitlePipe.deviceTitleForType(a.device, _dashboardDisplay) || DeviceTitlePipe.deviceTitleForType(a.device, 'name')\n            const right = DeviceTitlePipe.deviceTitleForType(b.device, _dashboardDisplay) || DeviceTitlePipe.deviceTitleForType(b.device, 'name')\n\n            if( left < right )\n                return -1;\n\n            if( left > right )\n                return 1;\n\n            return 0;\n        }\n    }\n\n    ageCompareFn(a: any, b: any): number {\n        const left = a.smart?.power_on_hours\n        const right = b.smart?.power_on_hours\n\n        return left - right;\n    }\n\n\n  transform(deviceSummaries: Array<unknown>, sortBy = 'status', dashboardDisplay = 'name'): Array<unknown> {\n    let compareFn: any\n    switch (sortBy) {\n        case 'status':\n            compareFn = this.statusCompareFn\n            break;\n        case 'title':\n            compareFn = this.titleCompareFn(dashboardDisplay)\n            break;\n        case 'age':\n            compareFn = this.ageCompareFn\n            break;\n    }\n\n      // failed, unknown/empty, passed\n      deviceSummaries.sort(compareFn);\n\n    return deviceSummaries;\n  }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-status.pipe.spec.ts",
    "content": "import {DeviceStatusPipe} from './device-status.pipe';\nimport {MetricsStatusThreshold} from '../core/config/app.config';\nimport {DeviceModel} from '../core/models/device-model';\n\ndescribe('DeviceStatusPipe', () => {\n    it('create an instance', () => {\n        const pipe = new DeviceStatusPipe();\n        expect(pipe).toBeTruthy();\n    });\n\n    describe('#deviceStatusForModelWithThreshold', () => {\n        it('if healthy device, should be passing', () => {\n            expect(DeviceStatusPipe.deviceStatusForModelWithThreshold(\n                {device_status: 0} as DeviceModel,\n                true,\n                MetricsStatusThreshold.Both\n            )).toBe('passed')\n        });\n\n        it('if device with no smart data, should be unknown', () => {\n            expect(DeviceStatusPipe.deviceStatusForModelWithThreshold(\n                {device_status: 0} as DeviceModel,\n                false,\n                MetricsStatusThreshold.Both\n            )).toBe('unknown')\n        });\n\n        const testCases = [\n            {\n                'deviceStatus': 10000, // invalid status\n                'hasSmartResults': false,\n                'threshold': MetricsStatusThreshold.Smart,\n                'includeReason': false,\n                'result': 'unknown'\n            },\n\n            {\n                'deviceStatus': 1,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Smart,\n                'includeReason': false,\n                'result': 'failed'\n            },\n            {\n                'deviceStatus': 1,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Scrutiny,\n                'includeReason': false,\n                'result': 'passed'\n            },\n            {\n                'deviceStatus': 1,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Both,\n                'includeReason': false,\n                'result': 'failed'\n            },\n\n            {\n                'deviceStatus': 2,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Smart,\n                'includeReason': false,\n                'result': 'passed'\n            },\n            {\n                'deviceStatus': 2,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Scrutiny,\n                'includeReason': false,\n                'result': 'failed'\n            },\n            {\n                'deviceStatus': 2,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Both,\n                'includeReason': false,\n                'result': 'failed'\n            },\n\n            {\n                'deviceStatus': 3,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Smart,\n                'includeReason': false,\n                'result': 'failed'\n            },\n            {\n                'deviceStatus': 3,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Scrutiny,\n                'includeReason': false,\n                'result': 'failed'\n            },\n            {\n                'deviceStatus': 3,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Both,\n                'includeReason': false,\n                'result': 'failed'\n            },\n\n            {\n                'deviceStatus': 3,\n                'hasSmartResults': false,\n                'threshold': MetricsStatusThreshold.Smart,\n                'includeReason': true,\n                'result': 'unknown'\n            },\n            {\n                'deviceStatus': 3,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Smart,\n                'includeReason': true,\n                'result': 'failed: smart'\n            },\n            {\n                'deviceStatus': 3,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Scrutiny,\n                'includeReason': true,\n                'result': 'failed: scrutiny'\n            },\n            {\n                'deviceStatus': 3,\n                'hasSmartResults': true,\n                'threshold': MetricsStatusThreshold.Both,\n                'includeReason': true,\n                'result': 'failed: both'\n            }\n\n\n        ]\n\n        testCases.forEach((test, index) => {\n            it(`if device with status (${test.deviceStatus}), hasSmartResults(${test.hasSmartResults}) and threshold (${test.threshold}), should be ${test.result}`, () => {\n                expect(DeviceStatusPipe.deviceStatusForModelWithThreshold(\n                    {device_status: test.deviceStatus} as DeviceModel,\n                    test.hasSmartResults,\n                    test.threshold,\n                    test.includeReason\n                )).toBe(test.result)\n            });\n        });\n    });\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-status.pipe.ts",
    "content": "import {Pipe, PipeTransform} from '@angular/core';\nimport {MetricsStatusThreshold} from '../core/config/app.config';\nimport {DeviceModel} from '../core/models/device-model';\n\nconst DEVICE_STATUS_NAMES: { [key: number]: string } = {\n    0: 'passed',\n    1: 'failed',\n    2: 'failed',\n    3: 'failed'\n};\n\nconst DEVICE_STATUS_NAMES_WITH_REASON: { [key: number]: string } = {\n    0: 'passed',\n    1: 'failed: smart',\n    2: 'failed: scrutiny',\n    3: 'failed: both'\n};\n\n\n@Pipe({\n    name: 'deviceStatus'\n})\nexport class DeviceStatusPipe implements PipeTransform {\n\n\n    static deviceStatusForModelWithThreshold(\n        deviceModel: DeviceModel,\n        hasSmartResults: boolean = true,\n        threshold: MetricsStatusThreshold = MetricsStatusThreshold.Both,\n        includeReason: boolean = false\n    ): string {\n        // no smart data, so treat the device status as unknown\n        if (!hasSmartResults) {\n            return 'unknown'\n        }\n\n        let statusNameLookup = DEVICE_STATUS_NAMES\n        if (includeReason) {\n            statusNameLookup = DEVICE_STATUS_NAMES_WITH_REASON\n        }\n        // determine the device status, by comparing it against the allowed threshold\n        // tslint:disable-next-line:no-bitwise\n        const deviceStatus = deviceModel.device_status & threshold\n        return statusNameLookup[deviceStatus]\n    }\n\n    // static deviceStatusForModelWithThreshold(deviceModel: DeviceModel | any, threshold: MetricsStatusThreshold): string {\n    //     // tslint:disable-next-line:no-bitwise\n    //     const deviceStatus = deviceModel?.device_status & threshold\n    //     if(deviceStatus === 0){\n    //         return 'passed'\n    //     } else if(deviceStatus === 3){\n    //         return 'failed: both'\n    //     } else if(deviceStatus === 2) {\n    //         return 'failed: scrutiny'\n    //     } else if(deviceStatus === 1) {\n    //         return 'failed: smart'\n    //     }\n    //     return 'unknown'\n    // }\n\n    transform(\n        deviceModel: DeviceModel,\n        hasSmartResults: boolean = true,\n        threshold: MetricsStatusThreshold = MetricsStatusThreshold.Both,\n        includeReason: boolean = false\n    ): string {\n        return DeviceStatusPipe.deviceStatusForModelWithThreshold(deviceModel, hasSmartResults, threshold, includeReason)\n    }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-title.pipe.spec.ts",
    "content": "import {DeviceTitlePipe} from './device-title.pipe';\nimport {DeviceModel} from 'app/core/models/device-model';\n\ndescribe('DeviceTitlePipe', () => {\n    it('create an instance', () => {\n        const pipe = new DeviceTitlePipe();\n        expect(pipe).toBeTruthy();\n    });\n\n    describe('#deviceTitleForType', () => {\n        const testCases = [\n            {\n                'device': {\n                    'device_name': 'sda',\n                    'device_type': 'ata',\n                    'model_name': 'Samsung',\n                },\n                'titleType': 'name',\n                'result': '/dev/sda - Samsung'\n            },{\n                'device': {\n                    'device_name': 'nvme0',\n                    'device_type': 'nvme',\n                    'model_name': 'Samsung',\n                },\n                'titleType': 'name',\n                'result': '/dev/nvme0 - nvme - Samsung'\n            },{\n                'device': {},\n                'titleType': 'serial_id',\n                'result': ''\n            },{\n                'device': {\n                    'device_serial_id': 'ata-WDC_WD140EDFZ-11AXXXXX_9RXXXXXX',\n                },\n                'titleType': 'serial_id',\n                'result': '/by-id/ata-WDC_WD140EDFZ-11AXXXXX_9RXXXXXX'\n            },{\n                'device': {},\n                'titleType': 'uuid',\n                'result': ''\n            },{\n                'device': {\n                    'device_uuid': 'abcdef-1234-4567-8901'\n                },\n                'titleType': 'uuid',\n                'result': '/by-uuid/abcdef-1234-4567-8901'\n            },{\n                'device': {},\n                'titleType': 'label',\n                'result': ''\n            },{\n                'device': {\n                    'label': 'custom-device-label'\n                },\n                'titleType': 'label',\n                'result': 'custom-device-label'\n            },{\n                'device': {\n                    'device_label': 'drive-volume-label'\n                },\n                'titleType': 'label',\n                'result': '/by-label/drive-volume-label'\n            },\n        ]\n        testCases.forEach((test, index) => {\n            it(`should correctly format device title ${JSON.stringify(test.device)}. (testcase: ${index + 1})`, () => {\n                // test\n                const formatted = DeviceTitlePipe.deviceTitleForType(test.device as DeviceModel, test.titleType)\n                expect(formatted).toEqual(test.result);\n            });\n        })\n    })\n\n    describe('#deviceTitleWithFallback',() => {\n        const testCases = [\n            {\n                'device': {\n                    'device_name': 'sda',\n                    'device_type': 'ata',\n                    'model_name': 'Samsung',\n                },\n                'titleType': 'name',\n                'result': '/dev/sda - Samsung'\n            },{\n                'device': {\n                    'device_name': 'nvme0',\n                    'device_type': 'nvme',\n                    'model_name': 'Samsung',\n                },\n                'titleType': 'name',\n                'result': '/dev/nvme0 - nvme - Samsung'\n            },{\n                'device': {\n                    'device_name': 'fallback',\n                    'device_type': 'ata',\n                    'model_name': 'fallback',\n                },\n                'titleType': 'serial_id',\n                'result': '/dev/fallback - fallback'\n            },{\n                'device': {\n                    'device_serial_id': 'ata-WDC_WD140EDFZ-11AXXXXX_9RXXXXXX',\n                },\n                'titleType': 'serial_id',\n                'result': '/by-id/ata-WDC_WD140EDFZ-11AXXXXX_9RXXXXXX'\n            },{\n                'device': {\n                    'device_name': 'fallback',\n                    'device_type': 'ata',\n                    'model_name': 'fallback',\n                },\n                'titleType': 'uuid',\n                'result': '/dev/fallback - fallback'\n            },{\n                'device': {\n                    'device_uuid': 'abcdef-1234-4567-8901'\n                },\n                'titleType': 'uuid',\n                'result': '/by-uuid/abcdef-1234-4567-8901'\n            },{\n                'device': {\n                    'device_name': 'fallback',\n                    'device_type': 'ata',\n                    'model_name': 'fallback',\n                },\n                'titleType': 'label',\n                'result': '/dev/fallback - fallback'\n            },{\n                'device': {\n                    'label': 'custom-device-label'\n                },\n                'titleType': 'label',\n                'result': 'custom-device-label'\n            },{\n                'device': {\n                    'device_label': 'drive-volume-label'\n                },\n                'titleType': 'label',\n                'result': '/by-label/drive-volume-label'\n            },\n        ]\n        testCases.forEach((test, index) => {\n            it(`should correctly format device title ${JSON.stringify(test.device)}. (testcase: ${index + 1})`, () => {\n                // test\n                const formatted = DeviceTitlePipe.deviceTitleWithFallback(test.device as DeviceModel, test.titleType)\n                expect(formatted).toEqual(test.result);\n            });\n        })\n    })\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/device-title.pipe.ts",
    "content": "import {Pipe, PipeTransform} from '@angular/core';\nimport {DeviceModel} from 'app/core/models/device-model';\n\n@Pipe({\n  name: 'deviceTitle'\n})\nexport class DeviceTitlePipe implements PipeTransform {\n\n    static deviceTitleForType(device: DeviceModel, titleType: string): string {\n        const titleParts = []\n        switch(titleType){\n            case 'name':\n                titleParts.push(`/dev/${device.device_name}`)\n                if (device.device_type && device.device_type !== 'scsi' && device.device_type !== 'ata'){\n                    titleParts.push(device.device_type)\n                }\n                titleParts.push(device.model_name)\n\n                break;\n            case 'serial_id':\n                if(!device.device_serial_id) return ''\n                titleParts.push(`/by-id/${device.device_serial_id}`)\n                break;\n            case 'uuid':\n                if(!device.device_uuid) return ''\n                titleParts.push(`/by-uuid/${device.device_uuid}`)\n                break;\n            case 'label':\n                if(device.label){\n                    titleParts.push(device.label)\n                } else if(device.device_label){\n                    titleParts.push(`/by-label/${device.device_label}`)\n                }\n                break;\n        }\n        return titleParts.join(' - ')\n    }\n\n    static deviceTitleWithFallback(device: DeviceModel, titleType: string): string {\n        console.log(`Displaying Device ${device.wwn} with: ${titleType}`)\n        const titleParts = []\n        if (device.host_id) titleParts.push(device.host_id)\n\n        // add device identifier (fallback to generated device name)\n        titleParts.push(DeviceTitlePipe.deviceTitleForType(device, titleType) || DeviceTitlePipe.deviceTitleForType(device, 'name'))\n\n        return titleParts.join(' - ')\n    }\n\n\n    transform(device: DeviceModel, titleType: string = 'name'): string {\n        return DeviceTitlePipe.deviceTitleWithFallback(device, titleType)\n    }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/file-size.pipe.spec.ts",
    "content": "import {FileSizePipe} from './file-size.pipe';\n\ndescribe('FileSizePipe', () => {\n    it('create an instance', () => {\n        const pipe = new FileSizePipe();\n        expect(pipe).toBeTruthy();\n    });\n\n    describe('#transform',() => {\n        const testCases = [\n            {\n                'bytes': 1500,\n                'si': false,\n                'result': '1.5 KiB'\n            },\n            {\n                'bytes': 1500,\n                'si': true,\n                'result': '1.5 kB'\n            },\n            {\n                'bytes': 5000,\n                'si': false,\n                'result': '4.9 KiB',\n            },\n            {\n                'bytes': 5000,\n                'si': true,\n                'result': '5.0 kB',\n            },\n            {\n                'bytes': 999_949,\n                'si': false,\n                'result': '976.5 KiB',\n            },\n            {\n                'bytes': 999_949,\n                'si': true,\n                'result': '999.9 kB',\n            },\n            {\n                'bytes': 999_950,\n                'si': true,\n                'result': '1.0 MB',\n            },\n            {\n                'bytes': 1_551_859_712,\n                'si': false,\n                'result': '1.4 GiB',\n            },\n            {\n                'bytes': 2_100_000_000,\n                'si': false,\n                'result': '2.0 GiB',\n            },\n            {\n                'bytes': 2_100_000_000,\n                'si': true,\n                'result': '2.1 GB',\n            }\n        ]\n\n        testCases.forEach((test, index) => {\n            it(`should correctly format bytes ${test.bytes}. (testcase: ${index + 1})`, () => {\n                // test\n                const pipe = new FileSizePipe();\n                const formatted = pipe.transform(test.bytes, test.si)\n                expect(formatted).toEqual(test.result);\n            });\n        })\n    })\n\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/file-size.pipe.ts",
    "content": "import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({name: 'fileSize'})\nexport class FileSizePipe implements PipeTransform {\n\n    transform(bytes: number = 0, si = false, dp = 1): string {\n        const thresh = si ? 1000 : 1024;\n\n        if (Math.abs(bytes) < thresh) {\n            return bytes + ' B';\n        }\n\n        const units = si\n            ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n            : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n        let u = -1;\n        const r = 10 ** dp;\n\n        do {\n            bytes /= thresh;\n            ++u;\n        } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);\n\n\n        return bytes.toFixed(dp) + ' ' + units[u];\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/shared.module.ts",
    "content": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {FileSizePipe} from './file-size.pipe';\nimport { DeviceSortPipe } from './device-sort.pipe';\nimport { TemperaturePipe } from './temperature.pipe';\nimport { DeviceTitlePipe } from './device-title.pipe';\nimport { DeviceStatusPipe } from './device-status.pipe';\nimport { DeviceHoursPipe } from './device-hours.pipe';\n\n@NgModule({\n    declarations: [\n        FileSizePipe,\n        DeviceSortPipe,\n        TemperaturePipe,\n        DeviceTitlePipe,\n        DeviceStatusPipe,\n        DeviceHoursPipe\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule\n    ],\n    exports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        FileSizePipe,\n        DeviceSortPipe,\n        DeviceTitlePipe,\n        DeviceStatusPipe,\n        TemperaturePipe,\n        DeviceHoursPipe\n    ]\n})\nexport class SharedModule\n{\n}\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/temperature.pipe.spec.ts",
    "content": "import { TemperaturePipe } from './temperature.pipe';\n\ndescribe('TemperaturePipe', () => {\n    it('create an instance', () => {\n        const pipe = new TemperaturePipe();\n        expect(pipe).toBeTruthy();\n    });\n\n\n    describe('#celsiusToFahrenheit', () => {\n        const testCases = [\n            {\n                'c': -273.15,\n                'f': -459.66999999999996,\n            },{\n                'c': -34.44,\n                'f': -29.991999999999997,\n            },{\n                'c': -23.33,\n                'f': -9.993999999999993,\n            },{\n                'c': -17.78,\n                'f': -0.0040000000000048885,\n            },{\n                'c': 0,\n                'f': 32,\n            },{\n                'c': 10,\n                'f': 50,\n            },{\n                'c': 26.67,\n                'f': 80.006,\n            },{\n                'c': 37,\n                'f': 98.6,\n            },{\n                'c': 60,\n                'f': 140,\n            }\n        ]\n        testCases.forEach((test, index) => {\n            it(`should correctly convert ${test.c}, Celsius to Fahrenheit (testcase: ${index + 1})`, () => {\n                // test\n                const numb = TemperaturePipe.celsiusToFahrenheit(test.c)\n                expect(numb).toEqual(test.f);\n            });\n        })\n    });\n\n    describe('#formatTemperature',() => {\n        const testCases = [\n            {\n                'c': 26.67,\n                'unit': 'celsius',\n                'includeUnits': true,\n                'result': '26.67°C'\n            },{\n                'c': 26.6767,\n                'unit': 'celsius',\n                'includeUnits': true,\n                'result': '26.677°C'\n            },{\n                'c': 26.67,\n                'unit': 'celsius',\n                'includeUnits': false,\n                'result': '26.67',\n            },{\n                'c': 26.67,\n                'unit': 'fahrenheit',\n                'includeUnits': true,\n                'result': '26.67°F',\n            },{\n                'c': 26.6767,\n                'unit': 'fahrenheit',\n                'includeUnits': true,\n                'result': '26.677°F',\n            },{\n                'c': 26.67,\n                'unit': 'fahrenheit',\n                'includeUnits': false,\n                'result': '26.67',\n            }\n        ]\n        testCases.forEach((test, index) => {\n            it(`should correctly format temperature ${test.c} to ${test.unit} ${test.includeUnits ? 'with' : 'without'} unit. (testcase: ${index + 1})`, () => {\n                // test\n                const formatted = TemperaturePipe.formatTemperature(test.c, test.unit, test.includeUnits)\n                expect(formatted).toEqual(test.result);\n            });\n        })\n    })\n});\n"
  },
  {
    "path": "webapp/frontend/src/app/shared/temperature.pipe.ts",
    "content": "import { Pipe, PipeTransform } from '@angular/core';\nimport {formatNumber} from '@angular/common';\n\n@Pipe({\n  name: 'temperature'\n})\nexport class TemperaturePipe implements PipeTransform {\n    static celsiusToFahrenheit(celsiusTemp: number): number {\n        return celsiusTemp * 9/5 + 32;\n    }\n    static formatTemperature(temp: number, unit: string, includeUnits: boolean): number|string {\n        let unitSuffix\n        switch (unit) {\n            case 'celsius':\n                unitSuffix = '°C'\n                break\n            case 'fahrenheit':\n                unitSuffix = '°F'\n                break\n        }\n        if(includeUnits){\n            return formatNumber(temp, 'en-US') + unitSuffix\n        } else {\n            return formatNumber(temp, 'en-US',)\n        }\n    }\n\n  transform(celsiusTemp: number, unit = 'celsius', includeUnits = false): number|string {\n        let temperature;\n        switch (unit) {\n            case 'celsius':\n                temperature = celsiusTemp;\n                break\n            case 'fahrenheit':\n                temperature = TemperaturePipe.celsiusToFahrenheit(celsiusTemp)\n                break\n        }\n        return TemperaturePipe.formatTemperature(temperature, unit, includeUnits)\n  }\n\n}\n"
  },
  {
    "path": "webapp/frontend/src/assets/.gitkeep",
    "content": ""
  },
  {
    "path": "webapp/frontend/src/assets/fonts/ibm-plex-mono/ibm-plex-mono.css",
    "content": "/* ibm-plex-mono-regular - latin */\n@font-face {\n    font-family: 'IBM Plex Mono';\n    font-style: normal;\n    font-weight: 400;\n    src: url('ibm-plex-mono-v12-latin-regular.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('ibm-plex-mono-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('ibm-plex-mono-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n    url('ibm-plex-mono-v12-latin-regular.woff') format('woff'), /* Modern Browsers */\n    url('ibm-plex-mono-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('ibm-plex-mono-v12-latin-regular.svg#IBMPlexMono') format('svg'); /* Legacy iOS */\n}\n\n/* ibm-plex-mono-italic - latin */\n@font-face {\n    font-family: 'IBM Plex Mono';\n    font-style: italic;\n    font-weight: 400;\n    src: url('ibm-plex-mono-v12-latin-italic.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('ibm-plex-mono-v12-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('ibm-plex-mono-v12-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */\n    url('ibm-plex-mono-v12-latin-italic.woff') format('woff'), /* Modern Browsers */\n    url('ibm-plex-mono-v12-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('ibm-plex-mono-v12-latin-italic.svg#IBMPlexMono') format('svg'); /* Legacy iOS */\n}\n\n/* ibm-plex-mono-500 - latin */\n@font-face {\n    font-family: 'IBM Plex Mono';\n    font-style: normal;\n    font-weight: 500;\n    src: url('ibm-plex-mono-v12-latin-500.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('ibm-plex-mono-v12-latin-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('ibm-plex-mono-v12-latin-500.woff2') format('woff2'), /* Super Modern Browsers */\n    url('ibm-plex-mono-v12-latin-500.woff') format('woff'), /* Modern Browsers */\n    url('ibm-plex-mono-v12-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('ibm-plex-mono-v12-latin-500.svg#IBMPlexMono') format('svg'); /* Legacy iOS */\n}\n\n/* ibm-plex-mono-600 - latin */\n@font-face {\n    font-family: 'IBM Plex Mono';\n    font-style: normal;\n    font-weight: 600;\n    src: url('ibm-plex-mono-v12-latin-600.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('ibm-plex-mono-v12-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('ibm-plex-mono-v12-latin-600.woff2') format('woff2'), /* Super Modern Browsers */\n    url('ibm-plex-mono-v12-latin-600.woff') format('woff'), /* Modern Browsers */\n    url('ibm-plex-mono-v12-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('ibm-plex-mono-v12-latin-600.svg#IBMPlexMono') format('svg'); /* Legacy iOS */\n}\n\n/* ibm-plex-mono-700 - latin */\n@font-face {\n    font-family: 'IBM Plex Mono';\n    font-style: normal;\n    font-weight: 700;\n    src: url('ibm-plex-mono-v12-latin-700.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('ibm-plex-mono-v12-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('ibm-plex-mono-v12-latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n    url('ibm-plex-mono-v12-latin-700.woff') format('woff'), /* Modern Browsers */\n    url('ibm-plex-mono-v12-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('ibm-plex-mono-v12-latin-700.svg#IBMPlexMono') format('svg'); /* Legacy iOS */\n}\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/inter/inter.css",
    "content": "@font-face {\n    font-family: 'Inter';\n    font-style: normal;\n    font-weight: 400;\n    font-display: swap;\n    src: url(\"Inter-Regular.woff2?v=3.11\") format(\"woff2\"),\n    url(\"Inter-Regular.woff?v=3.11\") format(\"woff\");\n}\n\n@font-face {\n    font-family: 'Inter';\n    font-style: italic;\n    font-weight: 400;\n    font-display: swap;\n    src: url(\"Inter-Italic.woff2?v=3.11\") format(\"woff2\"),\n    url(\"Inter-Italic.woff?v=3.11\") format(\"woff\");\n}\n\n@font-face {\n    font-family: 'Inter';\n    font-style: normal;\n    font-weight: 500;\n    font-display: swap;\n    src: url(\"Inter-Medium.woff2?v=3.11\") format(\"woff2\"),\n    url(\"Inter-Medium.woff?v=3.11\") format(\"woff\");\n}\n\n@font-face {\n    font-family: 'Inter';\n    font-style: normal;\n    font-weight: 600;\n    font-display: swap;\n    src: url(\"Inter-SemiBold.woff2?v=3.11\") format(\"woff2\"),\n    url(\"Inter-SemiBold.woff?v=3.11\") format(\"woff\");\n}\n\n@font-face {\n    font-family: 'Inter';\n    font-style: normal;\n    font-weight: 700;\n    font-display: swap;\n    src: url(\"Inter-Bold.woff2?v=3.11\") format(\"woff2\"),\n    url(\"Inter-Bold.woff?v=3.11\") format(\"woff\");\n}\n\n@font-face {\n    font-family: 'Inter';\n    font-style: normal;\n    font-weight: 800;\n    font-display: swap;\n    src: url(\"Inter-ExtraBold.woff2?v=3.11\") format(\"woff2\"),\n    url(\"Inter-ExtraBold.woff?v=3.11\") format(\"woff\");\n}\n\n@font-face {\n    font-family: 'Inter';\n    font-style: normal;\n    font-weight: 900;\n    font-display: swap;\n    src: url(\"Inter-Black.woff2?v=3.11\") format(\"woff2\"),\n    url(\"Inter-Black.woff?v=3.11\") format(\"woff\");\n}\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/material-icons/MaterialIcons-Regular.codepoints",
    "content": "10k e951\n10mp e952\n11mp e953\n123 eb8d\n12mp e954\n13mp e955\n14mp e956\n15mp e957\n16mp e958\n17mp e959\n18_up_rating f8fd\n18mp e95a\n19mp e95b\n1k e95c\n1k_plus e95d\n1x_mobiledata efcd\n20mp e95e\n21mp e95f\n22mp e960\n23mp e961\n24mp e962\n2k e963\n2k_plus e964\n2mp e965\n30fps efce\n30fps_select efcf\n360 e577\n3d_rotation e84d\n3g_mobiledata efd0\n3k e966\n3k_plus e967\n3mp e968\n3p efd1\n4g_mobiledata efd2\n4g_plus_mobiledata efd3\n4k e072\n4k_plus e969\n4mp e96a\n5g ef38\n5k e96b\n5k_plus e96c\n5mp e96d\n60fps efd4\n60fps_select efd5\n6_ft_apart f21e\n6k e96e\n6k_plus e96f\n6mp e970\n7k e971\n7k_plus e972\n7mp e973\n8k e974\n8k_plus e975\n8mp e976\n9k e977\n9k_plus e978\n9mp e979\nabc eb94\nac_unit eb3b\naccess_alarm e190\naccess_alarms e191\naccess_time e192\naccess_time_filled efd6\naccessibility e84e\naccessibility_new e92c\naccessible e914\naccessible_forward e934\naccount_balance e84f\naccount_balance_wallet e850\naccount_box e851\naccount_circle e853\naccount_tree e97a\nad_units ef39\nadb e60e\nadd e145\nadd_a_photo e439\nadd_alarm e193\nadd_alert e003\nadd_box e146\nadd_business e729\nadd_call e0e8\nadd_card eb86\nadd_chart e97b\nadd_circle e147\nadd_circle_outline e148\nadd_comment e266\nadd_home f8eb\nadd_home_work f8ed\nadd_ic_call e97c\nadd_link e178\nadd_location e567\nadd_location_alt ef3a\nadd_moderator e97d\nadd_photo_alternate e43e\nadd_reaction e1d3\nadd_road ef3b\nadd_shopping_cart e854\nadd_task f23a\nadd_to_drive e65c\nadd_to_home_screen e1fe\nadd_to_photos e39d\nadd_to_queue e05c\naddchart ef3c\nadf_scanner eada\nadjust e39e\nadmin_panel_settings ef3d\nadobe ea96\nads_click e762\nagriculture ea79\nair efd8\nairline_seat_flat e630\nairline_seat_flat_angled e631\nairline_seat_individual_suite e632\nairline_seat_legroom_extra e633\nairline_seat_legroom_normal e634\nairline_seat_legroom_reduced e635\nairline_seat_recline_extra e636\nairline_seat_recline_normal e637\nairline_stops e7d0\nairlines e7ca\nairplane_ticket efd9\nairplanemode_active e195\nairplanemode_inactive e194\nairplanemode_off e194\nairplanemode_on e195\nairplay e055\nairport_shuttle eb3c\nalarm e855\nalarm_add e856\nalarm_off e857\nalarm_on e858\nalbum e019\nalign_horizontal_center e00f\nalign_horizontal_left e00d\nalign_horizontal_right e010\nalign_vertical_bottom e015\nalign_vertical_center e011\nalign_vertical_top e00c\nall_inbox e97f\nall_inclusive eb3d\nall_out e90b\nalt_route f184\nalternate_email e0e6\namp_stories ea13\nanalytics ef3e\nanchor f1cd\nandroid e859\nanimation e71c\nannouncement e85a\naod efda\napartment ea40\napi f1b7\napp_blocking ef3f\napp_registration ef40\napp_settings_alt ef41\napp_shortcut eae4\napple ea80\napproval e982\napps e5c3\napps_outage e7cc\narchitecture ea3b\narchive e149\narea_chart e770\narrow_back e5c4\narrow_back_ios e5e0\narrow_back_ios_new e2ea\narrow_circle_down f181\narrow_circle_left eaa7\narrow_circle_right eaaa\narrow_circle_up f182\narrow_downward e5db\narrow_drop_down e5c5\narrow_drop_down_circle e5c6\narrow_drop_up e5c7\narrow_forward e5c8\narrow_forward_ios e5e1\narrow_left e5de\narrow_outward f8ce\narrow_right e5df\narrow_right_alt e941\narrow_upward e5d8\nart_track e060\narticle ef42\naspect_ratio e85b\nassessment e85c\nassignment e85d\nassignment_ind e85e\nassignment_late e85f\nassignment_return e860\nassignment_returned e861\nassignment_turned_in e862\nassist_walker f8d5\nassistant e39f\nassistant_direction e988\nassistant_navigation e989\nassistant_photo e3a0\nassured_workload eb6f\natm e573\nattach_email ea5e\nattach_file e226\nattach_money e227\nattachment e2bc\nattractions ea52\nattribution efdb\naudio_file eb82\naudiotrack e3a1\nauto_awesome e65f\nauto_awesome_mosaic e660\nauto_awesome_motion e661\nauto_delete ea4c\nauto_fix_high e663\nauto_fix_normal e664\nauto_fix_off e665\nauto_graph e4fb\nauto_mode ec20\nauto_stories e666\nautofps_select efdc\nautorenew e863\nav_timer e01b\nbaby_changing_station f19b\nback_hand e764\nbackpack f19c\nbackspace e14a\nbackup e864\nbackup_table ef43\nbadge ea67\nbakery_dining ea53\nbalance eaf6\nbalcony e58f\nballot e172\nbar_chart e26b\nbatch_prediction f0f5\nbathroom efdd\nbathtub ea41\nbattery_0_bar ebdc\nbattery_1_bar ebd9\nbattery_2_bar ebe0\nbattery_3_bar ebdd\nbattery_4_bar ebe2\nbattery_5_bar ebd4\nbattery_6_bar ebd2\nbattery_alert e19c\nbattery_charging_full e1a3\nbattery_full e1a4\nbattery_saver efde\nbattery_std e1a5\nbattery_unknown e1a6\nbeach_access eb3e\nbed efdf\nbedroom_baby efe0\nbedroom_child efe1\nbedroom_parent efe2\nbedtime ef44\nbedtime_off eb76\nbeenhere e52d\nbento f1f4\nbike_scooter ef45\nbiotech ea3a\nblender efe3\nblind f8d6\nblinds e286\nblinds_closed ec1f\nblock e14b\nblock_flipped ef46\nbloodtype efe4\nbluetooth e1a7\nbluetooth_audio e60f\nbluetooth_connected e1a8\nbluetooth_disabled e1a9\nbluetooth_drive efe5\nbluetooth_searching e1aa\nblur_circular e3a2\nblur_linear e3a3\nblur_off e3a4\nblur_on e3a5\nbolt ea0b\nbook e865\nbook_online f217\nbookmark e866\nbookmark_add e598\nbookmark_added e599\nbookmark_border e867\nbookmark_outline e867\nbookmark_remove e59a\nbookmarks e98b\nborder_all e228\nborder_bottom e229\nborder_clear e22a\nborder_color e22b\nborder_horizontal e22c\nborder_inner e22d\nborder_left e22e\nborder_outer e22f\nborder_right e230\nborder_style e231\nborder_top e232\nborder_vertical e233\nboy eb67\nbranding_watermark e06b\nbreakfast_dining ea54\nbrightness_1 e3a6\nbrightness_2 e3a7\nbrightness_3 e3a8\nbrightness_4 e3a9\nbrightness_5 e3aa\nbrightness_6 e3ab\nbrightness_7 e3ac\nbrightness_auto e1ab\nbrightness_high e1ac\nbrightness_low e1ad\nbrightness_medium e1ae\nbroadcast_on_home f8f8\nbroadcast_on_personal f8f9\nbroken_image e3ad\nbrowse_gallery ebd1\nbrowser_not_supported ef47\nbrowser_updated e7cf\nbrunch_dining ea73\nbrush e3ae\nbubble_chart e6dd\nbug_report e868\nbuild e869\nbuild_circle ef48\nbungalow e591\nburst_mode e43c\nbus_alert e98f\nbusiness e0af\nbusiness_center eb3f\ncabin e589\ncable efe6\ncached e86a\ncake e7e9\ncalculate ea5f\ncalendar_month ebcc\ncalendar_today e935\ncalendar_view_day e936\ncalendar_view_month efe7\ncalendar_view_week efe8\ncall e0b0\ncall_end e0b1\ncall_made e0b2\ncall_merge e0b3\ncall_missed e0b4\ncall_missed_outgoing e0e4\ncall_received e0b5\ncall_split e0b6\ncall_to_action e06c\ncamera e3af\ncamera_alt e3b0\ncamera_enhance e8fc\ncamera_front e3b1\ncamera_indoor efe9\ncamera_outdoor efea\ncamera_rear e3b2\ncamera_roll e3b3\ncameraswitch efeb\ncampaign ef49\ncancel e5c9\ncancel_presentation e0e9\ncancel_schedule_send ea39\ncandlestick_chart ead4\ncar_crash ebf2\ncar_rental ea55\ncar_repair ea56\ncard_giftcard e8f6\ncard_membership e8f7\ncard_travel e8f8\ncarpenter f1f8\ncases e992\ncasino eb40\ncast e307\ncast_connected e308\ncast_for_education efec\ncastle eab1\ncatching_pokemon e508\ncategory e574\ncelebration ea65\ncell_tower ebba\ncell_wifi e0ec\ncenter_focus_strong e3b4\ncenter_focus_weak e3b5\nchair efed\nchair_alt efee\nchalet e585\nchange_circle e2e7\nchange_history e86b\ncharging_station f19d\nchat e0b7\nchat_bubble e0ca\nchat_bubble_outline e0cb\ncheck e5ca\ncheck_box e834\ncheck_box_outline_blank e835\ncheck_circle e86c\ncheck_circle_outline e92d\nchecklist e6b1\nchecklist_rtl e6b3\ncheckroom f19e\nchevron_left e5cb\nchevron_right e5cc\nchild_care eb41\nchild_friendly eb42\nchrome_reader_mode e86d\nchurch eaae\ncircle ef4a\ncircle_notifications e994\nclass e86e\nclean_hands f21f\ncleaning_services f0ff\nclear e14c\nclear_all e0b8\nclose e5cd\nclose_fullscreen f1cf\nclosed_caption e01c\nclosed_caption_disabled f1dc\nclosed_caption_off e996\ncloud e2bd\ncloud_circle e2be\ncloud_done e2bf\ncloud_download e2c0\ncloud_off e2c1\ncloud_queue e2c2\ncloud_sync eb5a\ncloud_upload e2c3\ncloudy_snowing e810\nco2 e7b0\nco_present eaf0\ncode e86f\ncode_off e4f3\ncoffee efef\ncoffee_maker eff0\ncollections e3b6\ncollections_bookmark e431\ncolor_lens e3b7\ncolorize e3b8\ncomment e0b9\ncomment_bank ea4e\ncomments_disabled e7a2\ncommit eaf5\ncommute e940\ncompare e3b9\ncompare_arrows e915\ncompass_calibration e57c\ncompost e761\ncompress e94d\ncomputer e30a\nconfirmation_num e638\nconfirmation_number e638\nconnect_without_contact f223\nconnected_tv e998\nconnecting_airports e7c9\nconstruction ea3c\ncontact_emergency f8d1\ncontact_mail e0d0\ncontact_page f22e\ncontact_phone e0cf\ncontact_support e94c\ncontactless ea71\ncontacts e0ba\ncontent_copy e14d\ncontent_cut e14e\ncontent_paste e14f\ncontent_paste_go ea8e\ncontent_paste_off e4f8\ncontent_paste_search ea9b\ncontrast eb37\ncontrol_camera e074\ncontrol_point e3ba\ncontrol_point_duplicate e3bb\ncookie eaac\ncopy_all e2ec\ncopyright e90c\ncoronavirus f221\ncorporate_fare f1d0\ncottage e587\ncountertops f1f7\ncreate e150\ncreate_new_folder e2cc\ncredit_card e870\ncredit_card_off e4f4\ncredit_score eff1\ncrib e588\ncrisis_alert ebe9\ncrop e3be\ncrop_16_9 e3bc\ncrop_3_2 e3bd\ncrop_5_4 e3bf\ncrop_7_5 e3c0\ncrop_din e3c1\ncrop_free e3c2\ncrop_landscape e3c3\ncrop_original e3c4\ncrop_portrait e3c5\ncrop_rotate e437\ncrop_square e3c6\ncruelty_free e799\ncss eb93\ncurrency_bitcoin ebc5\ncurrency_exchange eb70\ncurrency_franc eafa\ncurrency_lira eaef\ncurrency_pound eaf1\ncurrency_ruble eaec\ncurrency_rupee eaf7\ncurrency_yen eafb\ncurrency_yuan eaf9\ncurtains ec1e\ncurtains_closed ec1d\ncyclone ebd5\ndangerous e99a\ndark_mode e51c\ndashboard e871\ndashboard_customize e99b\ndata_array ead1\ndata_exploration e76f\ndata_object ead3\ndata_saver_off eff2\ndata_saver_on eff3\ndata_thresholding eb9f\ndata_usage e1af\ndataset f8ee\ndataset_linked f8ef\ndate_range e916\ndeblur eb77\ndeck ea42\ndehaze e3c7\ndelete e872\ndelete_forever e92b\ndelete_outline e92e\ndelete_sweep e16c\ndelivery_dining ea72\ndensity_large eba9\ndensity_medium eb9e\ndensity_small eba8\ndeparture_board e576\ndescription e873\ndeselect ebb6\ndesign_services f10a\ndesk f8f4\ndesktop_access_disabled e99d\ndesktop_mac e30b\ndesktop_windows e30c\ndetails e3c8\ndeveloper_board e30d\ndeveloper_board_off e4ff\ndeveloper_mode e1b0\ndevice_hub e335\ndevice_thermostat e1ff\ndevice_unknown e339\ndevices e1b1\ndevices_fold ebde\ndevices_other e337\ndialer_sip e0bb\ndialpad e0bc\ndiamond ead5\ndifference eb7d\ndining eff4\ndinner_dining ea57\ndirections e52e\ndirections_bike e52f\ndirections_boat e532\ndirections_boat_filled eff5\ndirections_bus e530\ndirections_bus_filled eff6\ndirections_car e531\ndirections_car_filled eff7\ndirections_ferry e532\ndirections_off f10f\ndirections_railway e534\ndirections_railway_filled eff8\ndirections_run e566\ndirections_subway e533\ndirections_subway_filled eff9\ndirections_train e534\ndirections_transit e535\ndirections_transit_filled effa\ndirections_walk e536\ndirty_lens ef4b\ndisabled_by_default f230\ndisabled_visible e76e\ndisc_full e610\ndiscord ea6c\ndiscount ebc9\ndisplay_settings eb97\ndiversity_1 f8d7\ndiversity_2 f8d8\ndiversity_3 f8d9\ndnd_forwardslash e611\ndns e875\ndo_disturb f08c\ndo_disturb_alt f08d\ndo_disturb_off f08e\ndo_disturb_on f08f\ndo_not_disturb e612\ndo_not_disturb_alt e611\ndo_not_disturb_off e643\ndo_not_disturb_on e644\ndo_not_disturb_on_total_silence effb\ndo_not_step f19f\ndo_not_touch f1b0\ndock e30e\ndocument_scanner e5fa\ndomain e7ee\ndomain_add eb62\ndomain_disabled e0ef\ndomain_verification ef4c\ndone e876\ndone_all e877\ndone_outline e92f\ndonut_large e917\ndonut_small e918\ndoor_back effc\ndoor_front effd\ndoor_sliding effe\ndoorbell efff\ndouble_arrow ea50\ndownhill_skiing e509\ndownload f090\ndownload_done f091\ndownload_for_offline f000\ndownloading f001\ndrafts e151\ndrag_handle e25d\ndrag_indicator e945\ndraw e746\ndrive_eta e613\ndrive_file_move e675\ndrive_file_move_outline e9a1\ndrive_file_move_rtl e76d\ndrive_file_rename_outline e9a2\ndrive_folder_upload e9a3\ndry f1b3\ndry_cleaning ea58\nduo e9a5\ndvr e1b2\ndynamic_feed ea14\ndynamic_form f1bf\ne_mobiledata f002\nearbuds f003\nearbuds_battery f004\neast f1df\neco ea35\nedgesensor_high f005\nedgesensor_low f006\nedit e3c9\nedit_attributes e578\nedit_calendar e742\nedit_location e568\nedit_location_alt e1c5\nedit_note e745\nedit_notifications e525\nedit_off e950\nedit_road ef4d\negg eacc\negg_alt eac8\neject e8fb\nelderly f21a\nelderly_woman eb69\nelectric_bike eb1b\nelectric_bolt ec1c\nelectric_car eb1c\nelectric_meter ec1b\nelectric_moped eb1d\nelectric_rickshaw eb1e\nelectric_scooter eb1f\nelectrical_services f102\nelevator f1a0\nemail e0be\nemergency e1eb\nemergency_recording ebf4\nemergency_share ebf6\nemoji_emotions ea22\nemoji_events ea23\nemoji_flags ea1a\nemoji_food_beverage ea1b\nemoji_nature ea1c\nemoji_objects ea24\nemoji_people ea1d\nemoji_symbols ea1e\nemoji_transportation ea1f\nenergy_savings_leaf ec1a\nengineering ea3d\nenhance_photo_translate e8fc\nenhanced_encryption e63f\nequalizer e01d\nerror e000\nerror_outline e001\nescalator f1a1\nescalator_warning f1ac\neuro ea15\neuro_symbol e926\nev_station e56d\nevent e878\nevent_available e614\nevent_busy e615\nevent_note e616\nevent_repeat eb7b\nevent_seat e903\nexit_to_app e879\nexpand e94f\nexpand_circle_down e7cd\nexpand_less e5ce\nexpand_more e5cf\nexplicit e01e\nexplore e87a\nexplore_off e9a8\nexposure e3ca\nexposure_minus_1 e3cb\nexposure_minus_2 e3cc\nexposure_neg_1 e3cb\nexposure_neg_2 e3cc\nexposure_plus_1 e3cd\nexposure_plus_2 e3ce\nexposure_zero e3cf\nextension e87b\nextension_off e4f5\nface e87c\nface_2 f8da\nface_3 f8db\nface_4 f8dc\nface_5 f8dd\nface_6 f8de\nface_retouching_natural ef4e\nface_retouching_off f007\nfacebook f234\nfact_check f0c5\nfactory ebbc\nfamily_restroom f1a2\nfast_forward e01f\nfast_rewind e020\nfastfood e57a\nfavorite e87d\nfavorite_border e87e\nfavorite_outline e87e\nfax ead8\nfeatured_play_list e06d\nfeatured_video e06e\nfeed f009\nfeedback e87f\nfemale e590\nfence f1f6\nfestival ea68\nfiber_dvr e05d\nfiber_manual_record e061\nfiber_new e05e\nfiber_pin e06a\nfiber_smart_record e062\nfile_copy e173\nfile_download e2c4\nfile_download_done e9aa\nfile_download_off e4fe\nfile_open eaf3\nfile_present ea0e\nfile_upload e2c6\nfilter e3d3\nfilter_1 e3d0\nfilter_2 e3d1\nfilter_3 e3d2\nfilter_4 e3d4\nfilter_5 e3d5\nfilter_6 e3d6\nfilter_7 e3d7\nfilter_8 e3d8\nfilter_9 e3d9\nfilter_9_plus e3da\nfilter_alt ef4f\nfilter_alt_off eb32\nfilter_b_and_w e3db\nfilter_center_focus e3dc\nfilter_drama e3dd\nfilter_frames e3de\nfilter_hdr e3df\nfilter_list e152\nfilter_list_alt e94e\nfilter_list_off eb57\nfilter_none e3e0\nfilter_tilt_shift e3e2\nfilter_vintage e3e3\nfind_in_page e880\nfind_replace e881\nfingerprint e90d\nfire_extinguisher f1d8\nfire_hydrant f1a3\nfire_hydrant_alt f8f1\nfire_truck f8f2\nfireplace ea43\nfirst_page e5dc\nfit_screen ea10\nfitbit e82b\nfitness_center eb43\nflag e153\nflag_circle eaf8\nflaky ef50\nflare e3e4\nflash_auto e3e5\nflash_off e3e6\nflash_on e3e7\nflashlight_off f00a\nflashlight_on f00b\nflatware f00c\nflight e539\nflight_class e7cb\nflight_land e904\nflight_takeoff e905\nflip e3e8\nflip_camera_android ea37\nflip_camera_ios ea38\nflip_to_back e882\nflip_to_front e883\nflood ebe6\nflourescent f00d\nflutter_dash e00b\nfmd_bad f00e\nfmd_good f00f\nfoggy e818\nfolder e2c7\nfolder_copy ebbd\nfolder_delete eb34\nfolder_off eb83\nfolder_open e2c8\nfolder_shared e2c9\nfolder_special e617\nfolder_zip eb2c\nfollow_the_signs f222\nfont_download e167\nfont_download_off e4f9\nfood_bank f1f2\nforest ea99\nfork_left eba0\nfork_right ebac\nformat_align_center e234\nformat_align_justify e235\nformat_align_left e236\nformat_align_right e237\nformat_bold e238\nformat_clear e239\nformat_color_fill e23a\nformat_color_reset e23b\nformat_color_text e23c\nformat_indent_decrease e23d\nformat_indent_increase e23e\nformat_italic e23f\nformat_line_spacing e240\nformat_list_bulleted e241\nformat_list_numbered e242\nformat_list_numbered_rtl e267\nformat_overline eb65\nformat_paint e243\nformat_quote e244\nformat_shapes e25e\nformat_size e245\nformat_strikethrough e246\nformat_textdirection_l_to_r e247\nformat_textdirection_r_to_l e248\nformat_underline e249\nformat_underlined e249\nfort eaad\nforum e0bf\nforward e154\nforward_10 e056\nforward_30 e057\nforward_5 e058\nforward_to_inbox f187\nfoundation f200\nfree_breakfast eb44\nfree_cancellation e748\nfront_hand e769\nfullscreen e5d0\nfullscreen_exit e5d1\nfunctions e24a\ng_mobiledata f010\ng_translate e927\ngamepad e30f\ngames e021\ngarage f011\ngas_meter ec19\ngavel e90e\ngenerating_tokens e749\ngesture e155\nget_app e884\ngif e908\ngif_box e7a3\ngirl eb68\ngite e58b\ngoat 10fffd\ngolf_course eb45\ngpp_bad f012\ngpp_good f013\ngpp_maybe f014\ngps_fixed e1b3\ngps_not_fixed e1b4\ngps_off e1b5\ngrade e885\ngradient e3e9\ngrading ea4f\ngrain e3ea\ngraphic_eq e1b8\ngrass f205\ngrid_3x3 f015\ngrid_4x4 f016\ngrid_goldenratio f017\ngrid_off e3eb\ngrid_on e3ec\ngrid_view e9b0\ngroup e7ef\ngroup_add e7f0\ngroup_off e747\ngroup_remove e7ad\ngroup_work e886\ngroups f233\ngroups_2 f8df\ngroups_3 f8e0\nh_mobiledata f018\nh_plus_mobiledata f019\nhail e9b1\nhandshake ebcb\nhandyman f10b\nhardware ea59\nhd e052\nhdr_auto f01a\nhdr_auto_select f01b\nhdr_enhanced_select ef51\nhdr_off e3ed\nhdr_off_select f01c\nhdr_on e3ee\nhdr_on_select f01d\nhdr_plus f01e\nhdr_strong e3f1\nhdr_weak e3f2\nheadphones f01f\nheadphones_battery f020\nheadset e310\nheadset_mic e311\nheadset_off e33a\nhealing e3f3\nhealth_and_safety e1d5\nhearing e023\nhearing_disabled f104\nheart_broken eac2\nheat_pump ec18\nheight ea16\nhelp e887\nhelp_center f1c0\nhelp_outline e8fd\nhevc f021\nhexagon eb39\nhide_image f022\nhide_source f023\nhigh_quality e024\nhighlight e25f\nhighlight_alt ef52\nhighlight_off e888\nhighlight_remove e888\nhiking e50a\nhistory e889\nhistory_edu ea3e\nhistory_toggle_off f17d\nhive eaa6\nhls eb8a\nhls_off eb8c\nholiday_village e58a\nhome e88a\nhome_filled e9b2\nhome_max f024\nhome_mini f025\nhome_repair_service f100\nhome_work ea09\nhorizontal_distribute e014\nhorizontal_rule f108\nhorizontal_split e947\nhot_tub eb46\nhotel e53a\nhotel_class e743\nhourglass_bottom ea5c\nhourglass_disabled ef53\nhourglass_empty e88b\nhourglass_full e88c\nhourglass_top ea5b\nhouse ea44\nhouse_siding f202\nhouseboat e584\nhow_to_reg e174\nhow_to_vote e175\nhtml eb7e\nhttp e902\nhttps e88d\nhub e9f4\nhvac f10e\nice_skating e50b\nicecream ea69\nimage e3f4\nimage_aspect_ratio e3f5\nimage_not_supported f116\nimage_search e43f\nimagesearch_roller e9b4\nimport_contacts e0e0\nimport_export e0c3\nimportant_devices e912\ninbox e156\nincomplete_circle e79b\nindeterminate_check_box e909\ninfo e88e\ninfo_outline e88f\ninput e890\ninsert_chart e24b\ninsert_chart_outlined e26a\ninsert_comment e24c\ninsert_drive_file e24d\ninsert_emoticon e24e\ninsert_invitation e24f\ninsert_link e250\ninsert_page_break eaca\ninsert_photo e251\ninsights f092\ninstall_desktop eb71\ninstall_mobile eb72\nintegration_instructions ef54\ninterests e7c8\ninterpreter_mode e83b\ninventory e179\ninventory_2 e1a1\ninvert_colors e891\ninvert_colors_off e0c4\ninvert_colors_on e891\nios_share e6b8\niron e583\niso e3f6\njavascript eb7c\njoin_full eaeb\njoin_inner eaf4\njoin_left eaf2\njoin_right eaea\nkayaking e50c\nkebab_dining e842\nkey e73c\nkey_off eb84\nkeyboard e312\nkeyboard_alt f028\nkeyboard_arrow_down e313\nkeyboard_arrow_left e314\nkeyboard_arrow_right e315\nkeyboard_arrow_up e316\nkeyboard_backspace e317\nkeyboard_capslock e318\nkeyboard_command eae0\nkeyboard_command_key eae7\nkeyboard_control e5d3\nkeyboard_control_key eae6\nkeyboard_double_arrow_down ead0\nkeyboard_double_arrow_left eac3\nkeyboard_double_arrow_right eac9\nkeyboard_double_arrow_up eacf\nkeyboard_hide e31a\nkeyboard_option eadf\nkeyboard_option_key eae8\nkeyboard_return e31b\nkeyboard_tab e31c\nkeyboard_voice e31d\nking_bed ea45\nkitchen eb47\nkitesurfing e50d\nlabel e892\nlabel_important e937\nlabel_important_outline e948\nlabel_off e9b6\nlabel_outline e893\nlan eb2f\nlandscape e3f7\nlandslide ebd7\nlanguage e894\nlaptop e31e\nlaptop_chromebook e31f\nlaptop_mac e320\nlaptop_windows e321\nlast_page e5dd\nlaunch e895\nlayers e53b\nlayers_clear e53c\nleaderboard f20c\nleak_add e3f8\nleak_remove e3f9\nleave_bags_at_home f21b\nlegend_toggle f11b\nlens e3fa\nlens_blur f029\nlibrary_add e02e\nlibrary_add_check e9b7\nlibrary_books e02f\nlibrary_music e030\nlight f02a\nlight_mode e518\nlightbulb e0f0\nlightbulb_circle ebfe\nlightbulb_outline e90f\nline_axis ea9a\nline_style e919\nline_weight e91a\nlinear_scale e260\nlink e157\nlink_off e16f\nlinked_camera e438\nliquor ea60\nlist e896\nlist_alt e0ee\nlive_help e0c6\nlive_tv e639\nliving f02b\nlocal_activity e53f\nlocal_airport e53d\nlocal_atm e53e\nlocal_attraction e53f\nlocal_bar e540\nlocal_cafe e541\nlocal_car_wash e542\nlocal_convenience_store e543\nlocal_dining e556\nlocal_drink e544\nlocal_fire_department ef55\nlocal_florist e545\nlocal_gas_station e546\nlocal_grocery_store e547\nlocal_hospital e548\nlocal_hotel e549\nlocal_laundry_service e54a\nlocal_library e54b\nlocal_mall e54c\nlocal_movies e54d\nlocal_offer e54e\nlocal_parking e54f\nlocal_pharmacy e550\nlocal_phone e551\nlocal_pizza e552\nlocal_play e553\nlocal_police ef56\nlocal_post_office e554\nlocal_print_shop e555\nlocal_printshop e555\nlocal_restaurant e556\nlocal_see e557\nlocal_shipping e558\nlocal_taxi e559\nlocation_city e7f1\nlocation_disabled e1b6\nlocation_history e55a\nlocation_off e0c7\nlocation_on e0c8\nlocation_pin f1db\nlocation_searching e1b7\nlock e897\nlock_clock ef57\nlock_open e898\nlock_outline e899\nlock_person f8f3\nlock_reset eade\nlogin ea77\nlogo_dev ead6\nlogout e9ba\nlooks e3fc\nlooks_3 e3fb\nlooks_4 e3fd\nlooks_5 e3fe\nlooks_6 e3ff\nlooks_one e400\nlooks_two e401\nloop e028\nloupe e402\nlow_priority e16d\nloyalty e89a\nlte_mobiledata f02c\nlte_plus_mobiledata f02d\nluggage f235\nlunch_dining ea61\nlyrics ec0b\nmacro_off f8d2\nmail e158\nmail_lock ec0a\nmail_outline e0e1\nmale e58e\nman e4eb\nman_2 f8e1\nman_3 f8e2\nman_4 f8e3\nmanage_accounts f02e\nmanage_history ebe7\nmanage_search f02f\nmap e55b\nmaps_home_work f030\nmaps_ugc ef58\nmargin e9bb\nmark_as_unread e9bc\nmark_chat_read f18b\nmark_chat_unread f189\nmark_email_read f18c\nmark_email_unread f18a\nmark_unread_chat_alt eb9d\nmarkunread e159\nmarkunread_mailbox e89b\nmasks f218\nmaximize e930\nmedia_bluetooth_off f031\nmedia_bluetooth_on f032\nmediation efa7\nmedical_information ebed\nmedical_services f109\nmedication f033\nmedication_liquid ea87\nmeeting_room eb4f\nmemory e322\nmenu e5d2\nmenu_book ea19\nmenu_open e9bd\nmerge eb98\nmerge_type e252\nmessage e0c9\nmessenger e0ca\nmessenger_outline e0cb\nmic e029\nmic_external_off ef59\nmic_external_on ef5a\nmic_none e02a\nmic_off e02b\nmicrowave f204\nmilitary_tech ea3f\nminimize e931\nminor_crash ebf1\nmiscellaneous_services f10c\nmissed_video_call e073\nmms e618\nmobile_friendly e200\nmobile_off e201\nmobile_screen_share e0e7\nmobiledata_off f034\nmode f097\nmode_comment e253\nmode_edit e254\nmode_edit_outline f035\nmode_fan_off ec17\nmode_night f036\nmode_of_travel e7ce\nmode_standby f037\nmodel_training f0cf\nmonetization_on e263\nmoney e57d\nmoney_off e25c\nmoney_off_csred f038\nmonitor ef5b\nmonitor_heart eaa2\nmonitor_weight f039\nmonochrome_photos e403\nmood e7f2\nmood_bad e7f3\nmoped eb28\nmore e619\nmore_horiz e5d3\nmore_time ea5d\nmore_vert e5d4\nmosque eab2\nmotion_photos_auto f03a\nmotion_photos_off e9c0\nmotion_photos_on e9c1\nmotion_photos_pause f227\nmotion_photos_paused e9c2\nmotorcycle e91b\nmouse e323\nmove_down eb61\nmove_to_inbox e168\nmove_up eb64\nmovie e02c\nmovie_creation e404\nmovie_filter e43a\nmoving e501\nmp e9c3\nmultiline_chart e6df\nmultiple_stop f1b9\nmultitrack_audio e1b8\nmuseum ea36\nmusic_note e405\nmusic_off e440\nmusic_video e063\nmy_library_add e02e\nmy_library_books e02f\nmy_library_music e030\nmy_location e55c\nnat ef5c\nnature e406\nnature_people e407\nnavigate_before e408\nnavigate_next e409\nnavigation e55d\nnear_me e569\nnear_me_disabled f1ef\nnearby_error f03b\nnearby_off f03c\nnest_cam_wired_stand ec16\nnetwork_cell e1b9\nnetwork_check e640\nnetwork_locked e61a\nnetwork_ping ebca\nnetwork_wifi e1ba\nnetwork_wifi_1_bar ebe4\nnetwork_wifi_2_bar ebd6\nnetwork_wifi_3_bar ebe1\nnew_label e609\nnew_releases e031\nnewspaper eb81\nnext_plan ef5d\nnext_week e16a\nnfc e1bb\nnight_shelter f1f1\nnightlife ea62\nnightlight f03d\nnightlight_round ef5e\nnights_stay ea46\nno_accounts f03e\nno_adult_content f8fe\nno_backpack f237\nno_cell f1a4\nno_crash ebf0\nno_drinks f1a5\nno_encryption e641\nno_encryption_gmailerrorred f03f\nno_flash f1a6\nno_food f1a7\nno_luggage f23b\nno_meals f1d6\nno_meals_ouline f229\nno_meeting_room eb4e\nno_photography f1a8\nno_sim e0cc\nno_stroller f1af\nno_transfer f1d5\nnoise_aware ebec\nnoise_control_off ebf3\nnordic_walking e50e\nnorth f1e0\nnorth_east f1e1\nnorth_west f1e2\nnot_accessible f0fe\nnot_interested e033\nnot_listed_location e575\nnot_started f0d1\nnote e06f\nnote_add e89c\nnote_alt f040\nnotes e26c\nnotification_add e399\nnotification_important e004\nnotifications e7f4\nnotifications_active e7f7\nnotifications_none e7f5\nnotifications_off e7f6\nnotifications_on e7f7\nnotifications_paused e7f8\nnow_wallpaper e1bc\nnow_widgets e1bd\nnumbers eac7\noffline_bolt e932\noffline_pin e90a\noffline_share e9c5\noil_barrel ec15\non_device_training ebfd\nondemand_video e63a\nonline_prediction f0eb\nopacity e91c\nopen_in_browser e89d\nopen_in_full f1ce\nopen_in_new e89e\nopen_in_new_off e4f6\nopen_with e89f\nother_houses e58c\noutbond f228\noutbound e1ca\noutbox ef5f\noutdoor_grill ea47\noutgoing_mail f0d2\noutlet f1d4\noutlined_flag e16e\noutput ebbe\npadding e9c8\npages e7f9\npageview e8a0\npaid f041\npalette e40a\npan_tool e925\npan_tool_alt ebb9\npanorama e40b\npanorama_fish_eye e40c\npanorama_fisheye e40c\npanorama_horizontal e40d\npanorama_horizontal_select ef60\npanorama_photosphere e9c9\npanorama_photosphere_select e9ca\npanorama_vertical e40e\npanorama_vertical_select ef61\npanorama_wide_angle e40f\npanorama_wide_angle_select ef62\nparagliding e50f\npark ea63\nparty_mode e7fa\npassword f042\npattern f043\npause e034\npause_circle e1a2\npause_circle_filled e035\npause_circle_outline e036\npause_presentation e0ea\npayment e8a1\npayments ef63\npaypal ea8d\npedal_bike eb29\npending ef64\npending_actions f1bb\npentagon eb50\npeople e7fb\npeople_alt ea21\npeople_outline e7fc\npercent eb58\nperm_camera_mic e8a2\nperm_contact_cal e8a3\nperm_contact_calendar e8a3\nperm_data_setting e8a4\nperm_device_info e8a5\nperm_device_information e8a5\nperm_identity e8a6\nperm_media e8a7\nperm_phone_msg e8a8\nperm_scan_wifi e8a9\nperson e7fd\nperson_2 f8e4\nperson_3 f8e5\nperson_4 f8e6\nperson_add e7fe\nperson_add_alt ea4d\nperson_add_alt_1 ef65\nperson_add_disabled e9cb\nperson_off e510\nperson_outline e7ff\nperson_pin e55a\nperson_pin_circle e56a\nperson_remove ef66\nperson_remove_alt_1 ef67\nperson_search f106\npersonal_injury e6da\npersonal_video e63b\npest_control f0fa\npest_control_rodent f0fd\npets e91d\nphishing ead7\nphone e0cd\nphone_android e324\nphone_bluetooth_speaker e61b\nphone_callback e649\nphone_disabled e9cc\nphone_enabled e9cd\nphone_forwarded e61c\nphone_in_talk e61d\nphone_iphone e325\nphone_locked e61e\nphone_missed e61f\nphone_paused e620\nphonelink e326\nphonelink_erase e0db\nphonelink_lock e0dc\nphonelink_off e327\nphonelink_ring e0dd\nphonelink_setup e0de\nphoto e410\nphoto_album e411\nphoto_camera e412\nphoto_camera_back ef68\nphoto_camera_front ef69\nphoto_filter e43b\nphoto_library e413\nphoto_size_select_actual e432\nphoto_size_select_large e433\nphoto_size_select_small e434\nphp eb8f\npiano e521\npiano_off e520\npicture_as_pdf e415\npicture_in_picture e8aa\npicture_in_picture_alt e911\npie_chart e6c4\npie_chart_outline f044\npie_chart_outlined e6c5\npin f045\npin_drop e55e\npin_end e767\npin_invoke e763\npinch eb38\npivot_table_chart e9ce\npix eaa3\nplace e55f\nplagiarism ea5a\nplay_arrow e037\nplay_circle e1c4\nplay_circle_fill e038\nplay_circle_filled e038\nplay_circle_outline e039\nplay_disabled ef6a\nplay_for_work e906\nplay_lesson f047\nplaylist_add e03b\nplaylist_add_check e065\nplaylist_add_check_circle e7e6\nplaylist_add_circle e7e5\nplaylist_play e05f\nplaylist_remove eb80\nplumbing f107\nplus_one e800\npodcasts f048\npoint_of_sale f17e\npolicy ea17\npoll e801\npolyline ebbb\npolymer e8ab\npool eb48\nportable_wifi_off e0ce\nportrait e416\npost_add ea20\npower e63c\npower_input e336\npower_off e646\npower_settings_new e8ac\nprecision_manufacturing f049\npregnant_woman e91e\npresent_to_all e0df\npreview f1c5\nprice_change f04a\nprice_check f04b\nprint e8ad\nprint_disabled e9cf\npriority_high e645\nprivacy_tip f0dc\nprivate_connectivity e744\nproduction_quantity_limits e1d1\npropane ec14\npropane_tank ec13\npsychology ea4a\npsychology_alt f8ea\npublic e80b\npublic_off f1ca\npublish e255\npublished_with_changes f232\npunch_clock eaa8\npush_pin f10d\nqr_code ef6b\nqr_code_2 e00a\nqr_code_scanner f206\nquery_builder e8ae\nquery_stats e4fc\nquestion_answer e8af\nquestion_mark eb8b\nqueue e03c\nqueue_music e03d\nqueue_play_next e066\nquick_contacts_dialer e0cf\nquick_contacts_mail e0d0\nquickreply ef6c\nquiz f04c\nquora ea98\nr_mobiledata f04d\nradar f04e\nradio e03e\nradio_button_checked e837\nradio_button_off e836\nradio_button_on e837\nradio_button_unchecked e836\nrailway_alert e9d1\nramen_dining ea64\nramp_left eb9c\nramp_right eb96\nrate_review e560\nraw_off f04f\nraw_on f050\nread_more ef6d\nreal_estate_agent e73a\nreceipt e8b0\nreceipt_long ef6e\nrecent_actors e03f\nrecommend e9d2\nrecord_voice_over e91f\nrectangle eb54\nrecycling e760\nreddit eaa0\nredeem e8b1\nredo e15a\nreduce_capacity f21c\nrefresh e5d5\nremember_me f051\nremove e15b\nremove_circle e15c\nremove_circle_outline e15d\nremove_done e9d3\nremove_from_queue e067\nremove_moderator e9d4\nremove_red_eye e417\nremove_road ebfc\nremove_shopping_cart e928\nreorder e8fe\nrepartition f8e8\nrepeat e040\nrepeat_on e9d6\nrepeat_one e041\nrepeat_one_on e9d7\nreplay e042\nreplay_10 e059\nreplay_30 e05a\nreplay_5 e05b\nreplay_circle_filled e9d8\nreply e15e\nreply_all e15f\nreport e160\nreport_gmailerrorred f052\nreport_off e170\nreport_problem e8b2\nrequest_page f22c\nrequest_quote f1b6\nreset_tv e9d9\nrestart_alt f053\nrestaurant e56c\nrestaurant_menu e561\nrestore e8b3\nrestore_from_trash e938\nrestore_page e929\nreviews f054\nrice_bowl f1f5\nring_volume e0d1\nrocket eba5\nrocket_launch eb9b\nroller_shades ec12\nroller_shades_closed ec11\nroller_skating ebcd\nroofing f201\nroom e8b4\nroom_preferences f1b8\nroom_service eb49\nrotate_90_degrees_ccw e418\nrotate_90_degrees_cw eaab\nrotate_left e419\nrotate_right e41a\nroundabout_left eb99\nroundabout_right eba3\nrounded_corner e920\nroute eacd\nrouter e328\nrowing e921\nrss_feed e0e5\nrsvp f055\nrtt e9ad\nrule f1c2\nrule_folder f1c9\nrun_circle ef6f\nrunning_with_errors e51d\nrv_hookup e642\nsafety_check ebef\nsafety_divider e1cc\nsailing e502\nsanitizer f21d\nsatellite e562\nsatellite_alt eb3a\nsave e161\nsave_alt e171\nsave_as eb60\nsaved_search ea11\nsavings e2eb\nscale eb5f\nscanner e329\nscatter_plot e268\nschedule e8b5\nschedule_send ea0a\nschema e4fd\nschool e80c\nscience ea4b\nscore e269\nscoreboard ebd0\nscreen_lock_landscape e1be\nscreen_lock_portrait e1bf\nscreen_lock_rotation e1c0\nscreen_rotation e1c1\nscreen_rotation_alt ebee\nscreen_search_desktop ef70\nscreen_share e0e2\nscreenshot f056\nscreenshot_monitor ec08\nscuba_diving ebce\nsd e9dd\nsd_card e623\nsd_card_alert f057\nsd_storage e1c2\nsearch e8b6\nsearch_off ea76\nsecurity e32a\nsecurity_update f058\nsecurity_update_good f059\nsecurity_update_warning f05a\nsegment e94b\nselect_all e162\nself_improvement ea78\nsell f05b\nsend e163\nsend_and_archive ea0c\nsend_time_extension eadb\nsend_to_mobile f05c\nsensor_door f1b5\nsensor_occupied ec10\nsensor_window f1b4\nsensors e51e\nsensors_off e51f\nsentiment_dissatisfied e811\nsentiment_neutral e812\nsentiment_satisfied e813\nsentiment_satisfied_alt e0ed\nsentiment_very_dissatisfied e814\nsentiment_very_satisfied e815\nset_meal f1ea\nsettings e8b8\nsettings_accessibility f05d\nsettings_applications e8b9\nsettings_backup_restore e8ba\nsettings_bluetooth e8bb\nsettings_brightness e8bd\nsettings_cell e8bc\nsettings_display e8bd\nsettings_ethernet e8be\nsettings_input_antenna e8bf\nsettings_input_component e8c0\nsettings_input_composite e8c1\nsettings_input_hdmi e8c2\nsettings_input_svideo e8c3\nsettings_overscan e8c4\nsettings_phone e8c5\nsettings_power e8c6\nsettings_remote e8c7\nsettings_suggest f05e\nsettings_system_daydream e1c3\nsettings_voice e8c8\nsevere_cold ebd3\nshape_line f8d3\nshare e80d\nshare_arrival_time e524\nshare_location f05f\nshield e9e0\nshield_moon eaa9\nshop e8c9\nshop_2 e19e\nshop_two e8ca\nshopify ea9d\nshopping_bag f1cc\nshopping_basket e8cb\nshopping_cart e8cc\nshopping_cart_checkout eb88\nshort_text e261\nshortcut f060\nshow_chart e6e1\nshower f061\nshuffle e043\nshuffle_on e9e1\nshutter_speed e43d\nsick f220\nsign_language ebe5\nsignal_cellular_0_bar f0a8\nsignal_cellular_4_bar e1c8\nsignal_cellular_alt e202\nsignal_cellular_alt_1_bar ebdf\nsignal_cellular_alt_2_bar ebe3\nsignal_cellular_connected_no_internet_0_bar f0ac\nsignal_cellular_connected_no_internet_4_bar e1cd\nsignal_cellular_no_sim e1ce\nsignal_cellular_nodata f062\nsignal_cellular_null e1cf\nsignal_cellular_off e1d0\nsignal_wifi_0_bar f0b0\nsignal_wifi_4_bar e1d8\nsignal_wifi_4_bar_lock e1d9\nsignal_wifi_bad f063\nsignal_wifi_connected_no_internet_4 f064\nsignal_wifi_off e1da\nsignal_wifi_statusbar_4_bar f065\nsignal_wifi_statusbar_connected_no_internet_4 f066\nsignal_wifi_statusbar_null f067\nsignpost eb91\nsim_card e32b\nsim_card_alert e624\nsim_card_download f068\nsingle_bed ea48\nsip f069\nskateboarding e511\nskip_next e044\nskip_previous e045\nsledding e512\nslideshow e41b\nslow_motion_video e068\nsmart_button f1c1\nsmart_display f06a\nsmart_screen f06b\nsmart_toy f06c\nsmartphone e32c\nsmoke_free eb4a\nsmoking_rooms eb4b\nsms e625\nsms_failed e626\nsnapchat ea6e\nsnippet_folder f1c7\nsnooze e046\nsnowboarding e513\nsnowing e80f\nsnowmobile e503\nsnowshoeing e514\nsoap f1b2\nsocial_distance e1cb\nsolar_power ec0f\nsort e164\nsort_by_alpha e053\nsos ebf7\nsoup_kitchen e7d3\nsource f1c4\nsouth f1e3\nsouth_america e7e4\nsouth_east f1e4\nsouth_west f1e5\nspa eb4c\nspace_bar e256\nspace_dashboard e66b\nspatial_audio ebeb\nspatial_audio_off ebe8\nspatial_tracking ebea\nspeaker e32d\nspeaker_group e32e\nspeaker_notes e8cd\nspeaker_notes_off e92a\nspeaker_phone e0d2\nspeed e9e4\nspellcheck e8ce\nsplitscreen f06d\nspoke e9a7\nsports ea30\nsports_bar f1f3\nsports_baseball ea51\nsports_basketball ea26\nsports_cricket ea27\nsports_esports ea28\nsports_football ea29\nsports_golf ea2a\nsports_gymnastics ebc4\nsports_handball ea33\nsports_hockey ea2b\nsports_kabaddi ea34\nsports_martial_arts eae9\nsports_mma ea2c\nsports_motorsports ea2d\nsports_rugby ea2e\nsports_score f06e\nsports_soccer ea2f\nsports_tennis ea32\nsports_volleyball ea31\nsquare eb36\nsquare_foot ea49\nssid_chart eb66\nstacked_bar_chart e9e6\nstacked_line_chart f22b\nstadium eb90\nstairs f1a9\nstar e838\nstar_border e83a\nstar_border_purple500 f099\nstar_half e839\nstar_outline f06f\nstar_purple500 f09a\nstar_rate f0ec\nstars e8d0\nstart e089\nstay_current_landscape e0d3\nstay_current_portrait e0d4\nstay_primary_landscape e0d5\nstay_primary_portrait e0d6\nsticky_note_2 f1fc\nstop e047\nstop_circle ef71\nstop_screen_share e0e3\nstorage e1db\nstore e8d1\nstore_mall_directory e563\nstorefront ea12\nstorm f070\nstraight eb95\nstraighten e41c\nstream e9e9\nstreetview e56e\nstrikethrough_s e257\nstroller f1ae\nstyle e41d\nsubdirectory_arrow_left e5d9\nsubdirectory_arrow_right e5da\nsubject e8d2\nsubscript f111\nsubscriptions e064\nsubtitles e048\nsubtitles_off ef72\nsubway e56f\nsummarize f071\nsunny e81a\nsunny_snowing e819\nsuperscript f112\nsupervised_user_circle e939\nsupervisor_account e8d3\nsupport ef73\nsupport_agent f0e2\nsurfing e515\nsurround_sound e049\nswap_calls e0d7\nswap_horiz e8d4\nswap_horizontal_circle e933\nswap_vert e8d5\nswap_vert_circle e8d6\nswap_vertical_circle e8d6\nswipe e9ec\nswipe_down eb53\nswipe_down_alt eb30\nswipe_left eb59\nswipe_left_alt eb33\nswipe_right eb52\nswipe_right_alt eb56\nswipe_up eb2e\nswipe_up_alt eb35\nswipe_vertical eb51\nswitch_access_shortcut e7e1\nswitch_access_shortcut_add e7e2\nswitch_account e9ed\nswitch_camera e41e\nswitch_left f1d1\nswitch_right f1d2\nswitch_video e41f\nsynagogue eab0\nsync e627\nsync_alt ea18\nsync_disabled e628\nsync_lock eaee\nsync_problem e629\nsystem_security_update f072\nsystem_security_update_good f073\nsystem_security_update_warning f074\nsystem_update e62a\nsystem_update_alt e8d7\nsystem_update_tv e8d7\ntab e8d8\ntab_unselected e8d9\ntable_bar ead2\ntable_chart e265\ntable_restaurant eac6\ntable_rows f101\ntable_view f1be\ntablet e32f\ntablet_android e330\ntablet_mac e331\ntag e9ef\ntag_faces e420\ntakeout_dining ea74\ntap_and_play e62b\ntapas f1e9\ntask f075\ntask_alt e2e6\ntaxi_alert ef74\ntelegram ea6b\ntemple_buddhist eab3\ntemple_hindu eaaf\nterminal eb8e\nterrain e564\ntext_decrease eadd\ntext_fields e262\ntext_format e165\ntext_increase eae2\ntext_rotate_up e93a\ntext_rotate_vertical e93b\ntext_rotation_angledown e93c\ntext_rotation_angleup e93d\ntext_rotation_down e93e\ntext_rotation_none e93f\ntext_snippet f1c6\ntextsms e0d8\ntexture e421\ntheater_comedy ea66\ntheaters e8da\nthermostat f076\nthermostat_auto f077\nthumb_down e8db\nthumb_down_alt e816\nthumb_down_off_alt e9f2\nthumb_up e8dc\nthumb_up_alt e817\nthumb_up_off_alt e9f3\nthumbs_up_down e8dd\nthunderstorm ebdb\ntiktok ea7e\ntime_to_leave e62c\ntimelapse e422\ntimeline e922\ntimer e425\ntimer_10 e423\ntimer_10_select f07a\ntimer_3 e424\ntimer_3_select f07b\ntimer_off e426\ntips_and_updates e79a\ntire_repair ebc8\ntitle e264\ntoc e8de\ntoday e8df\ntoggle_off e9f5\ntoggle_on e9f6\ntoken ea25\ntoll e8e0\ntonality e427\ntopic f1c8\ntornado e199\ntouch_app e913\ntour ef75\ntoys e332\ntrack_changes e8e1\ntraffic e565\ntrain e570\ntram e571\ntranscribe f8ec\ntransfer_within_a_station e572\ntransform e428\ntransgender e58d\ntransit_enterexit e579\ntranslate e8e2\ntravel_explore e2db\ntrending_down e8e3\ntrending_flat e8e4\ntrending_neutral e8e4\ntrending_up e8e5\ntrip_origin e57b\ntroubleshoot e1d2\ntry f07c\ntsunami ebd8\ntty f1aa\ntune e429\ntungsten f07d\nturn_left eba6\nturn_right ebab\nturn_sharp_left eba7\nturn_sharp_right ebaa\nturn_slight_left eba4\nturn_slight_right eb9a\nturned_in e8e6\nturned_in_not e8e7\ntv e333\ntv_off e647\ntwo_wheeler e9f9\ntype_specimen f8f0\nu_turn_left eba1\nu_turn_right eba2\numbrella f1ad\nunarchive e169\nundo e166\nunfold_less e5d6\nunfold_less_double f8cf\nunfold_more e5d7\nunfold_more_double f8d0\nunpublished f236\nunsubscribe e0eb\nupcoming f07e\nupdate e923\nupdate_disabled e075\nupgrade f0fb\nupload f09b\nupload_file e9fc\nusb e1e0\nusb_off e4fa\nvaccines e138\nvape_free ebc6\nvaping_rooms ebcf\nverified ef76\nverified_user e8e8\nvertical_align_bottom e258\nvertical_align_center e259\nvertical_align_top e25a\nvertical_distribute e076\nvertical_shades ec0e\nvertical_shades_closed ec0d\nvertical_split e949\nvibration e62d\nvideo_call e070\nvideo_camera_back f07f\nvideo_camera_front f080\nvideo_collection e04a\nvideo_file eb87\nvideo_label e071\nvideo_library e04a\nvideo_settings ea75\nvideo_stable f081\nvideocam e04b\nvideocam_off e04c\nvideogame_asset e338\nvideogame_asset_off e500\nview_agenda e8e9\nview_array e8ea\nview_carousel e8eb\nview_column e8ec\nview_comfortable e42a\nview_comfy e42a\nview_comfy_alt eb73\nview_compact e42b\nview_compact_alt eb74\nview_cozy eb75\nview_day e8ed\nview_headline e8ee\nview_in_ar e9fe\nview_kanban eb7f\nview_list e8ef\nview_module e8f0\nview_quilt e8f1\nview_sidebar f114\nview_stream e8f2\nview_timeline eb85\nview_week e8f3\nvignette e435\nvilla e586\nvisibility e8f4\nvisibility_off e8f5\nvoice_chat e62e\nvoice_over_off e94a\nvoicemail e0d9\nvolcano ebda\nvolume_down e04d\nvolume_down_alt e79c\nvolume_mute e04e\nvolume_off e04f\nvolume_up e050\nvolunteer_activism ea70\nvpn_key e0da\nvpn_key_off eb7a\nvpn_lock e62f\nvrpano f082\nwallet f8ff\nwallet_giftcard e8f6\nwallet_membership e8f7\nwallet_travel e8f8\nwallpaper e1bc\nwarehouse ebb8\nwarning e002\nwarning_amber f083\nwash f1b1\nwatch e334\nwatch_later e924\nwatch_off eae3\nwater f084\nwater_damage f203\nwater_drop e798\nwaterfall_chart ea00\nwaves e176\nwaving_hand e766\nwb_auto e42c\nwb_cloudy e42d\nwb_incandescent e42e\nwb_iridescent e436\nwb_shade ea01\nwb_sunny e430\nwb_twighlight ea02\nwb_twilight e1c6\nwc e63d\nweb e051\nweb_asset e069\nweb_asset_off e4f7\nweb_stories e595\nwebhook eb92\nwechat ea81\nweekend e16b\nwest f1e6\nwhatsapp ea9c\nwhatshot e80e\nwheelchair_pickup f1ab\nwhere_to_vote e177\nwidgets e1bd\nwidth_full f8f5\nwidth_normal f8f6\nwidth_wide f8f7\nwifi e63e\nwifi_1_bar e4ca\nwifi_2_bar e4d9\nwifi_calling ef77\nwifi_calling_3 f085\nwifi_channel eb6a\nwifi_find eb31\nwifi_lock e1e1\nwifi_off e648\nwifi_password eb6b\nwifi_protected_setup f0fc\nwifi_tethering e1e2\nwifi_tethering_error ead9\nwifi_tethering_error_rounded f086\nwifi_tethering_off f087\nwind_power ec0c\nwindow f088\nwine_bar f1e8\nwoman e13e\nwoman_2 f8e7\nwoo_commerce ea6d\nwordpress ea9f\nwork e8f9\nwork_history ec09\nwork_off e942\nwork_outline e943\nworkspace_premium e7af\nworkspaces e1a0\nworkspaces_filled ea0d\nworkspaces_outline ea0f\nwrap_text e25b\nwrong_location ef78\nwysiwyg f1c3\nyard f089\nyoutube_searched_for e8fa\nzoom_in e8ff\nzoom_in_map eb2d\nzoom_out e900\nzoom_out_map e56b\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/material-icons/MaterialIconsOutlined-Regular.codepoints",
    "content": "10k e951\n10mp e952\n11mp e953\n123 eb8d\n12mp e954\n13mp e955\n14mp e956\n15mp e957\n16mp e958\n17mp e959\n18_up_rating f8fd\n18mp e95a\n19mp e95b\n1k e95c\n1k_plus e95d\n1x_mobiledata efcd\n20mp e95e\n21mp e95f\n22mp e960\n23mp e961\n24mp e962\n2k e963\n2k_plus e964\n2mp e965\n30fps efce\n30fps_select efcf\n360 e577\n3d_rotation e84d\n3g_mobiledata efd0\n3k e966\n3k_plus e967\n3mp e968\n3p efd1\n4g_mobiledata efd2\n4g_plus_mobiledata efd3\n4k e072\n4k_plus e969\n4mp e96a\n5g ef38\n5k e96b\n5k_plus e96c\n5mp e96d\n60fps efd4\n60fps_select efd5\n6_ft_apart f21e\n6k e96e\n6k_plus e96f\n6mp e970\n7k e971\n7k_plus e972\n7mp e973\n8k e974\n8k_plus e975\n8mp e976\n9k e977\n9k_plus e978\n9mp e979\nabc eb94\nac_unit eb3b\naccess_alarm e190\naccess_alarms e191\naccess_time e192\naccess_time_filled efd6\naccessibility e84e\naccessibility_new e92c\naccessible e914\naccessible_forward e934\naccount_balance e84f\naccount_balance_wallet e850\naccount_box e851\naccount_circle e853\naccount_tree e97a\nad_units ef39\nadb e60e\nadd e145\nadd_a_photo e439\nadd_alarm e193\nadd_alert e003\nadd_box e146\nadd_business e729\nadd_card eb86\nadd_chart e97b\nadd_circle e147\nadd_circle_outline e148\nadd_comment e266\nadd_home f8eb\nadd_home_work f8ed\nadd_ic_call e97c\nadd_link e178\nadd_location e567\nadd_location_alt ef3a\nadd_moderator e97d\nadd_photo_alternate e43e\nadd_reaction e1d3\nadd_road ef3b\nadd_shopping_cart e854\nadd_task f23a\nadd_to_drive e65c\nadd_to_home_screen e1fe\nadd_to_photos e39d\nadd_to_queue e05c\naddchart ef3c\nadf_scanner eada\nadjust e39e\nadmin_panel_settings ef3d\nadobe ea96\nads_click e762\nagriculture ea79\nair efd8\nairline_seat_flat e630\nairline_seat_flat_angled e631\nairline_seat_individual_suite e632\nairline_seat_legroom_extra e633\nairline_seat_legroom_normal e634\nairline_seat_legroom_reduced e635\nairline_seat_recline_extra e636\nairline_seat_recline_normal e637\nairline_stops e7d0\nairlines e7ca\nairplane_ticket efd9\nairplanemode_active e195\nairplanemode_inactive e194\nairplanemode_off e194\nairplanemode_on e195\nairplay e055\nairport_shuttle eb3c\nalarm e855\nalarm_add e856\nalarm_off e857\nalarm_on e858\nalbum e019\nalign_horizontal_center e00f\nalign_horizontal_left e00d\nalign_horizontal_right e010\nalign_vertical_bottom e015\nalign_vertical_center e011\nalign_vertical_top e00c\nall_inbox e97f\nall_inclusive eb3d\nall_out e90b\nalt_route f184\nalternate_email e0e6\namp_stories ea13\nanalytics ef3e\nanchor f1cd\nandroid e859\nanimation e71c\nannouncement e85a\naod efda\napartment ea40\napi f1b7\napp_blocking ef3f\napp_registration ef40\napp_settings_alt ef41\napp_shortcut eae4\napple ea80\napproval e982\napps e5c3\napps_outage e7cc\narchitecture ea3b\narchive e149\narea_chart e770\narrow_back e5c4\narrow_back_ios e5e0\narrow_back_ios_new e2ea\narrow_circle_down f181\narrow_circle_left eaa7\narrow_circle_right eaaa\narrow_circle_up f182\narrow_downward e5db\narrow_drop_down e5c5\narrow_drop_down_circle e5c6\narrow_drop_up e5c7\narrow_forward e5c8\narrow_forward_ios e5e1\narrow_left e5de\narrow_outward f8ce\narrow_right e5df\narrow_right_alt e941\narrow_upward e5d8\nart_track e060\narticle ef42\naspect_ratio e85b\nassessment e85c\nassignment e85d\nassignment_ind e85e\nassignment_late e85f\nassignment_return e860\nassignment_returned e861\nassignment_turned_in e862\nassist_walker f8d5\nassistant e39f\nassistant_direction e988\nassistant_photo e3a0\nassured_workload eb6f\natm e573\nattach_email ea5e\nattach_file e226\nattach_money e227\nattachment e2bc\nattractions ea52\nattribution efdb\naudio_file eb82\naudiotrack e3a1\nauto_awesome e65f\nauto_awesome_mosaic e660\nauto_awesome_motion e661\nauto_delete ea4c\nauto_fix_high e663\nauto_fix_normal e664\nauto_fix_off e665\nauto_graph e4fb\nauto_mode ec20\nauto_stories e666\nautofps_select efdc\nautorenew e863\nav_timer e01b\nbaby_changing_station f19b\nback_hand e764\nbackpack f19c\nbackspace e14a\nbackup e864\nbackup_table ef43\nbadge ea67\nbakery_dining ea53\nbalance eaf6\nbalcony e58f\nballot e172\nbar_chart e26b\nbatch_prediction f0f5\nbathroom efdd\nbathtub ea41\nbattery_0_bar ebdc\nbattery_1_bar ebd9\nbattery_2_bar ebe0\nbattery_3_bar ebdd\nbattery_4_bar ebe2\nbattery_5_bar ebd4\nbattery_6_bar ebd2\nbattery_alert e19c\nbattery_charging_full e1a3\nbattery_full e1a4\nbattery_saver efde\nbattery_std e1a5\nbattery_unknown e1a6\nbeach_access eb3e\nbed efdf\nbedroom_baby efe0\nbedroom_child efe1\nbedroom_parent efe2\nbedtime ef44\nbedtime_off eb76\nbeenhere e52d\nbento f1f4\nbike_scooter ef45\nbiotech ea3a\nblender efe3\nblind f8d6\nblinds e286\nblinds_closed ec1f\nblock e14b\nbloodtype efe4\nbluetooth e1a7\nbluetooth_audio e60f\nbluetooth_connected e1a8\nbluetooth_disabled e1a9\nbluetooth_drive efe5\nbluetooth_searching e1aa\nblur_circular e3a2\nblur_linear e3a3\nblur_off e3a4\nblur_on e3a5\nbolt ea0b\nbook e865\nbook_online f217\nbookmark e866\nbookmark_add e598\nbookmark_added e599\nbookmark_border e867\nbookmark_outline e867\nbookmark_remove e59a\nbookmarks e98b\nborder_all e228\nborder_bottom e229\nborder_clear e22a\nborder_color e22b\nborder_horizontal e22c\nborder_inner e22d\nborder_left e22e\nborder_outer e22f\nborder_right e230\nborder_style e231\nborder_top e232\nborder_vertical e233\nboy eb67\nbranding_watermark e06b\nbreakfast_dining ea54\nbrightness_1 e3a6\nbrightness_2 e3a7\nbrightness_3 e3a8\nbrightness_4 e3a9\nbrightness_5 e3aa\nbrightness_6 e3ab\nbrightness_7 e3ac\nbrightness_auto e1ab\nbrightness_high e1ac\nbrightness_low e1ad\nbrightness_medium e1ae\nbroadcast_on_home f8f8\nbroadcast_on_personal f8f9\nbroken_image e3ad\nbrowse_gallery ebd1\nbrowser_not_supported ef47\nbrowser_updated e7cf\nbrunch_dining ea73\nbrush e3ae\nbubble_chart e6dd\nbug_report e868\nbuild e869\nbuild_circle ef48\nbungalow e591\nburst_mode e43c\nbus_alert e98f\nbusiness e0af\nbusiness_center eb3f\ncabin e589\ncable efe6\ncached e86a\ncake e7e9\ncalculate ea5f\ncalendar_month ebcc\ncalendar_today e935\ncalendar_view_day e936\ncalendar_view_month efe7\ncalendar_view_week efe8\ncall e0b0\ncall_end e0b1\ncall_made e0b2\ncall_merge e0b3\ncall_missed e0b4\ncall_missed_outgoing e0e4\ncall_received e0b5\ncall_split e0b6\ncall_to_action e06c\ncamera e3af\ncamera_alt e3b0\ncamera_enhance e8fc\ncamera_front e3b1\ncamera_indoor efe9\ncamera_outdoor efea\ncamera_rear e3b2\ncamera_roll e3b3\ncameraswitch efeb\ncampaign ef49\ncancel e5c9\ncancel_presentation e0e9\ncancel_schedule_send ea39\ncandlestick_chart ead4\ncar_crash ebf2\ncar_rental ea55\ncar_repair ea56\ncard_giftcard e8f6\ncard_membership e8f7\ncard_travel e8f8\ncarpenter f1f8\ncases e992\ncasino eb40\ncast e307\ncast_connected e308\ncast_for_education efec\ncastle eab1\ncatching_pokemon e508\ncategory e574\ncelebration ea65\ncell_tower ebba\ncell_wifi e0ec\ncenter_focus_strong e3b4\ncenter_focus_weak e3b5\nchair efed\nchair_alt efee\nchalet e585\nchange_circle e2e7\nchange_history e86b\ncharging_station f19d\nchat e0b7\nchat_bubble e0ca\nchat_bubble_outline e0cb\ncheck e5ca\ncheck_box e834\ncheck_box_outline_blank e835\ncheck_circle e86c\ncheck_circle_outline e92d\nchecklist e6b1\nchecklist_rtl e6b3\ncheckroom f19e\nchevron_left e5cb\nchevron_right e5cc\nchild_care eb41\nchild_friendly eb42\nchrome_reader_mode e86d\nchurch eaae\ncircle ef4a\ncircle_notifications e994\nclass e86e\nclean_hands f21f\ncleaning_services f0ff\nclear e14c\nclear_all e0b8\nclose e5cd\nclose_fullscreen f1cf\nclosed_caption e01c\nclosed_caption_disabled f1dc\nclosed_caption_off e996\ncloud e2bd\ncloud_circle e2be\ncloud_done e2bf\ncloud_download e2c0\ncloud_off e2c1\ncloud_queue e2c2\ncloud_sync eb5a\ncloud_upload e2c3\nco2 e7b0\nco_present eaf0\ncode e86f\ncode_off e4f3\ncoffee efef\ncoffee_maker eff0\ncollections e3b6\ncollections_bookmark e431\ncolor_lens e3b7\ncolorize e3b8\ncomment e0b9\ncomment_bank ea4e\ncomments_disabled e7a2\ncommit eaf5\ncommute e940\ncompare e3b9\ncompare_arrows e915\ncompass_calibration e57c\ncompost e761\ncompress e94d\ncomputer e30a\nconfirmation_num e638\nconfirmation_number e638\nconnect_without_contact f223\nconnected_tv e998\nconnecting_airports e7c9\nconstruction ea3c\ncontact_emergency f8d1\ncontact_mail e0d0\ncontact_page f22e\ncontact_phone e0cf\ncontact_support e94c\ncontactless ea71\ncontacts e0ba\ncontent_copy f08a\ncontent_cut f08b\ncontent_paste f098\ncontent_paste_go ea8e\ncontent_paste_off e4f8\ncontent_paste_search ea9b\ncontrast eb37\ncontrol_camera e074\ncontrol_point e3ba\ncontrol_point_duplicate e3bb\ncookie eaac\ncopy f08a\ncopy_all e2ec\ncopyright e90c\ncoronavirus f221\ncorporate_fare f1d0\ncottage e587\ncountertops f1f7\ncreate e150\ncreate_new_folder e2cc\ncredit_card e870\ncredit_card_off e4f4\ncredit_score eff1\ncrib e588\ncrisis_alert ebe9\ncrop e3be\ncrop_16_9 e3bc\ncrop_3_2 e3bd\ncrop_5_4 e3bf\ncrop_7_5 e3c0\ncrop_din e3c1\ncrop_free e3c2\ncrop_landscape e3c3\ncrop_original e3c4\ncrop_portrait e3c5\ncrop_rotate e437\ncrop_square e3c6\ncruelty_free e799\ncss eb93\ncurrency_bitcoin ebc5\ncurrency_exchange eb70\ncurrency_franc eafa\ncurrency_lira eaef\ncurrency_pound eaf1\ncurrency_ruble eaec\ncurrency_rupee eaf7\ncurrency_yen eafb\ncurrency_yuan eaf9\ncurtains ec1e\ncurtains_closed ec1d\ncut f08b\ncyclone ebd5\ndangerous e99a\ndark_mode e51c\ndashboard e871\ndashboard_customize e99b\ndata_array ead1\ndata_exploration e76f\ndata_object ead3\ndata_saver_off eff2\ndata_saver_on eff3\ndata_thresholding eb9f\ndata_usage e1af\ndataset f8ee\ndataset_linked f8ef\ndate_range e916\ndeblur eb77\ndeck ea42\ndehaze e3c7\ndelete e872\ndelete_forever e92b\ndelete_outline e92e\ndelete_sweep e16c\ndelivery_dining ea72\ndensity_large eba9\ndensity_medium eb9e\ndensity_small eba8\ndeparture_board e576\ndescription e873\ndeselect ebb6\ndesign_services f10a\ndesk f8f4\ndesktop_access_disabled e99d\ndesktop_mac e30b\ndesktop_windows e30c\ndetails e3c8\ndeveloper_board e30d\ndeveloper_board_off e4ff\ndeveloper_mode e1b0\ndevice_hub e335\ndevice_thermostat e1ff\ndevice_unknown e339\ndevices e1b1\ndevices_fold ebde\ndevices_other e337\ndialer_sip e0bb\ndialpad e0bc\ndiamond ead5\ndifference eb7d\ndining eff4\ndinner_dining ea57\ndirections e52e\ndirections_bike e52f\ndirections_boat e532\ndirections_boat_filled eff5\ndirections_bus e530\ndirections_bus_filled eff6\ndirections_car e531\ndirections_car_filled eff7\ndirections_ferry e532\ndirections_off f10f\ndirections_railway e534\ndirections_railway_filled eff8\ndirections_run e566\ndirections_subway e533\ndirections_subway_filled eff9\ndirections_train e534\ndirections_transit e535\ndirections_transit_filled effa\ndirections_walk e536\ndirty_lens ef4b\ndisabled_by_default f230\ndisabled_visible e76e\ndisc_full e610\ndiscord ea6c\ndiscount ebc9\ndisplay_settings eb97\ndiversity_1 f8d7\ndiversity_2 f8d8\ndiversity_3 f8d9\ndnd_forwardslash e611\ndns e875\ndo_disturb f08c\ndo_disturb_alt f08d\ndo_disturb_off f08e\ndo_disturb_on f08f\ndo_not_disturb e612\ndo_not_disturb_alt e611\ndo_not_disturb_off e643\ndo_not_disturb_on e644\ndo_not_disturb_on_total_silence effb\ndo_not_step f19f\ndo_not_touch f1b0\ndock e30e\ndocument_scanner e5fa\ndomain e7ee\ndomain_add eb62\ndomain_disabled e0ef\ndomain_verification ef4c\ndone e876\ndone_all e877\ndone_outline e92f\ndonut_large e917\ndonut_small e918\ndoor_back effc\ndoor_front effd\ndoor_sliding effe\ndoorbell efff\ndouble_arrow ea50\ndownhill_skiing e509\ndownload f090\ndownload_done f091\ndownload_for_offline f000\ndownloading f001\ndrafts e151\ndrag_handle e25d\ndrag_indicator e945\ndraw e746\ndrive_eta e613\ndrive_file_move e675\ndrive_file_move_rtl e76d\ndrive_file_rename_outline e9a2\ndrive_folder_upload e9a3\ndry f1b3\ndry_cleaning ea58\nduo e9a5\ndvr e1b2\ndynamic_feed ea14\ndynamic_form f1bf\ne_mobiledata f002\nearbuds f003\nearbuds_battery f004\neast f1df\neco ea35\nedgesensor_high f005\nedgesensor_low f006\nedit e3c9\nedit_attributes e578\nedit_calendar e742\nedit_location e568\nedit_location_alt e1c5\nedit_note e745\nedit_notifications e525\nedit_off e950\nedit_road ef4d\negg eacc\negg_alt eac8\neject e8fb\nelderly f21a\nelderly_woman eb69\nelectric_bike eb1b\nelectric_bolt ec1c\nelectric_car eb1c\nelectric_meter ec1b\nelectric_moped eb1d\nelectric_rickshaw eb1e\nelectric_scooter eb1f\nelectrical_services f102\nelevator f1a0\nemail e0be\nemergency e1eb\nemergency_recording ebf4\nemergency_share ebf6\nemoji_emotions ea22\nemoji_events ea23\nemoji_flags ea1a\nemoji_food_beverage ea1b\nemoji_nature ea1c\nemoji_objects ea24\nemoji_people ea1d\nemoji_symbols ea1e\nemoji_transportation ea1f\nenergy_savings_leaf ec1a\nengineering ea3d\nenhance_photo_translate e8fc\nenhanced_encryption e63f\nequalizer e01d\nerror e000\nerror_outline e001\nescalator f1a1\nescalator_warning f1ac\neuro ea15\neuro_symbol e926\nev_station e56d\nevent e878\nevent_available e614\nevent_busy e615\nevent_note e616\nevent_repeat eb7b\nevent_seat e903\nexit_to_app e879\nexpand e94f\nexpand_circle_down e7cd\nexpand_less e5ce\nexpand_more e5cf\nexplicit e01e\nexplore e87a\nexplore_off e9a8\nexposure e3ca\nexposure_minus_1 e3cb\nexposure_minus_2 e3cc\nexposure_neg_1 e3cb\nexposure_neg_2 e3cc\nexposure_plus_1 e3cd\nexposure_plus_2 e3ce\nexposure_zero e3cf\nextension e87b\nextension_off e4f5\nface e87c\nface_2 f8da\nface_3 f8db\nface_4 f8dc\nface_5 f8dd\nface_6 f8de\nface_retouching_natural ef4e\nface_retouching_off f007\nface_unlock f008\nfacebook f234\nfact_check f0c5\nfactory ebbc\nfamily_restroom f1a2\nfast_forward e01f\nfast_rewind e020\nfastfood e57a\nfavorite e87d\nfavorite_border e87e\nfavorite_outline e87e\nfax ead8\nfeatured_play_list e06d\nfeatured_video e06e\nfeed f009\nfeedback e87f\nfemale e590\nfence f1f6\nfestival ea68\nfiber_dvr e05d\nfiber_manual_record e061\nfiber_new e05e\nfiber_pin e06a\nfiber_smart_record e062\nfile_copy e173\nfile_download e2c4\nfile_download_done e9aa\nfile_download_off e4fe\nfile_open eaf3\nfile_present ea0e\nfile_upload e2c6\nfilter e3d3\nfilter_1 e3d0\nfilter_2 e3d1\nfilter_3 e3d2\nfilter_4 e3d4\nfilter_5 e3d5\nfilter_6 e3d6\nfilter_7 e3d7\nfilter_8 e3d8\nfilter_9 e3d9\nfilter_9_plus e3da\nfilter_alt ef4f\nfilter_alt_off eb32\nfilter_b_and_w e3db\nfilter_center_focus e3dc\nfilter_drama e3dd\nfilter_frames e3de\nfilter_hdr e3df\nfilter_list e152\nfilter_list_off eb57\nfilter_none e3e0\nfilter_tilt_shift e3e2\nfilter_vintage e3e3\nfind_in_page e880\nfind_replace e881\nfingerprint e90d\nfire_extinguisher f1d8\nfire_hydrant_alt f8f1\nfire_truck f8f2\nfireplace ea43\nfirst_page e5dc\nfit_screen ea10\nfitbit e82b\nfitness_center eb43\nflag e153\nflag_circle eaf8\nflaky ef50\nflare e3e4\nflash_auto e3e5\nflash_off e3e6\nflash_on e3e7\nflashlight_off f00a\nflashlight_on f00b\nflatware f00c\nflight e539\nflight_class e7cb\nflight_land e904\nflight_takeoff e905\nflip e3e8\nflip_camera_android ea37\nflip_camera_ios ea38\nflip_to_back e882\nflip_to_front e883\nflood ebe6\nflourescent f00d\nflutter_dash e00b\nfmd_bad f00e\nfmd_good f00f\nfolder e2c7\nfolder_copy ebbd\nfolder_delete eb34\nfolder_off eb83\nfolder_open e2c8\nfolder_shared e2c9\nfolder_special e617\nfolder_zip eb2c\nfollow_the_signs f222\nfont_download e167\nfont_download_off e4f9\nfood_bank f1f2\nforest ea99\nfork_left eba0\nfork_right ebac\nformat_align_center e234\nformat_align_justify e235\nformat_align_left e236\nformat_align_right e237\nformat_bold e238\nformat_clear e239\nformat_color_fill e23a\nformat_color_reset e23b\nformat_color_text e23c\nformat_indent_decrease e23d\nformat_indent_increase e23e\nformat_italic e23f\nformat_line_spacing e240\nformat_list_bulleted e241\nformat_list_numbered e242\nformat_list_numbered_rtl e267\nformat_overline eb65\nformat_paint e243\nformat_quote e244\nformat_shapes e25e\nformat_size e245\nformat_strikethrough e246\nformat_textdirection_l_to_r e247\nformat_textdirection_r_to_l e248\nformat_underline e765\nformat_underlined e765\nfort eaad\nforum e0bf\nforward e154\nforward_10 e056\nforward_30 e057\nforward_5 e058\nforward_to_inbox f187\nfoundation f200\nfree_breakfast eb44\nfree_cancellation e748\nfront_hand e769\nfullscreen e5d0\nfullscreen_exit e5d1\nfunctions e24a\ng_mobiledata f010\ng_translate e927\ngamepad e30f\ngames e021\ngarage f011\ngas_meter ec19\ngavel e90e\ngenerating_tokens e749\ngesture e155\nget_app e884\ngif e908\ngif_box e7a3\ngirl eb68\ngite e58b\ngolf_course eb45\ngpp_bad f012\ngpp_good f013\ngpp_maybe f014\ngps_fixed e1b3\ngps_not_fixed e1b4\ngps_off e1b5\ngrade e885\ngradient e3e9\ngrading ea4f\ngrain e3ea\ngraphic_eq e1b8\ngrass f205\ngrid_3x3 f015\ngrid_4x4 f016\ngrid_goldenratio f017\ngrid_off e3eb\ngrid_on e3ec\ngrid_view e9b0\ngroup e7ef\ngroup_add e7f0\ngroup_off e747\ngroup_remove e7ad\ngroup_work e886\ngroups f233\ngroups_2 f8df\ngroups_3 f8e0\nh_mobiledata f018\nh_plus_mobiledata f019\nhail e9b1\nhandshake ebcb\nhandyman f10b\nhardware ea59\nhd e052\nhdr_auto f01a\nhdr_auto_select f01b\nhdr_enhanced_select ef51\nhdr_off e3ed\nhdr_off_select f01c\nhdr_on e3ee\nhdr_on_select f01d\nhdr_plus f01e\nhdr_strong e3f1\nhdr_weak e3f2\nheadphones f01f\nheadphones_battery f020\nheadset e310\nheadset_mic e311\nheadset_off e33a\nhealing e3f3\nhealth_and_safety e1d5\nhearing e023\nhearing_disabled f104\nheart_broken eac2\nheat_pump ec18\nheight ea16\nhelp e887\nhelp_center f1c0\nhelp_outline e8fd\nhevc f021\nhexagon eb39\nhide_image f022\nhide_source f023\nhigh_quality e024\nhighlight e25f\nhighlight_alt ef52\nhighlight_off e888\nhighlight_remove e888\nhiking e50a\nhistory e889\nhistory_edu ea3e\nhistory_toggle_off f17d\nhive eaa6\nhls eb8a\nhls_off eb8c\nholiday_village e58a\nhome e88a\nhome_max f024\nhome_mini f025\nhome_repair_service f100\nhome_work ea09\nhorizontal_distribute e014\nhorizontal_rule f108\nhorizontal_split e947\nhot_tub eb46\nhotel e53a\nhotel_class e743\nhourglass_bottom ea5c\nhourglass_disabled ef53\nhourglass_empty e88b\nhourglass_full e88c\nhourglass_top ea5b\nhouse ea44\nhouse_siding f202\nhouseboat e584\nhow_to_reg e174\nhow_to_vote e175\nhtml eb7e\nhttp e902\nhttps e88d\nhub e9f4\nhvac f10e\nice_skating e50b\nicecream ea69\nimage e3f4\nimage_aspect_ratio e3f5\nimage_not_supported f116\nimage_search e43f\nimagesearch_roller e9b4\nimport_contacts e0e0\nimport_export e0c3\nimportant_devices e912\ninbox e156\nincomplete_circle e79b\nindeterminate_check_box e909\ninfo e88e\ninput e890\ninsert_chart e24b\ninsert_chart_outlined e26a\ninsert_comment e24c\ninsert_drive_file e24d\ninsert_emoticon e24e\ninsert_invitation e24f\ninsert_link e250\ninsert_page_break eaca\ninsert_photo e251\ninsights f092\ninstall_desktop eb71\ninstall_mobile eb72\nintegration_instructions ef54\ninterests e7c8\ninterpreter_mode e83b\ninventory e179\ninventory_2 e1a1\ninvert_colors e891\ninvert_colors_off e0c4\ninvert_colors_on e891\nios_share e6b8\niron e583\niso e3f6\njavascript eb7c\njoin_full eaeb\njoin_inner eaf4\njoin_left eaf2\njoin_right eaea\nkayaking e50c\nkebab_dining e842\nkey e73c\nkey_off eb84\nkeyboard e312\nkeyboard_alt f028\nkeyboard_arrow_down e313\nkeyboard_arrow_left e314\nkeyboard_arrow_right e315\nkeyboard_arrow_up e316\nkeyboard_backspace e317\nkeyboard_capslock e318\nkeyboard_command_key eae7\nkeyboard_control eae1\nkeyboard_control_key eae6\nkeyboard_double_arrow_down ead0\nkeyboard_double_arrow_left eac3\nkeyboard_double_arrow_right eac9\nkeyboard_double_arrow_up eacf\nkeyboard_hide e31a\nkeyboard_option_key eae8\nkeyboard_return e31b\nkeyboard_tab e31c\nkeyboard_voice e31d\nking_bed ea45\nkitchen eb47\nkitesurfing e50d\nlabel e892\nlabel_important e937\nlabel_off e9b6\nlan eb2f\nlandscape e3f7\nlandslide ebd7\nlanguage e894\nlaptop e31e\nlaptop_chromebook e31f\nlaptop_mac e320\nlaptop_windows e321\nlast_page e5dd\nlaunch e895\nlayers e53b\nlayers_clear e53c\nleaderboard f20c\nleak_add e3f8\nleak_remove e3f9\nleave_bags_at_home f23b\nlegend_toggle f11b\nlens e3fa\nlens_blur f029\nlibrary_add e02e\nlibrary_add_check e9b7\nlibrary_books e02f\nlibrary_music e030\nlight f02a\nlight_mode e518\nlightbulb e0f0\nlightbulb_circle ebfe\nline_axis ea9a\nline_style e919\nline_weight e91a\nlinear_scale e260\nlink e157\nlink_off e16f\nlinked_camera e438\nliquor ea60\nlist e896\nlist_alt e0ee\nlive_help e0c6\nlive_tv e639\nliving f02b\nlocal_activity e53f\nlocal_airport e53d\nlocal_atm e53e\nlocal_attraction e53f\nlocal_bar e540\nlocal_cafe e541\nlocal_car_wash e542\nlocal_convenience_store e543\nlocal_dining e556\nlocal_drink e544\nlocal_fire_department ef55\nlocal_florist e545\nlocal_gas_station e546\nlocal_grocery_store e547\nlocal_hospital e548\nlocal_hotel e549\nlocal_laundry_service e54a\nlocal_library e54b\nlocal_mall e54c\nlocal_movies e54d\nlocal_offer e54e\nlocal_parking e54f\nlocal_pharmacy e550\nlocal_phone e551\nlocal_pizza e552\nlocal_play e553\nlocal_police ef56\nlocal_post_office e554\nlocal_print_shop e555\nlocal_printshop e555\nlocal_restaurant e556\nlocal_see e557\nlocal_shipping e558\nlocal_taxi e559\nlocation_city e7f1\nlocation_disabled e1b6\nlocation_history e55a\nlocation_off e0c7\nlocation_on e0c8\nlocation_searching e1b7\nlock e897\nlock_clock ef57\nlock_open e898\nlock_person f8f3\nlock_reset eade\nlogin ea77\nlogo_dev ead6\nlogout e9ba\nlooks e3fc\nlooks_3 e3fb\nlooks_4 e3fd\nlooks_5 e3fe\nlooks_6 e3ff\nlooks_one e400\nlooks_two e401\nloop e028\nloupe e402\nlow_priority e16d\nloyalty e89a\nlte_mobiledata f02c\nlte_plus_mobiledata f02d\nluggage f235\nlunch_dining ea61\nlyrics ec0b\nmacro_off f8d2\nmail e158\nmail_lock ec0a\nmail_outline e0e1\nmale e58e\nman e4eb\nman_2 f8e1\nman_3 f8e2\nman_4 f8e3\nmanage_accounts f02e\nmanage_history ebe7\nmanage_search f02f\nmap e55b\nmaps_home_work f030\nmaps_ugc ef58\nmargin e9bb\nmark_as_unread e9bc\nmark_chat_read f18b\nmark_chat_unread f189\nmark_email_read f18c\nmark_email_unread f18a\nmark_unread_chat_alt eb9d\nmarkunread e159\nmarkunread_mailbox e89b\nmasks f218\nmaximize e930\nmedia_bluetooth_off f031\nmedia_bluetooth_on f032\nmediation efa7\nmedical_information ebed\nmedical_services f109\nmedication f033\nmedication_liquid ea87\nmeeting_room eb4f\nmemory e322\nmenu e5d2\nmenu_book ea19\nmenu_open e9bd\nmerge eb98\nmerge_type e252\nmessage e0c9\nmessenger e0ca\nmessenger_outline e0cb\nmic e029\nmic_external_off ef59\nmic_external_on ef5a\nmic_none e02a\nmic_off e02b\nmicrowave f204\nmilitary_tech ea3f\nminimize e931\nminor_crash ebf1\nmiscellaneous_services f10c\nmissed_video_call e073\nmms e618\nmobile_friendly e200\nmobile_off e201\nmobile_screen_share e0e7\nmobiledata_off f034\nmode f097\nmode_comment e253\nmode_edit e254\nmode_edit_outline f035\nmode_fan_off ec17\nmode_night f036\nmode_of_travel e7ce\nmode_standby f037\nmodel_training f0cf\nmonetization_on e263\nmoney e57d\nmoney_off e25c\nmoney_off_csred f038\nmonitor ef5b\nmonitor_heart eaa2\nmonitor_weight f039\nmonochrome_photos e403\nmood e7f2\nmood_bad e7f3\nmoped eb28\nmore e619\nmore_horiz eae1\nmore_time ea5d\nmore_vert e5d4\nmosque eab2\nmotion_photos_auto f03a\nmotion_photos_off e9c0\nmotion_photos_on e9c1\nmotion_photos_pause f227\nmotion_photos_paused e9c2\nmotorcycle e91b\nmouse e323\nmove_down eb61\nmove_to_inbox e168\nmove_up eb64\nmovie e02c\nmovie_creation e404\nmovie_filter e43a\nmoving e501\nmp e9c3\nmultiline_chart e6df\nmultiple_stop f1b9\nmultitrack_audio e1b8\nmuseum ea36\nmusic_note e405\nmusic_off e440\nmusic_video e063\nmy_library_add e02e\nmy_library_books e02f\nmy_library_music e030\nmy_location e55c\nnat ef5c\nnature e406\nnature_people e407\nnavigate_before e408\nnavigate_next e409\nnavigation e55d\nnear_me e569\nnear_me_disabled f1ef\nnearby_error f03b\nnearby_off f03c\nnest_cam_wired_stand ec16\nnetwork_cell e1b9\nnetwork_check e640\nnetwork_locked e61a\nnetwork_ping ebca\nnetwork_wifi e1ba\nnetwork_wifi_1_bar ebe4\nnetwork_wifi_2_bar ebd6\nnetwork_wifi_3_bar ebe1\nnew_label e609\nnew_releases e031\nnewspaper eb81\nnext_plan ef5d\nnext_week e16a\nnfc e1bb\nnight_shelter f1f1\nnightlife ea62\nnightlight f03d\nnightlight_round ef5e\nnights_stay ea46\nno_accounts f03e\nno_adult_content f8fe\nno_backpack f237\nno_cell f1a4\nno_crash ebf0\nno_drinks f1a5\nno_encryption e641\nno_encryption_gmailerrorred f03f\nno_flash f1a6\nno_food f1a7\nno_luggage f23b\nno_meals f1d6\nno_meeting_room eb4e\nno_photography f1a8\nno_sim e0cc\nno_stroller f1af\nno_transfer f1d5\nnoise_aware ebec\nnoise_control_off ebf3\nnordic_walking e50e\nnorth f1e0\nnorth_east f1e1\nnorth_west f1e2\nnot_accessible f0fe\nnot_interested e033\nnot_listed_location e575\nnot_started f0d1\nnote e06f\nnote_add e89c\nnote_alt f040\nnotes e26c\nnotification_add e399\nnotification_important e004\nnotifications e7f4\nnotifications_active e7f7\nnotifications_none e7f5\nnotifications_off e7f6\nnotifications_on e7f7\nnotifications_paused e7f8\nnow_wallpaper e75f\nnow_widgets e75e\nnumbers eac7\noffline_bolt e932\noffline_pin e90a\noffline_share e9c5\noil_barrel ec15\non_device_training ebfd\nondemand_video e63a\nonline_prediction f0eb\nopacity e91c\nopen_in_browser e89d\nopen_in_full f1ce\nopen_in_new e89e\nopen_in_new_off e4f6\nopen_with e89f\nother_houses e58c\noutbond f228\noutbound e1ca\noutbox ef5f\noutdoor_grill ea47\noutlet f1d4\noutlined_flag e16e\noutput ebbe\npadding e9c8\npages e7f9\npageview e8a0\npaid f041\npalette e40a\npan_tool e925\npan_tool_alt ebb9\npanorama e40b\npanorama_fish_eye e40c\npanorama_fisheye e40c\npanorama_horizontal e40d\npanorama_horizontal_select ef60\npanorama_photosphere e9c9\npanorama_photosphere_select e9ca\npanorama_vertical e40e\npanorama_vertical_select ef61\npanorama_wide_angle e40f\npanorama_wide_angle_select ef62\nparagliding e50f\npark ea63\nparty_mode e7fa\npassword f042\npaste f098\npattern f043\npause e034\npause_circle e1a2\npause_circle_filled e035\npause_circle_outline e036\npause_presentation e0ea\npayment e8a1\npayments ef63\npaypal ea8d\npedal_bike eb29\npending ef64\npending_actions f1bb\npentagon eb50\npeople e7fb\npeople_alt ea21\npeople_outline e7fc\npercent eb58\nperm_camera_mic e8a2\nperm_contact_cal e8a3\nperm_contact_calendar e8a3\nperm_data_setting e8a4\nperm_device_info e8a5\nperm_device_information e8a5\nperm_identity e8a6\nperm_media e8a7\nperm_phone_msg e8a8\nperm_scan_wifi e8a9\nperson e7fd\nperson_2 f8e4\nperson_3 f8e5\nperson_4 f8e6\nperson_add e7fe\nperson_add_alt ea4d\nperson_add_alt_1 ef65\nperson_add_disabled e9cb\nperson_off e510\nperson_outline e7ff\nperson_pin e55a\nperson_pin_circle e56a\nperson_remove ef66\nperson_remove_alt_1 ef67\nperson_search f106\npersonal_injury e6da\npersonal_video e63b\npest_control f0fa\npest_control_rodent f0fd\npets e91d\nphishing ead7\nphone e0cd\nphone_android e324\nphone_bluetooth_speaker e61b\nphone_callback e649\nphone_disabled e9cc\nphone_enabled e9cd\nphone_forwarded e61c\nphone_in_talk e61d\nphone_iphone e325\nphone_locked e61e\nphone_missed e61f\nphone_paused e620\nphonelink e326\nphonelink_erase e0db\nphonelink_lock e0dc\nphonelink_off e327\nphonelink_ring e0dd\nphonelink_setup e0de\nphoto e410\nphoto_album e411\nphoto_camera e412\nphoto_camera_back ef68\nphoto_camera_front ef69\nphoto_filter e43b\nphoto_library e413\nphoto_size_select_actual e432\nphoto_size_select_large e433\nphoto_size_select_small e434\nphp eb8f\npiano e521\npiano_off e520\npicture_as_pdf e415\npicture_in_picture e8aa\npicture_in_picture_alt e911\npie_chart e6c4\npie_chart_outline f044\npin f045\npin_drop e55e\npin_end e767\npin_invoke e763\npinch eb38\npivot_table_chart e9ce\npix eaa3\nplace e55f\nplagiarism ea5a\nplay_arrow e037\nplay_circle e1c4\nplay_circle_fill e038\nplay_circle_filled e038\nplay_circle_outline e039\nplay_disabled ef6a\nplay_for_work e906\nplay_lesson f047\nplaylist_add e03b\nplaylist_add_check e065\nplaylist_add_check_circle e7e6\nplaylist_add_circle e7e5\nplaylist_play e05f\nplaylist_remove eb80\nplumbing f107\nplus_one e800\npodcasts f048\npoint_of_sale f17e\npolicy ea17\npoll e801\npolyline ebbb\npolymer e8ab\npool eb48\nportable_wifi_off e0ce\nportrait e416\npost_add ea20\npower e63c\npower_input e336\npower_off e646\npower_settings_new e8ac\nprecision_manufacturing f049\npregnant_woman e91e\npresent_to_all e0df\npreview f1c5\nprice_change f04a\nprice_check f04b\nprint e8ad\nprint_disabled e9cf\npriority_high e645\nprivacy_tip f0dc\nprivate_connectivity e744\nproduction_quantity_limits e1d1\npropane ec14\npropane_tank ec13\npsychology ea4a\npsychology_alt f8ea\npublic e80b\npublic_off f1ca\npublish e255\npublished_with_changes f232\npunch_clock eaa8\npush_pin f10d\nqr_code ef6b\nqr_code_2 e00a\nqr_code_scanner f206\nquery_builder e8ae\nquery_stats e4fc\nquestion_answer e8af\nquestion_mark eb8b\nqueue e03c\nqueue_music e03d\nqueue_play_next e066\nquick_contacts_dialer e0cf\nquick_contacts_mail e0d0\nquickreply ef6c\nquiz f04c\nquora ea98\nr_mobiledata f04d\nradar f04e\nradio e03e\nradio_button_checked e837\nradio_button_off e836\nradio_button_on e837\nradio_button_unchecked e836\nrailway_alert e9d1\nramen_dining ea64\nramp_left eb9c\nramp_right eb96\nrate_review e560\nraw_off f04f\nraw_on f050\nread_more ef6d\nreal_estate_agent e73a\nreceipt e8b0\nreceipt_long ef6e\nrecent_actors e03f\nrecommend e9d2\nrecord_voice_over e91f\nrectangle eb54\nrecycling e760\nreddit eaa0\nredeem e8b1\nredo e15a\nreduce_capacity f21c\nrefresh e5d5\nremember_me f051\nremove e15b\nremove_circle e15c\nremove_circle_outline e15d\nremove_done e9d3\nremove_from_queue e067\nremove_moderator e9d4\nremove_red_eye e417\nremove_road ebfc\nremove_shopping_cart e928\nreorder e8fe\nrepartition f8e8\nrepeat e040\nrepeat_on e9d6\nrepeat_one e041\nrepeat_one_on e9d7\nreplay e042\nreplay_10 e059\nreplay_30 e05a\nreplay_5 e05b\nreplay_circle_filled e9d8\nreply e15e\nreply_all e15f\nreport e160\nreport_gmailerrorred f052\nreport_off e170\nreport_problem e8b2\nrequest_page f22c\nrequest_quote f1b6\nreset_tv e9d9\nrestart_alt f053\nrestaurant e56c\nrestaurant_menu e561\nrestore e8b3\nrestore_from_trash e938\nrestore_page e929\nreviews f054\nrice_bowl f1f5\nring_volume e0d1\nrocket eba5\nrocket_launch eb9b\nroller_shades ec12\nroller_shades_closed ec11\nroller_skating ebcd\nroofing f201\nroom e8b4\nroom_preferences f1b8\nroom_service eb49\nrotate_90_degrees_ccw e418\nrotate_90_degrees_cw eaab\nrotate_left e419\nrotate_right e41a\nroundabout_left eb99\nroundabout_right eba3\nrounded_corner e920\nroute eacd\nrouter e328\nrowing e921\nrss_feed e0e5\nrsvp f055\nrtt e9ad\nrule f1c2\nrule_folder f1c9\nrun_circle ef6f\nrunning_with_errors e51d\nrv_hookup e642\nsafety_check ebef\nsafety_divider e1cc\nsailing e502\nsanitizer f21d\nsatellite e562\nsatellite_alt eb3a\nsave e161\nsave_alt e171\nsave_as eb60\nsaved_search ea11\nsavings e2eb\nscale eb5f\nscanner e329\nscatter_plot e268\nschedule e8b5\nschedule_send ea0a\nschema e4fd\nschool e80c\nscience ea4b\nscore e269\nscoreboard ebd0\nscreen_lock_landscape e1be\nscreen_lock_portrait e1bf\nscreen_lock_rotation e1c0\nscreen_rotation e1c1\nscreen_rotation_alt ebee\nscreen_search_desktop ef70\nscreen_share e0e2\nscreenshot f056\nscreenshot_monitor ec08\nscuba_diving ebce\nsd e9dd\nsd_card e623\nsd_card_alert f057\nsd_storage e1c2\nsearch e8b6\nsearch_off ea76\nsecurity e32a\nsecurity_update f058\nsecurity_update_good f059\nsecurity_update_warning f05a\nsegment e94b\nselect_all e162\nself_improvement ea78\nsell f05b\nsend e163\nsend_and_archive ea0c\nsend_time_extension eadb\nsend_to_mobile f05c\nsensor_door f1b5\nsensor_occupied ec10\nsensor_window f1b4\nsensors e51e\nsensors_off e51f\nsentiment_dissatisfied e811\nsentiment_neutral e812\nsentiment_satisfied e813\nsentiment_satisfied_alt e0ed\nsentiment_very_dissatisfied e814\nsentiment_very_satisfied e815\nset_meal f1ea\nsettings e8b8\nsettings_accessibility f05d\nsettings_applications e8b9\nsettings_backup_restore e8ba\nsettings_bluetooth e8bb\nsettings_brightness e8bd\nsettings_cell e8bc\nsettings_display e8bd\nsettings_ethernet e8be\nsettings_input_antenna e8bf\nsettings_input_component e8c0\nsettings_input_composite e8c1\nsettings_input_hdmi e8c2\nsettings_input_svideo e8c3\nsettings_overscan e8c4\nsettings_phone e8c5\nsettings_power e8c6\nsettings_remote e8c7\nsettings_suggest f05e\nsettings_system_daydream e1c3\nsettings_voice e8c8\nsevere_cold ebd3\nshape_line f8d3\nshare e80d\nshare_arrival_time e524\nshare_location f05f\nshield e9e0\nshield_moon eaa9\nshop e8c9\nshop_2 e19e\nshop_two e8ca\nshopify ea9d\nshopping_bag f1cc\nshopping_basket e8cb\nshopping_cart e8cc\nshopping_cart_checkout eb88\nshort_text e261\nshortcut f060\nshow_chart e6e1\nshower f061\nshuffle e043\nshuffle_on e9e1\nshutter_speed e43d\nsick f220\nsign_language ebe5\nsignal_cellular_0_bar f0a8\nsignal_cellular_4_bar e1c8\nsignal_cellular_alt e202\nsignal_cellular_alt_1_bar ebdf\nsignal_cellular_alt_2_bar ebe3\nsignal_cellular_connected_no_internet_0_bar f0ac\nsignal_cellular_connected_no_internet_4_bar e1cd\nsignal_cellular_no_sim e1ce\nsignal_cellular_nodata f062\nsignal_cellular_null e1cf\nsignal_cellular_off e1d0\nsignal_wifi_0_bar f0b0\nsignal_wifi_4_bar e1d8\nsignal_wifi_4_bar_lock e1d9\nsignal_wifi_bad f063\nsignal_wifi_connected_no_internet_4 f064\nsignal_wifi_off e1da\nsignal_wifi_statusbar_4_bar f065\nsignal_wifi_statusbar_connected_no_internet_4 f066\nsignal_wifi_statusbar_null f067\nsignpost eb91\nsim_card e32b\nsim_card_alert e624\nsim_card_download f068\nsingle_bed ea48\nsip f069\nskateboarding e511\nskip_next e044\nskip_previous e045\nsledding e512\nslideshow e41b\nslow_motion_video e068\nsmart_button f1c1\nsmart_display f06a\nsmart_screen f06b\nsmart_toy f06c\nsmartphone e32c\nsmoke_free eb4a\nsmoking_rooms eb4b\nsms e625\nsms_failed e626\nsnapchat ea6e\nsnippet_folder f1c7\nsnooze e046\nsnowboarding e513\nsnowmobile e503\nsnowshoeing e514\nsoap f1b2\nsocial_distance e1cb\nsolar_power ec0f\nsort e164\nsort_by_alpha e053\nsos ebf7\nsoup_kitchen e7d3\nsource f1c4\nsouth f1e3\nsouth_america e7e4\nsouth_east f1e4\nsouth_west f1e5\nspa eb4c\nspace_bar e256\nspace_dashboard e66b\nspatial_audio ebeb\nspatial_audio_off ebe8\nspatial_tracking ebea\nspeaker e32d\nspeaker_group e32e\nspeaker_notes e8cd\nspeaker_notes_off e92a\nspeaker_phone e0d2\nspeed e9e4\nspellcheck e8ce\nsplitscreen f06d\nspoke e9a7\nsports ea30\nsports_bar f1f3\nsports_baseball ea51\nsports_basketball ea26\nsports_cricket ea27\nsports_esports ea28\nsports_football ea29\nsports_golf ea2a\nsports_gymnastics ebc4\nsports_handball ea33\nsports_hockey ea2b\nsports_kabaddi ea34\nsports_martial_arts eae9\nsports_mma ea2c\nsports_motorsports ea2d\nsports_rugby ea2e\nsports_score f06e\nsports_soccer ea2f\nsports_tennis ea32\nsports_volleyball ea31\nsquare eb36\nsquare_foot ea49\nssid_chart eb66\nstacked_bar_chart e9e6\nstacked_line_chart f22b\nstadium eb90\nstairs f1a9\nstar e838\nstar_border e83a\nstar_border_purple500 f099\nstar_half e839\nstar_outline f06f\nstar_purple500 f09a\nstar_rate f0ec\nstars e8d0\nstart e089\nstay_current_landscape e0d3\nstay_current_portrait e0d4\nstay_primary_landscape e0d5\nstay_primary_portrait e0d6\nsticky_note_2 f1fc\nstop e047\nstop_circle ef71\nstop_screen_share e0e3\nstorage e1db\nstore e8d1\nstore_mall_directory e563\nstorefront ea12\nstorm f070\nstraight eb95\nstraighten e41c\nstream e9e9\nstreetview e56e\nstrikethrough_s e257\nstroller f1ae\nstyle e41d\nsubdirectory_arrow_left e5d9\nsubdirectory_arrow_right e5da\nsubject e8d2\nsubscript f111\nsubscriptions e064\nsubtitles e048\nsubtitles_off ef72\nsubway e56f\nsummarize f071\nsuperscript f112\nsupervised_user_circle e939\nsupervisor_account e8d3\nsupport ef73\nsupport_agent f0e2\nsurfing e515\nsurround_sound e049\nswap_calls e0d7\nswap_horiz e8d4\nswap_horizontal_circle e933\nswap_vert e8d5\nswap_vert_circle e8d6\nswap_vertical_circle e8d6\nswipe e9ec\nswipe_down eb53\nswipe_down_alt eb30\nswipe_left eb59\nswipe_left_alt eb33\nswipe_right eb52\nswipe_right_alt eb56\nswipe_up eb2e\nswipe_up_alt eb35\nswipe_vertical eb51\nswitch_access_shortcut e7e1\nswitch_access_shortcut_add e7e2\nswitch_account e9ed\nswitch_camera e41e\nswitch_left f1d1\nswitch_right f1d2\nswitch_video e41f\nsynagogue eab0\nsync e627\nsync_alt ea18\nsync_disabled e628\nsync_lock eaee\nsync_problem e629\nsystem_security_update f072\nsystem_security_update_good f073\nsystem_security_update_warning f074\nsystem_update e62a\nsystem_update_alt e8d7\nsystem_update_tv e8d7\ntab e8d8\ntab_unselected e8d9\ntable_bar ead2\ntable_chart e265\ntable_restaurant eac6\ntable_rows f101\ntable_view f1be\ntablet e32f\ntablet_android e330\ntablet_mac e331\ntag e9ef\ntag_faces e420\ntakeout_dining ea74\ntap_and_play e62b\ntapas f1e9\ntask f075\ntask_alt e2e6\ntaxi_alert ef74\ntelegram ea6b\ntemple_buddhist eab3\ntemple_hindu eaaf\nterminal eb8e\nterrain e564\ntext_decrease eadd\ntext_fields e262\ntext_format e165\ntext_increase eae2\ntext_rotate_up e93a\ntext_rotate_vertical e93b\ntext_rotation_angledown e93c\ntext_rotation_angleup e93d\ntext_rotation_down e93e\ntext_rotation_none e93f\ntext_snippet f1c6\ntextsms e0d8\ntexture e421\ntheater_comedy ea66\ntheaters e8da\nthermostat f076\nthermostat_auto f077\nthumb_down e8db\nthumb_down_alt e816\nthumb_down_off_alt e9f2\nthumb_up e8dc\nthumb_up_alt e817\nthumb_up_off_alt e9f3\nthumbs_up_down e8dd\nthunderstorm ebdb\ntiktok ea7e\ntime_to_leave e62c\ntimelapse e422\ntimeline e922\ntimer e425\ntimer_10 e423\ntimer_10_select f07a\ntimer_3 e424\ntimer_3_select f07b\ntimer_off e426\ntips_and_updates e79a\ntire_repair ebc8\ntitle e264\ntoc e8de\ntoday e8df\ntoggle_off e9f5\ntoggle_on e9f6\ntoken ea25\ntoll e8e0\ntonality e427\ntopic f1c8\ntornado e199\ntouch_app e913\ntour ef75\ntoys e332\ntrack_changes e8e1\ntraffic e565\ntrain e570\ntram e571\ntranscribe f8ec\ntransfer_within_a_station e572\ntransform e428\ntransgender e58d\ntransit_enterexit e579\ntranslate e8e2\ntravel_explore e2db\ntrending_down e8e3\ntrending_flat e8e4\ntrending_neutral e8e4\ntrending_up e8e5\ntrip_origin e57b\ntroubleshoot e1d2\ntry f07c\ntsunami ebd8\ntty f1aa\ntune e429\ntungsten f07d\nturn_left eba6\nturn_right ebab\nturn_sharp_left eba7\nturn_sharp_right ebaa\nturn_slight_left eba4\nturn_slight_right eb9a\nturned_in e8e6\nturned_in_not e8e7\ntv e333\ntv_off e647\ntwo_wheeler e9f9\ntype_specimen f8f0\nu_turn_left eba1\nu_turn_right eba2\numbrella f1ad\nunarchive e169\nundo e166\nunfold_less e5d6\nunfold_less_double f8cf\nunfold_more e5d7\nunfold_more_double f8d0\nunpublished f236\nunsubscribe e0eb\nupcoming f07e\nupdate e923\nupdate_disabled e075\nupgrade f0fb\nupload f09b\nupload_file e9fc\nusb e1e0\nusb_off e4fa\nvaccines e138\nvape_free ebc6\nvaping_rooms ebcf\nverified ef76\nverified_user e8e8\nvertical_align_bottom e258\nvertical_align_center e259\nvertical_align_top e25a\nvertical_distribute e076\nvertical_shades ec0e\nvertical_shades_closed ec0d\nvertical_split e949\nvibration e62d\nvideo_call e070\nvideo_camera_back f07f\nvideo_camera_front f080\nvideo_collection e04a\nvideo_file eb87\nvideo_label e071\nvideo_library e04a\nvideo_settings ea75\nvideo_stable f081\nvideocam e04b\nvideocam_off e04c\nvideogame_asset e338\nvideogame_asset_off e500\nview_agenda e8e9\nview_array e8ea\nview_carousel e8eb\nview_column e8ec\nview_comfortable e42a\nview_comfy e42a\nview_comfy_alt eb73\nview_compact e42b\nview_compact_alt eb74\nview_cozy eb75\nview_day e8ed\nview_headline e8ee\nview_in_ar e9fe\nview_kanban eb7f\nview_list e8ef\nview_module e8f0\nview_quilt e8f1\nview_sidebar f114\nview_stream e8f2\nview_timeline eb85\nview_week e8f3\nvignette e435\nvilla e586\nvisibility e8f4\nvisibility_off e8f5\nvoice_chat e62e\nvoice_over_off e94a\nvoicemail e0d9\nvolcano ebda\nvolume_down e04d\nvolume_mute e04e\nvolume_off e04f\nvolume_up e050\nvolunteer_activism ea70\nvpn_key e0da\nvpn_key_off eb7a\nvpn_lock e62f\nvrpano f082\nwallet f8ff\nwallet_giftcard e8f6\nwallet_membership e8f7\nwallet_travel e8f8\nwallpaper e75f\nwarehouse ebb8\nwarning e002\nwarning_amber f083\nwash f1b1\nwatch e334\nwatch_later e924\nwatch_off eae3\nwater f084\nwater_damage f203\nwater_drop e798\nwaterfall_chart ea00\nwaves e176\nwaving_hand e766\nwb_auto e42c\nwb_cloudy e42d\nwb_incandescent e42e\nwb_iridescent e436\nwb_shade ea01\nwb_sunny e430\nwb_twilight e1c6\nwc e63d\nweb e051\nweb_asset e069\nweb_asset_off e4f7\nweb_stories e595\nwebhook eb92\nwechat ea81\nweekend e16b\nwest f1e6\nwhatsapp ea9c\nwhatshot e80e\nwheelchair_pickup f1ab\nwhere_to_vote e177\nwidgets e75e\nwidth_full f8f5\nwidth_normal f8f6\nwidth_wide f8f7\nwifi e63e\nwifi_1_bar e4ca\nwifi_2_bar e4d9\nwifi_calling ef77\nwifi_calling_3 f085\nwifi_channel eb6a\nwifi_find eb31\nwifi_lock e1e1\nwifi_off e648\nwifi_password eb6b\nwifi_protected_setup f0fc\nwifi_tethering e1e2\nwifi_tethering_error f086\nwifi_tethering_error_rounded f086\nwifi_tethering_off f087\nwind_power ec0c\nwindow f088\nwine_bar f1e8\nwoman e13e\nwoman_2 f8e7\nwoo_commerce ea6d\nwordpress ea9f\nwork e8f9\nwork_history ec09\nwork_off e942\nwork_outline e943\nworkspace_premium e7af\nworkspaces e1a0\nwrap_text e25b\nwrong_location ef78\nwysiwyg f1c3\nyard f089\nyoutube_searched_for e8fa\nzoom_in e8ff\nzoom_in_map eb2d\nzoom_out e900\nzoom_out_map e56b\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/material-icons/MaterialIconsRound-Regular.codepoints",
    "content": "10k e951\n10mp e952\n11mp e953\n123 eb8d\n12mp e954\n13mp e955\n14mp e956\n15mp e957\n16mp e958\n17mp e959\n18_up_rating f8fd\n18mp e95a\n19mp e95b\n1k e95c\n1k_plus e95d\n1x_mobiledata efcd\n20mp e95e\n21mp e95f\n22mp e960\n23mp e961\n24mp e962\n2k e963\n2k_plus e964\n2mp e965\n30fps efce\n30fps_select efcf\n360 e577\n3d_rotation e84d\n3g_mobiledata efd0\n3k e966\n3k_plus e967\n3mp e968\n3p efd1\n4g_mobiledata efd2\n4g_plus_mobiledata efd3\n4k e072\n4k_plus e969\n4mp e96a\n5g ef38\n5k e96b\n5k_plus e96c\n5mp e96d\n60fps efd4\n60fps_select efd5\n6_ft_apart f21e\n6k e96e\n6k_plus e96f\n6mp e970\n7k e971\n7k_plus e972\n7mp e973\n8k e974\n8k_plus e975\n8mp e976\n9k e977\n9k_plus e978\n9mp e979\nabc eb94\nac_unit eb3b\naccess_alarm e190\naccess_alarms e191\naccess_time e192\naccess_time_filled efd6\naccessibility e84e\naccessibility_new e92c\naccessible e914\naccessible_forward e934\naccount_balance e84f\naccount_balance_wallet e850\naccount_box e851\naccount_circle e853\naccount_tree e97a\nad_units ef39\nadb e60e\nadd e145\nadd_a_photo e439\nadd_alarm e193\nadd_alert e003\nadd_box e146\nadd_business e729\nadd_card eb86\nadd_chart e97b\nadd_circle e147\nadd_circle_outline e148\nadd_comment e266\nadd_home f8eb\nadd_home_work f8ed\nadd_ic_call e97c\nadd_link e178\nadd_location e567\nadd_location_alt ef3a\nadd_moderator e97d\nadd_photo_alternate e43e\nadd_reaction e1d3\nadd_road ef3b\nadd_shopping_cart e854\nadd_task f23a\nadd_to_drive e65c\nadd_to_home_screen e1fe\nadd_to_photos e39d\nadd_to_queue e05c\naddchart ef3c\nadf_scanner eada\nadjust e39e\nadmin_panel_settings ef3d\nadobe ea96\nads_click e762\nagriculture ea79\nair efd8\nairline_seat_flat e630\nairline_seat_flat_angled e631\nairline_seat_individual_suite e632\nairline_seat_legroom_extra e633\nairline_seat_legroom_normal e634\nairline_seat_legroom_reduced e635\nairline_seat_recline_extra e636\nairline_seat_recline_normal e637\nairline_stops e7d0\nairlines e7ca\nairplane_ticket efd9\nairplanemode_active e195\nairplanemode_inactive e194\nairplanemode_off e194\nairplanemode_on e195\nairplay e055\nairport_shuttle eb3c\nalarm e855\nalarm_add e856\nalarm_off e857\nalarm_on e858\nalbum e019\nalign_horizontal_center e00f\nalign_horizontal_left e00d\nalign_horizontal_right e010\nalign_vertical_bottom e015\nalign_vertical_center e011\nalign_vertical_top e00c\nall_inbox e97f\nall_inclusive eb3d\nall_out e90b\nalt_route f184\nalternate_email e0e6\namp_stories ea13\nanalytics ef3e\nanchor f1cd\nandroid e859\nanimation e71c\nannouncement e85a\naod efda\napartment ea40\napi f1b7\napp_blocking ef3f\napp_registration ef40\napp_settings_alt ef41\napp_shortcut eae4\napple ea80\napproval e982\napps e5c3\napps_outage e7cc\narchitecture ea3b\narchive e149\narea_chart e770\narrow_back e5c4\narrow_back_ios e5e0\narrow_back_ios_new e2ea\narrow_circle_down f181\narrow_circle_left eaa7\narrow_circle_right eaaa\narrow_circle_up f182\narrow_downward e5db\narrow_drop_down e5c5\narrow_drop_down_circle e5c6\narrow_drop_up e5c7\narrow_forward e5c8\narrow_forward_ios e5e1\narrow_left e5de\narrow_outward f8ce\narrow_right e5df\narrow_right_alt e941\narrow_upward e5d8\nart_track e060\narticle ef42\naspect_ratio e85b\nassessment e85c\nassignment e85d\nassignment_ind e85e\nassignment_late e85f\nassignment_return e860\nassignment_returned e861\nassignment_turned_in e862\nassist_walker f8d5\nassistant e39f\nassistant_direction e988\nassistant_photo e3a0\nassured_workload eb6f\natm e573\nattach_email ea5e\nattach_file e226\nattach_money e227\nattachment e2bc\nattractions ea52\nattribution efdb\naudio_file eb82\naudiotrack e3a1\nauto_awesome e65f\nauto_awesome_mosaic e660\nauto_awesome_motion e661\nauto_delete ea4c\nauto_fix_high e663\nauto_fix_normal e664\nauto_fix_off e665\nauto_graph e4fb\nauto_mode ec20\nauto_stories e666\nautofps_select efdc\nautorenew e863\nav_timer e01b\nbaby_changing_station f19b\nback_hand e764\nbackpack f19c\nbackspace e14a\nbackup e864\nbackup_table ef43\nbadge ea67\nbakery_dining ea53\nbalance eaf6\nbalcony e58f\nballot e172\nbar_chart e26b\nbatch_prediction f0f5\nbathroom efdd\nbathtub ea41\nbattery_0_bar ebdc\nbattery_1_bar ebd9\nbattery_2_bar ebe0\nbattery_3_bar ebdd\nbattery_4_bar ebe2\nbattery_5_bar ebd4\nbattery_6_bar ebd2\nbattery_alert e19c\nbattery_charging_full e1a3\nbattery_full e1a4\nbattery_saver efde\nbattery_std e1a5\nbattery_unknown e1a6\nbeach_access eb3e\nbed efdf\nbedroom_baby efe0\nbedroom_child efe1\nbedroom_parent efe2\nbedtime ef44\nbedtime_off eb76\nbeenhere e52d\nbento f1f4\nbike_scooter ef45\nbiotech ea3a\nblender efe3\nblind f8d6\nblinds e286\nblinds_closed ec1f\nblock e14b\nbloodtype efe4\nbluetooth e1a7\nbluetooth_audio e60f\nbluetooth_connected e1a8\nbluetooth_disabled e1a9\nbluetooth_drive efe5\nbluetooth_searching e1aa\nblur_circular e3a2\nblur_linear e3a3\nblur_off e3a4\nblur_on e3a5\nbolt ea0b\nbook e865\nbook_online f217\nbookmark e866\nbookmark_add e598\nbookmark_added e599\nbookmark_border e867\nbookmark_outline e867\nbookmark_remove e59a\nbookmarks e98b\nborder_all e228\nborder_bottom e229\nborder_clear e22a\nborder_color e22b\nborder_horizontal e22c\nborder_inner e22d\nborder_left e22e\nborder_outer e22f\nborder_right e230\nborder_style e231\nborder_top e232\nborder_vertical e233\nboy eb67\nbranding_watermark e06b\nbreakfast_dining ea54\nbrightness_1 e3a6\nbrightness_2 e3a7\nbrightness_3 e3a8\nbrightness_4 e3a9\nbrightness_5 e3aa\nbrightness_6 e3ab\nbrightness_7 e3ac\nbrightness_auto e1ab\nbrightness_high e1ac\nbrightness_low e1ad\nbrightness_medium e1ae\nbroadcast_on_home f8f8\nbroadcast_on_personal f8f9\nbroken_image e3ad\nbrowse_gallery ebd1\nbrowser_not_supported ef47\nbrowser_updated e7cf\nbrunch_dining ea73\nbrush e3ae\nbubble_chart e6dd\nbug_report e868\nbuild e869\nbuild_circle ef48\nbungalow e591\nburst_mode e43c\nbus_alert e98f\nbusiness e0af\nbusiness_center eb3f\ncabin e589\ncable efe6\ncached e86a\ncake e7e9\ncalculate ea5f\ncalendar_month ebcc\ncalendar_today e935\ncalendar_view_day e936\ncalendar_view_month efe7\ncalendar_view_week efe8\ncall e0b0\ncall_end e0b1\ncall_made e0b2\ncall_merge e0b3\ncall_missed e0b4\ncall_missed_outgoing e0e4\ncall_received e0b5\ncall_split e0b6\ncall_to_action e06c\ncamera e3af\ncamera_alt e3b0\ncamera_enhance e8fc\ncamera_front e3b1\ncamera_indoor efe9\ncamera_outdoor efea\ncamera_rear e3b2\ncamera_roll e3b3\ncameraswitch efeb\ncampaign ef49\ncancel e5c9\ncancel_presentation e0e9\ncancel_schedule_send ea39\ncandlestick_chart ead4\ncar_crash ebf2\ncar_rental ea55\ncar_repair ea56\ncard_giftcard e8f6\ncard_membership e8f7\ncard_travel e8f8\ncarpenter f1f8\ncases e992\ncasino eb40\ncast e307\ncast_connected e308\ncast_for_education efec\ncastle eab1\ncatching_pokemon e508\ncategory e574\ncelebration ea65\ncell_tower ebba\ncell_wifi e0ec\ncenter_focus_strong e3b4\ncenter_focus_weak e3b5\nchair efed\nchair_alt efee\nchalet e585\nchange_circle e2e7\nchange_history e86b\ncharging_station f19d\nchat e0b7\nchat_bubble e0ca\nchat_bubble_outline e0cb\ncheck e5ca\ncheck_box e834\ncheck_box_outline_blank e835\ncheck_circle e86c\ncheck_circle_outline e92d\nchecklist e6b1\nchecklist_rtl e6b3\ncheckroom f19e\nchevron_left e5cb\nchevron_right e5cc\nchild_care eb41\nchild_friendly eb42\nchrome_reader_mode e86d\nchurch eaae\ncircle ef4a\ncircle_notifications e994\nclass e86e\nclean_hands f21f\ncleaning_services f0ff\nclear e14c\nclear_all e0b8\nclose e5cd\nclose_fullscreen f1cf\nclosed_caption e01c\nclosed_caption_disabled f1dc\nclosed_caption_off e996\ncloud e2bd\ncloud_circle e2be\ncloud_done e2bf\ncloud_download e2c0\ncloud_off e2c1\ncloud_queue e2c2\ncloud_sync eb5a\ncloud_upload e2c3\nco2 e7b0\nco_present eaf0\ncode e86f\ncode_off e4f3\ncoffee efef\ncoffee_maker eff0\ncollections e3b6\ncollections_bookmark e431\ncolor_lens e3b7\ncolorize e3b8\ncomment e0b9\ncomment_bank ea4e\ncomments_disabled e7a2\ncommit eaf5\ncommute e940\ncompare e3b9\ncompare_arrows e915\ncompass_calibration e57c\ncompost e761\ncompress e94d\ncomputer e30a\nconfirmation_num e638\nconfirmation_number e638\nconnect_without_contact f223\nconnected_tv e998\nconnecting_airports e7c9\nconstruction ea3c\ncontact_emergency f8d1\ncontact_mail e0d0\ncontact_page f22e\ncontact_phone e0cf\ncontact_support e94c\ncontactless ea71\ncontacts e0ba\ncontent_copy f08a\ncontent_cut f08b\ncontent_paste f098\ncontent_paste_go ea8e\ncontent_paste_off e4f8\ncontent_paste_search ea9b\ncontrast eb37\ncontrol_camera e074\ncontrol_point e3ba\ncontrol_point_duplicate e3bb\ncookie eaac\ncopy f08a\ncopy_all e2ec\ncopyright e90c\ncoronavirus f221\ncorporate_fare f1d0\ncottage e587\ncountertops f1f7\ncreate e150\ncreate_new_folder e2cc\ncredit_card e870\ncredit_card_off e4f4\ncredit_score eff1\ncrib e588\ncrisis_alert ebe9\ncrop e3be\ncrop_16_9 e3bc\ncrop_3_2 e3bd\ncrop_5_4 e3bf\ncrop_7_5 e3c0\ncrop_din e3c1\ncrop_free e3c2\ncrop_landscape e3c3\ncrop_original e3c4\ncrop_portrait e3c5\ncrop_rotate e437\ncrop_square e3c6\ncruelty_free e799\ncss eb93\ncurrency_bitcoin ebc5\ncurrency_exchange eb70\ncurrency_franc eafa\ncurrency_lira eaef\ncurrency_pound eaf1\ncurrency_ruble eaec\ncurrency_rupee eaf7\ncurrency_yen eafb\ncurrency_yuan eaf9\ncurtains ec1e\ncurtains_closed ec1d\ncut f08b\ncyclone ebd5\ndangerous e99a\ndark_mode e51c\ndashboard e871\ndashboard_customize e99b\ndata_array ead1\ndata_exploration e76f\ndata_object ead3\ndata_saver_off eff2\ndata_saver_on eff3\ndata_thresholding eb9f\ndata_usage e1af\ndataset f8ee\ndataset_linked f8ef\ndate_range e916\ndeblur eb77\ndeck ea42\ndehaze e3c7\ndelete e872\ndelete_forever e92b\ndelete_outline e92e\ndelete_sweep e16c\ndelivery_dining ea72\ndensity_large eba9\ndensity_medium eb9e\ndensity_small eba8\ndeparture_board e576\ndescription e873\ndeselect ebb6\ndesign_services f10a\ndesk f8f4\ndesktop_access_disabled e99d\ndesktop_mac e30b\ndesktop_windows e30c\ndetails e3c8\ndeveloper_board e30d\ndeveloper_board_off e4ff\ndeveloper_mode e1b0\ndevice_hub e335\ndevice_thermostat e1ff\ndevice_unknown e339\ndevices e1b1\ndevices_fold ebde\ndevices_other e337\ndialer_sip e0bb\ndialpad e0bc\ndiamond ead5\ndifference eb7d\ndining eff4\ndinner_dining ea57\ndirections e52e\ndirections_bike e52f\ndirections_boat e532\ndirections_boat_filled eff5\ndirections_bus e530\ndirections_bus_filled eff6\ndirections_car e531\ndirections_car_filled eff7\ndirections_ferry e532\ndirections_off f10f\ndirections_railway e534\ndirections_railway_filled eff8\ndirections_run e566\ndirections_subway e533\ndirections_subway_filled eff9\ndirections_train e534\ndirections_transit e535\ndirections_transit_filled effa\ndirections_walk e536\ndirty_lens ef4b\ndisabled_by_default f230\ndisabled_visible e76e\ndisc_full e610\ndiscord ea6c\ndiscount ebc9\ndisplay_settings eb97\ndiversity_1 f8d7\ndiversity_2 f8d8\ndiversity_3 f8d9\ndnd_forwardslash e611\ndns e875\ndo_disturb f08c\ndo_disturb_alt f08d\ndo_disturb_off f08e\ndo_disturb_on f08f\ndo_not_disturb e612\ndo_not_disturb_alt e611\ndo_not_disturb_off e643\ndo_not_disturb_on e644\ndo_not_disturb_on_total_silence effb\ndo_not_step f19f\ndo_not_touch f1b0\ndock e30e\ndocument_scanner e5fa\ndomain e7ee\ndomain_add eb62\ndomain_disabled e0ef\ndomain_verification ef4c\ndone e876\ndone_all e877\ndone_outline e92f\ndonut_large e917\ndonut_small e918\ndoor_back effc\ndoor_front effd\ndoor_sliding effe\ndoorbell efff\ndouble_arrow ea50\ndownhill_skiing e509\ndownload f090\ndownload_done f091\ndownload_for_offline f000\ndownloading f001\ndrafts e151\ndrag_handle e25d\ndrag_indicator e945\ndraw e746\ndrive_eta e613\ndrive_file_move e675\ndrive_file_move_rtl e76d\ndrive_file_rename_outline e9a2\ndrive_folder_upload e9a3\ndry f1b3\ndry_cleaning ea58\nduo e9a5\ndvr e1b2\ndynamic_feed ea14\ndynamic_form f1bf\ne_mobiledata f002\nearbuds f003\nearbuds_battery f004\neast f1df\neco ea35\nedgesensor_high f005\nedgesensor_low f006\nedit e3c9\nedit_attributes e578\nedit_calendar e742\nedit_location e568\nedit_location_alt e1c5\nedit_note e745\nedit_notifications e525\nedit_off e950\nedit_road ef4d\negg eacc\negg_alt eac8\neject e8fb\nelderly f21a\nelderly_woman eb69\nelectric_bike eb1b\nelectric_bolt ec1c\nelectric_car eb1c\nelectric_meter ec1b\nelectric_moped eb1d\nelectric_rickshaw eb1e\nelectric_scooter eb1f\nelectrical_services f102\nelevator f1a0\nemail e0be\nemergency e1eb\nemergency_recording ebf4\nemergency_share ebf6\nemoji_emotions ea22\nemoji_events ea23\nemoji_flags ea1a\nemoji_food_beverage ea1b\nemoji_nature ea1c\nemoji_objects ea24\nemoji_people ea1d\nemoji_symbols ea1e\nemoji_transportation ea1f\nenergy_savings_leaf ec1a\nengineering ea3d\nenhance_photo_translate e8fc\nenhanced_encryption e63f\nequalizer e01d\nerror e000\nerror_outline e001\nescalator f1a1\nescalator_warning f1ac\neuro ea15\neuro_symbol e926\nev_station e56d\nevent e878\nevent_available e614\nevent_busy e615\nevent_note e616\nevent_repeat eb7b\nevent_seat e903\nexit_to_app e879\nexpand e94f\nexpand_circle_down e7cd\nexpand_less e5ce\nexpand_more e5cf\nexplicit e01e\nexplore e87a\nexplore_off e9a8\nexposure e3ca\nexposure_minus_1 e3cb\nexposure_minus_2 e3cc\nexposure_neg_1 e3cb\nexposure_neg_2 e3cc\nexposure_plus_1 e3cd\nexposure_plus_2 e3ce\nexposure_zero e3cf\nextension e87b\nextension_off e4f5\nface e87c\nface_2 f8da\nface_3 f8db\nface_4 f8dc\nface_5 f8dd\nface_6 f8de\nface_retouching_natural ef4e\nface_retouching_off f007\nface_unlock f008\nfacebook f234\nfact_check f0c5\nfactory ebbc\nfamily_restroom f1a2\nfast_forward e01f\nfast_rewind e020\nfastfood e57a\nfavorite e87d\nfavorite_border e87e\nfavorite_outline e87e\nfax ead8\nfeatured_play_list e06d\nfeatured_video e06e\nfeed f009\nfeedback e87f\nfemale e590\nfence f1f6\nfestival ea68\nfiber_dvr e05d\nfiber_manual_record e061\nfiber_new e05e\nfiber_pin e06a\nfiber_smart_record e062\nfile_copy e173\nfile_download e2c4\nfile_download_done e9aa\nfile_download_off e4fe\nfile_open eaf3\nfile_present ea0e\nfile_upload e2c6\nfilter e3d3\nfilter_1 e3d0\nfilter_2 e3d1\nfilter_3 e3d2\nfilter_4 e3d4\nfilter_5 e3d5\nfilter_6 e3d6\nfilter_7 e3d7\nfilter_8 e3d8\nfilter_9 e3d9\nfilter_9_plus e3da\nfilter_alt ef4f\nfilter_alt_off eb32\nfilter_b_and_w e3db\nfilter_center_focus e3dc\nfilter_drama e3dd\nfilter_frames e3de\nfilter_hdr e3df\nfilter_list e152\nfilter_list_off eb57\nfilter_none e3e0\nfilter_tilt_shift e3e2\nfilter_vintage e3e3\nfind_in_page e880\nfind_replace e881\nfingerprint e90d\nfire_extinguisher f1d8\nfire_hydrant_alt f8f1\nfire_truck f8f2\nfireplace ea43\nfirst_page e5dc\nfit_screen ea10\nfitbit e82b\nfitness_center eb43\nflag e153\nflag_circle eaf8\nflaky ef50\nflare e3e4\nflash_auto e3e5\nflash_off e3e6\nflash_on e3e7\nflashlight_off f00a\nflashlight_on f00b\nflatware f00c\nflight e539\nflight_class e7cb\nflight_land e904\nflight_takeoff e905\nflip e3e8\nflip_camera_android ea37\nflip_camera_ios ea38\nflip_to_back e882\nflip_to_front e883\nflood ebe6\nflourescent f00d\nflutter_dash e00b\nfmd_bad f00e\nfmd_good f00f\nfolder e2c7\nfolder_copy ebbd\nfolder_delete eb34\nfolder_off eb83\nfolder_open e2c8\nfolder_shared e2c9\nfolder_special e617\nfolder_zip eb2c\nfollow_the_signs f222\nfont_download e167\nfont_download_off e4f9\nfood_bank f1f2\nforest ea99\nfork_left eba0\nfork_right ebac\nformat_align_center e234\nformat_align_justify e235\nformat_align_left e236\nformat_align_right e237\nformat_bold e238\nformat_clear e239\nformat_color_fill e23a\nformat_color_reset e23b\nformat_color_text e23c\nformat_indent_decrease e23d\nformat_indent_increase e23e\nformat_italic e23f\nformat_line_spacing e240\nformat_list_bulleted e241\nformat_list_numbered e242\nformat_list_numbered_rtl e267\nformat_overline eb65\nformat_paint e243\nformat_quote e244\nformat_shapes e25e\nformat_size e245\nformat_strikethrough e246\nformat_textdirection_l_to_r e247\nformat_textdirection_r_to_l e248\nformat_underline e765\nformat_underlined e765\nfort eaad\nforum e0bf\nforward e154\nforward_10 e056\nforward_30 e057\nforward_5 e058\nforward_to_inbox f187\nfoundation f200\nfree_breakfast eb44\nfree_cancellation e748\nfront_hand e769\nfullscreen e5d0\nfullscreen_exit e5d1\nfunctions e24a\ng_mobiledata f010\ng_translate e927\ngamepad e30f\ngames e021\ngarage f011\ngas_meter ec19\ngavel e90e\ngenerating_tokens e749\ngesture e155\nget_app e884\ngif e908\ngif_box e7a3\ngirl eb68\ngite e58b\ngolf_course eb45\ngpp_bad f012\ngpp_good f013\ngpp_maybe f014\ngps_fixed e1b3\ngps_not_fixed e1b4\ngps_off e1b5\ngrade e885\ngradient e3e9\ngrading ea4f\ngrain e3ea\ngraphic_eq e1b8\ngrass f205\ngrid_3x3 f015\ngrid_4x4 f016\ngrid_goldenratio f017\ngrid_off e3eb\ngrid_on e3ec\ngrid_view e9b0\ngroup e7ef\ngroup_add e7f0\ngroup_off e747\ngroup_remove e7ad\ngroup_work e886\ngroups f233\ngroups_2 f8df\ngroups_3 f8e0\nh_mobiledata f018\nh_plus_mobiledata f019\nhail e9b1\nhandshake ebcb\nhandyman f10b\nhardware ea59\nhd e052\nhdr_auto f01a\nhdr_auto_select f01b\nhdr_enhanced_select ef51\nhdr_off e3ed\nhdr_off_select f01c\nhdr_on e3ee\nhdr_on_select f01d\nhdr_plus f01e\nhdr_strong e3f1\nhdr_weak e3f2\nheadphones f01f\nheadphones_battery f020\nheadset e310\nheadset_mic e311\nheadset_off e33a\nhealing e3f3\nhealth_and_safety e1d5\nhearing e023\nhearing_disabled f104\nheart_broken eac2\nheat_pump ec18\nheight ea16\nhelp e887\nhelp_center f1c0\nhelp_outline e8fd\nhevc f021\nhexagon eb39\nhide_image f022\nhide_source f023\nhigh_quality e024\nhighlight e25f\nhighlight_alt ef52\nhighlight_off e888\nhighlight_remove e888\nhiking e50a\nhistory e889\nhistory_edu ea3e\nhistory_toggle_off f17d\nhive eaa6\nhls eb8a\nhls_off eb8c\nholiday_village e58a\nhome e88a\nhome_max f024\nhome_mini f025\nhome_repair_service f100\nhome_work ea09\nhorizontal_distribute e014\nhorizontal_rule f108\nhorizontal_split e947\nhot_tub eb46\nhotel e53a\nhotel_class e743\nhourglass_bottom ea5c\nhourglass_disabled ef53\nhourglass_empty e88b\nhourglass_full e88c\nhourglass_top ea5b\nhouse ea44\nhouse_siding f202\nhouseboat e584\nhow_to_reg e174\nhow_to_vote e175\nhtml eb7e\nhttp e902\nhttps e88d\nhub e9f4\nhvac f10e\nice_skating e50b\nicecream ea69\nimage e3f4\nimage_aspect_ratio e3f5\nimage_not_supported f116\nimage_search e43f\nimagesearch_roller e9b4\nimport_contacts e0e0\nimport_export e0c3\nimportant_devices e912\ninbox e156\nincomplete_circle e79b\nindeterminate_check_box e909\ninfo e88e\ninfo_outline e88f\ninput e890\ninsert_chart e24b\ninsert_chart_outlined e26a\ninsert_comment e24c\ninsert_drive_file e24d\ninsert_emoticon e24e\ninsert_invitation e24f\ninsert_link e250\ninsert_page_break eaca\ninsert_photo e251\ninsights f092\ninstall_desktop eb71\ninstall_mobile eb72\nintegration_instructions ef54\ninterests e7c8\ninterpreter_mode e83b\ninventory e179\ninventory_2 e1a1\ninvert_colors e891\ninvert_colors_off e0c4\ninvert_colors_on e891\nios_share e6b8\niron e583\niso e3f6\njavascript eb7c\njoin_full eaeb\njoin_inner eaf4\njoin_left eaf2\njoin_right eaea\nkayaking e50c\nkebab_dining e842\nkey e73c\nkey_off eb84\nkeyboard e312\nkeyboard_alt f028\nkeyboard_arrow_down e313\nkeyboard_arrow_left e314\nkeyboard_arrow_right e315\nkeyboard_arrow_up e316\nkeyboard_backspace e317\nkeyboard_capslock e318\nkeyboard_command_key eae7\nkeyboard_control eae1\nkeyboard_control_key eae6\nkeyboard_double_arrow_down ead0\nkeyboard_double_arrow_left eac3\nkeyboard_double_arrow_right eac9\nkeyboard_double_arrow_up eacf\nkeyboard_hide e31a\nkeyboard_option_key eae8\nkeyboard_return e31b\nkeyboard_tab e31c\nkeyboard_voice e31d\nking_bed ea45\nkitchen eb47\nkitesurfing e50d\nlabel e892\nlabel_important e937\nlabel_important_outline e948\nlabel_off e9b6\nlabel_outline e893\nlan eb2f\nlandscape e3f7\nlandslide ebd7\nlanguage e894\nlaptop e31e\nlaptop_chromebook e31f\nlaptop_mac e320\nlaptop_windows e321\nlast_page e5dd\nlaunch e895\nlayers e53b\nlayers_clear e53c\nleaderboard f20c\nleak_add e3f8\nleak_remove e3f9\nleave_bags_at_home f23b\nlegend_toggle f11b\nlens e3fa\nlens_blur f029\nlibrary_add e02e\nlibrary_add_check e9b7\nlibrary_books e02f\nlibrary_music e030\nlight f02a\nlight_mode e518\nlightbulb e0f0\nlightbulb_circle ebfe\nlightbulb_outline e90f\nline_axis ea9a\nline_style e919\nline_weight e91a\nlinear_scale e260\nlink e157\nlink_off e16f\nlinked_camera e438\nliquor ea60\nlist e896\nlist_alt e0ee\nlive_help e0c6\nlive_tv e639\nliving f02b\nlocal_activity e53f\nlocal_airport e53d\nlocal_atm e53e\nlocal_attraction e53f\nlocal_bar e540\nlocal_cafe e541\nlocal_car_wash e542\nlocal_convenience_store e543\nlocal_dining e556\nlocal_drink e544\nlocal_fire_department ef55\nlocal_florist e545\nlocal_gas_station e546\nlocal_grocery_store e547\nlocal_hospital e548\nlocal_hotel e549\nlocal_laundry_service e54a\nlocal_library e54b\nlocal_mall e54c\nlocal_movies e54d\nlocal_offer e54e\nlocal_parking e54f\nlocal_pharmacy e550\nlocal_phone e551\nlocal_pizza e552\nlocal_play e553\nlocal_police ef56\nlocal_post_office e554\nlocal_print_shop e555\nlocal_printshop e555\nlocal_restaurant e556\nlocal_see e557\nlocal_shipping e558\nlocal_taxi e559\nlocation_city e7f1\nlocation_disabled e1b6\nlocation_history e55a\nlocation_off e0c7\nlocation_on e0c8\nlocation_searching e1b7\nlock e897\nlock_clock ef57\nlock_open e898\nlock_outline e899\nlock_person f8f3\nlock_reset eade\nlogin ea77\nlogo_dev ead6\nlogout e9ba\nlooks e3fc\nlooks_3 e3fb\nlooks_4 e3fd\nlooks_5 e3fe\nlooks_6 e3ff\nlooks_one e400\nlooks_two e401\nloop e028\nloupe e402\nlow_priority e16d\nloyalty e89a\nlte_mobiledata f02c\nlte_plus_mobiledata f02d\nluggage f235\nlunch_dining ea61\nlyrics ec0b\nmacro_off f8d2\nmail e158\nmail_lock ec0a\nmail_outline e0e1\nmale e58e\nman e4eb\nman_2 f8e1\nman_3 f8e2\nman_4 f8e3\nmanage_accounts f02e\nmanage_history ebe7\nmanage_search f02f\nmap e55b\nmaps_home_work f030\nmaps_ugc ef58\nmargin e9bb\nmark_as_unread e9bc\nmark_chat_read f18b\nmark_chat_unread f189\nmark_email_read f18c\nmark_email_unread f18a\nmark_unread_chat_alt eb9d\nmarkunread e159\nmarkunread_mailbox e89b\nmasks f218\nmaximize e930\nmedia_bluetooth_off f031\nmedia_bluetooth_on f032\nmediation efa7\nmedical_information ebed\nmedical_services f109\nmedication f033\nmedication_liquid ea87\nmeeting_room eb4f\nmemory e322\nmenu e5d2\nmenu_book ea19\nmenu_open e9bd\nmerge eb98\nmerge_type e252\nmessage e0c9\nmessenger e0ca\nmessenger_outline e0cb\nmic e029\nmic_external_off ef59\nmic_external_on ef5a\nmic_none e02a\nmic_off e02b\nmicrowave f204\nmilitary_tech ea3f\nminimize e931\nminor_crash ebf1\nmiscellaneous_services f10c\nmissed_video_call e073\nmms e618\nmobile_friendly e200\nmobile_off e201\nmobile_screen_share e0e7\nmobiledata_off f034\nmode f097\nmode_comment e253\nmode_edit e254\nmode_edit_outline f035\nmode_fan_off ec17\nmode_night f036\nmode_of_travel e7ce\nmode_standby f037\nmodel_training f0cf\nmonetization_on e263\nmoney e57d\nmoney_off e25c\nmoney_off_csred f038\nmonitor ef5b\nmonitor_heart eaa2\nmonitor_weight f039\nmonochrome_photos e403\nmood e7f2\nmood_bad e7f3\nmoped eb28\nmore e619\nmore_horiz eae1\nmore_time ea5d\nmore_vert e5d4\nmosque eab2\nmotion_photos_auto f03a\nmotion_photos_off e9c0\nmotion_photos_on e9c1\nmotion_photos_pause f227\nmotion_photos_paused e9c2\nmotorcycle e91b\nmouse e323\nmove_down eb61\nmove_to_inbox e168\nmove_up eb64\nmovie e02c\nmovie_creation e404\nmovie_filter e43a\nmoving e501\nmp e9c3\nmultiline_chart e6df\nmultiple_stop f1b9\nmultitrack_audio e1b8\nmuseum ea36\nmusic_note e405\nmusic_off e440\nmusic_video e063\nmy_library_add e02e\nmy_library_books e02f\nmy_library_music e030\nmy_location e55c\nnat ef5c\nnature e406\nnature_people e407\nnavigate_before e408\nnavigate_next e409\nnavigation e55d\nnear_me e569\nnear_me_disabled f1ef\nnearby_error f03b\nnearby_off f03c\nnest_cam_wired_stand ec16\nnetwork_cell e1b9\nnetwork_check e640\nnetwork_locked e61a\nnetwork_ping ebca\nnetwork_wifi e1ba\nnetwork_wifi_1_bar ebe4\nnetwork_wifi_2_bar ebd6\nnetwork_wifi_3_bar ebe1\nnew_label e609\nnew_releases e031\nnewspaper eb81\nnext_plan ef5d\nnext_week e16a\nnfc e1bb\nnight_shelter f1f1\nnightlife ea62\nnightlight f03d\nnightlight_round ef5e\nnights_stay ea46\nno_accounts f03e\nno_adult_content f8fe\nno_backpack f237\nno_cell f1a4\nno_crash ebf0\nno_drinks f1a5\nno_encryption e641\nno_encryption_gmailerrorred f03f\nno_flash f1a6\nno_food f1a7\nno_luggage f23b\nno_meals f1d6\nno_meeting_room eb4e\nno_photography f1a8\nno_sim e0cc\nno_stroller f1af\nno_transfer f1d5\nnoise_aware ebec\nnoise_control_off ebf3\nnordic_walking e50e\nnorth f1e0\nnorth_east f1e1\nnorth_west f1e2\nnot_accessible f0fe\nnot_interested e033\nnot_listed_location e575\nnot_started f0d1\nnote e06f\nnote_add e89c\nnote_alt f040\nnotes e26c\nnotification_add e399\nnotification_important e004\nnotifications e7f4\nnotifications_active e7f7\nnotifications_none e7f5\nnotifications_off e7f6\nnotifications_on e7f7\nnotifications_paused e7f8\nnow_wallpaper e75f\nnow_widgets e75e\nnumbers eac7\noffline_bolt e932\noffline_pin e90a\noffline_share e9c5\noil_barrel ec15\non_device_training ebfd\nondemand_video e63a\nonline_prediction f0eb\nopacity e91c\nopen_in_browser e89d\nopen_in_full f1ce\nopen_in_new e89e\nopen_in_new_off e4f6\nopen_with e89f\nother_houses e58c\noutbond f228\noutbound e1ca\noutbox ef5f\noutdoor_grill ea47\noutlet f1d4\noutlined_flag e16e\noutput ebbe\npadding e9c8\npages e7f9\npageview e8a0\npaid f041\npalette e40a\npan_tool e925\npan_tool_alt ebb9\npanorama e40b\npanorama_fish_eye e40c\npanorama_fisheye e40c\npanorama_horizontal e40d\npanorama_horizontal_select ef60\npanorama_photosphere e9c9\npanorama_photosphere_select e9ca\npanorama_vertical e40e\npanorama_vertical_select ef61\npanorama_wide_angle e40f\npanorama_wide_angle_select ef62\nparagliding e50f\npark ea63\nparty_mode e7fa\npassword f042\npaste f098\npattern f043\npause e034\npause_circle e1a2\npause_circle_filled e035\npause_circle_outline e036\npause_presentation e0ea\npayment e8a1\npayments ef63\npaypal ea8d\npedal_bike eb29\npending ef64\npending_actions f1bb\npentagon eb50\npeople e7fb\npeople_alt ea21\npeople_outline e7fc\npercent eb58\nperm_camera_mic e8a2\nperm_contact_cal e8a3\nperm_contact_calendar e8a3\nperm_data_setting e8a4\nperm_device_info e8a5\nperm_device_information e8a5\nperm_identity e8a6\nperm_media e8a7\nperm_phone_msg e8a8\nperm_scan_wifi e8a9\nperson e7fd\nperson_2 f8e4\nperson_3 f8e5\nperson_4 f8e6\nperson_add e7fe\nperson_add_alt ea4d\nperson_add_alt_1 ef65\nperson_add_disabled e9cb\nperson_off e510\nperson_outline e7ff\nperson_pin e55a\nperson_pin_circle e56a\nperson_remove ef66\nperson_remove_alt_1 ef67\nperson_search f106\npersonal_injury e6da\npersonal_video e63b\npest_control f0fa\npest_control_rodent f0fd\npets e91d\nphishing ead7\nphone e0cd\nphone_android e324\nphone_bluetooth_speaker e61b\nphone_callback e649\nphone_disabled e9cc\nphone_enabled e9cd\nphone_forwarded e61c\nphone_in_talk e61d\nphone_iphone e325\nphone_locked e61e\nphone_missed e61f\nphone_paused e620\nphonelink e326\nphonelink_erase e0db\nphonelink_lock e0dc\nphonelink_off e327\nphonelink_ring e0dd\nphonelink_setup e0de\nphoto e410\nphoto_album e411\nphoto_camera e412\nphoto_camera_back ef68\nphoto_camera_front ef69\nphoto_filter e43b\nphoto_library e413\nphoto_size_select_actual e432\nphoto_size_select_large e433\nphoto_size_select_small e434\nphp eb8f\npiano e521\npiano_off e520\npicture_as_pdf e415\npicture_in_picture e8aa\npicture_in_picture_alt e911\npie_chart e6c4\npie_chart_outline f044\npin f045\npin_drop e55e\npin_end e767\npin_invoke e763\npinch eb38\npivot_table_chart e9ce\npix eaa3\nplace e55f\nplagiarism ea5a\nplay_arrow e037\nplay_circle e1c4\nplay_circle_fill e038\nplay_circle_filled e038\nplay_circle_outline e039\nplay_disabled ef6a\nplay_for_work e906\nplay_lesson f047\nplaylist_add e03b\nplaylist_add_check e065\nplaylist_add_check_circle e7e6\nplaylist_add_circle e7e5\nplaylist_play e05f\nplaylist_remove eb80\nplumbing f107\nplus_one e800\npodcasts f048\npoint_of_sale f17e\npolicy ea17\npoll e801\npolyline ebbb\npolymer e8ab\npool eb48\nportable_wifi_off e0ce\nportrait e416\npost_add ea20\npower e63c\npower_input e336\npower_off e646\npower_settings_new e8ac\nprecision_manufacturing f049\npregnant_woman e91e\npresent_to_all e0df\npreview f1c5\nprice_change f04a\nprice_check f04b\nprint e8ad\nprint_disabled e9cf\npriority_high e645\nprivacy_tip f0dc\nprivate_connectivity e744\nproduction_quantity_limits e1d1\npropane ec14\npropane_tank ec13\npsychology ea4a\npsychology_alt f8ea\npublic e80b\npublic_off f1ca\npublish e255\npublished_with_changes f232\npunch_clock eaa8\npush_pin f10d\nqr_code ef6b\nqr_code_2 e00a\nqr_code_scanner f206\nquery_builder e8ae\nquery_stats e4fc\nquestion_answer e8af\nquestion_mark eb8b\nqueue e03c\nqueue_music e03d\nqueue_play_next e066\nquick_contacts_dialer e0cf\nquick_contacts_mail e0d0\nquickreply ef6c\nquiz f04c\nquora ea98\nr_mobiledata f04d\nradar f04e\nradio e03e\nradio_button_checked e837\nradio_button_off e836\nradio_button_on e837\nradio_button_unchecked e836\nrailway_alert e9d1\nramen_dining ea64\nramp_left eb9c\nramp_right eb96\nrate_review e560\nraw_off f04f\nraw_on f050\nread_more ef6d\nreal_estate_agent e73a\nreceipt e8b0\nreceipt_long ef6e\nrecent_actors e03f\nrecommend e9d2\nrecord_voice_over e91f\nrectangle eb54\nrecycling e760\nreddit eaa0\nredeem e8b1\nredo e15a\nreduce_capacity f21c\nrefresh e5d5\nremember_me f051\nremove e15b\nremove_circle e15c\nremove_circle_outline e15d\nremove_done e9d3\nremove_from_queue e067\nremove_moderator e9d4\nremove_red_eye e417\nremove_road ebfc\nremove_shopping_cart e928\nreorder e8fe\nrepartition f8e8\nrepeat e040\nrepeat_on e9d6\nrepeat_one e041\nrepeat_one_on e9d7\nreplay e042\nreplay_10 e059\nreplay_30 e05a\nreplay_5 e05b\nreplay_circle_filled e9d8\nreply e15e\nreply_all e15f\nreport e160\nreport_gmailerrorred f052\nreport_off e170\nreport_problem e8b2\nrequest_page f22c\nrequest_quote f1b6\nreset_tv e9d9\nrestart_alt f053\nrestaurant e56c\nrestaurant_menu e561\nrestore e8b3\nrestore_from_trash e938\nrestore_page e929\nreviews f054\nrice_bowl f1f5\nring_volume e0d1\nrocket eba5\nrocket_launch eb9b\nroller_shades ec12\nroller_shades_closed ec11\nroller_skating ebcd\nroofing f201\nroom e8b4\nroom_preferences f1b8\nroom_service eb49\nrotate_90_degrees_ccw e418\nrotate_90_degrees_cw eaab\nrotate_left e419\nrotate_right e41a\nroundabout_left eb99\nroundabout_right eba3\nrounded_corner e920\nroute eacd\nrouter e328\nrowing e921\nrss_feed e0e5\nrsvp f055\nrtt e9ad\nrule f1c2\nrule_folder f1c9\nrun_circle ef6f\nrunning_with_errors e51d\nrv_hookup e642\nsafety_check ebef\nsafety_divider e1cc\nsailing e502\nsanitizer f21d\nsatellite e562\nsatellite_alt eb3a\nsave e161\nsave_alt e171\nsave_as eb60\nsaved_search ea11\nsavings e2eb\nscale eb5f\nscanner e329\nscatter_plot e268\nschedule e8b5\nschedule_send ea0a\nschema e4fd\nschool e80c\nscience ea4b\nscore e269\nscoreboard ebd0\nscreen_lock_landscape e1be\nscreen_lock_portrait e1bf\nscreen_lock_rotation e1c0\nscreen_rotation e1c1\nscreen_rotation_alt ebee\nscreen_search_desktop ef70\nscreen_share e0e2\nscreenshot f056\nscreenshot_monitor ec08\nscuba_diving ebce\nsd e9dd\nsd_card e623\nsd_card_alert f057\nsd_storage e1c2\nsearch e8b6\nsearch_off ea76\nsecurity e32a\nsecurity_update f058\nsecurity_update_good f059\nsecurity_update_warning f05a\nsegment e94b\nselect_all e162\nself_improvement ea78\nsell f05b\nsend e163\nsend_and_archive ea0c\nsend_time_extension eadb\nsend_to_mobile f05c\nsensor_door f1b5\nsensor_occupied ec10\nsensor_window f1b4\nsensors e51e\nsensors_off e51f\nsentiment_dissatisfied e811\nsentiment_neutral e812\nsentiment_satisfied e813\nsentiment_satisfied_alt e0ed\nsentiment_very_dissatisfied e814\nsentiment_very_satisfied e815\nset_meal f1ea\nsettings e8b8\nsettings_accessibility f05d\nsettings_applications e8b9\nsettings_backup_restore e8ba\nsettings_bluetooth e8bb\nsettings_brightness e8bd\nsettings_cell e8bc\nsettings_display e8bd\nsettings_ethernet e8be\nsettings_input_antenna e8bf\nsettings_input_component e8c0\nsettings_input_composite e8c1\nsettings_input_hdmi e8c2\nsettings_input_svideo e8c3\nsettings_overscan e8c4\nsettings_phone e8c5\nsettings_power e8c6\nsettings_remote e8c7\nsettings_suggest f05e\nsettings_system_daydream e1c3\nsettings_voice e8c8\nsevere_cold ebd3\nshape_line f8d3\nshare e80d\nshare_arrival_time e524\nshare_location f05f\nshield e9e0\nshield_moon eaa9\nshop e8c9\nshop_2 e19e\nshop_two e8ca\nshopify ea9d\nshopping_bag f1cc\nshopping_basket e8cb\nshopping_cart e8cc\nshopping_cart_checkout eb88\nshort_text e261\nshortcut f060\nshow_chart e6e1\nshower f061\nshuffle e043\nshuffle_on e9e1\nshutter_speed e43d\nsick f220\nsign_language ebe5\nsignal_cellular_0_bar f0a8\nsignal_cellular_4_bar e1c8\nsignal_cellular_alt e202\nsignal_cellular_alt_1_bar ebdf\nsignal_cellular_alt_2_bar ebe3\nsignal_cellular_connected_no_internet_0_bar f0ac\nsignal_cellular_connected_no_internet_4_bar e1cd\nsignal_cellular_no_sim e1ce\nsignal_cellular_nodata f062\nsignal_cellular_null e1cf\nsignal_cellular_off e1d0\nsignal_wifi_0_bar f0b0\nsignal_wifi_4_bar e1d8\nsignal_wifi_4_bar_lock e1d9\nsignal_wifi_bad f063\nsignal_wifi_connected_no_internet_4 f064\nsignal_wifi_off e1da\nsignal_wifi_statusbar_4_bar f065\nsignal_wifi_statusbar_connected_no_internet_4 f066\nsignal_wifi_statusbar_null f067\nsignpost eb91\nsim_card e32b\nsim_card_alert e624\nsim_card_download f068\nsingle_bed ea48\nsip f069\nskateboarding e511\nskip_next e044\nskip_previous e045\nsledding e512\nslideshow e41b\nslow_motion_video e068\nsmart_button f1c1\nsmart_display f06a\nsmart_screen f06b\nsmart_toy f06c\nsmartphone e32c\nsmoke_free eb4a\nsmoking_rooms eb4b\nsms e625\nsms_failed e626\nsnapchat ea6e\nsnippet_folder f1c7\nsnooze e046\nsnowboarding e513\nsnowmobile e503\nsnowshoeing e514\nsoap f1b2\nsocial_distance e1cb\nsolar_power ec0f\nsort e164\nsort_by_alpha e053\nsos ebf7\nsoup_kitchen e7d3\nsource f1c4\nsouth f1e3\nsouth_america e7e4\nsouth_east f1e4\nsouth_west f1e5\nspa eb4c\nspace_bar e256\nspace_dashboard e66b\nspatial_audio ebeb\nspatial_audio_off ebe8\nspatial_tracking ebea\nspeaker e32d\nspeaker_group e32e\nspeaker_notes e8cd\nspeaker_notes_off e92a\nspeaker_phone e0d2\nspeed e9e4\nspellcheck e8ce\nsplitscreen f06d\nspoke e9a7\nsports ea30\nsports_bar f1f3\nsports_baseball ea51\nsports_basketball ea26\nsports_cricket ea27\nsports_esports ea28\nsports_football ea29\nsports_golf ea2a\nsports_gymnastics ebc4\nsports_handball ea33\nsports_hockey ea2b\nsports_kabaddi ea34\nsports_martial_arts eae9\nsports_mma ea2c\nsports_motorsports ea2d\nsports_rugby ea2e\nsports_score f06e\nsports_soccer ea2f\nsports_tennis ea32\nsports_volleyball ea31\nsquare eb36\nsquare_foot ea49\nssid_chart eb66\nstacked_bar_chart e9e6\nstacked_line_chart f22b\nstadium eb90\nstairs f1a9\nstar e838\nstar_border e83a\nstar_border_purple500 f099\nstar_half e839\nstar_outline f06f\nstar_purple500 f09a\nstar_rate f0ec\nstars e8d0\nstart e089\nstay_current_landscape e0d3\nstay_current_portrait e0d4\nstay_primary_landscape e0d5\nstay_primary_portrait e0d6\nsticky_note_2 f1fc\nstop e047\nstop_circle ef71\nstop_screen_share e0e3\nstorage e1db\nstore e8d1\nstore_mall_directory e563\nstorefront ea12\nstorm f070\nstraight eb95\nstraighten e41c\nstream e9e9\nstreetview e56e\nstrikethrough_s e257\nstroller f1ae\nstyle e41d\nsubdirectory_arrow_left e5d9\nsubdirectory_arrow_right e5da\nsubject e8d2\nsubscript f111\nsubscriptions e064\nsubtitles e048\nsubtitles_off ef72\nsubway e56f\nsummarize f071\nsuperscript f112\nsupervised_user_circle e939\nsupervisor_account e8d3\nsupport ef73\nsupport_agent f0e2\nsurfing e515\nsurround_sound e049\nswap_calls e0d7\nswap_horiz e8d4\nswap_horizontal_circle e933\nswap_vert e8d5\nswap_vert_circle e8d6\nswap_vertical_circle e8d6\nswipe e9ec\nswipe_down eb53\nswipe_down_alt eb30\nswipe_left eb59\nswipe_left_alt eb33\nswipe_right eb52\nswipe_right_alt eb56\nswipe_up eb2e\nswipe_up_alt eb35\nswipe_vertical eb51\nswitch_access_shortcut e7e1\nswitch_access_shortcut_add e7e2\nswitch_account e9ed\nswitch_camera e41e\nswitch_left f1d1\nswitch_right f1d2\nswitch_video e41f\nsynagogue eab0\nsync e627\nsync_alt ea18\nsync_disabled e628\nsync_lock eaee\nsync_problem e629\nsystem_security_update f072\nsystem_security_update_good f073\nsystem_security_update_warning f074\nsystem_update e62a\nsystem_update_alt e8d7\nsystem_update_tv e8d7\ntab e8d8\ntab_unselected e8d9\ntable_bar ead2\ntable_chart e265\ntable_restaurant eac6\ntable_rows f101\ntable_view f1be\ntablet e32f\ntablet_android e330\ntablet_mac e331\ntag e9ef\ntag_faces e420\ntakeout_dining ea74\ntap_and_play e62b\ntapas f1e9\ntask f075\ntask_alt e2e6\ntaxi_alert ef74\ntelegram ea6b\ntemple_buddhist eab3\ntemple_hindu eaaf\nterminal eb8e\nterrain e564\ntext_decrease eadd\ntext_fields e262\ntext_format e165\ntext_increase eae2\ntext_rotate_up e93a\ntext_rotate_vertical e93b\ntext_rotation_angledown e93c\ntext_rotation_angleup e93d\ntext_rotation_down e93e\ntext_rotation_none e93f\ntext_snippet f1c6\ntextsms e0d8\ntexture e421\ntheater_comedy ea66\ntheaters e8da\nthermostat f076\nthermostat_auto f077\nthumb_down e8db\nthumb_down_alt e816\nthumb_down_off_alt e9f2\nthumb_up e8dc\nthumb_up_alt e817\nthumb_up_off_alt e9f3\nthumbs_up_down e8dd\nthunderstorm ebdb\ntiktok ea7e\ntime_to_leave e62c\ntimelapse e422\ntimeline e922\ntimer e425\ntimer_10 e423\ntimer_10_select f07a\ntimer_3 e424\ntimer_3_select f07b\ntimer_off e426\ntips_and_updates e79a\ntire_repair ebc8\ntitle e264\ntoc e8de\ntoday e8df\ntoggle_off e9f5\ntoggle_on e9f6\ntoken ea25\ntoll e8e0\ntonality e427\ntopic f1c8\ntornado e199\ntouch_app e913\ntour ef75\ntoys e332\ntrack_changes e8e1\ntraffic e565\ntrain e570\ntram e571\ntranscribe f8ec\ntransfer_within_a_station e572\ntransform e428\ntransgender e58d\ntransit_enterexit e579\ntranslate e8e2\ntravel_explore e2db\ntrending_down e8e3\ntrending_flat e8e4\ntrending_neutral e8e4\ntrending_up e8e5\ntrip_origin e57b\ntroubleshoot e1d2\ntry f07c\ntsunami ebd8\ntty f1aa\ntune e429\ntungsten f07d\nturn_left eba6\nturn_right ebab\nturn_sharp_left eba7\nturn_sharp_right ebaa\nturn_slight_left eba4\nturn_slight_right eb9a\nturned_in e8e6\nturned_in_not e8e7\ntv e333\ntv_off e647\ntwo_wheeler e9f9\ntype_specimen f8f0\nu_turn_left eba1\nu_turn_right eba2\numbrella f1ad\nunarchive e169\nundo e166\nunfold_less e5d6\nunfold_less_double f8cf\nunfold_more e5d7\nunfold_more_double f8d0\nunpublished f236\nunsubscribe e0eb\nupcoming f07e\nupdate e923\nupdate_disabled e075\nupgrade f0fb\nupload f09b\nupload_file e9fc\nusb e1e0\nusb_off e4fa\nvaccines e138\nvape_free ebc6\nvaping_rooms ebcf\nverified ef76\nverified_user e8e8\nvertical_align_bottom e258\nvertical_align_center e259\nvertical_align_top e25a\nvertical_distribute e076\nvertical_shades ec0e\nvertical_shades_closed ec0d\nvertical_split e949\nvibration e62d\nvideo_call e070\nvideo_camera_back f07f\nvideo_camera_front f080\nvideo_collection e04a\nvideo_file eb87\nvideo_label e071\nvideo_library e04a\nvideo_settings ea75\nvideo_stable f081\nvideocam e04b\nvideocam_off e04c\nvideogame_asset e338\nvideogame_asset_off e500\nview_agenda e8e9\nview_array e8ea\nview_carousel e8eb\nview_column e8ec\nview_comfortable e42a\nview_comfy e42a\nview_comfy_alt eb73\nview_compact e42b\nview_compact_alt eb74\nview_cozy eb75\nview_day e8ed\nview_headline e8ee\nview_in_ar e9fe\nview_kanban eb7f\nview_list e8ef\nview_module e8f0\nview_quilt e8f1\nview_sidebar f114\nview_stream e8f2\nview_timeline eb85\nview_week e8f3\nvignette e435\nvilla e586\nvisibility e8f4\nvisibility_off e8f5\nvoice_chat e62e\nvoice_over_off e94a\nvoicemail e0d9\nvolcano ebda\nvolume_down e04d\nvolume_mute e04e\nvolume_off e04f\nvolume_up e050\nvolunteer_activism ea70\nvpn_key e0da\nvpn_key_off eb7a\nvpn_lock e62f\nvrpano f082\nwallet f8ff\nwallet_giftcard e8f6\nwallet_membership e8f7\nwallet_travel e8f8\nwallpaper e75f\nwarehouse ebb8\nwarning e002\nwarning_amber f083\nwash f1b1\nwatch e334\nwatch_later e924\nwatch_off eae3\nwater f084\nwater_damage f203\nwater_drop e798\nwaterfall_chart ea00\nwaves e176\nwaving_hand e766\nwb_auto e42c\nwb_cloudy e42d\nwb_incandescent e42e\nwb_iridescent e436\nwb_shade ea01\nwb_sunny e430\nwb_twilight e1c6\nwc e63d\nweb e051\nweb_asset e069\nweb_asset_off e4f7\nweb_stories e595\nwebhook eb92\nwechat ea81\nweekend e16b\nwest f1e6\nwhatsapp ea9c\nwhatshot e80e\nwheelchair_pickup f1ab\nwhere_to_vote e177\nwidgets e75e\nwidth_full f8f5\nwidth_normal f8f6\nwidth_wide f8f7\nwifi e63e\nwifi_1_bar e4ca\nwifi_2_bar e4d9\nwifi_calling ef77\nwifi_calling_3 f085\nwifi_channel eb6a\nwifi_find eb31\nwifi_lock e1e1\nwifi_off e648\nwifi_password eb6b\nwifi_protected_setup f0fc\nwifi_tethering e1e2\nwifi_tethering_error f086\nwifi_tethering_error_rounded f086\nwifi_tethering_off f087\nwind_power ec0c\nwindow f088\nwine_bar f1e8\nwoman e13e\nwoman_2 f8e7\nwoo_commerce ea6d\nwordpress ea9f\nwork e8f9\nwork_history ec09\nwork_off e942\nwork_outline e943\nworkspace_premium e7af\nworkspaces e1a0\nwrap_text e25b\nwrong_location ef78\nwysiwyg f1c3\nyard f089\nyoutube_searched_for e8fa\nzoom_in e8ff\nzoom_in_map eb2d\nzoom_out e900\nzoom_out_map e56b\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/material-icons/MaterialIconsSharp-Regular.codepoints",
    "content": "10k e951\n10mp e952\n11mp e953\n123 eb8d\n12mp e954\n13mp e955\n14mp e956\n15mp e957\n16mp e958\n17mp e959\n18_up_rating f8fd\n18mp e95a\n19mp e95b\n1k e95c\n1k_plus e95d\n1x_mobiledata efcd\n20mp e95e\n21mp e95f\n22mp e960\n23mp e961\n24mp e962\n2k e963\n2k_plus e964\n2mp e965\n30fps efce\n30fps_select efcf\n360 e577\n3d_rotation e84d\n3g_mobiledata efd0\n3k e966\n3k_plus e967\n3mp e968\n3p efd1\n4g_mobiledata efd2\n4g_plus_mobiledata efd3\n4k e072\n4k_plus e969\n4mp e96a\n5g ef38\n5k e96b\n5k_plus e96c\n5mp e96d\n60fps efd4\n60fps_select efd5\n6_ft_apart f21e\n6k e96e\n6k_plus e96f\n6mp e970\n7k e971\n7k_plus e972\n7mp e973\n8k e974\n8k_plus e975\n8mp e976\n9k e977\n9k_plus e978\n9mp e979\nabc eb94\nac_unit eb3b\naccess_alarm e190\naccess_alarms e191\naccess_time e192\naccess_time_filled efd6\naccessibility e84e\naccessibility_new e92c\naccessible e914\naccessible_forward e934\naccount_balance e84f\naccount_balance_wallet e850\naccount_box e851\naccount_circle e853\naccount_tree e97a\nad_units ef39\nadb e60e\nadd e145\nadd_a_photo e439\nadd_alarm e193\nadd_alert e003\nadd_box e146\nadd_business e729\nadd_card eb86\nadd_chart e97b\nadd_circle e147\nadd_circle_outline e148\nadd_comment e266\nadd_home f8eb\nadd_home_work f8ed\nadd_ic_call e97c\nadd_link e178\nadd_location e567\nadd_location_alt ef3a\nadd_moderator e97d\nadd_photo_alternate e43e\nadd_reaction e1d3\nadd_road ef3b\nadd_shopping_cart e854\nadd_task f23a\nadd_to_drive e65c\nadd_to_home_screen e1fe\nadd_to_photos e39d\nadd_to_queue e05c\naddchart ef3c\nadf_scanner eada\nadjust e39e\nadmin_panel_settings ef3d\nadobe ea96\nads_click e762\nagriculture ea79\nair efd8\nairline_seat_flat e630\nairline_seat_flat_angled e631\nairline_seat_individual_suite e632\nairline_seat_legroom_extra e633\nairline_seat_legroom_normal e634\nairline_seat_legroom_reduced e635\nairline_seat_recline_extra e636\nairline_seat_recline_normal e637\nairline_stops e7d0\nairlines e7ca\nairplane_ticket efd9\nairplanemode_active e195\nairplanemode_inactive e194\nairplanemode_off e194\nairplanemode_on e195\nairplay e055\nairport_shuttle eb3c\nalarm e855\nalarm_add e856\nalarm_off e857\nalarm_on e858\nalbum e019\nalign_horizontal_center e00f\nalign_horizontal_left e00d\nalign_horizontal_right e010\nalign_vertical_bottom e015\nalign_vertical_center e011\nalign_vertical_top e00c\nall_inbox e97f\nall_inclusive eb3d\nall_out e90b\nalt_route f184\nalternate_email e0e6\namp_stories ea13\nanalytics ef3e\nanchor f1cd\nandroid e859\nanimation e71c\nannouncement e85a\naod efda\napartment ea40\napi f1b7\napp_blocking ef3f\napp_registration ef40\napp_settings_alt ef41\napp_shortcut eae4\napple ea80\napproval e982\napps e5c3\napps_outage e7cc\narchitecture ea3b\narchive e149\narea_chart e770\narrow_back e5c4\narrow_back_ios e5e0\narrow_back_ios_new e2ea\narrow_circle_down f181\narrow_circle_left eaa7\narrow_circle_right eaaa\narrow_circle_up f182\narrow_downward e5db\narrow_drop_down e5c5\narrow_drop_down_circle e5c6\narrow_drop_up e5c7\narrow_forward e5c8\narrow_forward_ios e5e1\narrow_left e5de\narrow_outward f8ce\narrow_right e5df\narrow_right_alt e941\narrow_upward e5d8\nart_track e060\narticle ef42\naspect_ratio e85b\nassessment e85c\nassignment e85d\nassignment_ind e85e\nassignment_late e85f\nassignment_return e860\nassignment_returned e861\nassignment_turned_in e862\nassist_walker f8d5\nassistant e39f\nassistant_direction e988\nassistant_photo e3a0\nassured_workload eb6f\natm e573\nattach_email ea5e\nattach_file e226\nattach_money e227\nattachment e2bc\nattractions ea52\nattribution efdb\naudio_file eb82\naudiotrack e3a1\nauto_awesome e65f\nauto_awesome_mosaic e660\nauto_awesome_motion e661\nauto_delete ea4c\nauto_fix_high e663\nauto_fix_normal e664\nauto_fix_off e665\nauto_graph e4fb\nauto_mode ec20\nauto_stories e666\nautofps_select efdc\nautorenew e863\nav_timer e01b\nbaby_changing_station f19b\nback_hand e764\nbackpack f19c\nbackspace e14a\nbackup e864\nbackup_table ef43\nbadge ea67\nbakery_dining ea53\nbalance eaf6\nbalcony e58f\nballot e172\nbar_chart e26b\nbatch_prediction f0f5\nbathroom efdd\nbathtub ea41\nbattery_0_bar ebdc\nbattery_1_bar ebd9\nbattery_2_bar ebe0\nbattery_3_bar ebdd\nbattery_4_bar ebe2\nbattery_5_bar ebd4\nbattery_6_bar ebd2\nbattery_alert e19c\nbattery_charging_full e1a3\nbattery_full e1a4\nbattery_saver efde\nbattery_std e1a5\nbattery_unknown e1a6\nbeach_access eb3e\nbed efdf\nbedroom_baby efe0\nbedroom_child efe1\nbedroom_parent efe2\nbedtime ef44\nbedtime_off eb76\nbeenhere e52d\nbento f1f4\nbike_scooter ef45\nbiotech ea3a\nblender efe3\nblind f8d6\nblinds e286\nblinds_closed ec1f\nblock e14b\nbloodtype efe4\nbluetooth e1a7\nbluetooth_audio e60f\nbluetooth_connected e1a8\nbluetooth_disabled e1a9\nbluetooth_drive efe5\nbluetooth_searching e1aa\nblur_circular e3a2\nblur_linear e3a3\nblur_off e3a4\nblur_on e3a5\nbolt ea0b\nbook e865\nbook_online f217\nbookmark e866\nbookmark_add e598\nbookmark_added e599\nbookmark_border e867\nbookmark_outline e867\nbookmark_remove e59a\nbookmarks e98b\nborder_all e228\nborder_bottom e229\nborder_clear e22a\nborder_color e22b\nborder_horizontal e22c\nborder_inner e22d\nborder_left e22e\nborder_outer e22f\nborder_right e230\nborder_style e231\nborder_top e232\nborder_vertical e233\nboy eb67\nbranding_watermark e06b\nbreakfast_dining ea54\nbrightness_1 e3a6\nbrightness_2 e3a7\nbrightness_3 e3a8\nbrightness_4 e3a9\nbrightness_5 e3aa\nbrightness_6 e3ab\nbrightness_7 e3ac\nbrightness_auto e1ab\nbrightness_high e1ac\nbrightness_low e1ad\nbrightness_medium e1ae\nbroadcast_on_home f8f8\nbroadcast_on_personal f8f9\nbroken_image e3ad\nbrowse_gallery ebd1\nbrowser_not_supported ef47\nbrowser_updated e7cf\nbrunch_dining ea73\nbrush e3ae\nbubble_chart e6dd\nbug_report e868\nbuild e869\nbuild_circle ef48\nbungalow e591\nburst_mode e43c\nbus_alert e98f\nbusiness e0af\nbusiness_center eb3f\ncabin e589\ncable efe6\ncached e86a\ncake e7e9\ncalculate ea5f\ncalendar_month ebcc\ncalendar_today e935\ncalendar_view_day e936\ncalendar_view_month efe7\ncalendar_view_week efe8\ncall e0b0\ncall_end e0b1\ncall_made e0b2\ncall_merge e0b3\ncall_missed e0b4\ncall_missed_outgoing e0e4\ncall_received e0b5\ncall_split e0b6\ncall_to_action e06c\ncamera e3af\ncamera_alt e3b0\ncamera_enhance e8fc\ncamera_front e3b1\ncamera_indoor efe9\ncamera_outdoor efea\ncamera_rear e3b2\ncamera_roll e3b3\ncameraswitch efeb\ncampaign ef49\ncancel e5c9\ncancel_presentation e0e9\ncancel_schedule_send ea39\ncandlestick_chart ead4\ncar_crash ebf2\ncar_rental ea55\ncar_repair ea56\ncard_giftcard e8f6\ncard_membership e8f7\ncard_travel e8f8\ncarpenter f1f8\ncases e992\ncasino eb40\ncast e307\ncast_connected e308\ncast_for_education efec\ncastle eab1\ncatching_pokemon e508\ncategory e574\ncelebration ea65\ncell_tower ebba\ncell_wifi e0ec\ncenter_focus_strong e3b4\ncenter_focus_weak e3b5\nchair efed\nchair_alt efee\nchalet e585\nchange_circle e2e7\nchange_history e86b\ncharging_station f19d\nchat e0b7\nchat_bubble e0ca\nchat_bubble_outline e0cb\ncheck e5ca\ncheck_box e834\ncheck_box_outline_blank e835\ncheck_circle e86c\ncheck_circle_outline e92d\nchecklist e6b1\nchecklist_rtl e6b3\ncheckroom f19e\nchevron_left e5cb\nchevron_right e5cc\nchild_care eb41\nchild_friendly eb42\nchrome_reader_mode e86d\nchurch eaae\ncircle ef4a\ncircle_notifications e994\nclass e86e\nclean_hands f21f\ncleaning_services f0ff\nclear e14c\nclear_all e0b8\nclose e5cd\nclose_fullscreen f1cf\nclosed_caption e01c\nclosed_caption_disabled f1dc\nclosed_caption_off e996\ncloud e2bd\ncloud_circle e2be\ncloud_done e2bf\ncloud_download e2c0\ncloud_off e2c1\ncloud_queue e2c2\ncloud_sync eb5a\ncloud_upload e2c3\nco2 e7b0\nco_present eaf0\ncode e86f\ncode_off e4f3\ncoffee efef\ncoffee_maker eff0\ncollections e3b6\ncollections_bookmark e431\ncolor_lens e3b7\ncolorize e3b8\ncomment e0b9\ncomment_bank ea4e\ncomments_disabled e7a2\ncommit eaf5\ncommute e940\ncompare e3b9\ncompare_arrows e915\ncompass_calibration e57c\ncompost e761\ncompress e94d\ncomputer e30a\nconfirmation_num e638\nconfirmation_number e638\nconnect_without_contact f223\nconnected_tv e998\nconnecting_airports e7c9\nconstruction ea3c\ncontact_emergency f8d1\ncontact_mail e0d0\ncontact_page f22e\ncontact_phone e0cf\ncontact_support e94c\ncontactless ea71\ncontacts e0ba\ncontent_copy f08a\ncontent_cut f08b\ncontent_paste f098\ncontent_paste_go ea8e\ncontent_paste_off e4f8\ncontent_paste_search ea9b\ncontrast eb37\ncontrol_camera e074\ncontrol_point e3ba\ncontrol_point_duplicate e3bb\ncookie eaac\ncopy f08a\ncopy_all e2ec\ncopyright e90c\ncoronavirus f221\ncorporate_fare f1d0\ncottage e587\ncountertops f1f7\ncreate e150\ncreate_new_folder e2cc\ncredit_card e870\ncredit_card_off e4f4\ncredit_score eff1\ncrib e588\ncrisis_alert ebe9\ncrop e3be\ncrop_16_9 e3bc\ncrop_3_2 e3bd\ncrop_5_4 e3bf\ncrop_7_5 e3c0\ncrop_din e3c1\ncrop_free e3c2\ncrop_landscape e3c3\ncrop_original e3c4\ncrop_portrait e3c5\ncrop_rotate e437\ncrop_square e3c6\ncruelty_free e799\ncss eb93\ncurrency_bitcoin ebc5\ncurrency_exchange eb70\ncurrency_franc eafa\ncurrency_lira eaef\ncurrency_pound eaf1\ncurrency_ruble eaec\ncurrency_rupee eaf7\ncurrency_yen eafb\ncurrency_yuan eaf9\ncurtains ec1e\ncurtains_closed ec1d\ncut f08b\ncyclone ebd5\ndangerous e99a\ndark_mode e51c\ndashboard e871\ndashboard_customize e99b\ndata_array ead1\ndata_exploration e76f\ndata_object ead3\ndata_saver_off eff2\ndata_saver_on eff3\ndata_thresholding eb9f\ndata_usage e1af\ndataset f8ee\ndataset_linked f8ef\ndate_range e916\ndeblur eb77\ndeck ea42\ndehaze e3c7\ndelete e872\ndelete_forever e92b\ndelete_outline e92e\ndelete_sweep e16c\ndelivery_dining ea72\ndensity_large eba9\ndensity_medium eb9e\ndensity_small eba8\ndeparture_board e576\ndescription e873\ndeselect ebb6\ndesign_services f10a\ndesk f8f4\ndesktop_access_disabled e99d\ndesktop_mac e30b\ndesktop_windows e30c\ndetails e3c8\ndeveloper_board e30d\ndeveloper_board_off e4ff\ndeveloper_mode e1b0\ndevice_hub e335\ndevice_thermostat e1ff\ndevice_unknown e339\ndevices e1b1\ndevices_fold ebde\ndevices_other e337\ndialer_sip e0bb\ndialpad e0bc\ndiamond ead5\ndifference eb7d\ndining eff4\ndinner_dining ea57\ndirections e52e\ndirections_bike e52f\ndirections_boat e532\ndirections_boat_filled eff5\ndirections_bus e530\ndirections_bus_filled eff6\ndirections_car e531\ndirections_car_filled eff7\ndirections_ferry e532\ndirections_off f10f\ndirections_railway e534\ndirections_railway_filled eff8\ndirections_run e566\ndirections_subway e533\ndirections_subway_filled eff9\ndirections_train e534\ndirections_transit e535\ndirections_transit_filled effa\ndirections_walk e536\ndirty_lens ef4b\ndisabled_by_default f230\ndisabled_visible e76e\ndisc_full e610\ndiscord ea6c\ndiscount ebc9\ndisplay_settings eb97\ndiversity_1 f8d7\ndiversity_2 f8d8\ndiversity_3 f8d9\ndnd_forwardslash e611\ndns e875\ndo_disturb f08c\ndo_disturb_alt f08d\ndo_disturb_off f08e\ndo_disturb_on f08f\ndo_not_disturb e612\ndo_not_disturb_alt e611\ndo_not_disturb_off e643\ndo_not_disturb_on e644\ndo_not_disturb_on_total_silence effb\ndo_not_step f19f\ndo_not_touch f1b0\ndock e30e\ndocument_scanner e5fa\ndomain e7ee\ndomain_add eb62\ndomain_disabled e0ef\ndomain_verification ef4c\ndone e876\ndone_all e877\ndone_outline e92f\ndonut_large e917\ndonut_small e918\ndoor_back effc\ndoor_front effd\ndoor_sliding effe\ndoorbell efff\ndouble_arrow ea50\ndownhill_skiing e509\ndownload f090\ndownload_done f091\ndownload_for_offline f000\ndownloading f001\ndrafts e151\ndrag_handle e25d\ndrag_indicator e945\ndraw e746\ndrive_eta e613\ndrive_file_move e675\ndrive_file_move_rtl e76d\ndrive_file_rename_outline e9a2\ndrive_folder_upload e9a3\ndry f1b3\ndry_cleaning ea58\nduo e9a5\ndvr e1b2\ndynamic_feed ea14\ndynamic_form f1bf\ne_mobiledata f002\nearbuds f003\nearbuds_battery f004\neast f1df\neco ea35\nedgesensor_high f005\nedgesensor_low f006\nedit e3c9\nedit_attributes e578\nedit_calendar e742\nedit_location e568\nedit_location_alt e1c5\nedit_note e745\nedit_notifications e525\nedit_off e950\nedit_road ef4d\negg eacc\negg_alt eac8\neject e8fb\nelderly f21a\nelderly_woman eb69\nelectric_bike eb1b\nelectric_bolt ec1c\nelectric_car eb1c\nelectric_meter ec1b\nelectric_moped eb1d\nelectric_rickshaw eb1e\nelectric_scooter eb1f\nelectrical_services f102\nelevator f1a0\nemail e0be\nemergency e1eb\nemergency_recording ebf4\nemergency_share ebf6\nemoji_emotions ea22\nemoji_events ea23\nemoji_flags ea1a\nemoji_food_beverage ea1b\nemoji_nature ea1c\nemoji_objects ea24\nemoji_people ea1d\nemoji_symbols ea1e\nemoji_transportation ea1f\nenergy_savings_leaf ec1a\nengineering ea3d\nenhance_photo_translate e8fc\nenhanced_encryption e63f\nequalizer e01d\nerror e000\nerror_outline e001\nescalator f1a1\nescalator_warning f1ac\neuro ea15\neuro_symbol e926\nev_station e56d\nevent e878\nevent_available e614\nevent_busy e615\nevent_note e616\nevent_repeat eb7b\nevent_seat e903\nexit_to_app e879\nexpand e94f\nexpand_circle_down e7cd\nexpand_less e5ce\nexpand_more e5cf\nexplicit e01e\nexplore e87a\nexplore_off e9a8\nexposure e3ca\nexposure_minus_1 e3cb\nexposure_minus_2 e3cc\nexposure_neg_1 e3cb\nexposure_neg_2 e3cc\nexposure_plus_1 e3cd\nexposure_plus_2 e3ce\nexposure_zero e3cf\nextension e87b\nextension_off e4f5\nface e87c\nface_2 f8da\nface_3 f8db\nface_4 f8dc\nface_5 f8dd\nface_6 f8de\nface_retouching_natural ef4e\nface_retouching_off f007\nface_unlock f008\nfacebook f234\nfact_check f0c5\nfactory ebbc\nfamily_restroom f1a2\nfast_forward e01f\nfast_rewind e020\nfastfood e57a\nfavorite e87d\nfavorite_border e87e\nfavorite_outline e87e\nfax ead8\nfeatured_play_list e06d\nfeatured_video e06e\nfeed f009\nfeedback e87f\nfemale e590\nfence f1f6\nfestival ea68\nfiber_dvr e05d\nfiber_manual_record e061\nfiber_new e05e\nfiber_pin e06a\nfiber_smart_record e062\nfile_copy e173\nfile_download e2c4\nfile_download_done e9aa\nfile_download_off e4fe\nfile_open eaf3\nfile_present ea0e\nfile_upload e2c6\nfilter e3d3\nfilter_1 e3d0\nfilter_2 e3d1\nfilter_3 e3d2\nfilter_4 e3d4\nfilter_5 e3d5\nfilter_6 e3d6\nfilter_7 e3d7\nfilter_8 e3d8\nfilter_9 e3d9\nfilter_9_plus e3da\nfilter_alt ef4f\nfilter_alt_off eb32\nfilter_b_and_w e3db\nfilter_center_focus e3dc\nfilter_drama e3dd\nfilter_frames e3de\nfilter_hdr e3df\nfilter_list e152\nfilter_list_off eb57\nfilter_none e3e0\nfilter_tilt_shift e3e2\nfilter_vintage e3e3\nfind_in_page e880\nfind_replace e881\nfingerprint e90d\nfire_extinguisher f1d8\nfire_hydrant_alt f8f1\nfire_truck f8f2\nfireplace ea43\nfirst_page e5dc\nfit_screen ea10\nfitbit e82b\nfitness_center eb43\nflag e153\nflag_circle eaf8\nflaky ef50\nflare e3e4\nflash_auto e3e5\nflash_off e3e6\nflash_on e3e7\nflashlight_off f00a\nflashlight_on f00b\nflatware f00c\nflight e539\nflight_class e7cb\nflight_land e904\nflight_takeoff e905\nflip e3e8\nflip_camera_android ea37\nflip_camera_ios ea38\nflip_to_back e882\nflip_to_front e883\nflood ebe6\nflourescent f00d\nflutter_dash e00b\nfmd_bad f00e\nfmd_good f00f\nfolder e2c7\nfolder_copy ebbd\nfolder_delete eb34\nfolder_off eb83\nfolder_open e2c8\nfolder_shared e2c9\nfolder_special e617\nfolder_zip eb2c\nfollow_the_signs f222\nfont_download e167\nfont_download_off e4f9\nfood_bank f1f2\nforest ea99\nfork_left eba0\nfork_right ebac\nformat_align_center e234\nformat_align_justify e235\nformat_align_left e236\nformat_align_right e237\nformat_bold e238\nformat_clear e239\nformat_color_fill e23a\nformat_color_reset e23b\nformat_color_text e23c\nformat_indent_decrease e23d\nformat_indent_increase e23e\nformat_italic e23f\nformat_line_spacing e240\nformat_list_bulleted e241\nformat_list_numbered e242\nformat_list_numbered_rtl e267\nformat_overline eb65\nformat_paint e243\nformat_quote e244\nformat_shapes e25e\nformat_size e245\nformat_strikethrough e246\nformat_textdirection_l_to_r e247\nformat_textdirection_r_to_l e248\nformat_underline e765\nformat_underlined e765\nfort eaad\nforum e0bf\nforward e154\nforward_10 e056\nforward_30 e057\nforward_5 e058\nforward_to_inbox f187\nfoundation f200\nfree_breakfast eb44\nfree_cancellation e748\nfront_hand e769\nfullscreen e5d0\nfullscreen_exit e5d1\nfunctions e24a\ng_mobiledata f010\ng_translate e927\ngamepad e30f\ngames e021\ngarage f011\ngas_meter ec19\ngavel e90e\ngenerating_tokens e749\ngesture e155\nget_app e884\ngif e908\ngif_box e7a3\ngirl eb68\ngite e58b\ngolf_course eb45\ngpp_bad f012\ngpp_good f013\ngpp_maybe f014\ngps_fixed e1b3\ngps_not_fixed e1b4\ngps_off e1b5\ngrade e885\ngradient e3e9\ngrading ea4f\ngrain e3ea\ngraphic_eq e1b8\ngrass f205\ngrid_3x3 f015\ngrid_4x4 f016\ngrid_goldenratio f017\ngrid_off e3eb\ngrid_on e3ec\ngrid_view e9b0\ngroup e7ef\ngroup_add e7f0\ngroup_off e747\ngroup_remove e7ad\ngroup_work e886\ngroups f233\ngroups_2 f8df\ngroups_3 f8e0\nh_mobiledata f018\nh_plus_mobiledata f019\nhail e9b1\nhandshake ebcb\nhandyman f10b\nhardware ea59\nhd e052\nhdr_auto f01a\nhdr_auto_select f01b\nhdr_enhanced_select ef51\nhdr_off e3ed\nhdr_off_select f01c\nhdr_on e3ee\nhdr_on_select f01d\nhdr_plus f01e\nhdr_strong e3f1\nhdr_weak e3f2\nheadphones f01f\nheadphones_battery f020\nheadset e310\nheadset_mic e311\nheadset_off e33a\nhealing e3f3\nhealth_and_safety e1d5\nhearing e023\nhearing_disabled f104\nheart_broken eac2\nheat_pump ec18\nheight ea16\nhelp e887\nhelp_center f1c0\nhelp_outline e8fd\nhevc f021\nhexagon eb39\nhide_image f022\nhide_source f023\nhigh_quality e024\nhighlight e25f\nhighlight_alt ef52\nhighlight_off e888\nhighlight_remove e888\nhiking e50a\nhistory e889\nhistory_edu ea3e\nhistory_toggle_off f17d\nhive eaa6\nhls eb8a\nhls_off eb8c\nholiday_village e58a\nhome e88a\nhome_max f024\nhome_mini f025\nhome_repair_service f100\nhome_work ea09\nhorizontal_distribute e014\nhorizontal_rule f108\nhorizontal_split e947\nhot_tub eb46\nhotel e53a\nhotel_class e743\nhourglass_bottom ea5c\nhourglass_disabled ef53\nhourglass_empty e88b\nhourglass_full e88c\nhourglass_top ea5b\nhouse ea44\nhouse_siding f202\nhouseboat e584\nhow_to_reg e174\nhow_to_vote e175\nhtml eb7e\nhttp e902\nhttps e88d\nhub e9f4\nhvac f10e\nice_skating e50b\nicecream ea69\nimage e3f4\nimage_aspect_ratio e3f5\nimage_not_supported f116\nimage_search e43f\nimagesearch_roller e9b4\nimport_contacts e0e0\nimport_export e0c3\nimportant_devices e912\ninbox e156\nincomplete_circle e79b\nindeterminate_check_box e909\ninfo e88e\ninfo_outline e88f\ninput e890\ninsert_chart e24b\ninsert_chart_outlined e26a\ninsert_comment e24c\ninsert_drive_file e24d\ninsert_emoticon e24e\ninsert_invitation e24f\ninsert_link e250\ninsert_page_break eaca\ninsert_photo e251\ninsights f092\ninstall_desktop eb71\ninstall_mobile eb72\nintegration_instructions ef54\ninterests e7c8\ninterpreter_mode e83b\ninventory e179\ninventory_2 e1a1\ninvert_colors e891\ninvert_colors_off e0c4\ninvert_colors_on e891\nios_share e6b8\niron e583\niso e3f6\njavascript eb7c\njoin_full eaeb\njoin_inner eaf4\njoin_left eaf2\njoin_right eaea\nkayaking e50c\nkebab_dining e842\nkey e73c\nkey_off eb84\nkeyboard e312\nkeyboard_alt f028\nkeyboard_arrow_down e313\nkeyboard_arrow_left e314\nkeyboard_arrow_right e315\nkeyboard_arrow_up e316\nkeyboard_backspace e317\nkeyboard_capslock e318\nkeyboard_command_key eae7\nkeyboard_control eae1\nkeyboard_control_key eae6\nkeyboard_double_arrow_down ead0\nkeyboard_double_arrow_left eac3\nkeyboard_double_arrow_right eac9\nkeyboard_double_arrow_up eacf\nkeyboard_hide e31a\nkeyboard_option_key eae8\nkeyboard_return e31b\nkeyboard_tab e31c\nkeyboard_voice e31d\nking_bed ea45\nkitchen eb47\nkitesurfing e50d\nlabel e892\nlabel_important e937\nlabel_important_outline e948\nlabel_off e9b6\nlabel_outline e893\nlan eb2f\nlandscape e3f7\nlandslide ebd7\nlanguage e894\nlaptop e31e\nlaptop_chromebook e31f\nlaptop_mac e320\nlaptop_windows e321\nlast_page e5dd\nlaunch e895\nlayers e53b\nlayers_clear e53c\nleaderboard f20c\nleak_add e3f8\nleak_remove e3f9\nleave_bags_at_home f23b\nlegend_toggle f11b\nlens e3fa\nlens_blur f029\nlibrary_add e02e\nlibrary_add_check e9b7\nlibrary_books e02f\nlibrary_music e030\nlight f02a\nlight_mode e518\nlightbulb e0f0\nlightbulb_circle ebfe\nlightbulb_outline e90f\nline_axis ea9a\nline_style e919\nline_weight e91a\nlinear_scale e260\nlink e157\nlink_off e16f\nlinked_camera e438\nliquor ea60\nlist e896\nlist_alt e0ee\nlive_help e0c6\nlive_tv e639\nliving f02b\nlocal_activity e53f\nlocal_airport e53d\nlocal_atm e53e\nlocal_attraction e53f\nlocal_bar e540\nlocal_cafe e541\nlocal_car_wash e542\nlocal_convenience_store e543\nlocal_dining e556\nlocal_drink e544\nlocal_fire_department ef55\nlocal_florist e545\nlocal_gas_station e546\nlocal_grocery_store e547\nlocal_hospital e548\nlocal_hotel e549\nlocal_laundry_service e54a\nlocal_library e54b\nlocal_mall e54c\nlocal_movies e54d\nlocal_offer e54e\nlocal_parking e54f\nlocal_pharmacy e550\nlocal_phone e551\nlocal_pizza e552\nlocal_play e553\nlocal_police ef56\nlocal_post_office e554\nlocal_print_shop e555\nlocal_printshop e555\nlocal_restaurant e556\nlocal_see e557\nlocal_shipping e558\nlocal_taxi e559\nlocation_city e7f1\nlocation_disabled e1b6\nlocation_history e55a\nlocation_off e0c7\nlocation_on e0c8\nlocation_searching e1b7\nlock e897\nlock_clock ef57\nlock_open e898\nlock_outline e899\nlock_person f8f3\nlock_reset eade\nlogin ea77\nlogo_dev ead6\nlogout e9ba\nlooks e3fc\nlooks_3 e3fb\nlooks_4 e3fd\nlooks_5 e3fe\nlooks_6 e3ff\nlooks_one e400\nlooks_two e401\nloop e028\nloupe e402\nlow_priority e16d\nloyalty e89a\nlte_mobiledata f02c\nlte_plus_mobiledata f02d\nluggage f235\nlunch_dining ea61\nlyrics ec0b\nmacro_off f8d2\nmail e158\nmail_lock ec0a\nmail_outline e0e1\nmale e58e\nman e4eb\nman_2 f8e1\nman_3 f8e2\nman_4 f8e3\nmanage_accounts f02e\nmanage_history ebe7\nmanage_search f02f\nmap e55b\nmaps_home_work f030\nmaps_ugc ef58\nmargin e9bb\nmark_as_unread e9bc\nmark_chat_read f18b\nmark_chat_unread f189\nmark_email_read f18c\nmark_email_unread f18a\nmark_unread_chat_alt eb9d\nmarkunread e159\nmarkunread_mailbox e89b\nmasks f218\nmaximize e930\nmedia_bluetooth_off f031\nmedia_bluetooth_on f032\nmediation efa7\nmedical_information ebed\nmedical_services f109\nmedication f033\nmedication_liquid ea87\nmeeting_room eb4f\nmemory e322\nmenu e5d2\nmenu_book ea19\nmenu_open e9bd\nmerge eb98\nmerge_type e252\nmessage e0c9\nmessenger e0ca\nmessenger_outline e0cb\nmic e029\nmic_external_off ef59\nmic_external_on ef5a\nmic_none e02a\nmic_off e02b\nmicrowave f204\nmilitary_tech ea3f\nminimize e931\nminor_crash ebf1\nmiscellaneous_services f10c\nmissed_video_call e073\nmms e618\nmobile_friendly e200\nmobile_off e201\nmobile_screen_share e0e7\nmobiledata_off f034\nmode f097\nmode_comment e253\nmode_edit e254\nmode_edit_outline f035\nmode_fan_off ec17\nmode_night f036\nmode_of_travel e7ce\nmode_standby f037\nmodel_training f0cf\nmonetization_on e263\nmoney e57d\nmoney_off e25c\nmoney_off_csred f038\nmonitor ef5b\nmonitor_heart eaa2\nmonitor_weight f039\nmonochrome_photos e403\nmood e7f2\nmood_bad e7f3\nmoped eb28\nmore e619\nmore_horiz eae1\nmore_time ea5d\nmore_vert e5d4\nmosque eab2\nmotion_photos_auto f03a\nmotion_photos_off e9c0\nmotion_photos_on e9c1\nmotion_photos_pause f227\nmotion_photos_paused e9c2\nmotorcycle e91b\nmouse e323\nmove_down eb61\nmove_to_inbox e168\nmove_up eb64\nmovie e02c\nmovie_creation e404\nmovie_filter e43a\nmoving e501\nmp e9c3\nmultiline_chart e6df\nmultiple_stop f1b9\nmultitrack_audio e1b8\nmuseum ea36\nmusic_note e405\nmusic_off e440\nmusic_video e063\nmy_library_add e02e\nmy_library_books e02f\nmy_library_music e030\nmy_location e55c\nnat ef5c\nnature e406\nnature_people e407\nnavigate_before e408\nnavigate_next e409\nnavigation e55d\nnear_me e569\nnear_me_disabled f1ef\nnearby_error f03b\nnearby_off f03c\nnest_cam_wired_stand ec16\nnetwork_cell e1b9\nnetwork_check e640\nnetwork_locked e61a\nnetwork_ping ebca\nnetwork_wifi e1ba\nnetwork_wifi_1_bar ebe4\nnetwork_wifi_2_bar ebd6\nnetwork_wifi_3_bar ebe1\nnew_label e609\nnew_releases e031\nnewspaper eb81\nnext_plan ef5d\nnext_week e16a\nnfc e1bb\nnight_shelter f1f1\nnightlife ea62\nnightlight f03d\nnightlight_round ef5e\nnights_stay ea46\nno_accounts f03e\nno_adult_content f8fe\nno_backpack f237\nno_cell f1a4\nno_crash ebf0\nno_drinks f1a5\nno_encryption e641\nno_encryption_gmailerrorred f03f\nno_flash f1a6\nno_food f1a7\nno_luggage f23b\nno_meals f1d6\nno_meeting_room eb4e\nno_photography f1a8\nno_sim e0cc\nno_stroller f1af\nno_transfer f1d5\nnoise_aware ebec\nnoise_control_off ebf3\nnordic_walking e50e\nnorth f1e0\nnorth_east f1e1\nnorth_west f1e2\nnot_accessible f0fe\nnot_interested e033\nnot_listed_location e575\nnot_started f0d1\nnote e06f\nnote_add e89c\nnote_alt f040\nnotes e26c\nnotification_add e399\nnotification_important e004\nnotifications e7f4\nnotifications_active e7f7\nnotifications_none e7f5\nnotifications_off e7f6\nnotifications_on e7f7\nnotifications_paused e7f8\nnow_wallpaper e75f\nnow_widgets e75e\nnumbers eac7\noffline_bolt e932\noffline_pin e90a\noffline_share e9c5\noil_barrel ec15\non_device_training ebfd\nondemand_video e63a\nonline_prediction f0eb\nopacity e91c\nopen_in_browser e89d\nopen_in_full f1ce\nopen_in_new e89e\nopen_in_new_off e4f6\nopen_with e89f\nother_houses e58c\noutbond f228\noutbound e1ca\noutbox ef5f\noutdoor_grill ea47\noutlet f1d4\noutlined_flag e16e\noutput ebbe\npadding e9c8\npages e7f9\npageview e8a0\npaid f041\npalette e40a\npan_tool e925\npan_tool_alt ebb9\npanorama e40b\npanorama_fish_eye e40c\npanorama_fisheye e40c\npanorama_horizontal e40d\npanorama_horizontal_select ef60\npanorama_photosphere e9c9\npanorama_photosphere_select e9ca\npanorama_vertical e40e\npanorama_vertical_select ef61\npanorama_wide_angle e40f\npanorama_wide_angle_select ef62\nparagliding e50f\npark ea63\nparty_mode e7fa\npassword f042\npaste f098\npattern f043\npause e034\npause_circle e1a2\npause_circle_filled e035\npause_circle_outline e036\npause_presentation e0ea\npayment e8a1\npayments ef63\npaypal ea8d\npedal_bike eb29\npending ef64\npending_actions f1bb\npentagon eb50\npeople e7fb\npeople_alt ea21\npeople_outline e7fc\npercent eb58\nperm_camera_mic e8a2\nperm_contact_cal e8a3\nperm_contact_calendar e8a3\nperm_data_setting e8a4\nperm_device_info e8a5\nperm_device_information e8a5\nperm_identity e8a6\nperm_media e8a7\nperm_phone_msg e8a8\nperm_scan_wifi e8a9\nperson e7fd\nperson_2 f8e4\nperson_3 f8e5\nperson_4 f8e6\nperson_add e7fe\nperson_add_alt ea4d\nperson_add_alt_1 ef65\nperson_add_disabled e9cb\nperson_off e510\nperson_outline e7ff\nperson_pin e55a\nperson_pin_circle e56a\nperson_remove ef66\nperson_remove_alt_1 ef67\nperson_search f106\npersonal_injury e6da\npersonal_video e63b\npest_control f0fa\npest_control_rodent f0fd\npets e91d\nphishing ead7\nphone e0cd\nphone_android e324\nphone_bluetooth_speaker e61b\nphone_callback e649\nphone_disabled e9cc\nphone_enabled e9cd\nphone_forwarded e61c\nphone_in_talk e61d\nphone_iphone e325\nphone_locked e61e\nphone_missed e61f\nphone_paused e620\nphonelink e326\nphonelink_erase e0db\nphonelink_lock e0dc\nphonelink_off e327\nphonelink_ring e0dd\nphonelink_setup e0de\nphoto e410\nphoto_album e411\nphoto_camera e412\nphoto_camera_back ef68\nphoto_camera_front ef69\nphoto_filter e43b\nphoto_library e413\nphoto_size_select_actual e432\nphoto_size_select_large e433\nphoto_size_select_small e434\nphp eb8f\npiano e521\npiano_off e520\npicture_as_pdf e415\npicture_in_picture e8aa\npicture_in_picture_alt e911\npie_chart e6c4\npie_chart_outline f044\npin f045\npin_drop e55e\npin_end e767\npin_invoke e763\npinch eb38\npivot_table_chart e9ce\npix eaa3\nplace e55f\nplagiarism ea5a\nplay_arrow e037\nplay_circle e1c4\nplay_circle_fill e038\nplay_circle_filled e038\nplay_circle_outline e039\nplay_disabled ef6a\nplay_for_work e906\nplay_lesson f047\nplaylist_add e03b\nplaylist_add_check e065\nplaylist_add_check_circle e7e6\nplaylist_add_circle e7e5\nplaylist_play e05f\nplaylist_remove eb80\nplumbing f107\nplus_one e800\npodcasts f048\npoint_of_sale f17e\npolicy ea17\npoll e801\npolyline ebbb\npolymer e8ab\npool eb48\nportable_wifi_off e0ce\nportrait e416\npost_add ea20\npower e63c\npower_input e336\npower_off e646\npower_settings_new e8ac\nprecision_manufacturing f049\npregnant_woman e91e\npresent_to_all e0df\npreview f1c5\nprice_change f04a\nprice_check f04b\nprint e8ad\nprint_disabled e9cf\npriority_high e645\nprivacy_tip f0dc\nprivate_connectivity e744\nproduction_quantity_limits e1d1\npropane ec14\npropane_tank ec13\npsychology ea4a\npsychology_alt f8ea\npublic e80b\npublic_off f1ca\npublish e255\npublished_with_changes f232\npunch_clock eaa8\npush_pin f10d\nqr_code ef6b\nqr_code_2 e00a\nqr_code_scanner f206\nquery_builder e8ae\nquery_stats e4fc\nquestion_answer e8af\nquestion_mark eb8b\nqueue e03c\nqueue_music e03d\nqueue_play_next e066\nquick_contacts_dialer e0cf\nquick_contacts_mail e0d0\nquickreply ef6c\nquiz f04c\nquora ea98\nr_mobiledata f04d\nradar f04e\nradio e03e\nradio_button_checked e837\nradio_button_off e836\nradio_button_on e837\nradio_button_unchecked e836\nrailway_alert e9d1\nramen_dining ea64\nramp_left eb9c\nramp_right eb96\nrate_review e560\nraw_off f04f\nraw_on f050\nread_more ef6d\nreal_estate_agent e73a\nreceipt e8b0\nreceipt_long ef6e\nrecent_actors e03f\nrecommend e9d2\nrecord_voice_over e91f\nrectangle eb54\nrecycling e760\nreddit eaa0\nredeem e8b1\nredo e15a\nreduce_capacity f21c\nrefresh e5d5\nremember_me f051\nremove e15b\nremove_circle e15c\nremove_circle_outline e15d\nremove_done e9d3\nremove_from_queue e067\nremove_moderator e9d4\nremove_red_eye e417\nremove_road ebfc\nremove_shopping_cart e928\nreorder e8fe\nrepartition f8e8\nrepeat e040\nrepeat_on e9d6\nrepeat_one e041\nrepeat_one_on e9d7\nreplay e042\nreplay_10 e059\nreplay_30 e05a\nreplay_5 e05b\nreplay_circle_filled e9d8\nreply e15e\nreply_all e15f\nreport e160\nreport_gmailerrorred f052\nreport_off e170\nreport_problem e8b2\nrequest_page f22c\nrequest_quote f1b6\nreset_tv e9d9\nrestart_alt f053\nrestaurant e56c\nrestaurant_menu e561\nrestore e8b3\nrestore_from_trash e938\nrestore_page e929\nreviews f054\nrice_bowl f1f5\nring_volume e0d1\nrocket eba5\nrocket_launch eb9b\nroller_shades ec12\nroller_shades_closed ec11\nroller_skating ebcd\nroofing f201\nroom e8b4\nroom_preferences f1b8\nroom_service eb49\nrotate_90_degrees_ccw e418\nrotate_90_degrees_cw eaab\nrotate_left e419\nrotate_right e41a\nroundabout_left eb99\nroundabout_right eba3\nrounded_corner e920\nroute eacd\nrouter e328\nrowing e921\nrss_feed e0e5\nrsvp f055\nrtt e9ad\nrule f1c2\nrule_folder f1c9\nrun_circle ef6f\nrunning_with_errors e51d\nrv_hookup e642\nsafety_check ebef\nsafety_divider e1cc\nsailing e502\nsanitizer f21d\nsatellite e562\nsatellite_alt eb3a\nsave e161\nsave_alt e171\nsave_as eb60\nsaved_search ea11\nsavings e2eb\nscale eb5f\nscanner e329\nscatter_plot e268\nschedule e8b5\nschedule_send ea0a\nschema e4fd\nschool e80c\nscience ea4b\nscore e269\nscoreboard ebd0\nscreen_lock_landscape e1be\nscreen_lock_portrait e1bf\nscreen_lock_rotation e1c0\nscreen_rotation e1c1\nscreen_rotation_alt ebee\nscreen_search_desktop ef70\nscreen_share e0e2\nscreenshot f056\nscreenshot_monitor ec08\nscuba_diving ebce\nsd e9dd\nsd_card e623\nsd_card_alert f057\nsd_storage e1c2\nsearch e8b6\nsearch_off ea76\nsecurity e32a\nsecurity_update f058\nsecurity_update_good f059\nsecurity_update_warning f05a\nsegment e94b\nselect_all e162\nself_improvement ea78\nsell f05b\nsend e163\nsend_and_archive ea0c\nsend_time_extension eadb\nsend_to_mobile f05c\nsensor_door f1b5\nsensor_occupied ec10\nsensor_window f1b4\nsensors e51e\nsensors_off e51f\nsentiment_dissatisfied e811\nsentiment_neutral e812\nsentiment_satisfied e813\nsentiment_satisfied_alt e0ed\nsentiment_very_dissatisfied e814\nsentiment_very_satisfied e815\nset_meal f1ea\nsettings e8b8\nsettings_accessibility f05d\nsettings_applications e8b9\nsettings_backup_restore e8ba\nsettings_bluetooth e8bb\nsettings_brightness e8bd\nsettings_cell e8bc\nsettings_display e8bd\nsettings_ethernet e8be\nsettings_input_antenna e8bf\nsettings_input_component e8c0\nsettings_input_composite e8c1\nsettings_input_hdmi e8c2\nsettings_input_svideo e8c3\nsettings_overscan e8c4\nsettings_phone e8c5\nsettings_power e8c6\nsettings_remote e8c7\nsettings_suggest f05e\nsettings_system_daydream e1c3\nsettings_voice e8c8\nsevere_cold ebd3\nshape_line f8d3\nshare e80d\nshare_arrival_time e524\nshare_location f05f\nshield e9e0\nshield_moon eaa9\nshop e8c9\nshop_2 e19e\nshop_two e8ca\nshopify ea9d\nshopping_bag f1cc\nshopping_basket e8cb\nshopping_cart e8cc\nshopping_cart_checkout eb88\nshort_text e261\nshortcut f060\nshow_chart e6e1\nshower f061\nshuffle e043\nshuffle_on e9e1\nshutter_speed e43d\nsick f220\nsign_language ebe5\nsignal_cellular_0_bar f0a8\nsignal_cellular_4_bar e1c8\nsignal_cellular_alt e202\nsignal_cellular_alt_1_bar ebdf\nsignal_cellular_alt_2_bar ebe3\nsignal_cellular_connected_no_internet_0_bar f0ac\nsignal_cellular_connected_no_internet_4_bar e1cd\nsignal_cellular_no_sim e1ce\nsignal_cellular_nodata f062\nsignal_cellular_null e1cf\nsignal_cellular_off e1d0\nsignal_wifi_0_bar f0b0\nsignal_wifi_4_bar e1d8\nsignal_wifi_4_bar_lock e1d9\nsignal_wifi_bad f063\nsignal_wifi_connected_no_internet_4 f064\nsignal_wifi_off e1da\nsignal_wifi_statusbar_4_bar f065\nsignal_wifi_statusbar_connected_no_internet_4 f066\nsignal_wifi_statusbar_null f067\nsignpost eb91\nsim_card e32b\nsim_card_alert e624\nsim_card_download f068\nsingle_bed ea48\nsip f069\nskateboarding e511\nskip_next e044\nskip_previous e045\nsledding e512\nslideshow e41b\nslow_motion_video e068\nsmart_button f1c1\nsmart_display f06a\nsmart_screen f06b\nsmart_toy f06c\nsmartphone e32c\nsmoke_free eb4a\nsmoking_rooms eb4b\nsms e625\nsms_failed e626\nsnapchat ea6e\nsnippet_folder f1c7\nsnooze e046\nsnowboarding e513\nsnowmobile e503\nsnowshoeing e514\nsoap f1b2\nsocial_distance e1cb\nsolar_power ec0f\nsort e164\nsort_by_alpha e053\nsos ebf7\nsoup_kitchen e7d3\nsource f1c4\nsouth f1e3\nsouth_america e7e4\nsouth_east f1e4\nsouth_west f1e5\nspa eb4c\nspace_bar e256\nspace_dashboard e66b\nspatial_audio ebeb\nspatial_audio_off ebe8\nspatial_tracking ebea\nspeaker e32d\nspeaker_group e32e\nspeaker_notes e8cd\nspeaker_notes_off e92a\nspeaker_phone e0d2\nspeed e9e4\nspellcheck e8ce\nsplitscreen f06d\nspoke e9a7\nsports ea30\nsports_bar f1f3\nsports_baseball ea51\nsports_basketball ea26\nsports_cricket ea27\nsports_esports ea28\nsports_football ea29\nsports_golf ea2a\nsports_gymnastics ebc4\nsports_handball ea33\nsports_hockey ea2b\nsports_kabaddi ea34\nsports_martial_arts eae9\nsports_mma ea2c\nsports_motorsports ea2d\nsports_rugby ea2e\nsports_score f06e\nsports_soccer ea2f\nsports_tennis ea32\nsports_volleyball ea31\nsquare eb36\nsquare_foot ea49\nssid_chart eb66\nstacked_bar_chart e9e6\nstacked_line_chart f22b\nstadium eb90\nstairs f1a9\nstar e838\nstar_border e83a\nstar_border_purple500 f099\nstar_half e839\nstar_outline f06f\nstar_purple500 f09a\nstar_rate f0ec\nstars e8d0\nstart e089\nstay_current_landscape e0d3\nstay_current_portrait e0d4\nstay_primary_landscape e0d5\nstay_primary_portrait e0d6\nsticky_note_2 f1fc\nstop e047\nstop_circle ef71\nstop_screen_share e0e3\nstorage e1db\nstore e8d1\nstore_mall_directory e563\nstorefront ea12\nstorm f070\nstraight eb95\nstraighten e41c\nstream e9e9\nstreetview e56e\nstrikethrough_s e257\nstroller f1ae\nstyle e41d\nsubdirectory_arrow_left e5d9\nsubdirectory_arrow_right e5da\nsubject e8d2\nsubscript f111\nsubscriptions e064\nsubtitles e048\nsubtitles_off ef72\nsubway e56f\nsummarize f071\nsuperscript f112\nsupervised_user_circle e939\nsupervisor_account e8d3\nsupport ef73\nsupport_agent f0e2\nsurfing e515\nsurround_sound e049\nswap_calls e0d7\nswap_horiz e8d4\nswap_horizontal_circle e933\nswap_vert e8d5\nswap_vert_circle e8d6\nswap_vertical_circle e8d6\nswipe e9ec\nswipe_down eb53\nswipe_down_alt eb30\nswipe_left eb59\nswipe_left_alt eb33\nswipe_right eb52\nswipe_right_alt eb56\nswipe_up eb2e\nswipe_up_alt eb35\nswipe_vertical eb51\nswitch_access_shortcut e7e1\nswitch_access_shortcut_add e7e2\nswitch_account e9ed\nswitch_camera e41e\nswitch_left f1d1\nswitch_right f1d2\nswitch_video e41f\nsynagogue eab0\nsync e627\nsync_alt ea18\nsync_disabled e628\nsync_lock eaee\nsync_problem e629\nsystem_security_update f072\nsystem_security_update_good f073\nsystem_security_update_warning f074\nsystem_update e62a\nsystem_update_alt e8d7\nsystem_update_tv e8d7\ntab e8d8\ntab_unselected e8d9\ntable_bar ead2\ntable_chart e265\ntable_restaurant eac6\ntable_rows f101\ntable_view f1be\ntablet e32f\ntablet_android e330\ntablet_mac e331\ntag e9ef\ntag_faces e420\ntakeout_dining ea74\ntap_and_play e62b\ntapas f1e9\ntask f075\ntask_alt e2e6\ntaxi_alert ef74\ntelegram ea6b\ntemple_buddhist eab3\ntemple_hindu eaaf\nterminal eb8e\nterrain e564\ntext_decrease eadd\ntext_fields e262\ntext_format e165\ntext_increase eae2\ntext_rotate_up e93a\ntext_rotate_vertical e93b\ntext_rotation_angledown e93c\ntext_rotation_angleup e93d\ntext_rotation_down e93e\ntext_rotation_none e93f\ntext_snippet f1c6\ntextsms e0d8\ntexture e421\ntheater_comedy ea66\ntheaters e8da\nthermostat f076\nthermostat_auto f077\nthumb_down e8db\nthumb_down_alt e816\nthumb_down_off_alt e9f2\nthumb_up e8dc\nthumb_up_alt e817\nthumb_up_off_alt e9f3\nthumbs_up_down e8dd\nthunderstorm ebdb\ntiktok ea7e\ntime_to_leave e62c\ntimelapse e422\ntimeline e922\ntimer e425\ntimer_10 e423\ntimer_10_select f07a\ntimer_3 e424\ntimer_3_select f07b\ntimer_off e426\ntips_and_updates e79a\ntire_repair ebc8\ntitle e264\ntoc e8de\ntoday e8df\ntoggle_off e9f5\ntoggle_on e9f6\ntoken ea25\ntoll e8e0\ntonality e427\ntopic f1c8\ntornado e199\ntouch_app e913\ntour ef75\ntoys e332\ntrack_changes e8e1\ntraffic e565\ntrain e570\ntram e571\ntranscribe f8ec\ntransfer_within_a_station e572\ntransform e428\ntransgender e58d\ntransit_enterexit e579\ntranslate e8e2\ntravel_explore e2db\ntrending_down e8e3\ntrending_flat e8e4\ntrending_neutral e8e4\ntrending_up e8e5\ntrip_origin e57b\ntroubleshoot e1d2\ntry f07c\ntsunami ebd8\ntty f1aa\ntune e429\ntungsten f07d\nturn_left eba6\nturn_right ebab\nturn_sharp_left eba7\nturn_sharp_right ebaa\nturn_slight_left eba4\nturn_slight_right eb9a\nturned_in e8e6\nturned_in_not e8e7\ntv e333\ntv_off e647\ntwo_wheeler e9f9\ntype_specimen f8f0\nu_turn_left eba1\nu_turn_right eba2\numbrella f1ad\nunarchive e169\nundo e166\nunfold_less e5d6\nunfold_less_double f8cf\nunfold_more e5d7\nunfold_more_double f8d0\nunpublished f236\nunsubscribe e0eb\nupcoming f07e\nupdate e923\nupdate_disabled e075\nupgrade f0fb\nupload f09b\nupload_file e9fc\nusb e1e0\nusb_off e4fa\nvaccines e138\nvape_free ebc6\nvaping_rooms ebcf\nverified ef76\nverified_user e8e8\nvertical_align_bottom e258\nvertical_align_center e259\nvertical_align_top e25a\nvertical_distribute e076\nvertical_shades ec0e\nvertical_shades_closed ec0d\nvertical_split e949\nvibration e62d\nvideo_call e070\nvideo_camera_back f07f\nvideo_camera_front f080\nvideo_collection e04a\nvideo_file eb87\nvideo_label e071\nvideo_library e04a\nvideo_settings ea75\nvideo_stable f081\nvideocam e04b\nvideocam_off e04c\nvideogame_asset e338\nvideogame_asset_off e500\nview_agenda e8e9\nview_array e8ea\nview_carousel e8eb\nview_column e8ec\nview_comfortable e42a\nview_comfy e42a\nview_comfy_alt eb73\nview_compact e42b\nview_compact_alt eb74\nview_cozy eb75\nview_day e8ed\nview_headline e8ee\nview_in_ar e9fe\nview_kanban eb7f\nview_list e8ef\nview_module e8f0\nview_quilt e8f1\nview_sidebar f114\nview_stream e8f2\nview_timeline eb85\nview_week e8f3\nvignette e435\nvilla e586\nvisibility e8f4\nvisibility_off e8f5\nvoice_chat e62e\nvoice_over_off e94a\nvoicemail e0d9\nvolcano ebda\nvolume_down e04d\nvolume_mute e04e\nvolume_off e04f\nvolume_up e050\nvolunteer_activism ea70\nvpn_key e0da\nvpn_key_off eb7a\nvpn_lock e62f\nvrpano f082\nwallet f8ff\nwallet_giftcard e8f6\nwallet_membership e8f7\nwallet_travel e8f8\nwallpaper e75f\nwarehouse ebb8\nwarning e002\nwarning_amber f083\nwash f1b1\nwatch e334\nwatch_later e924\nwatch_off eae3\nwater f084\nwater_damage f203\nwater_drop e798\nwaterfall_chart ea00\nwaves e176\nwaving_hand e766\nwb_auto e42c\nwb_cloudy e42d\nwb_incandescent e42e\nwb_iridescent e436\nwb_shade ea01\nwb_sunny e430\nwb_twilight e1c6\nwc e63d\nweb e051\nweb_asset e069\nweb_asset_off e4f7\nweb_stories e595\nwebhook eb92\nwechat ea81\nweekend e16b\nwest f1e6\nwhatsapp ea9c\nwhatshot e80e\nwheelchair_pickup f1ab\nwhere_to_vote e177\nwidgets e75e\nwidth_full f8f5\nwidth_normal f8f6\nwidth_wide f8f7\nwifi e63e\nwifi_1_bar e4ca\nwifi_2_bar e4d9\nwifi_calling ef77\nwifi_calling_3 f085\nwifi_channel eb6a\nwifi_find eb31\nwifi_lock e1e1\nwifi_off e648\nwifi_password eb6b\nwifi_protected_setup f0fc\nwifi_tethering e1e2\nwifi_tethering_error f086\nwifi_tethering_error_rounded f086\nwifi_tethering_off f087\nwind_power ec0c\nwindow f088\nwine_bar f1e8\nwoman e13e\nwoman_2 f8e7\nwoo_commerce ea6d\nwordpress ea9f\nwork e8f9\nwork_history ec09\nwork_off e942\nwork_outline e943\nworkspace_premium e7af\nworkspaces e1a0\nwrap_text e25b\nwrong_location ef78\nwysiwyg f1c3\nyard f089\nyoutube_searched_for e8fa\nzoom_in e8ff\nzoom_in_map eb2d\nzoom_out e900\nzoom_out_map e56b\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/material-icons/MaterialIconsTwoTone-Regular.codepoints",
    "content": "10k e951\n10mp e952\n11mp e953\n123 eb8d\n12mp e954\n13mp e955\n14mp e956\n15mp e957\n16mp e958\n17mp e959\n18_up_rating f8fd\n18mp e95a\n19mp e95b\n1k e95c\n1k_plus e95d\n1x_mobiledata efcd\n20mp e95e\n21mp e95f\n22mp e960\n23mp e961\n24mp e962\n2k e963\n2k_plus e964\n2mp e965\n30fps efce\n30fps_select efcf\n360 e577\n3d_rotation e84d\n3g_mobiledata efd0\n3k e966\n3k_plus e967\n3mp e968\n3p efd1\n4g_mobiledata efd2\n4g_plus_mobiledata efd3\n4k e072\n4k_plus e969\n4mp e96a\n5g ef38\n5k e96b\n5k_plus e96c\n5mp e96d\n60fps efd4\n60fps_select efd5\n6_ft_apart f21e\n6k e96e\n6k_plus e96f\n6mp e970\n7k e971\n7k_plus e972\n7mp e973\n8k e974\n8k_plus e975\n8mp e976\n9k e977\n9k_plus e978\n9mp e979\nabc eb94\nac_unit eb3b\naccess_alarm e190\naccess_alarms e191\naccess_time e192\naccess_time_filled efd6\naccessibility e84e\naccessibility_new e92c\naccessible e914\naccessible_forward e934\naccount_balance e84f\naccount_balance_wallet e850\naccount_box e851\naccount_circle e853\naccount_tree e97a\nad_units ef39\nadb e60e\nadd e145\nadd_a_photo e439\nadd_alarm e193\nadd_alert e003\nadd_box e146\nadd_business e729\nadd_card eb86\nadd_chart e97b\nadd_circle e147\nadd_circle_outline e148\nadd_comment e266\nadd_home f8eb\nadd_home_work f8ed\nadd_ic_call e97c\nadd_link e178\nadd_location e567\nadd_location_alt ef3a\nadd_moderator e97d\nadd_photo_alternate e43e\nadd_reaction e1d3\nadd_road ef3b\nadd_shopping_cart e854\nadd_task f23a\nadd_to_drive e65c\nadd_to_home_screen e1fe\nadd_to_photos e39d\nadd_to_queue e05c\naddchart ef3c\nadf_scanner eada\nadjust e39e\nadmin_panel_settings ef3d\nadobe ea96\nads_click e762\nagriculture ea79\nair efd8\nairline_seat_flat e630\nairline_seat_flat_angled e631\nairline_seat_individual_suite e632\nairline_seat_legroom_extra e633\nairline_seat_legroom_normal e634\nairline_seat_legroom_reduced e635\nairline_seat_recline_extra e636\nairline_seat_recline_normal e637\nairline_stops e7d0\nairlines e7ca\nairplane_ticket efd9\nairplanemode_active e195\nairplanemode_inactive e194\nairplanemode_off e194\nairplanemode_on e195\nairplay e055\nairport_shuttle eb3c\nalarm e855\nalarm_add e856\nalarm_off e857\nalarm_on e858\nalbum e019\nalign_horizontal_center e00f\nalign_horizontal_left e00d\nalign_horizontal_right e010\nalign_vertical_bottom e015\nalign_vertical_center e011\nalign_vertical_top e00c\nall_inbox e97f\nall_inclusive eb3d\nall_out e90b\nalt_route f184\nalternate_email e0e6\namp_stories ea13\nanalytics ef3e\nanchor f1cd\nandroid e859\nanimation e71c\nannouncement e85a\naod efda\napartment ea40\napi f1b7\napp_blocking ef3f\napp_registration ef40\napp_settings_alt ef41\napp_shortcut eae4\napple ea80\napproval e982\napps e5c3\napps_outage e7cc\narchitecture ea3b\narchive e149\narea_chart e770\narrow_back e5c4\narrow_back_ios e5e0\narrow_back_ios_new e2ea\narrow_circle_down f181\narrow_circle_left eaa7\narrow_circle_right eaaa\narrow_circle_up f182\narrow_downward e5db\narrow_drop_down e5c5\narrow_drop_down_circle e5c6\narrow_drop_up e5c7\narrow_forward e5c8\narrow_forward_ios e5e1\narrow_left e5de\narrow_outward f8ce\narrow_right e5df\narrow_right_alt e941\narrow_upward e5d8\nart_track e060\narticle ef42\naspect_ratio e85b\nassessment e85c\nassignment e85d\nassignment_ind e85e\nassignment_late e85f\nassignment_return e860\nassignment_returned e861\nassignment_turned_in e862\nassist_walker f8d5\nassistant e39f\nassistant_direction e988\nassistant_photo e3a0\nassured_workload eb6f\natm e573\nattach_email ea5e\nattach_file e226\nattach_money e227\nattachment e2bc\nattractions ea52\nattribution efdb\naudio_file eb82\naudiotrack e3a1\nauto_awesome e65f\nauto_awesome_mosaic e660\nauto_awesome_motion e661\nauto_delete ea4c\nauto_fix_high e663\nauto_fix_normal e664\nauto_fix_off e665\nauto_graph e4fb\nauto_mode ec20\nauto_stories e666\nautofps_select efdc\nautorenew e863\nav_timer e01b\nbaby_changing_station f19b\nback_hand e764\nbackpack f19c\nbackspace e14a\nbackup e864\nbackup_table ef43\nbadge ea67\nbakery_dining ea53\nbalance eaf6\nbalcony e58f\nballot e172\nbar_chart e26b\nbatch_prediction f0f5\nbathroom efdd\nbathtub ea41\nbattery_0_bar ebdc\nbattery_1_bar ebd9\nbattery_20 f09c\nbattery_2_bar ebe0\nbattery_30 f09d\nbattery_3_bar ebdd\nbattery_4_bar ebe2\nbattery_50 f09e\nbattery_5_bar ebd4\nbattery_60 f09f\nbattery_6_bar ebd2\nbattery_80 f0a0\nbattery_90 f0a1\nbattery_alert e19c\nbattery_charging_20 f0a2\nbattery_charging_30 f0a3\nbattery_charging_50 f0a4\nbattery_charging_60 f0a5\nbattery_charging_80 f0a6\nbattery_charging_90 f0a7\nbattery_charging_full e1a3\nbattery_full e1a4\nbattery_saver efde\nbattery_std e1a5\nbattery_unknown e1a6\nbeach_access eb3e\nbed efdf\nbedroom_baby efe0\nbedroom_child efe1\nbedroom_parent efe2\nbedtime ef44\nbedtime_off eb76\nbeenhere e52d\nbento f1f4\nbike_scooter ef45\nbiotech ea3a\nblender efe3\nblind f8d6\nblinds e286\nblinds_closed ec1f\nblock e14b\nbloodtype efe4\nbluetooth e1a7\nbluetooth_audio e60f\nbluetooth_connected e1a8\nbluetooth_disabled e1a9\nbluetooth_drive efe5\nbluetooth_searching e1aa\nblur_circular e3a2\nblur_linear e3a3\nblur_off e3a4\nblur_on e3a5\nbolt ea0b\nbook e865\nbook_online f217\nbookmark e866\nbookmark_add e598\nbookmark_added e599\nbookmark_border e867\nbookmark_outline e867\nbookmark_remove e59a\nbookmarks e98b\nborder_all e228\nborder_bottom e229\nborder_clear e22a\nborder_color e22b\nborder_horizontal e22c\nborder_inner e22d\nborder_left e22e\nborder_outer e22f\nborder_right e230\nborder_style e231\nborder_top e232\nborder_vertical e233\nboy eb67\nbranding_watermark e06b\nbreakfast_dining ea54\nbrightness_1 e3a6\nbrightness_2 e3a7\nbrightness_3 e3a8\nbrightness_4 e3a9\nbrightness_5 e3aa\nbrightness_6 e3ab\nbrightness_7 e3ac\nbrightness_auto e1ab\nbrightness_high e1ac\nbrightness_low e1ad\nbrightness_medium e1ae\nbroadcast_on_home f8f8\nbroadcast_on_personal f8f9\nbroken_image e3ad\nbrowse_gallery ebd1\nbrowser_not_supported ef47\nbrowser_updated e7cf\nbrunch_dining ea73\nbrush e3ae\nbubble_chart e6dd\nbug_report e868\nbuild e869\nbuild_circle ef48\nbungalow e591\nburst_mode e43c\nbus_alert e98f\nbusiness e0af\nbusiness_center eb3f\ncabin e589\ncable efe6\ncached e86a\ncake e7e9\ncalculate ea5f\ncalendar_month ebcc\ncalendar_today e935\ncalendar_view_day e936\ncalendar_view_month efe7\ncalendar_view_week efe8\ncall e0b0\ncall_end e0b1\ncall_made e0b2\ncall_merge e0b3\ncall_missed e0b4\ncall_missed_outgoing e0e4\ncall_received e0b5\ncall_split e0b6\ncall_to_action e06c\ncamera e3af\ncamera_alt e3b0\ncamera_enhance e8fc\ncamera_front e3b1\ncamera_indoor efe9\ncamera_outdoor efea\ncamera_rear e3b2\ncamera_roll e3b3\ncameraswitch efeb\ncampaign ef49\ncancel e5c9\ncancel_presentation e0e9\ncancel_schedule_send ea39\ncandlestick_chart ead4\ncar_crash ebf2\ncar_rental ea55\ncar_repair ea56\ncard_giftcard e8f6\ncard_membership e8f7\ncard_travel e8f8\ncarpenter f1f8\ncases e992\ncasino eb40\ncast e307\ncast_connected e308\ncast_for_education efec\ncastle eab1\ncatching_pokemon e508\ncategory e574\ncelebration ea65\ncell_tower ebba\ncell_wifi e0ec\ncenter_focus_strong e3b4\ncenter_focus_weak e3b5\nchair efed\nchair_alt efee\nchalet e585\nchange_circle e2e7\nchange_history e86b\ncharging_station f19d\nchat e0b7\nchat_bubble e0ca\nchat_bubble_outline e0cb\ncheck e5ca\ncheck_box e834\ncheck_box_outline_blank e835\ncheck_circle e86c\ncheck_circle_outline e92d\nchecklist e6b1\nchecklist_rtl e6b3\ncheckroom f19e\nchevron_left e5cb\nchevron_right e5cc\nchild_care eb41\nchild_friendly eb42\nchrome_reader_mode e86d\nchurch eaae\ncircle ef4a\ncircle_notifications e994\nclass e86e\nclean_hands f21f\ncleaning_services f0ff\nclear e14c\nclear_all e0b8\nclose e5cd\nclose_fullscreen f1cf\nclosed_caption e01c\nclosed_caption_disabled f1dc\nclosed_caption_off e996\ncloud e2bd\ncloud_circle e2be\ncloud_done e2bf\ncloud_download e2c0\ncloud_off e2c1\ncloud_queue e2c2\ncloud_sync eb5a\ncloud_upload e2c3\nco2 e7b0\nco_present eaf0\ncode e86f\ncode_off e4f3\ncoffee efef\ncoffee_maker eff0\ncollections e3b6\ncollections_bookmark e431\ncolor_lens e3b7\ncolorize e3b8\ncomment e0b9\ncomment_bank ea4e\ncomments_disabled e7a2\ncommit eaf5\ncommute e940\ncompare e3b9\ncompare_arrows e915\ncompass_calibration e57c\ncompost e761\ncompress e94d\ncomputer e30a\nconfirmation_num e638\nconfirmation_number e638\nconnect_without_contact f223\nconnected_tv e998\nconnecting_airports e7c9\nconstruction ea3c\ncontact_emergency f8d1\ncontact_mail e0d0\ncontact_page f22e\ncontact_phone e0cf\ncontact_support e94c\ncontactless ea71\ncontacts e0ba\ncontent_copy f08a\ncontent_cut f08b\ncontent_paste f098\ncontent_paste_go ea8e\ncontent_paste_off e4f8\ncontent_paste_search ea9b\ncontrast eb37\ncontrol_camera e074\ncontrol_point e3ba\ncontrol_point_duplicate e3bb\ncookie eaac\ncopy f08a\ncopy_all e2ec\ncopyright e90c\ncoronavirus f221\ncorporate_fare f1d0\ncottage e587\ncountertops f1f7\ncreate e150\ncreate_new_folder e2cc\ncredit_card e870\ncredit_card_off e4f4\ncredit_score eff1\ncrib e588\ncrisis_alert ebe9\ncrop e3be\ncrop_16_9 e3bc\ncrop_3_2 e3bd\ncrop_5_4 e3bf\ncrop_7_5 e3c0\ncrop_din e3c1\ncrop_free e3c2\ncrop_landscape e3c3\ncrop_original e3c4\ncrop_portrait e3c5\ncrop_rotate e437\ncrop_square e3c6\ncruelty_free e799\ncss eb93\ncurrency_bitcoin ebc5\ncurrency_exchange eb70\ncurrency_franc eafa\ncurrency_lira eaef\ncurrency_pound eaf1\ncurrency_ruble eaec\ncurrency_rupee eaf7\ncurrency_yen eafb\ncurrency_yuan eaf9\ncurtains ec1e\ncurtains_closed ec1d\ncut f08b\ncyclone ebd5\ndangerous e99a\ndark_mode e51c\ndashboard e871\ndashboard_customize e99b\ndata_array ead1\ndata_exploration e76f\ndata_object ead3\ndata_saver_off eff2\ndata_saver_on eff3\ndata_thresholding eb9f\ndata_usage e1af\ndataset f8ee\ndataset_linked f8ef\ndate_range e916\ndeblur eb77\ndeck ea42\ndehaze e3c7\ndelete e872\ndelete_forever e92b\ndelete_outline e92e\ndelete_sweep e16c\ndelivery_dining ea72\ndensity_large eba9\ndensity_medium eb9e\ndensity_small eba8\ndeparture_board e576\ndescription e873\ndeselect ebb6\ndesign_services f10a\ndesk f8f4\ndesktop_access_disabled e99d\ndesktop_mac e30b\ndesktop_windows e30c\ndetails e3c8\ndeveloper_board e30d\ndeveloper_board_off e4ff\ndeveloper_mode e1b0\ndevice_hub e335\ndevice_thermostat e1ff\ndevice_unknown e339\ndevices e1b1\ndevices_fold ebde\ndevices_other e337\ndialer_sip e0bb\ndialpad e0bc\ndiamond ead5\ndifference eb7d\ndining eff4\ndinner_dining ea57\ndirections e52e\ndirections_bike e52f\ndirections_boat e532\ndirections_boat_filled eff5\ndirections_bus e530\ndirections_bus_filled eff6\ndirections_car e531\ndirections_car_filled eff7\ndirections_ferry e532\ndirections_off f10f\ndirections_railway e534\ndirections_railway_filled eff8\ndirections_run e566\ndirections_subway e533\ndirections_subway_filled eff9\ndirections_train e534\ndirections_transit e535\ndirections_transit_filled effa\ndirections_walk e536\ndirty_lens ef4b\ndisabled_by_default f230\ndisabled_visible e76e\ndisc_full e610\ndiscord ea6c\ndiscount ebc9\ndisplay_settings eb97\ndiversity_1 f8d7\ndiversity_2 f8d8\ndiversity_3 f8d9\ndnd_forwardslash e611\ndns e875\ndo_disturb f08c\ndo_disturb_alt f08d\ndo_disturb_off f08e\ndo_disturb_on f08f\ndo_not_disturb e612\ndo_not_disturb_alt e611\ndo_not_disturb_off e643\ndo_not_disturb_on e644\ndo_not_disturb_on_total_silence effb\ndo_not_step f19f\ndo_not_touch f1b0\ndock e30e\ndocument_scanner e5fa\ndomain e7ee\ndomain_add eb62\ndomain_disabled e0ef\ndomain_verification ef4c\ndone e876\ndone_all e877\ndone_outline e92f\ndonut_large e917\ndonut_small e918\ndoor_back effc\ndoor_front effd\ndoor_sliding effe\ndoorbell efff\ndouble_arrow ea50\ndownhill_skiing e509\ndownload f090\ndownload_done f091\ndownload_for_offline f000\ndownloading f001\ndrafts e151\ndrag_handle e25d\ndrag_indicator e945\ndraw e746\ndrive_eta e613\ndrive_file_move e675\ndrive_file_move_rtl e76d\ndrive_file_rename_outline e9a2\ndrive_folder_upload e9a3\ndry f1b3\ndry_cleaning ea58\nduo e9a5\ndvr e1b2\ndynamic_feed ea14\ndynamic_form f1bf\ne_mobiledata f002\nearbuds f003\nearbuds_battery f004\neast f1df\neco ea35\nedgesensor_high f005\nedgesensor_low f006\nedit e3c9\nedit_attributes e578\nedit_calendar e742\nedit_location e568\nedit_location_alt e1c5\nedit_note e745\nedit_notifications e525\nedit_off e950\nedit_road ef4d\negg eacc\negg_alt eac8\neject e8fb\nelderly f21a\nelderly_woman eb69\nelectric_bike eb1b\nelectric_bolt ec1c\nelectric_car eb1c\nelectric_meter ec1b\nelectric_moped eb1d\nelectric_rickshaw eb1e\nelectric_scooter eb1f\nelectrical_services f102\nelevator f1a0\nemail e0be\nemergency e1eb\nemergency_recording ebf4\nemergency_share ebf6\nemoji_emotions ea22\nemoji_events ea23\nemoji_flags ea1a\nemoji_food_beverage ea1b\nemoji_nature ea1c\nemoji_objects ea24\nemoji_people ea1d\nemoji_symbols ea1e\nemoji_transportation ea1f\nenergy_savings_leaf ec1a\nengineering ea3d\nenhance_photo_translate e8fc\nenhanced_encryption e63f\nequalizer e01d\nerror e000\nerror_outline e001\nescalator f1a1\nescalator_warning f1ac\neuro ea15\neuro_symbol e926\nev_station e56d\nevent e878\nevent_available e614\nevent_busy e615\nevent_note e616\nevent_repeat eb7b\nevent_seat e903\nexit_to_app e879\nexpand e94f\nexpand_circle_down e7cd\nexpand_less e5ce\nexpand_more e5cf\nexplicit e01e\nexplore e87a\nexplore_off e9a8\nexposure e3ca\nexposure_minus_1 e3cb\nexposure_minus_2 e3cc\nexposure_neg_1 e3cb\nexposure_neg_2 e3cc\nexposure_plus_1 e3cd\nexposure_plus_2 e3ce\nexposure_zero e3cf\nextension e87b\nextension_off e4f5\nface e87c\nface_2 f8da\nface_3 f8db\nface_4 f8dc\nface_5 f8dd\nface_6 f8de\nface_retouching_natural ef4e\nface_retouching_off f007\nface_unlock f008\nfacebook f234\nfact_check f0c5\nfactory ebbc\nfamily_restroom f1a2\nfast_forward e01f\nfast_rewind e020\nfastfood e57a\nfavorite e87d\nfavorite_border e87e\nfavorite_outline e87e\nfax ead8\nfeatured_play_list e06d\nfeatured_video e06e\nfeed f009\nfeedback e87f\nfemale e590\nfence f1f6\nfestival ea68\nfiber_dvr e05d\nfiber_manual_record e061\nfiber_new e05e\nfiber_pin e06a\nfiber_smart_record e062\nfile_copy e173\nfile_download e2c4\nfile_download_done e9aa\nfile_download_off e4fe\nfile_open eaf3\nfile_present ea0e\nfile_upload e2c6\nfilter e3d3\nfilter_1 e3d0\nfilter_2 e3d1\nfilter_3 e3d2\nfilter_4 e3d4\nfilter_5 e3d5\nfilter_6 e3d6\nfilter_7 e3d7\nfilter_8 e3d8\nfilter_9 e3d9\nfilter_9_plus e3da\nfilter_alt ef4f\nfilter_alt_off eb32\nfilter_b_and_w e3db\nfilter_center_focus e3dc\nfilter_drama e3dd\nfilter_frames e3de\nfilter_hdr e3df\nfilter_list e152\nfilter_list_off eb57\nfilter_none e3e0\nfilter_tilt_shift e3e2\nfilter_vintage e3e3\nfind_in_page e880\nfind_replace e881\nfingerprint e90d\nfire_extinguisher f1d8\nfire_hydrant_alt f8f1\nfire_truck f8f2\nfireplace ea43\nfirst_page e5dc\nfit_screen ea10\nfitbit e82b\nfitness_center eb43\nflag e153\nflag_circle eaf8\nflaky ef50\nflare e3e4\nflash_auto e3e5\nflash_off e3e6\nflash_on e3e7\nflashlight_off f00a\nflashlight_on f00b\nflatware f00c\nflight e539\nflight_class e7cb\nflight_land e904\nflight_takeoff e905\nflip e3e8\nflip_camera_android ea37\nflip_camera_ios ea38\nflip_to_back e882\nflip_to_front e883\nflood ebe6\nflourescent f00d\nflutter_dash e00b\nfmd_bad f00e\nfmd_good f00f\nfolder e2c7\nfolder_copy ebbd\nfolder_delete eb34\nfolder_off eb83\nfolder_open e2c8\nfolder_shared e2c9\nfolder_special e617\nfolder_zip eb2c\nfollow_the_signs f222\nfont_download e167\nfont_download_off e4f9\nfood_bank f1f2\nforest ea99\nfork_left eba0\nfork_right ebac\nformat_align_center e234\nformat_align_justify e235\nformat_align_left e236\nformat_align_right e237\nformat_bold e238\nformat_clear e239\nformat_color_fill e23a\nformat_color_reset e23b\nformat_color_text e23c\nformat_indent_decrease e23d\nformat_indent_increase e23e\nformat_italic e23f\nformat_line_spacing e240\nformat_list_bulleted e241\nformat_list_numbered e242\nformat_list_numbered_rtl e267\nformat_overline eb65\nformat_paint e243\nformat_quote e244\nformat_shapes e25e\nformat_size e245\nformat_strikethrough e246\nformat_textdirection_l_to_r e247\nformat_textdirection_r_to_l e248\nformat_underline e765\nformat_underlined e765\nfort eaad\nforum e0bf\nforward e154\nforward_10 e056\nforward_30 e057\nforward_5 e058\nforward_to_inbox f187\nfoundation f200\nfree_breakfast eb44\nfree_cancellation e748\nfront_hand e769\nfullscreen e5d0\nfullscreen_exit e5d1\nfunctions e24a\ng_mobiledata f010\ng_translate e927\ngamepad e30f\ngames e021\ngarage f011\ngas_meter ec19\ngavel e90e\ngenerating_tokens e749\ngesture e155\nget_app e884\ngif e908\ngif_box e7a3\ngirl eb68\ngite e58b\ngolf_course eb45\ngpp_bad f012\ngpp_good f013\ngpp_maybe f014\ngps_fixed e1b3\ngps_not_fixed e1b4\ngps_off e1b5\ngrade e885\ngradient e3e9\ngrading ea4f\ngrain e3ea\ngraphic_eq e1b8\ngrass f205\ngrid_3x3 f015\ngrid_4x4 f016\ngrid_goldenratio f017\ngrid_off e3eb\ngrid_on e3ec\ngrid_view e9b0\ngroup e7ef\ngroup_add e7f0\ngroup_off e747\ngroup_remove e7ad\ngroup_work e886\ngroups f233\ngroups_2 f8df\ngroups_3 f8e0\nh_mobiledata f018\nh_plus_mobiledata f019\nhail e9b1\nhandshake ebcb\nhandyman f10b\nhardware ea59\nhd e052\nhdr_auto f01a\nhdr_auto_select f01b\nhdr_enhanced_select ef51\nhdr_off e3ed\nhdr_off_select f01c\nhdr_on e3ee\nhdr_on_select f01d\nhdr_plus f01e\nhdr_strong e3f1\nhdr_weak e3f2\nheadphones f01f\nheadphones_battery f020\nheadset e310\nheadset_mic e311\nheadset_off e33a\nhealing e3f3\nhealth_and_safety e1d5\nhearing e023\nhearing_disabled f104\nheart_broken eac2\nheat_pump ec18\nheight ea16\nhelp e887\nhelp_center f1c0\nhelp_outline e8fd\nhevc f021\nhexagon eb39\nhide_image f022\nhide_source f023\nhigh_quality e024\nhighlight e25f\nhighlight_alt ef52\nhighlight_off e888\nhighlight_remove e888\nhiking e50a\nhistory e889\nhistory_edu ea3e\nhistory_toggle_off f17d\nhive eaa6\nhls eb8a\nhls_off eb8c\nholiday_village e58a\nhome e88a\nhome_max f024\nhome_mini f025\nhome_repair_service f100\nhome_work ea09\nhorizontal_distribute e014\nhorizontal_rule f108\nhorizontal_split e947\nhot_tub eb46\nhotel e53a\nhotel_class e743\nhourglass_bottom ea5c\nhourglass_disabled ef53\nhourglass_empty e88b\nhourglass_full e88c\nhourglass_top ea5b\nhouse ea44\nhouse_siding f202\nhouseboat e584\nhow_to_reg e174\nhow_to_vote e175\nhtml eb7e\nhttp e902\nhttps e88d\nhub e9f4\nhvac f10e\nice_skating e50b\nicecream ea69\nimage e3f4\nimage_aspect_ratio e3f5\nimage_not_supported f116\nimage_search e43f\nimagesearch_roller e9b4\nimport_contacts e0e0\nimport_export e0c3\nimportant_devices e912\ninbox e156\nincomplete_circle e79b\nindeterminate_check_box e909\ninfo e88e\ninfo_outline e88f\ninput e890\ninsert_chart e24b\ninsert_chart_outlined e26a\ninsert_comment e24c\ninsert_drive_file e24d\ninsert_emoticon e24e\ninsert_invitation e24f\ninsert_link e250\ninsert_page_break eaca\ninsert_photo e251\ninsights f092\ninstall_desktop eb71\ninstall_mobile eb72\nintegration_instructions ef54\ninterests e7c8\ninterpreter_mode e83b\ninventory e179\ninventory_2 e1a1\ninvert_colors e891\ninvert_colors_off e0c4\ninvert_colors_on e891\nios_share e6b8\niron e583\niso e3f6\njavascript eb7c\njoin_full eaeb\njoin_inner eaf4\njoin_left eaf2\njoin_right eaea\nkayaking e50c\nkebab_dining e842\nkey e73c\nkey_off eb84\nkeyboard e312\nkeyboard_alt f028\nkeyboard_arrow_down e313\nkeyboard_arrow_left e314\nkeyboard_arrow_right e315\nkeyboard_arrow_up e316\nkeyboard_backspace e317\nkeyboard_capslock e318\nkeyboard_command_key eae7\nkeyboard_control eae1\nkeyboard_control_key eae6\nkeyboard_double_arrow_down ead0\nkeyboard_double_arrow_left eac3\nkeyboard_double_arrow_right eac9\nkeyboard_double_arrow_up eacf\nkeyboard_hide e31a\nkeyboard_option_key eae8\nkeyboard_return e31b\nkeyboard_tab e31c\nkeyboard_voice e31d\nking_bed ea45\nkitchen eb47\nkitesurfing e50d\nlabel e892\nlabel_important e937\nlabel_important_outline e948\nlabel_off e9b6\nlabel_outline e893\nlan eb2f\nlandscape e3f7\nlandslide ebd7\nlanguage e894\nlaptop e31e\nlaptop_chromebook e31f\nlaptop_mac e320\nlaptop_windows e321\nlast_page e5dd\nlaunch e895\nlayers e53b\nlayers_clear e53c\nleaderboard f20c\nleak_add e3f8\nleak_remove e3f9\nleave_bags_at_home f23b\nlegend_toggle f11b\nlens e3fa\nlens_blur f029\nlibrary_add e02e\nlibrary_add_check e9b7\nlibrary_books e02f\nlibrary_music e030\nlight f02a\nlight_mode e518\nlightbulb e0f0\nlightbulb_circle ebfe\nlightbulb_outline e90f\nline_axis ea9a\nline_style e919\nline_weight e91a\nlinear_scale e260\nlink e157\nlink_off e16f\nlinked_camera e438\nliquor ea60\nlist e896\nlist_alt e0ee\nlive_help e0c6\nlive_tv e639\nliving f02b\nlocal_activity e53f\nlocal_airport e53d\nlocal_atm e53e\nlocal_attraction e53f\nlocal_bar e540\nlocal_cafe e541\nlocal_car_wash e542\nlocal_convenience_store e543\nlocal_dining e556\nlocal_drink e544\nlocal_fire_department ef55\nlocal_florist e545\nlocal_gas_station e546\nlocal_grocery_store e547\nlocal_hospital e548\nlocal_hotel e549\nlocal_laundry_service e54a\nlocal_library e54b\nlocal_mall e54c\nlocal_movies e54d\nlocal_offer e54e\nlocal_parking e54f\nlocal_pharmacy e550\nlocal_phone e551\nlocal_pizza e552\nlocal_play e553\nlocal_police ef56\nlocal_post_office e554\nlocal_print_shop e555\nlocal_printshop e555\nlocal_restaurant e556\nlocal_see e557\nlocal_shipping e558\nlocal_taxi e559\nlocation_city e7f1\nlocation_disabled e1b6\nlocation_history e55a\nlocation_off e0c7\nlocation_on e0c8\nlocation_searching e1b7\nlock e897\nlock_clock ef57\nlock_open e898\nlock_outline e899\nlock_person f8f3\nlock_reset eade\nlogin ea77\nlogo_dev ead6\nlogout e9ba\nlooks e3fc\nlooks_3 e3fb\nlooks_4 e3fd\nlooks_5 e3fe\nlooks_6 e3ff\nlooks_one e400\nlooks_two e401\nloop e028\nloupe e402\nlow_priority e16d\nloyalty e89a\nlte_mobiledata f02c\nlte_plus_mobiledata f02d\nluggage f235\nlunch_dining ea61\nlyrics ec0b\nmacro_off f8d2\nmail e158\nmail_lock ec0a\nmail_outline e0e1\nmale e58e\nman e4eb\nman_2 f8e1\nman_3 f8e2\nman_4 f8e3\nmanage_accounts f02e\nmanage_history ebe7\nmanage_search f02f\nmap e55b\nmaps_home_work f030\nmaps_ugc ef58\nmargin e9bb\nmark_as_unread e9bc\nmark_chat_read f18b\nmark_chat_unread f189\nmark_email_read f18c\nmark_email_unread f18a\nmark_unread_chat_alt eb9d\nmarkunread e159\nmarkunread_mailbox e89b\nmasks f218\nmaximize e930\nmedia_bluetooth_off f031\nmedia_bluetooth_on f032\nmediation efa7\nmedical_information ebed\nmedical_services f109\nmedication f033\nmedication_liquid ea87\nmeeting_room eb4f\nmemory e322\nmenu e5d2\nmenu_book ea19\nmenu_open e9bd\nmerge eb98\nmerge_type e252\nmessage e0c9\nmessenger e0ca\nmessenger_outline e0cb\nmic e029\nmic_external_off ef59\nmic_external_on ef5a\nmic_none e02a\nmic_off e02b\nmicrowave f204\nmilitary_tech ea3f\nminimize e931\nminor_crash ebf1\nmiscellaneous_services f10c\nmissed_video_call e073\nmms e618\nmobile_friendly e200\nmobile_off e201\nmobile_screen_share e0e7\nmobiledata_off f034\nmode f097\nmode_comment e253\nmode_edit e254\nmode_edit_outline f035\nmode_fan_off ec17\nmode_night f036\nmode_of_travel e7ce\nmode_standby f037\nmodel_training f0cf\nmonetization_on e263\nmoney e57d\nmoney_off e25c\nmoney_off_csred f038\nmonitor ef5b\nmonitor_heart eaa2\nmonitor_weight f039\nmonochrome_photos e403\nmood e7f2\nmood_bad e7f3\nmoped eb28\nmore e619\nmore_horiz eae1\nmore_time ea5d\nmore_vert e5d4\nmosque eab2\nmotion_photos_auto f03a\nmotion_photos_off e9c0\nmotion_photos_on e9c1\nmotion_photos_pause f227\nmotion_photos_paused e9c2\nmotorcycle e91b\nmouse e323\nmove_down eb61\nmove_to_inbox e168\nmove_up eb64\nmovie e02c\nmovie_creation e404\nmovie_filter e43a\nmoving e501\nmp e9c3\nmultiline_chart e6df\nmultiple_stop f1b9\nmultitrack_audio e1b8\nmuseum ea36\nmusic_note e405\nmusic_off e440\nmusic_video e063\nmy_library_add e02e\nmy_library_books e02f\nmy_library_music e030\nmy_location e55c\nnat ef5c\nnature e406\nnature_people e407\nnavigate_before e408\nnavigate_next e409\nnavigation e55d\nnear_me e569\nnear_me_disabled f1ef\nnearby_error f03b\nnearby_off f03c\nnest_cam_wired_stand ec16\nnetwork_cell e1b9\nnetwork_check e640\nnetwork_locked e61a\nnetwork_ping ebca\nnetwork_wifi e1ba\nnetwork_wifi_1_bar ebe4\nnetwork_wifi_2_bar ebd6\nnetwork_wifi_3_bar ebe1\nnew_label e609\nnew_releases e031\nnewspaper eb81\nnext_plan ef5d\nnext_week e16a\nnfc e1bb\nnight_shelter f1f1\nnightlife ea62\nnightlight f03d\nnightlight_round ef5e\nnights_stay ea46\nno_accounts f03e\nno_adult_content f8fe\nno_backpack f237\nno_cell f1a4\nno_crash ebf0\nno_drinks f1a5\nno_encryption e641\nno_encryption_gmailerrorred f03f\nno_flash f1a6\nno_food f1a7\nno_luggage f23b\nno_meals f1d6\nno_meeting_room eb4e\nno_photography f1a8\nno_sim e0cc\nno_stroller f1af\nno_transfer f1d5\nnoise_aware ebec\nnoise_control_off ebf3\nnordic_walking e50e\nnorth f1e0\nnorth_east f1e1\nnorth_west f1e2\nnot_accessible f0fe\nnot_interested e033\nnot_listed_location e575\nnot_started f0d1\nnote e06f\nnote_add e89c\nnote_alt f040\nnotes e26c\nnotification_add e399\nnotification_important e004\nnotifications e7f4\nnotifications_active e7f7\nnotifications_none e7f5\nnotifications_off e7f6\nnotifications_on e7f7\nnotifications_paused e7f8\nnow_wallpaper e75f\nnow_widgets e75e\nnumbers eac7\noffline_bolt e932\noffline_pin e90a\noffline_share e9c5\noil_barrel ec15\non_device_training ebfd\nondemand_video e63a\nonline_prediction f0eb\nopacity e91c\nopen_in_browser e89d\nopen_in_full f1ce\nopen_in_new e89e\nopen_in_new_off e4f6\nopen_with e89f\nother_houses e58c\noutbond f228\noutbound e1ca\noutbox ef5f\noutdoor_grill ea47\noutlet f1d4\noutlined_flag e16e\noutput ebbe\npadding e9c8\npages e7f9\npageview e8a0\npaid f041\npalette e40a\npan_tool e925\npan_tool_alt ebb9\npanorama e40b\npanorama_fish_eye e40c\npanorama_fisheye e40c\npanorama_horizontal e40d\npanorama_horizontal_select ef60\npanorama_photosphere e9c9\npanorama_photosphere_select e9ca\npanorama_vertical e40e\npanorama_vertical_select ef61\npanorama_wide_angle e40f\npanorama_wide_angle_select ef62\nparagliding e50f\npark ea63\nparty_mode e7fa\npassword f042\npaste f098\npattern f043\npause e034\npause_circle e1a2\npause_circle_filled e035\npause_circle_outline e036\npause_presentation e0ea\npayment e8a1\npayments ef63\npaypal ea8d\npedal_bike eb29\npending ef64\npending_actions f1bb\npentagon eb50\npeople e7fb\npeople_alt ea21\npeople_outline e7fc\npercent eb58\nperm_camera_mic e8a2\nperm_contact_cal e8a3\nperm_contact_calendar e8a3\nperm_data_setting e8a4\nperm_device_info e8a5\nperm_device_information e8a5\nperm_identity e8a6\nperm_media e8a7\nperm_phone_msg e8a8\nperm_scan_wifi e8a9\nperson e7fd\nperson_2 f8e4\nperson_3 f8e5\nperson_4 f8e6\nperson_add e7fe\nperson_add_alt ea4d\nperson_add_alt_1 ef65\nperson_add_disabled e9cb\nperson_off e510\nperson_outline e7ff\nperson_pin e55a\nperson_pin_circle e56a\nperson_remove ef66\nperson_remove_alt_1 ef67\nperson_search f106\npersonal_injury e6da\npersonal_video e63b\npest_control f0fa\npest_control_rodent f0fd\npets e91d\nphishing ead7\nphone e0cd\nphone_android e324\nphone_bluetooth_speaker e61b\nphone_callback e649\nphone_disabled e9cc\nphone_enabled e9cd\nphone_forwarded e61c\nphone_in_talk e61d\nphone_iphone e325\nphone_locked e61e\nphone_missed e61f\nphone_paused e620\nphonelink e326\nphonelink_erase e0db\nphonelink_lock e0dc\nphonelink_off e327\nphonelink_ring e0dd\nphonelink_setup e0de\nphoto e410\nphoto_album e411\nphoto_camera e412\nphoto_camera_back ef68\nphoto_camera_front ef69\nphoto_filter e43b\nphoto_library e413\nphoto_size_select_actual e432\nphoto_size_select_large e433\nphoto_size_select_small e434\nphp eb8f\npiano e521\npiano_off e520\npicture_as_pdf e415\npicture_in_picture e8aa\npicture_in_picture_alt e911\npie_chart e6c4\npie_chart_outline f044\npin f045\npin_drop e55e\npin_end e767\npin_invoke e763\npinch eb38\npivot_table_chart e9ce\npix eaa3\nplace e55f\nplagiarism ea5a\nplay_arrow e037\nplay_circle e1c4\nplay_circle_fill e038\nplay_circle_filled e038\nplay_circle_outline e039\nplay_disabled ef6a\nplay_for_work e906\nplay_lesson f047\nplaylist_add e03b\nplaylist_add_check e065\nplaylist_add_check_circle e7e6\nplaylist_add_circle e7e5\nplaylist_play e05f\nplaylist_remove eb80\nplumbing f107\nplus_one e800\npodcasts f048\npoint_of_sale f17e\npolicy ea17\npoll e801\npolyline ebbb\npolymer e8ab\npool eb48\nportable_wifi_off e0ce\nportrait e416\npost_add ea20\npower e63c\npower_input e336\npower_off e646\npower_settings_new e8ac\nprecision_manufacturing f049\npregnant_woman e91e\npresent_to_all e0df\npreview f1c5\nprice_change f04a\nprice_check f04b\nprint e8ad\nprint_disabled e9cf\npriority_high e645\nprivacy_tip f0dc\nprivate_connectivity e744\nproduction_quantity_limits e1d1\npropane ec14\npropane_tank ec13\npsychology ea4a\npsychology_alt f8ea\npublic e80b\npublic_off f1ca\npublish e255\npublished_with_changes f232\npunch_clock eaa8\npush_pin f10d\nqr_code ef6b\nqr_code_2 e00a\nqr_code_scanner f206\nquery_builder e8ae\nquery_stats e4fc\nquestion_answer e8af\nquestion_mark eb8b\nqueue e03c\nqueue_music e03d\nqueue_play_next e066\nquick_contacts_dialer e0cf\nquick_contacts_mail e0d0\nquickreply ef6c\nquiz f04c\nquora ea98\nr_mobiledata f04d\nradar f04e\nradio e03e\nradio_button_checked e837\nradio_button_off e836\nradio_button_on e837\nradio_button_unchecked e836\nrailway_alert e9d1\nramen_dining ea64\nramp_left eb9c\nramp_right eb96\nrate_review e560\nraw_off f04f\nraw_on f050\nread_more ef6d\nreal_estate_agent e73a\nreceipt e8b0\nreceipt_long ef6e\nrecent_actors e03f\nrecommend e9d2\nrecord_voice_over e91f\nrectangle eb54\nrecycling e760\nreddit eaa0\nredeem e8b1\nredo e15a\nreduce_capacity f21c\nrefresh e5d5\nremember_me f051\nremove e15b\nremove_circle e15c\nremove_circle_outline e15d\nremove_done e9d3\nremove_from_queue e067\nremove_moderator e9d4\nremove_red_eye e417\nremove_road ebfc\nremove_shopping_cart e928\nreorder e8fe\nrepartition f8e8\nrepeat e040\nrepeat_on e9d6\nrepeat_one e041\nrepeat_one_on e9d7\nreplay e042\nreplay_10 e059\nreplay_30 e05a\nreplay_5 e05b\nreplay_circle_filled e9d8\nreply e15e\nreply_all e15f\nreport e160\nreport_gmailerrorred f052\nreport_off e170\nreport_problem e8b2\nrequest_page f22c\nrequest_quote f1b6\nreset_tv e9d9\nrestart_alt f053\nrestaurant e56c\nrestaurant_menu e561\nrestore e8b3\nrestore_from_trash e938\nrestore_page e929\nreviews f054\nrice_bowl f1f5\nring_volume e0d1\nrocket eba5\nrocket_launch eb9b\nroller_shades ec12\nroller_shades_closed ec11\nroller_skating ebcd\nroofing f201\nroom e8b4\nroom_preferences f1b8\nroom_service eb49\nrotate_90_degrees_ccw e418\nrotate_90_degrees_cw eaab\nrotate_left e419\nrotate_right e41a\nroundabout_left eb99\nroundabout_right eba3\nrounded_corner e920\nroute eacd\nrouter e328\nrowing e921\nrss_feed e0e5\nrsvp f055\nrtt e9ad\nrule f1c2\nrule_folder f1c9\nrun_circle ef6f\nrunning_with_errors e51d\nrv_hookup e642\nsafety_check ebef\nsafety_divider e1cc\nsailing e502\nsanitizer f21d\nsatellite e562\nsatellite_alt eb3a\nsave e161\nsave_alt e171\nsave_as eb60\nsaved_search ea11\nsavings e2eb\nscale eb5f\nscanner e329\nscatter_plot e268\nschedule e8b5\nschedule_send ea0a\nschema e4fd\nschool e80c\nscience ea4b\nscore e269\nscoreboard ebd0\nscreen_lock_landscape e1be\nscreen_lock_portrait e1bf\nscreen_lock_rotation e1c0\nscreen_rotation e1c1\nscreen_rotation_alt ebee\nscreen_search_desktop ef70\nscreen_share e0e2\nscreenshot f056\nscreenshot_monitor ec08\nscuba_diving ebce\nsd e9dd\nsd_card e623\nsd_card_alert f057\nsd_storage e1c2\nsearch e8b6\nsearch_off ea76\nsecurity e32a\nsecurity_update f058\nsecurity_update_good f059\nsecurity_update_warning f05a\nsegment e94b\nselect_all e162\nself_improvement ea78\nsell f05b\nsend e163\nsend_and_archive ea0c\nsend_time_extension eadb\nsend_to_mobile f05c\nsensor_door f1b5\nsensor_occupied ec10\nsensor_window f1b4\nsensors e51e\nsensors_off e51f\nsentiment_dissatisfied e811\nsentiment_neutral e812\nsentiment_satisfied e813\nsentiment_satisfied_alt e0ed\nsentiment_very_dissatisfied e814\nsentiment_very_satisfied e815\nset_meal f1ea\nsettings e8b8\nsettings_accessibility f05d\nsettings_applications e8b9\nsettings_backup_restore e8ba\nsettings_bluetooth e8bb\nsettings_brightness e8bd\nsettings_cell e8bc\nsettings_display e8bd\nsettings_ethernet e8be\nsettings_input_antenna e8bf\nsettings_input_component e8c0\nsettings_input_composite e8c1\nsettings_input_hdmi e8c2\nsettings_input_svideo e8c3\nsettings_overscan e8c4\nsettings_phone e8c5\nsettings_power e8c6\nsettings_remote e8c7\nsettings_suggest f05e\nsettings_system_daydream e1c3\nsettings_voice e8c8\nsevere_cold ebd3\nshape_line f8d3\nshare e80d\nshare_arrival_time e524\nshare_location f05f\nshield e9e0\nshield_moon eaa9\nshop e8c9\nshop_2 e19e\nshop_two e8ca\nshopify ea9d\nshopping_bag f1cc\nshopping_basket e8cb\nshopping_cart e8cc\nshopping_cart_checkout eb88\nshort_text e261\nshortcut f060\nshow_chart e6e1\nshower f061\nshuffle e043\nshuffle_on e9e1\nshutter_speed e43d\nsick f220\nsign_language ebe5\nsignal_cellular_0_bar f0a8\nsignal_cellular_1_bar f0a9\nsignal_cellular_2_bar f0aa\nsignal_cellular_3_bar f0ab\nsignal_cellular_4_bar e1c8\nsignal_cellular_alt e202\nsignal_cellular_alt_1_bar ebdf\nsignal_cellular_alt_2_bar ebe3\nsignal_cellular_connected_no_internet_0_bar f0ac\nsignal_cellular_connected_no_internet_1_bar f0ad\nsignal_cellular_connected_no_internet_2_bar f0ae\nsignal_cellular_connected_no_internet_3_bar f0af\nsignal_cellular_connected_no_internet_4_bar e1cd\nsignal_cellular_no_sim e1ce\nsignal_cellular_nodata f062\nsignal_cellular_null e1cf\nsignal_cellular_off e1d0\nsignal_wifi_0_bar f0b0\nsignal_wifi_1_bar f0b1\nsignal_wifi_1_bar_lock f0b2\nsignal_wifi_2_bar f0b3\nsignal_wifi_2_bar_lock f0b4\nsignal_wifi_3_bar f0b5\nsignal_wifi_3_bar_lock f0b6\nsignal_wifi_4_bar e1d8\nsignal_wifi_4_bar_lock e1d9\nsignal_wifi_bad f063\nsignal_wifi_connected_no_internet_0 f0f2\nsignal_wifi_connected_no_internet_1 f0ee\nsignal_wifi_connected_no_internet_2 f0f1\nsignal_wifi_connected_no_internet_3 f0ed\nsignal_wifi_connected_no_internet_4 f064\nsignal_wifi_off e1da\nsignal_wifi_statusbar_1_bar f0e6\nsignal_wifi_statusbar_2_bar f0f0\nsignal_wifi_statusbar_3_bar f0ea\nsignal_wifi_statusbar_4_bar f065\nsignal_wifi_statusbar_connected_no_internet f0f8\nsignal_wifi_statusbar_connected_no_internet_1 f0e9\nsignal_wifi_statusbar_connected_no_internet_2 f0f7\nsignal_wifi_statusbar_connected_no_internet_3 f0e8\nsignal_wifi_statusbar_connected_no_internet_4 f066\nsignal_wifi_statusbar_not_connected f0ef\nsignal_wifi_statusbar_null f067\nsignpost eb91\nsim_card e32b\nsim_card_alert e624\nsim_card_download f068\nsingle_bed ea48\nsip f069\nskateboarding e511\nskip_next e044\nskip_previous e045\nsledding e512\nslideshow e41b\nslow_motion_video e068\nsmart_button f1c1\nsmart_display f06a\nsmart_screen f06b\nsmart_toy f06c\nsmartphone e32c\nsmoke_free eb4a\nsmoking_rooms eb4b\nsms e625\nsms_failed e626\nsnapchat ea6e\nsnippet_folder f1c7\nsnooze e046\nsnowboarding e513\nsnowmobile e503\nsnowshoeing e514\nsoap f1b2\nsocial_distance e1cb\nsolar_power ec0f\nsort e164\nsort_by_alpha e053\nsos ebf7\nsoup_kitchen e7d3\nsource f1c4\nsouth f1e3\nsouth_america e7e4\nsouth_east f1e4\nsouth_west f1e5\nspa eb4c\nspace_bar e256\nspace_dashboard e66b\nspatial_audio ebeb\nspatial_audio_off ebe8\nspatial_tracking ebea\nspeaker e32d\nspeaker_group e32e\nspeaker_notes e8cd\nspeaker_notes_off e92a\nspeaker_phone e0d2\nspeed e9e4\nspellcheck e8ce\nsplitscreen f06d\nspoke e9a7\nsports ea30\nsports_bar f1f3\nsports_baseball ea51\nsports_basketball ea26\nsports_cricket ea27\nsports_esports ea28\nsports_football ea29\nsports_golf ea2a\nsports_gymnastics ebc4\nsports_handball ea33\nsports_hockey ea2b\nsports_kabaddi ea34\nsports_martial_arts eae9\nsports_mma ea2c\nsports_motorsports ea2d\nsports_rugby ea2e\nsports_score f06e\nsports_soccer ea2f\nsports_tennis ea32\nsports_volleyball ea31\nsquare eb36\nsquare_foot ea49\nssid_chart eb66\nstacked_bar_chart e9e6\nstacked_line_chart f22b\nstadium eb90\nstairs f1a9\nstar e838\nstar_border e83a\nstar_border_purple500 f099\nstar_half e839\nstar_outline f06f\nstar_purple500 f09a\nstar_rate f0ec\nstars e8d0\nstart e089\nstay_current_landscape e0d3\nstay_current_portrait e0d4\nstay_primary_landscape e0d5\nstay_primary_portrait e0d6\nsticky_note_2 f1fc\nstop e047\nstop_circle ef71\nstop_screen_share e0e3\nstorage e1db\nstore e8d1\nstore_mall_directory e563\nstorefront ea12\nstorm f070\nstraight eb95\nstraighten e41c\nstream e9e9\nstreetview e56e\nstrikethrough_s e257\nstroller f1ae\nstyle e41d\nsubdirectory_arrow_left e5d9\nsubdirectory_arrow_right e5da\nsubject e8d2\nsubscript f111\nsubscriptions e064\nsubtitles e048\nsubtitles_off ef72\nsubway e56f\nsummarize f071\nsuperscript f112\nsupervised_user_circle e939\nsupervisor_account e8d3\nsupport ef73\nsupport_agent f0e2\nsurfing e515\nsurround_sound e049\nswap_calls e0d7\nswap_horiz e8d4\nswap_horizontal_circle e933\nswap_vert e8d5\nswap_vert_circle e8d6\nswap_vertical_circle e8d6\nswipe e9ec\nswipe_down eb53\nswipe_down_alt eb30\nswipe_left eb59\nswipe_left_alt eb33\nswipe_right eb52\nswipe_right_alt eb56\nswipe_up eb2e\nswipe_up_alt eb35\nswipe_vertical eb51\nswitch_access_shortcut e7e1\nswitch_access_shortcut_add e7e2\nswitch_account e9ed\nswitch_camera e41e\nswitch_left f1d1\nswitch_right f1d2\nswitch_video e41f\nsynagogue eab0\nsync e627\nsync_alt ea18\nsync_disabled e628\nsync_lock eaee\nsync_problem e629\nsystem_security_update f072\nsystem_security_update_good f073\nsystem_security_update_warning f074\nsystem_update e62a\nsystem_update_alt e8d7\nsystem_update_tv e8d7\ntab e8d8\ntab_unselected e8d9\ntable_bar ead2\ntable_chart e265\ntable_restaurant eac6\ntable_rows f101\ntable_view f1be\ntablet e32f\ntablet_android e330\ntablet_mac e331\ntag e9ef\ntag_faces e420\ntakeout_dining ea74\ntap_and_play e62b\ntapas f1e9\ntask f075\ntask_alt e2e6\ntaxi_alert ef74\ntelegram ea6b\ntemple_buddhist eab3\ntemple_hindu eaaf\nterminal eb8e\nterrain e564\ntext_decrease eadd\ntext_fields e262\ntext_format e165\ntext_increase eae2\ntext_rotate_up e93a\ntext_rotate_vertical e93b\ntext_rotation_angledown e93c\ntext_rotation_angleup e93d\ntext_rotation_down e93e\ntext_rotation_none e93f\ntext_snippet f1c6\ntextsms e0d8\ntexture e421\ntheater_comedy ea66\ntheaters e8da\nthermostat f076\nthermostat_auto f077\nthumb_down e8db\nthumb_down_alt e816\nthumb_down_off_alt e9f2\nthumb_up e8dc\nthumb_up_alt e817\nthumb_up_off_alt e9f3\nthumbs_up_down e8dd\nthunderstorm ebdb\ntiktok ea7e\ntime_to_leave e62c\ntimelapse e422\ntimeline e922\ntimer e425\ntimer_10 e423\ntimer_10_select f07a\ntimer_3 e424\ntimer_3_select f07b\ntimer_off e426\ntips_and_updates e79a\ntire_repair ebc8\ntitle e264\ntoc e8de\ntoday e8df\ntoggle_off e9f5\ntoggle_on e9f6\ntoken ea25\ntoll e8e0\ntonality e427\ntopic f1c8\ntornado e199\ntouch_app e913\ntour ef75\ntoys e332\ntrack_changes e8e1\ntraffic e565\ntrain e570\ntram e571\ntranscribe f8ec\ntransfer_within_a_station e572\ntransform e428\ntransgender e58d\ntransit_enterexit e579\ntranslate e8e2\ntravel_explore e2db\ntrending_down e8e3\ntrending_flat e8e4\ntrending_neutral e8e4\ntrending_up e8e5\ntrip_origin e57b\ntroubleshoot e1d2\ntry f07c\ntsunami ebd8\ntty f1aa\ntune e429\ntungsten f07d\nturn_left eba6\nturn_right ebab\nturn_sharp_left eba7\nturn_sharp_right ebaa\nturn_slight_left eba4\nturn_slight_right eb9a\nturned_in e8e6\nturned_in_not e8e7\ntv e333\ntv_off e647\ntwo_wheeler e9f9\ntype_specimen f8f0\nu_turn_left eba1\nu_turn_right eba2\numbrella f1ad\nunarchive e169\nundo e166\nunfold_less e5d6\nunfold_less_double f8cf\nunfold_more e5d7\nunfold_more_double f8d0\nunpublished f236\nunsubscribe e0eb\nupcoming f07e\nupdate e923\nupdate_disabled e075\nupgrade f0fb\nupload f09b\nupload_file e9fc\nusb e1e0\nusb_off e4fa\nvaccines e138\nvape_free ebc6\nvaping_rooms ebcf\nverified ef76\nverified_user e8e8\nvertical_align_bottom e258\nvertical_align_center e259\nvertical_align_top e25a\nvertical_distribute e076\nvertical_shades ec0e\nvertical_shades_closed ec0d\nvertical_split e949\nvibration e62d\nvideo_call e070\nvideo_camera_back f07f\nvideo_camera_front f080\nvideo_collection e04a\nvideo_file eb87\nvideo_label e071\nvideo_library e04a\nvideo_settings ea75\nvideo_stable f081\nvideocam e04b\nvideocam_off e04c\nvideogame_asset e338\nvideogame_asset_off e500\nview_agenda e8e9\nview_array e8ea\nview_carousel e8eb\nview_column e8ec\nview_comfortable e42a\nview_comfy e42a\nview_comfy_alt eb73\nview_compact e42b\nview_compact_alt eb74\nview_cozy eb75\nview_day e8ed\nview_headline e8ee\nview_in_ar e9fe\nview_kanban eb7f\nview_list e8ef\nview_module e8f0\nview_quilt e8f1\nview_sidebar f114\nview_stream e8f2\nview_timeline eb85\nview_week e8f3\nvignette e435\nvilla e586\nvisibility e8f4\nvisibility_off e8f5\nvoice_chat e62e\nvoice_over_off e94a\nvoicemail e0d9\nvolcano ebda\nvolume_down e04d\nvolume_mute e04e\nvolume_off e04f\nvolume_up e050\nvolunteer_activism ea70\nvpn_key e0da\nvpn_key_off eb7a\nvpn_lock e62f\nvrpano f082\nwallet f8ff\nwallet_giftcard e8f6\nwallet_membership e8f7\nwallet_travel e8f8\nwallpaper e75f\nwarehouse ebb8\nwarning e002\nwarning_amber f083\nwash f1b1\nwatch e334\nwatch_later e924\nwatch_off eae3\nwater f084\nwater_damage f203\nwater_drop e798\nwaterfall_chart ea00\nwaves e176\nwaving_hand e766\nwb_auto e42c\nwb_cloudy e42d\nwb_incandescent e42e\nwb_iridescent e436\nwb_shade ea01\nwb_sunny e430\nwb_twilight e1c6\nwc e63d\nweb e051\nweb_asset e069\nweb_asset_off e4f7\nweb_stories e595\nwebhook eb92\nwechat ea81\nweekend e16b\nwest f1e6\nwhatsapp ea9c\nwhatshot e80e\nwheelchair_pickup f1ab\nwhere_to_vote e177\nwidgets e75e\nwidth_full f8f5\nwidth_normal f8f6\nwidth_wide f8f7\nwifi e63e\nwifi_1_bar e4ca\nwifi_2_bar e4d9\nwifi_calling ef77\nwifi_calling_1 f0e7\nwifi_calling_2 f0f6\nwifi_calling_3 f085\nwifi_channel eb6a\nwifi_find eb31\nwifi_lock e1e1\nwifi_off e648\nwifi_password eb6b\nwifi_protected_setup f0fc\nwifi_tethering e1e2\nwifi_tethering_error f086\nwifi_tethering_error_rounded f086\nwifi_tethering_off f087\nwind_power ec0c\nwindow f088\nwine_bar f1e8\nwoman e13e\nwoman_2 f8e7\nwoo_commerce ea6d\nwordpress ea9f\nwork e8f9\nwork_history ec09\nwork_off e942\nwork_outline e943\nworkspace_premium e7af\nworkspaces e1a0\nwrap_text e25b\nwrong_location ef78\nwysiwyg f1c3\nyard f089\nyoutube_searched_for e8fa\nzoom_in e8ff\nzoom_in_map eb2d\nzoom_out e900\nzoom_out_map e56b\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/material-icons/README.md",
    "content": "The recommended way to use the Material Icons font is by linking to the web font hosted on Google Fonts:\n\n```html\n<!-- https://material.io/resources/icons/?style=baseline -->\n<link href=\"https://fonts.googleapis.com/css2?family=Material+Icons\"\n      rel=\"stylesheet\">\n\n<!-- https://material.io/resources/icons/?style=outline -->\n<link href=\"https://fonts.googleapis.com/css2?family=Material+Icons+Outlined\"\n      rel=\"stylesheet\">\n\n<!-- https://material.io/resources/icons/?style=round -->\n<link href=\"https://fonts.googleapis.com/css2?family=Material+Icons+Round\"\n      rel=\"stylesheet\">\n\n<!-- https://material.io/resources/icons/?style=sharp -->\n<link href=\"https://fonts.googleapis.com/css2?family=Material+Icons+Sharp\"\n      rel=\"stylesheet\">\n\n<!-- https://material.io/resources/icons/?style=twotone -->\n<link href=\"https://fonts.googleapis.com/css2?family=Material+Icons+Two+Tone\"\n      rel=\"stylesheet\">\n```\n\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/material-icons/material-icons.css",
    "content": "@font-face {\n    font-family: 'Material Icons';\n    font-style: normal;\n    font-weight: 400;\n    src: local('Material Icons'),\n    local('MaterialIcons-Regular'),\n    url('MaterialIcons-Regular.ttf') format('truetype');\n}\n\n.material-icons {\n    font-family: 'Material Icons';\n    font-weight: normal;\n    font-style: normal;\n    font-size: 24px;  /* Preferred icon size */\n    display: inline-block;\n    line-height: 1;\n    text-transform: none;\n    letter-spacing: normal;\n    word-wrap: normal;\n    white-space: nowrap;\n    direction: ltr;\n\n    /* Support for all WebKit browsers. */\n    -webkit-font-smoothing: antialiased;\n    /* Support for Safari and Chrome. */\n    text-rendering: optimizeLegibility;\n\n    /* Support for Firefox. */\n    -moz-osx-font-smoothing: grayscale;\n\n    /* Support for IE. */\n    font-feature-settings: 'liga';\n}\n"
  },
  {
    "path": "webapp/frontend/src/assets/fonts/roboto/roboto.css",
    "content": "/* from https://google-webfonts-helper.herokuapp.com/fonts/roboto?subsets=latin */\n/* roboto-300 - latin */\n@font-face {\n    font-family: 'Roboto';\n    font-style: normal;\n    font-weight: 300;\n    src: url('roboto-v30-latin-300.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('roboto-v30-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('roboto-v30-latin-300.woff2') format('woff2'), /* Super Modern Browsers */\n    url('roboto-v30-latin-300.woff') format('woff'), /* Modern Browsers */\n    url('roboto-v30-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('roboto-v30-latin-300.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-regular - latin */\n@font-face {\n    font-family: 'Roboto';\n    font-style: normal;\n    font-weight: 400;\n    src: url('roboto-v30-latin-regular.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('roboto-v30-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('roboto-v30-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n    url('roboto-v30-latin-regular.woff') format('woff'), /* Modern Browsers */\n    url('roboto-v30-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('roboto-v30-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-italic - latin */\n@font-face {\n    font-family: 'Roboto';\n    font-style: italic;\n    font-weight: 400;\n    src: url('roboto-v30-latin-italic.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('roboto-v30-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('roboto-v30-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */\n    url('roboto-v30-latin-italic.woff') format('woff'), /* Modern Browsers */\n    url('roboto-v30-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('roboto-v30-latin-italic.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-500 - latin */\n@font-face {\n    font-family: 'Roboto';\n    font-style: normal;\n    font-weight: 500;\n    src: url('roboto-v30-latin-500.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('roboto-v30-latin-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('roboto-v30-latin-500.woff2') format('woff2'), /* Super Modern Browsers */\n    url('roboto-v30-latin-500.woff') format('woff'), /* Modern Browsers */\n    url('roboto-v30-latin-500.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('roboto-v30-latin-500.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-700 - latin */\n@font-face {\n    font-family: 'Roboto';\n    font-style: normal;\n    font-weight: 700;\n    src: url('roboto-v30-latin-700.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('roboto-v30-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('roboto-v30-latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n    url('roboto-v30-latin-700.woff') format('woff'), /* Modern Browsers */\n    url('roboto-v30-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('roboto-v30-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* roboto-900 - latin */\n@font-face {\n    font-family: 'Roboto';\n    font-style: normal;\n    font-weight: 900;\n    src: url('roboto-v30-latin-900.eot'); /* IE9 Compat Modes */\n    src: local(''),\n    url('roboto-v30-latin-900.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n    url('roboto-v30-latin-900.woff2') format('woff2'), /* Super Modern Browsers */\n    url('roboto-v30-latin-900.woff') format('woff'), /* Modern Browsers */\n    url('roboto-v30-latin-900.ttf') format('truetype'), /* Safari, Android, iOS */\n    url('roboto-v30-latin-900.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n"
  },
  {
    "path": "webapp/frontend/src/browserconfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<browserconfig><msapplication><tile><square70x70logo src=\"./ms-icon-70x70.png\"/><square150x150logo src=\"./ms-icon-150x150.png\"/><square310x310logo src=\"./ms-icon-310x310.png\"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>\n"
  },
  {
    "path": "webapp/frontend/src/environments/environment.prod.ts",
    "content": "export const environment = {\n    production: true\n};\n"
  },
  {
    "path": "webapp/frontend/src/environments/environment.ts",
    "content": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n    production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error';  // Included with Angular CLI.\n"
  },
  {
    "path": "webapp/frontend/src/environments/versions.ts",
    "content": "// this file is automatically generated by git.version.ts script\nexport const versionInfo = {\n    version: 'dev',\n};\n"
  },
  {
    "path": "webapp/frontend/src/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <title>scrutiny</title>\n\n        <script>\n            document.write(`<base href=\"${window.location.pathname.split('/web').slice(0, 1)[0]}/web/\"/>`);\n        </script>\n\n        <meta name=\"viewport\"\n              content=\"width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0\">\n\n        <!-- Favicon -->\n        <link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"apple-icon-57x57.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"60x60\" href=\"apple-icon-60x60.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"apple-icon-72x72.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"apple-icon-76x76.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"114x114\" href=\"apple-icon-114x114.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"apple-icon-120x120.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"apple-icon-144x144.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"apple-icon-152x152.png\">\n        <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"apple-icon-180x180.png\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\"  href=\"android-icon-192x192.png\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"favicon-32x32.png\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"96x96\" href=\"favicon-96x96.png\">\n        <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"favicon-16x16.png\">\n        <link rel=\"manifest\" href=\"./manifest.json\" crossorigin=\"use-credentials\">\n        <meta name=\"msapplication-TileColor\" content=\"#ffffff\">\n        <meta name=\"msapplication-TileImage\" content=\"ms-icon-144x144.png\">\n        <meta name=\"theme-color\" content=\"#ffffff\">\n\n\n        <!-- Fonts -->\n        <link href=\"assets/fonts/roboto/roboto.css\"\n              rel=\"stylesheet\">\n\n        <link href=\"assets/fonts/ibm-plex-mono/ibm-plex-mono.css\"\n              rel=\"stylesheet\">\n\n        <link href=\"assets/fonts/inter/inter.css\"\n              rel=\"stylesheet\">\n\n        <!-- Icon Fonts -->\n        <link href=\"assets/fonts/material-icons/material-icons.css\"\n              rel=\"stylesheet\">\n\n        <!-- Splash screen styles -->\n        <style>\n            body treo-splash-screen {\n                display: flex;\n                flex-direction: column;\n                align-items: center;\n                justify-content: center;\n                position: fixed;\n                top: 0;\n                left: 0;\n                right: 0;\n                bottom: 0;\n                background-color: #1A202E;\n                color: #FBFDFE;\n                z-index: 999999;\n                pointer-events: none;\n                opacity: 1;\n                visibility: visible;\n                transition: opacity 400ms cubic-bezier(0.4, 0, 0.2, 1);\n            }\n\n            body treo-splash-screen img {\n                width: 120px;\n                max-width: 120px;\n            }\n\n            body treo-splash-screen .spinner {\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                margin-top: 40px;\n                width: 56px;\n            }\n\n            body treo-splash-screen .spinner > div {\n                width: 12px;\n                height: 12px;\n                background-color: #F50057;\n                border-radius: 100%;\n                display: inline-block;\n                -webkit-animation: treo-bouncedelay 1s infinite ease-in-out both;\n                animation: treo-bouncedelay 1s infinite ease-in-out both;\n            }\n\n            body treo-splash-screen .spinner .bounce1 {\n                -webkit-animation-delay: -0.32s;\n                animation-delay: -0.32s;\n            }\n\n            body treo-splash-screen .spinner .bounce2 {\n                -webkit-animation-delay: -0.16s;\n                animation-delay: -0.16s;\n            }\n\n            @-webkit-keyframes treo-bouncedelay {\n                0%, 80%, 100% {\n                    -webkit-transform: scale(0)\n                }\n                40% {\n                    -webkit-transform: scale(1.0)\n                }\n            }\n\n            @keyframes treo-bouncedelay {\n                0%, 80%, 100% {\n                    -webkit-transform: scale(0);\n                    transform: scale(0);\n                }\n                40% {\n                    -webkit-transform: scale(1.0);\n                    transform: scale(1.0);\n                }\n            }\n\n            body:not(.treo-splash-screen-hidden) {\n                overflow: hidden;\n            }\n\n            body.treo-splash-screen-hidden treo-splash-screen {\n                visibility: hidden;\n                opacity: 0;\n            }\n        </style>\n\n    </head>\n\n    <body class=\"treo-theme-light\">\n\n        <!-- Splash screen -->\n        <treo-splash-screen>\n            <img src=\"assets/images/logo/scrutiny-logo-white.svg\"\n                 alt=\"Scrutiny logo\">\n            <div class=\"spinner\">\n                <div class=\"bounce1\"></div>\n                <div class=\"bounce2\"></div>\n                <div class=\"bounce3\"></div>\n            </div>\n        </treo-splash-screen>\n\n        <!-- App root -->\n        <app-root></app-root>\n\n    </body>\n\n</html>\n"
  },
  {
    "path": "webapp/frontend/src/main.ts",
    "content": "import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif ( environment.production )\n{\n    enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n                        .catch(err => console.error(err));\n"
  },
  {
    "path": "webapp/frontend/src/manifest.json",
    "content": "{\n \"name\": \"App\",\n \"icons\": [\n  {\n   \"src\": \".\\/android-icon-36x36.png\",\n   \"sizes\": \"36x36\",\n   \"type\": \"image\\/png\",\n   \"density\": \"0.75\"\n  },\n  {\n   \"src\": \".\\/android-icon-48x48.png\",\n   \"sizes\": \"48x48\",\n   \"type\": \"image\\/png\",\n   \"density\": \"1.0\"\n  },\n  {\n   \"src\": \".\\/android-icon-72x72.png\",\n   \"sizes\": \"72x72\",\n   \"type\": \"image\\/png\",\n   \"density\": \"1.5\"\n  },\n  {\n   \"src\": \".\\/android-icon-96x96.png\",\n   \"sizes\": \"96x96\",\n   \"type\": \"image\\/png\",\n   \"density\": \"2.0\"\n  },\n  {\n   \"src\": \".\\/android-icon-144x144.png\",\n   \"sizes\": \"144x144\",\n   \"type\": \"image\\/png\",\n   \"density\": \"3.0\"\n  },\n  {\n   \"src\": \".\\/android-icon-192x192.png\",\n   \"sizes\": \"192x192\",\n   \"type\": \"image\\/png\",\n   \"density\": \"4.0\"\n  }\n ]\n}\n"
  },
  {
    "path": "webapp/frontend/src/polyfills.ts",
    "content": "/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n *   2. Application imports. Files imported after ZoneJS that should be loaded before your main\n *      file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/guide/browser-support\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\n// import 'classlist.js';  // Run `npm install --save classlist.js`.\n\n/**\n * Web Animations `@angular/platform-browser/animations`\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\n */\nimport 'web-animations-js';  // Run `npm install --save web-animations-js`.\n\n/**\n * By default, zone.js will patch all possible macroTask and DomEvents\n * user can disable parts of macroTask/DomEvents patch by setting following flags\n * because those flags need to be set before `zone.js` being loaded, and webpack\n * will put import in the top of bundle, so user need to create a separate file\n * in this directory (for example: zone-flags.ts), and put the following flags\n * into that file, and then add the following code before importing zone.js.\n * import './zone-flags';\n *\n * The flags allowed in zone-flags.ts are listed here.\n *\n * The following flags will work for all browsers.\n *\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\n * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\n *\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\n *\n *  (window as any).__Zone_enable_cross_context_check = true;\n *\n */\n\n/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\nimport 'zone.js/dist/zone';  // Included with Angular CLI.\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\n"
  },
  {
    "path": "webapp/frontend/src/styles/styles.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ You can use this file to import custom styles.\n//\n// @ Styles from this file will override anything from 'vendors.scss' file allowing customizations and\n//  modifications of third party libraries.\n// -----------------------------------------------------------------------------------------------------\n\n.treo-theme-dark {\n    .yellow-50 {\n        background-color: #242b38 !important;\n\n        .mat-icon {\n            color: #0694a2 !important;\n        }\n\n        .text-secondary {\n            color: #0694a2 !important\n        }\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/src/styles/tailwind.scss",
    "content": "/* ----------------------------------------------------------------------------------------------------- */\n\n/* This injects Tailwind's component classes and any component classes registered by plugins.\n/* ----------------------------------------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------------------------------------- */\n\n/* Use custom @apply directives here to inline any existing utility classes into your own custom CSS.\n/* ----------------------------------------------------------------------------------------------------- */\n\n/**\n * .btn {\n *   @apply font-bold py-2 px-4 rounded;\n * }\n */\n\n/* ----------------------------------------------------------------------------------------------------- */\n\n/* This injects Tailwind's utility classes and any utility classes registered by plugins.\n/* ----------------------------------------------------------------------------------------------------- */\n\n.space-y-0 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n}\n\n.space-x-0 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(0px * var(--space-x-reverse)) !important;\n  margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-1 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-1 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n  margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-2 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-2 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-3 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-3 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n  margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-4 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-4 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(1rem * var(--space-x-reverse)) !important;\n  margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-5 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-5 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n  margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-6 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-6 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-8 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-8 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(2rem * var(--space-x-reverse)) !important;\n  margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-10 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-10 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-12 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-12 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(3rem * var(--space-x-reverse)) !important;\n  margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-14 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-14 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-16 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-16 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(4rem * var(--space-x-reverse)) !important;\n  margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-18 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-18 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-20 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-20 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-22 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-22 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-24 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-24 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(6rem * var(--space-x-reverse)) !important;\n  margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-26 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-26 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-28 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-28 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(7rem * var(--space-x-reverse)) !important;\n  margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-30 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-30 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-32 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-32 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(8rem * var(--space-x-reverse)) !important;\n  margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-36 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-36 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(9rem * var(--space-x-reverse)) !important;\n  margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-40 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-40 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(10rem * var(--space-x-reverse)) !important;\n  margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-48 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-48 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(12rem * var(--space-x-reverse)) !important;\n  margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-56 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-56 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(14rem * var(--space-x-reverse)) !important;\n  margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-64 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n}\n\n.space-x-64 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(16rem * var(--space-x-reverse)) !important;\n  margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-px > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n}\n\n.space-x-px > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(1px * var(--space-x-reverse)) !important;\n  margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-2px > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n}\n\n.space-x-2px > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(2px * var(--space-x-reverse)) !important;\n  margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-1 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-1 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-2 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-2 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-3 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-3 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-4 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-4 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-5 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-5 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-6 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-6 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-8 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-8 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-10 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-10 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-12 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-12 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-14 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-14 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-16 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-16 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-18 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-18 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-20 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-20 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-22 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-22 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-24 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-24 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-26 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-26 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-28 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-28 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-30 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-30 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-32 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-32 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-36 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-36 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-40 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-40 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-48 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-48 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-56 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-56 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-64 > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n}\n\n.-space-x-64 > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n  margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-px > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n}\n\n.-space-x-px > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-1px * var(--space-x-reverse)) !important;\n  margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.-space-y-2px > :not(template) ~ :not(template) {\n  --space-y-reverse: 0 !important;\n  margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n  margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n}\n\n.-space-x-2px > :not(template) ~ :not(template) {\n  --space-x-reverse: 0 !important;\n  margin-right: calc(-2px * var(--space-x-reverse)) !important;\n  margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n}\n\n.space-y-reverse > :not(template) ~ :not(template) {\n  --space-y-reverse: 1 !important;\n}\n\n.space-x-reverse > :not(template) ~ :not(template) {\n  --space-x-reverse: 1 !important;\n}\n\n.divide-y-0 > :not(template) ~ :not(template) {\n  --divide-y-reverse: 0 !important;\n  border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n  border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n}\n\n.divide-x-0 > :not(template) ~ :not(template) {\n  --divide-x-reverse: 0 !important;\n  border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n  border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n}\n\n.divide-y-2 > :not(template) ~ :not(template) {\n  --divide-y-reverse: 0 !important;\n  border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n  border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n}\n\n.divide-x-2 > :not(template) ~ :not(template) {\n  --divide-x-reverse: 0 !important;\n  border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n  border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n}\n\n.divide-y-4 > :not(template) ~ :not(template) {\n  --divide-y-reverse: 0 !important;\n  border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n  border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n}\n\n.divide-x-4 > :not(template) ~ :not(template) {\n  --divide-x-reverse: 0 !important;\n  border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n  border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n}\n\n.divide-y-8 > :not(template) ~ :not(template) {\n  --divide-y-reverse: 0 !important;\n  border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n  border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n}\n\n.divide-x-8 > :not(template) ~ :not(template) {\n  --divide-x-reverse: 0 !important;\n  border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n  border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n}\n\n.divide-y > :not(template) ~ :not(template) {\n  --divide-y-reverse: 0 !important;\n  border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n  border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n}\n\n.divide-x > :not(template) ~ :not(template) {\n  --divide-x-reverse: 0 !important;\n  border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n  border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n}\n\n.divide-y-reverse > :not(template) ~ :not(template) {\n  --divide-y-reverse: 1 !important;\n}\n\n.divide-x-reverse > :not(template) ~ :not(template) {\n  --divide-x-reverse: 1 !important;\n}\n\n.divide-current > :not(template) ~ :not(template) {\n  border-color: currentColor !important;\n}\n\n.divide-transparent > :not(template) ~ :not(template) {\n  border-color: transparent !important;\n}\n\n.divide-white > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FFFFFF !important;\n  border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n}\n\n.divide-black > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #000000 !important;\n  border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n}\n\n.divide-gray-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F9FAFB !important;\n  border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n}\n\n.divide-gray-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F4F5F7 !important;\n  border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n}\n\n.divide-gray-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E5E7EB !important;\n  border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n}\n\n.divide-gray-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #D2D6DC !important;\n  border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n}\n\n.divide-gray-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #9FA6B2 !important;\n  border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n}\n\n.divide-gray-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #6B7280 !important;\n  border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n}\n\n.divide-gray-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #4B5563 !important;\n  border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n}\n\n.divide-gray-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #374151 !important;\n  border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n}\n\n.divide-gray-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #252F3F !important;\n  border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n}\n\n.divide-gray-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #161E2E !important;\n  border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n}\n\n.divide-gray > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #6B7280 !important;\n  border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FBFDFE !important;\n  border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F1F5F9 !important;\n  border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E2E8F0 !important;\n  border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #CFD8E3 !important;\n  border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #97A6BA !important;\n  border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #64748B !important;\n  border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #475569 !important;\n  border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #364152 !important;\n  border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #27303F !important;\n  border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #1A202E !important;\n  border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n}\n\n.divide-cool-gray > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #64748B !important;\n  border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n}\n\n.divide-red-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FDF2F2 !important;\n  border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n}\n\n.divide-red-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FDE8E8 !important;\n  border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n}\n\n.divide-red-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FBD5D5 !important;\n  border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n}\n\n.divide-red-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F8B4B4 !important;\n  border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n}\n\n.divide-red-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F98080 !important;\n  border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n}\n\n.divide-red-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F05252 !important;\n  border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n}\n\n.divide-red-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E02424 !important;\n  border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n}\n\n.divide-red-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #C81E1E !important;\n  border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n}\n\n.divide-red-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #9B1C1C !important;\n  border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n}\n\n.divide-red-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #771D1D !important;\n  border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n}\n\n.divide-red > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F05252 !important;\n  border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n}\n\n.divide-orange-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FFF8F1 !important;\n  border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n}\n\n.divide-orange-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FEECDC !important;\n  border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n}\n\n.divide-orange-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FCD9BD !important;\n  border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n}\n\n.divide-orange-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FDBA8C !important;\n  border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n}\n\n.divide-orange-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FF8A4C !important;\n  border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n}\n\n.divide-orange-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FF5A1F !important;\n  border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n}\n\n.divide-orange-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #D03801 !important;\n  border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n}\n\n.divide-orange-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #B43403 !important;\n  border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n}\n\n.divide-orange-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #8A2C0D !important;\n  border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n}\n\n.divide-orange-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #771D1D !important;\n  border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n}\n\n.divide-orange > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FF5A1F !important;\n  border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FDFDEA !important;\n  border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FDF6B2 !important;\n  border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FCE96A !important;\n  border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FACA15 !important;\n  border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E3A008 !important;\n  border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #C27803 !important;\n  border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #9F580A !important;\n  border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #8E4B10 !important;\n  border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #723B13 !important;\n  border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n}\n\n.divide-yellow-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #633112 !important;\n  border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n}\n\n.divide-yellow > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #C27803 !important;\n  border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n}\n\n.divide-green-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F3FAF7 !important;\n  border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n}\n\n.divide-green-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #DEF7EC !important;\n  border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n}\n\n.divide-green-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #BCF0DA !important;\n  border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n}\n\n.divide-green-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #84E1BC !important;\n  border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n}\n\n.divide-green-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #31C48D !important;\n  border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n}\n\n.divide-green-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #0E9F6E !important;\n  border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n}\n\n.divide-green-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #057A55 !important;\n  border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n}\n\n.divide-green-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #046C4E !important;\n  border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n}\n\n.divide-green-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #03543F !important;\n  border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n}\n\n.divide-green-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #014737 !important;\n  border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n}\n\n.divide-green > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #0E9F6E !important;\n  border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n}\n\n.divide-teal-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #EDFAFA !important;\n  border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n}\n\n.divide-teal-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #D5F5F6 !important;\n  border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n}\n\n.divide-teal-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #AFECEF !important;\n  border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n}\n\n.divide-teal-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #7EDCE2 !important;\n  border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n}\n\n.divide-teal-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #16BDCA !important;\n  border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n}\n\n.divide-teal-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #0694A2 !important;\n  border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n}\n\n.divide-teal-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #047481 !important;\n  border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n}\n\n.divide-teal-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #036672 !important;\n  border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n}\n\n.divide-teal-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #05505C !important;\n  border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n}\n\n.divide-teal-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #014451 !important;\n  border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n}\n\n.divide-teal > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #0694A2 !important;\n  border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n}\n\n.divide-blue-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #EBF5FF !important;\n  border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n}\n\n.divide-blue-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E1EFFE !important;\n  border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n}\n\n.divide-blue-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #C3DDFD !important;\n  border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n}\n\n.divide-blue-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #A4CAFE !important;\n  border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n}\n\n.divide-blue-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #76A9FA !important;\n  border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n}\n\n.divide-blue-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #3F83F8 !important;\n  border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n}\n\n.divide-blue-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #1C64F2 !important;\n  border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n}\n\n.divide-blue-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #1A56DB !important;\n  border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n}\n\n.divide-blue-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #1E429F !important;\n  border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n}\n\n.divide-blue-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #233876 !important;\n  border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n}\n\n.divide-blue > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #3F83F8 !important;\n  border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F0F5FF !important;\n  border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E5EDFF !important;\n  border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #CDDBFE !important;\n  border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #B4C6FC !important;\n  border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #8DA2FB !important;\n  border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #6875F5 !important;\n  border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #5850EC !important;\n  border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #5145CD !important;\n  border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #42389D !important;\n  border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n}\n\n.divide-indigo-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #362F78 !important;\n  border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n}\n\n.divide-indigo > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #6875F5 !important;\n  border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n}\n\n.divide-purple-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F6F5FF !important;\n  border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n}\n\n.divide-purple-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #EDEBFE !important;\n  border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n}\n\n.divide-purple-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #DCD7FE !important;\n  border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n}\n\n.divide-purple-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #CABFFD !important;\n  border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n}\n\n.divide-purple-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #AC94FA !important;\n  border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n}\n\n.divide-purple-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #9061F9 !important;\n  border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n}\n\n.divide-purple-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #7E3AF2 !important;\n  border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n}\n\n.divide-purple-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #6C2BD9 !important;\n  border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n}\n\n.divide-purple-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #5521B5 !important;\n  border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n}\n\n.divide-purple-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #4A1D96 !important;\n  border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n}\n\n.divide-purple > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #9061F9 !important;\n  border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n}\n\n.divide-pink-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FDF2F8 !important;\n  border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n}\n\n.divide-pink-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FCE8F3 !important;\n  border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n}\n\n.divide-pink-200 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #FAD1E8 !important;\n  border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n}\n\n.divide-pink-300 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F8B4D9 !important;\n  border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n}\n\n.divide-pink-400 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #F17EB8 !important;\n  border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n}\n\n.divide-pink-500 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E74694 !important;\n  border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n}\n\n.divide-pink-600 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #D61F69 !important;\n  border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n}\n\n.divide-pink-700 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #BF125D !important;\n  border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n}\n\n.divide-pink-800 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #99154B !important;\n  border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n}\n\n.divide-pink-900 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #751A3D !important;\n  border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n}\n\n.divide-pink > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n  border-color: #E74694 !important;\n  border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n}\n\n.divide-opacity-0 > :not(template) ~ :not(template) {\n  --divide-opacity: 0 !important;\n}\n\n.divide-opacity-12 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.12 !important;\n}\n\n.divide-opacity-25 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.25 !important;\n}\n\n.divide-opacity-38 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.38 !important;\n}\n\n.divide-opacity-50 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.5 !important;\n}\n\n.divide-opacity-54 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.54 !important;\n}\n\n.divide-opacity-70 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.70 !important;\n}\n\n.divide-opacity-75 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.75 !important;\n}\n\n.divide-opacity-84 > :not(template) ~ :not(template) {\n  --divide-opacity: 0.84 !important;\n}\n\n.divide-opacity-100 > :not(template) ~ :not(template) {\n  --divide-opacity: 1 !important;\n}\n\n.sr-only {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border-width: 0 !important;\n}\n\n.not-sr-only {\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  overflow: visible !important;\n  clip: auto !important;\n  white-space: normal !important;\n}\n\n.focus\\:sr-only:focus {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border-width: 0 !important;\n}\n\n.focus\\:not-sr-only:focus {\n  position: static !important;\n  width: auto !important;\n  height: auto !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  overflow: visible !important;\n  clip: auto !important;\n  white-space: normal !important;\n}\n\n.appearance-none {\n  -webkit-appearance: none !important;\n     -moz-appearance: none !important;\n          appearance: none !important;\n}\n\n.bg-fixed {\n  background-attachment: fixed !important;\n}\n\n.bg-local {\n  background-attachment: local !important;\n}\n\n.bg-scroll {\n  background-attachment: scroll !important;\n}\n\n.bg-current {\n  background-color: currentColor !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n.bg-white {\n  --bg-opacity: 1 !important;\n  background-color: #FFFFFF !important;\n  background-color: rgba(255, 255, 255, var(--bg-opacity)) !important;\n}\n\n.bg-black {\n  --bg-opacity: 1 !important;\n  background-color: #000000 !important;\n  background-color: rgba(0, 0, 0, var(--bg-opacity)) !important;\n}\n\n.bg-gray-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F9FAFB !important;\n  background-color: rgba(249, 250, 251, var(--bg-opacity)) !important;\n}\n\n.bg-gray-100 {\n  --bg-opacity: 1 !important;\n  background-color: #F4F5F7 !important;\n  background-color: rgba(244, 245, 247, var(--bg-opacity)) !important;\n}\n\n.bg-gray-200 {\n  --bg-opacity: 1 !important;\n  background-color: #E5E7EB !important;\n  background-color: rgba(229, 231, 235, var(--bg-opacity)) !important;\n}\n\n.bg-gray-300 {\n  --bg-opacity: 1 !important;\n  background-color: #D2D6DC !important;\n  background-color: rgba(210, 214, 220, var(--bg-opacity)) !important;\n}\n\n.bg-gray-400 {\n  --bg-opacity: 1 !important;\n  background-color: #9FA6B2 !important;\n  background-color: rgba(159, 166, 178, var(--bg-opacity)) !important;\n}\n\n.bg-gray-500 {\n  --bg-opacity: 1 !important;\n  background-color: #6B7280 !important;\n  background-color: rgba(107, 114, 128, var(--bg-opacity)) !important;\n}\n\n.bg-gray-600 {\n  --bg-opacity: 1 !important;\n  background-color: #4B5563 !important;\n  background-color: rgba(75, 85, 99, var(--bg-opacity)) !important;\n}\n\n.bg-gray-700 {\n  --bg-opacity: 1 !important;\n  background-color: #374151 !important;\n  background-color: rgba(55, 65, 81, var(--bg-opacity)) !important;\n}\n\n.bg-gray-800 {\n  --bg-opacity: 1 !important;\n  background-color: #252F3F !important;\n  background-color: rgba(37, 47, 63, var(--bg-opacity)) !important;\n}\n\n.bg-gray-900 {\n  --bg-opacity: 1 !important;\n  background-color: #161E2E !important;\n  background-color: rgba(22, 30, 46, var(--bg-opacity)) !important;\n}\n\n.bg-gray {\n  --bg-opacity: 1 !important;\n  background-color: #6B7280 !important;\n  background-color: rgba(107, 114, 128, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FBFDFE !important;\n  background-color: rgba(251, 253, 254, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-100 {\n  --bg-opacity: 1 !important;\n  background-color: #F1F5F9 !important;\n  background-color: rgba(241, 245, 249, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-200 {\n  --bg-opacity: 1 !important;\n  background-color: #E2E8F0 !important;\n  background-color: rgba(226, 232, 240, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-300 {\n  --bg-opacity: 1 !important;\n  background-color: #CFD8E3 !important;\n  background-color: rgba(207, 216, 227, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-400 {\n  --bg-opacity: 1 !important;\n  background-color: #97A6BA !important;\n  background-color: rgba(151, 166, 186, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-500 {\n  --bg-opacity: 1 !important;\n  background-color: #64748B !important;\n  background-color: rgba(100, 116, 139, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-600 {\n  --bg-opacity: 1 !important;\n  background-color: #475569 !important;\n  background-color: rgba(71, 85, 105, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-700 {\n  --bg-opacity: 1 !important;\n  background-color: #364152 !important;\n  background-color: rgba(54, 65, 82, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-800 {\n  --bg-opacity: 1 !important;\n  background-color: #27303F !important;\n  background-color: rgba(39, 48, 63, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray-900 {\n  --bg-opacity: 1 !important;\n  background-color: #1A202E !important;\n  background-color: rgba(26, 32, 46, var(--bg-opacity)) !important;\n}\n\n.bg-cool-gray {\n  --bg-opacity: 1 !important;\n  background-color: #64748B !important;\n  background-color: rgba(100, 116, 139, var(--bg-opacity)) !important;\n}\n\n.bg-red-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FDF2F2 !important;\n  background-color: rgba(253, 242, 242, var(--bg-opacity)) !important;\n}\n\n.bg-red-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FDE8E8 !important;\n  background-color: rgba(253, 232, 232, var(--bg-opacity)) !important;\n}\n\n.bg-red-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FBD5D5 !important;\n  background-color: rgba(251, 213, 213, var(--bg-opacity)) !important;\n}\n\n.bg-red-300 {\n  --bg-opacity: 1 !important;\n  background-color: #F8B4B4 !important;\n  background-color: rgba(248, 180, 180, var(--bg-opacity)) !important;\n}\n\n.bg-red-400 {\n  --bg-opacity: 1 !important;\n  background-color: #F98080 !important;\n  background-color: rgba(249, 128, 128, var(--bg-opacity)) !important;\n}\n\n.bg-red-500 {\n  --bg-opacity: 1 !important;\n  background-color: #F05252 !important;\n  background-color: rgba(240, 82, 82, var(--bg-opacity)) !important;\n}\n\n.bg-red-600 {\n  --bg-opacity: 1 !important;\n  background-color: #E02424 !important;\n  background-color: rgba(224, 36, 36, var(--bg-opacity)) !important;\n}\n\n.bg-red-700 {\n  --bg-opacity: 1 !important;\n  background-color: #C81E1E !important;\n  background-color: rgba(200, 30, 30, var(--bg-opacity)) !important;\n}\n\n.bg-red-800 {\n  --bg-opacity: 1 !important;\n  background-color: #9B1C1C !important;\n  background-color: rgba(155, 28, 28, var(--bg-opacity)) !important;\n}\n\n.bg-red-900 {\n  --bg-opacity: 1 !important;\n  background-color: #771D1D !important;\n  background-color: rgba(119, 29, 29, var(--bg-opacity)) !important;\n}\n\n.bg-red {\n  --bg-opacity: 1 !important;\n  background-color: #F05252 !important;\n  background-color: rgba(240, 82, 82, var(--bg-opacity)) !important;\n}\n\n.bg-orange-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FFF8F1 !important;\n  background-color: rgba(255, 248, 241, var(--bg-opacity)) !important;\n}\n\n.bg-orange-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FEECDC !important;\n  background-color: rgba(254, 236, 220, var(--bg-opacity)) !important;\n}\n\n.bg-orange-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FCD9BD !important;\n  background-color: rgba(252, 217, 189, var(--bg-opacity)) !important;\n}\n\n.bg-orange-300 {\n  --bg-opacity: 1 !important;\n  background-color: #FDBA8C !important;\n  background-color: rgba(253, 186, 140, var(--bg-opacity)) !important;\n}\n\n.bg-orange-400 {\n  --bg-opacity: 1 !important;\n  background-color: #FF8A4C !important;\n  background-color: rgba(255, 138, 76, var(--bg-opacity)) !important;\n}\n\n.bg-orange-500 {\n  --bg-opacity: 1 !important;\n  background-color: #FF5A1F !important;\n  background-color: rgba(255, 90, 31, var(--bg-opacity)) !important;\n}\n\n.bg-orange-600 {\n  --bg-opacity: 1 !important;\n  background-color: #D03801 !important;\n  background-color: rgba(208, 56, 1, var(--bg-opacity)) !important;\n}\n\n.bg-orange-700 {\n  --bg-opacity: 1 !important;\n  background-color: #B43403 !important;\n  background-color: rgba(180, 52, 3, var(--bg-opacity)) !important;\n}\n\n.bg-orange-800 {\n  --bg-opacity: 1 !important;\n  background-color: #8A2C0D !important;\n  background-color: rgba(138, 44, 13, var(--bg-opacity)) !important;\n}\n\n.bg-orange-900 {\n  --bg-opacity: 1 !important;\n  background-color: #771D1D !important;\n  background-color: rgba(119, 29, 29, var(--bg-opacity)) !important;\n}\n\n.bg-orange {\n  --bg-opacity: 1 !important;\n  background-color: #FF5A1F !important;\n  background-color: rgba(255, 90, 31, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FDFDEA !important;\n  background-color: rgba(253, 253, 234, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FDF6B2 !important;\n  background-color: rgba(253, 246, 178, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FCE96A !important;\n  background-color: rgba(252, 233, 106, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-300 {\n  --bg-opacity: 1 !important;\n  background-color: #FACA15 !important;\n  background-color: rgba(250, 202, 21, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-400 {\n  --bg-opacity: 1 !important;\n  background-color: #E3A008 !important;\n  background-color: rgba(227, 160, 8, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-500 {\n  --bg-opacity: 1 !important;\n  background-color: #C27803 !important;\n  background-color: rgba(194, 120, 3, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-600 {\n  --bg-opacity: 1 !important;\n  background-color: #9F580A !important;\n  background-color: rgba(159, 88, 10, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-700 {\n  --bg-opacity: 1 !important;\n  background-color: #8E4B10 !important;\n  background-color: rgba(142, 75, 16, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-800 {\n  --bg-opacity: 1 !important;\n  background-color: #723B13 !important;\n  background-color: rgba(114, 59, 19, var(--bg-opacity)) !important;\n}\n\n.bg-yellow-900 {\n  --bg-opacity: 1 !important;\n  background-color: #633112 !important;\n  background-color: rgba(99, 49, 18, var(--bg-opacity)) !important;\n}\n\n.bg-yellow {\n  --bg-opacity: 1 !important;\n  background-color: #C27803 !important;\n  background-color: rgba(194, 120, 3, var(--bg-opacity)) !important;\n}\n\n.bg-green-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F3FAF7 !important;\n  background-color: rgba(243, 250, 247, var(--bg-opacity)) !important;\n}\n\n.bg-green-100 {\n  --bg-opacity: 1 !important;\n  background-color: #DEF7EC !important;\n  background-color: rgba(222, 247, 236, var(--bg-opacity)) !important;\n}\n\n.bg-green-200 {\n  --bg-opacity: 1 !important;\n  background-color: #BCF0DA !important;\n  background-color: rgba(188, 240, 218, var(--bg-opacity)) !important;\n}\n\n.bg-green-300 {\n  --bg-opacity: 1 !important;\n  background-color: #84E1BC !important;\n  background-color: rgba(132, 225, 188, var(--bg-opacity)) !important;\n}\n\n.bg-green-400 {\n  --bg-opacity: 1 !important;\n  background-color: #31C48D !important;\n  background-color: rgba(49, 196, 141, var(--bg-opacity)) !important;\n}\n\n.bg-green-500 {\n  --bg-opacity: 1 !important;\n  background-color: #0E9F6E !important;\n  background-color: rgba(14, 159, 110, var(--bg-opacity)) !important;\n}\n\n.bg-green-600 {\n  --bg-opacity: 1 !important;\n  background-color: #057A55 !important;\n  background-color: rgba(5, 122, 85, var(--bg-opacity)) !important;\n}\n\n.bg-green-700 {\n  --bg-opacity: 1 !important;\n  background-color: #046C4E !important;\n  background-color: rgba(4, 108, 78, var(--bg-opacity)) !important;\n}\n\n.bg-green-800 {\n  --bg-opacity: 1 !important;\n  background-color: #03543F !important;\n  background-color: rgba(3, 84, 63, var(--bg-opacity)) !important;\n}\n\n.bg-green-900 {\n  --bg-opacity: 1 !important;\n  background-color: #014737 !important;\n  background-color: rgba(1, 71, 55, var(--bg-opacity)) !important;\n}\n\n.bg-green {\n  --bg-opacity: 1 !important;\n  background-color: #0E9F6E !important;\n  background-color: rgba(14, 159, 110, var(--bg-opacity)) !important;\n}\n\n.bg-teal-50 {\n  --bg-opacity: 1 !important;\n  background-color: #EDFAFA !important;\n  background-color: rgba(237, 250, 250, var(--bg-opacity)) !important;\n}\n\n.bg-teal-100 {\n  --bg-opacity: 1 !important;\n  background-color: #D5F5F6 !important;\n  background-color: rgba(213, 245, 246, var(--bg-opacity)) !important;\n}\n\n.bg-teal-200 {\n  --bg-opacity: 1 !important;\n  background-color: #AFECEF !important;\n  background-color: rgba(175, 236, 239, var(--bg-opacity)) !important;\n}\n\n.bg-teal-300 {\n  --bg-opacity: 1 !important;\n  background-color: #7EDCE2 !important;\n  background-color: rgba(126, 220, 226, var(--bg-opacity)) !important;\n}\n\n.bg-teal-400 {\n  --bg-opacity: 1 !important;\n  background-color: #16BDCA !important;\n  background-color: rgba(22, 189, 202, var(--bg-opacity)) !important;\n}\n\n.bg-teal-500 {\n  --bg-opacity: 1 !important;\n  background-color: #0694A2 !important;\n  background-color: rgba(6, 148, 162, var(--bg-opacity)) !important;\n}\n\n.bg-teal-600 {\n  --bg-opacity: 1 !important;\n  background-color: #047481 !important;\n  background-color: rgba(4, 116, 129, var(--bg-opacity)) !important;\n}\n\n.bg-teal-700 {\n  --bg-opacity: 1 !important;\n  background-color: #036672 !important;\n  background-color: rgba(3, 102, 114, var(--bg-opacity)) !important;\n}\n\n.bg-teal-800 {\n  --bg-opacity: 1 !important;\n  background-color: #05505C !important;\n  background-color: rgba(5, 80, 92, var(--bg-opacity)) !important;\n}\n\n.bg-teal-900 {\n  --bg-opacity: 1 !important;\n  background-color: #014451 !important;\n  background-color: rgba(1, 68, 81, var(--bg-opacity)) !important;\n}\n\n.bg-teal {\n  --bg-opacity: 1 !important;\n  background-color: #0694A2 !important;\n  background-color: rgba(6, 148, 162, var(--bg-opacity)) !important;\n}\n\n.bg-blue-50 {\n  --bg-opacity: 1 !important;\n  background-color: #EBF5FF !important;\n  background-color: rgba(235, 245, 255, var(--bg-opacity)) !important;\n}\n\n.bg-blue-100 {\n  --bg-opacity: 1 !important;\n  background-color: #E1EFFE !important;\n  background-color: rgba(225, 239, 254, var(--bg-opacity)) !important;\n}\n\n.bg-blue-200 {\n  --bg-opacity: 1 !important;\n  background-color: #C3DDFD !important;\n  background-color: rgba(195, 221, 253, var(--bg-opacity)) !important;\n}\n\n.bg-blue-300 {\n  --bg-opacity: 1 !important;\n  background-color: #A4CAFE !important;\n  background-color: rgba(164, 202, 254, var(--bg-opacity)) !important;\n}\n\n.bg-blue-400 {\n  --bg-opacity: 1 !important;\n  background-color: #76A9FA !important;\n  background-color: rgba(118, 169, 250, var(--bg-opacity)) !important;\n}\n\n.bg-blue-500 {\n  --bg-opacity: 1 !important;\n  background-color: #3F83F8 !important;\n  background-color: rgba(63, 131, 248, var(--bg-opacity)) !important;\n}\n\n.bg-blue-600 {\n  --bg-opacity: 1 !important;\n  background-color: #1C64F2 !important;\n  background-color: rgba(28, 100, 242, var(--bg-opacity)) !important;\n}\n\n.bg-blue-700 {\n  --bg-opacity: 1 !important;\n  background-color: #1A56DB !important;\n  background-color: rgba(26, 86, 219, var(--bg-opacity)) !important;\n}\n\n.bg-blue-800 {\n  --bg-opacity: 1 !important;\n  background-color: #1E429F !important;\n  background-color: rgba(30, 66, 159, var(--bg-opacity)) !important;\n}\n\n.bg-blue-900 {\n  --bg-opacity: 1 !important;\n  background-color: #233876 !important;\n  background-color: rgba(35, 56, 118, var(--bg-opacity)) !important;\n}\n\n.bg-blue {\n  --bg-opacity: 1 !important;\n  background-color: #3F83F8 !important;\n  background-color: rgba(63, 131, 248, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F0F5FF !important;\n  background-color: rgba(240, 245, 255, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-100 {\n  --bg-opacity: 1 !important;\n  background-color: #E5EDFF !important;\n  background-color: rgba(229, 237, 255, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-200 {\n  --bg-opacity: 1 !important;\n  background-color: #CDDBFE !important;\n  background-color: rgba(205, 219, 254, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-300 {\n  --bg-opacity: 1 !important;\n  background-color: #B4C6FC !important;\n  background-color: rgba(180, 198, 252, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-400 {\n  --bg-opacity: 1 !important;\n  background-color: #8DA2FB !important;\n  background-color: rgba(141, 162, 251, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-500 {\n  --bg-opacity: 1 !important;\n  background-color: #6875F5 !important;\n  background-color: rgba(104, 117, 245, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-600 {\n  --bg-opacity: 1 !important;\n  background-color: #5850EC !important;\n  background-color: rgba(88, 80, 236, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-700 {\n  --bg-opacity: 1 !important;\n  background-color: #5145CD !important;\n  background-color: rgba(81, 69, 205, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-800 {\n  --bg-opacity: 1 !important;\n  background-color: #42389D !important;\n  background-color: rgba(66, 56, 157, var(--bg-opacity)) !important;\n}\n\n.bg-indigo-900 {\n  --bg-opacity: 1 !important;\n  background-color: #362F78 !important;\n  background-color: rgba(54, 47, 120, var(--bg-opacity)) !important;\n}\n\n.bg-indigo {\n  --bg-opacity: 1 !important;\n  background-color: #6875F5 !important;\n  background-color: rgba(104, 117, 245, var(--bg-opacity)) !important;\n}\n\n.bg-purple-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F6F5FF !important;\n  background-color: rgba(246, 245, 255, var(--bg-opacity)) !important;\n}\n\n.bg-purple-100 {\n  --bg-opacity: 1 !important;\n  background-color: #EDEBFE !important;\n  background-color: rgba(237, 235, 254, var(--bg-opacity)) !important;\n}\n\n.bg-purple-200 {\n  --bg-opacity: 1 !important;\n  background-color: #DCD7FE !important;\n  background-color: rgba(220, 215, 254, var(--bg-opacity)) !important;\n}\n\n.bg-purple-300 {\n  --bg-opacity: 1 !important;\n  background-color: #CABFFD !important;\n  background-color: rgba(202, 191, 253, var(--bg-opacity)) !important;\n}\n\n.bg-purple-400 {\n  --bg-opacity: 1 !important;\n  background-color: #AC94FA !important;\n  background-color: rgba(172, 148, 250, var(--bg-opacity)) !important;\n}\n\n.bg-purple-500 {\n  --bg-opacity: 1 !important;\n  background-color: #9061F9 !important;\n  background-color: rgba(144, 97, 249, var(--bg-opacity)) !important;\n}\n\n.bg-purple-600 {\n  --bg-opacity: 1 !important;\n  background-color: #7E3AF2 !important;\n  background-color: rgba(126, 58, 242, var(--bg-opacity)) !important;\n}\n\n.bg-purple-700 {\n  --bg-opacity: 1 !important;\n  background-color: #6C2BD9 !important;\n  background-color: rgba(108, 43, 217, var(--bg-opacity)) !important;\n}\n\n.bg-purple-800 {\n  --bg-opacity: 1 !important;\n  background-color: #5521B5 !important;\n  background-color: rgba(85, 33, 181, var(--bg-opacity)) !important;\n}\n\n.bg-purple-900 {\n  --bg-opacity: 1 !important;\n  background-color: #4A1D96 !important;\n  background-color: rgba(74, 29, 150, var(--bg-opacity)) !important;\n}\n\n.bg-purple {\n  --bg-opacity: 1 !important;\n  background-color: #9061F9 !important;\n  background-color: rgba(144, 97, 249, var(--bg-opacity)) !important;\n}\n\n.bg-pink-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FDF2F8 !important;\n  background-color: rgba(253, 242, 248, var(--bg-opacity)) !important;\n}\n\n.bg-pink-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FCE8F3 !important;\n  background-color: rgba(252, 232, 243, var(--bg-opacity)) !important;\n}\n\n.bg-pink-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FAD1E8 !important;\n  background-color: rgba(250, 209, 232, var(--bg-opacity)) !important;\n}\n\n.bg-pink-300 {\n  --bg-opacity: 1 !important;\n  background-color: #F8B4D9 !important;\n  background-color: rgba(248, 180, 217, var(--bg-opacity)) !important;\n}\n\n.bg-pink-400 {\n  --bg-opacity: 1 !important;\n  background-color: #F17EB8 !important;\n  background-color: rgba(241, 126, 184, var(--bg-opacity)) !important;\n}\n\n.bg-pink-500 {\n  --bg-opacity: 1 !important;\n  background-color: #E74694 !important;\n  background-color: rgba(231, 70, 148, var(--bg-opacity)) !important;\n}\n\n.bg-pink-600 {\n  --bg-opacity: 1 !important;\n  background-color: #D61F69 !important;\n  background-color: rgba(214, 31, 105, var(--bg-opacity)) !important;\n}\n\n.bg-pink-700 {\n  --bg-opacity: 1 !important;\n  background-color: #BF125D !important;\n  background-color: rgba(191, 18, 93, var(--bg-opacity)) !important;\n}\n\n.bg-pink-800 {\n  --bg-opacity: 1 !important;\n  background-color: #99154B !important;\n  background-color: rgba(153, 21, 75, var(--bg-opacity)) !important;\n}\n\n.bg-pink-900 {\n  --bg-opacity: 1 !important;\n  background-color: #751A3D !important;\n  background-color: rgba(117, 26, 61, var(--bg-opacity)) !important;\n}\n\n.bg-pink {\n  --bg-opacity: 1 !important;\n  background-color: #E74694 !important;\n  background-color: rgba(231, 70, 148, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-current, [class*=\"theme-dark\"] .dark\\:bg-current, [class*=\"theme-light\"].light\\:bg-current, [class*=\"theme-light\"] .light\\:bg-current {\n  background-color: currentColor !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-transparent, [class*=\"theme-dark\"] .dark\\:bg-transparent, [class*=\"theme-light\"].light\\:bg-transparent, [class*=\"theme-light\"] .light\\:bg-transparent {\n  background-color: transparent !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-white, [class*=\"theme-dark\"] .dark\\:bg-white, [class*=\"theme-light\"].light\\:bg-white, [class*=\"theme-light\"] .light\\:bg-white {\n  --bg-opacity: 1 !important;\n  background-color: #FFFFFF !important;\n  background-color: rgba(255, 255, 255, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-black, [class*=\"theme-dark\"] .dark\\:bg-black, [class*=\"theme-light\"].light\\:bg-black, [class*=\"theme-light\"] .light\\:bg-black {\n  --bg-opacity: 1 !important;\n  background-color: #000000 !important;\n  background-color: rgba(0, 0, 0, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-50, [class*=\"theme-dark\"] .dark\\:bg-gray-50, [class*=\"theme-light\"].light\\:bg-gray-50, [class*=\"theme-light\"] .light\\:bg-gray-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F9FAFB !important;\n  background-color: rgba(249, 250, 251, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-100, [class*=\"theme-dark\"] .dark\\:bg-gray-100, [class*=\"theme-light\"].light\\:bg-gray-100, [class*=\"theme-light\"] .light\\:bg-gray-100 {\n  --bg-opacity: 1 !important;\n  background-color: #F4F5F7 !important;\n  background-color: rgba(244, 245, 247, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-200, [class*=\"theme-dark\"] .dark\\:bg-gray-200, [class*=\"theme-light\"].light\\:bg-gray-200, [class*=\"theme-light\"] .light\\:bg-gray-200 {\n  --bg-opacity: 1 !important;\n  background-color: #E5E7EB !important;\n  background-color: rgba(229, 231, 235, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-300, [class*=\"theme-dark\"] .dark\\:bg-gray-300, [class*=\"theme-light\"].light\\:bg-gray-300, [class*=\"theme-light\"] .light\\:bg-gray-300 {\n  --bg-opacity: 1 !important;\n  background-color: #D2D6DC !important;\n  background-color: rgba(210, 214, 220, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-400, [class*=\"theme-dark\"] .dark\\:bg-gray-400, [class*=\"theme-light\"].light\\:bg-gray-400, [class*=\"theme-light\"] .light\\:bg-gray-400 {\n  --bg-opacity: 1 !important;\n  background-color: #9FA6B2 !important;\n  background-color: rgba(159, 166, 178, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-500, [class*=\"theme-dark\"] .dark\\:bg-gray-500, [class*=\"theme-light\"].light\\:bg-gray-500, [class*=\"theme-light\"] .light\\:bg-gray-500 {\n  --bg-opacity: 1 !important;\n  background-color: #6B7280 !important;\n  background-color: rgba(107, 114, 128, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-600, [class*=\"theme-dark\"] .dark\\:bg-gray-600, [class*=\"theme-light\"].light\\:bg-gray-600, [class*=\"theme-light\"] .light\\:bg-gray-600 {\n  --bg-opacity: 1 !important;\n  background-color: #4B5563 !important;\n  background-color: rgba(75, 85, 99, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-700, [class*=\"theme-dark\"] .dark\\:bg-gray-700, [class*=\"theme-light\"].light\\:bg-gray-700, [class*=\"theme-light\"] .light\\:bg-gray-700 {\n  --bg-opacity: 1 !important;\n  background-color: #374151 !important;\n  background-color: rgba(55, 65, 81, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-800, [class*=\"theme-dark\"] .dark\\:bg-gray-800, [class*=\"theme-light\"].light\\:bg-gray-800, [class*=\"theme-light\"] .light\\:bg-gray-800 {\n  --bg-opacity: 1 !important;\n  background-color: #252F3F !important;\n  background-color: rgba(37, 47, 63, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray-900, [class*=\"theme-dark\"] .dark\\:bg-gray-900, [class*=\"theme-light\"].light\\:bg-gray-900, [class*=\"theme-light\"] .light\\:bg-gray-900 {\n  --bg-opacity: 1 !important;\n  background-color: #161E2E !important;\n  background-color: rgba(22, 30, 46, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-gray, [class*=\"theme-dark\"] .dark\\:bg-gray, [class*=\"theme-light\"].light\\:bg-gray, [class*=\"theme-light\"] .light\\:bg-gray {\n  --bg-opacity: 1 !important;\n  background-color: #6B7280 !important;\n  background-color: rgba(107, 114, 128, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-50, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-50, [class*=\"theme-light\"].light\\:bg-cool-gray-50, [class*=\"theme-light\"] .light\\:bg-cool-gray-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FBFDFE !important;\n  background-color: rgba(251, 253, 254, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-100, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-100, [class*=\"theme-light\"].light\\:bg-cool-gray-100, [class*=\"theme-light\"] .light\\:bg-cool-gray-100 {\n  --bg-opacity: 1 !important;\n  background-color: #F1F5F9 !important;\n  background-color: rgba(241, 245, 249, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-200, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-200, [class*=\"theme-light\"].light\\:bg-cool-gray-200, [class*=\"theme-light\"] .light\\:bg-cool-gray-200 {\n  --bg-opacity: 1 !important;\n  background-color: #E2E8F0 !important;\n  background-color: rgba(226, 232, 240, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-300, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-300, [class*=\"theme-light\"].light\\:bg-cool-gray-300, [class*=\"theme-light\"] .light\\:bg-cool-gray-300 {\n  --bg-opacity: 1 !important;\n  background-color: #CFD8E3 !important;\n  background-color: rgba(207, 216, 227, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-400, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-400, [class*=\"theme-light\"].light\\:bg-cool-gray-400, [class*=\"theme-light\"] .light\\:bg-cool-gray-400 {\n  --bg-opacity: 1 !important;\n  background-color: #97A6BA !important;\n  background-color: rgba(151, 166, 186, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-500, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-500, [class*=\"theme-light\"].light\\:bg-cool-gray-500, [class*=\"theme-light\"] .light\\:bg-cool-gray-500 {\n  --bg-opacity: 1 !important;\n  background-color: #64748B !important;\n  background-color: rgba(100, 116, 139, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-600, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-600, [class*=\"theme-light\"].light\\:bg-cool-gray-600, [class*=\"theme-light\"] .light\\:bg-cool-gray-600 {\n  --bg-opacity: 1 !important;\n  background-color: #475569 !important;\n  background-color: rgba(71, 85, 105, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-700, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-700, [class*=\"theme-light\"].light\\:bg-cool-gray-700, [class*=\"theme-light\"] .light\\:bg-cool-gray-700 {\n  --bg-opacity: 1 !important;\n  background-color: #364152 !important;\n  background-color: rgba(54, 65, 82, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-800, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-800, [class*=\"theme-light\"].light\\:bg-cool-gray-800, [class*=\"theme-light\"] .light\\:bg-cool-gray-800 {\n  --bg-opacity: 1 !important;\n  background-color: #27303F !important;\n  background-color: rgba(39, 48, 63, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray-900, [class*=\"theme-dark\"] .dark\\:bg-cool-gray-900, [class*=\"theme-light\"].light\\:bg-cool-gray-900, [class*=\"theme-light\"] .light\\:bg-cool-gray-900 {\n  --bg-opacity: 1 !important;\n  background-color: #1A202E !important;\n  background-color: rgba(26, 32, 46, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-cool-gray, [class*=\"theme-dark\"] .dark\\:bg-cool-gray, [class*=\"theme-light\"].light\\:bg-cool-gray, [class*=\"theme-light\"] .light\\:bg-cool-gray {\n  --bg-opacity: 1 !important;\n  background-color: #64748B !important;\n  background-color: rgba(100, 116, 139, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-50, [class*=\"theme-dark\"] .dark\\:bg-red-50, [class*=\"theme-light\"].light\\:bg-red-50, [class*=\"theme-light\"] .light\\:bg-red-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FDF2F2 !important;\n  background-color: rgba(253, 242, 242, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-100, [class*=\"theme-dark\"] .dark\\:bg-red-100, [class*=\"theme-light\"].light\\:bg-red-100, [class*=\"theme-light\"] .light\\:bg-red-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FDE8E8 !important;\n  background-color: rgba(253, 232, 232, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-200, [class*=\"theme-dark\"] .dark\\:bg-red-200, [class*=\"theme-light\"].light\\:bg-red-200, [class*=\"theme-light\"] .light\\:bg-red-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FBD5D5 !important;\n  background-color: rgba(251, 213, 213, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-300, [class*=\"theme-dark\"] .dark\\:bg-red-300, [class*=\"theme-light\"].light\\:bg-red-300, [class*=\"theme-light\"] .light\\:bg-red-300 {\n  --bg-opacity: 1 !important;\n  background-color: #F8B4B4 !important;\n  background-color: rgba(248, 180, 180, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-400, [class*=\"theme-dark\"] .dark\\:bg-red-400, [class*=\"theme-light\"].light\\:bg-red-400, [class*=\"theme-light\"] .light\\:bg-red-400 {\n  --bg-opacity: 1 !important;\n  background-color: #F98080 !important;\n  background-color: rgba(249, 128, 128, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-500, [class*=\"theme-dark\"] .dark\\:bg-red-500, [class*=\"theme-light\"].light\\:bg-red-500, [class*=\"theme-light\"] .light\\:bg-red-500 {\n  --bg-opacity: 1 !important;\n  background-color: #F05252 !important;\n  background-color: rgba(240, 82, 82, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-600, [class*=\"theme-dark\"] .dark\\:bg-red-600, [class*=\"theme-light\"].light\\:bg-red-600, [class*=\"theme-light\"] .light\\:bg-red-600 {\n  --bg-opacity: 1 !important;\n  background-color: #E02424 !important;\n  background-color: rgba(224, 36, 36, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-700, [class*=\"theme-dark\"] .dark\\:bg-red-700, [class*=\"theme-light\"].light\\:bg-red-700, [class*=\"theme-light\"] .light\\:bg-red-700 {\n  --bg-opacity: 1 !important;\n  background-color: #C81E1E !important;\n  background-color: rgba(200, 30, 30, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-800, [class*=\"theme-dark\"] .dark\\:bg-red-800, [class*=\"theme-light\"].light\\:bg-red-800, [class*=\"theme-light\"] .light\\:bg-red-800 {\n  --bg-opacity: 1 !important;\n  background-color: #9B1C1C !important;\n  background-color: rgba(155, 28, 28, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red-900, [class*=\"theme-dark\"] .dark\\:bg-red-900, [class*=\"theme-light\"].light\\:bg-red-900, [class*=\"theme-light\"] .light\\:bg-red-900 {\n  --bg-opacity: 1 !important;\n  background-color: #771D1D !important;\n  background-color: rgba(119, 29, 29, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-red, [class*=\"theme-dark\"] .dark\\:bg-red, [class*=\"theme-light\"].light\\:bg-red, [class*=\"theme-light\"] .light\\:bg-red {\n  --bg-opacity: 1 !important;\n  background-color: #F05252 !important;\n  background-color: rgba(240, 82, 82, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-50, [class*=\"theme-dark\"] .dark\\:bg-orange-50, [class*=\"theme-light\"].light\\:bg-orange-50, [class*=\"theme-light\"] .light\\:bg-orange-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FFF8F1 !important;\n  background-color: rgba(255, 248, 241, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-100, [class*=\"theme-dark\"] .dark\\:bg-orange-100, [class*=\"theme-light\"].light\\:bg-orange-100, [class*=\"theme-light\"] .light\\:bg-orange-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FEECDC !important;\n  background-color: rgba(254, 236, 220, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-200, [class*=\"theme-dark\"] .dark\\:bg-orange-200, [class*=\"theme-light\"].light\\:bg-orange-200, [class*=\"theme-light\"] .light\\:bg-orange-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FCD9BD !important;\n  background-color: rgba(252, 217, 189, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-300, [class*=\"theme-dark\"] .dark\\:bg-orange-300, [class*=\"theme-light\"].light\\:bg-orange-300, [class*=\"theme-light\"] .light\\:bg-orange-300 {\n  --bg-opacity: 1 !important;\n  background-color: #FDBA8C !important;\n  background-color: rgba(253, 186, 140, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-400, [class*=\"theme-dark\"] .dark\\:bg-orange-400, [class*=\"theme-light\"].light\\:bg-orange-400, [class*=\"theme-light\"] .light\\:bg-orange-400 {\n  --bg-opacity: 1 !important;\n  background-color: #FF8A4C !important;\n  background-color: rgba(255, 138, 76, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-500, [class*=\"theme-dark\"] .dark\\:bg-orange-500, [class*=\"theme-light\"].light\\:bg-orange-500, [class*=\"theme-light\"] .light\\:bg-orange-500 {\n  --bg-opacity: 1 !important;\n  background-color: #FF5A1F !important;\n  background-color: rgba(255, 90, 31, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-600, [class*=\"theme-dark\"] .dark\\:bg-orange-600, [class*=\"theme-light\"].light\\:bg-orange-600, [class*=\"theme-light\"] .light\\:bg-orange-600 {\n  --bg-opacity: 1 !important;\n  background-color: #D03801 !important;\n  background-color: rgba(208, 56, 1, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-700, [class*=\"theme-dark\"] .dark\\:bg-orange-700, [class*=\"theme-light\"].light\\:bg-orange-700, [class*=\"theme-light\"] .light\\:bg-orange-700 {\n  --bg-opacity: 1 !important;\n  background-color: #B43403 !important;\n  background-color: rgba(180, 52, 3, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-800, [class*=\"theme-dark\"] .dark\\:bg-orange-800, [class*=\"theme-light\"].light\\:bg-orange-800, [class*=\"theme-light\"] .light\\:bg-orange-800 {\n  --bg-opacity: 1 !important;\n  background-color: #8A2C0D !important;\n  background-color: rgba(138, 44, 13, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange-900, [class*=\"theme-dark\"] .dark\\:bg-orange-900, [class*=\"theme-light\"].light\\:bg-orange-900, [class*=\"theme-light\"] .light\\:bg-orange-900 {\n  --bg-opacity: 1 !important;\n  background-color: #771D1D !important;\n  background-color: rgba(119, 29, 29, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-orange, [class*=\"theme-dark\"] .dark\\:bg-orange, [class*=\"theme-light\"].light\\:bg-orange, [class*=\"theme-light\"] .light\\:bg-orange {\n  --bg-opacity: 1 !important;\n  background-color: #FF5A1F !important;\n  background-color: rgba(255, 90, 31, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-50, [class*=\"theme-dark\"] .dark\\:bg-yellow-50, [class*=\"theme-light\"].light\\:bg-yellow-50, [class*=\"theme-light\"] .light\\:bg-yellow-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FDFDEA !important;\n  background-color: rgba(253, 253, 234, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-100, [class*=\"theme-dark\"] .dark\\:bg-yellow-100, [class*=\"theme-light\"].light\\:bg-yellow-100, [class*=\"theme-light\"] .light\\:bg-yellow-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FDF6B2 !important;\n  background-color: rgba(253, 246, 178, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-200, [class*=\"theme-dark\"] .dark\\:bg-yellow-200, [class*=\"theme-light\"].light\\:bg-yellow-200, [class*=\"theme-light\"] .light\\:bg-yellow-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FCE96A !important;\n  background-color: rgba(252, 233, 106, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-300, [class*=\"theme-dark\"] .dark\\:bg-yellow-300, [class*=\"theme-light\"].light\\:bg-yellow-300, [class*=\"theme-light\"] .light\\:bg-yellow-300 {\n  --bg-opacity: 1 !important;\n  background-color: #FACA15 !important;\n  background-color: rgba(250, 202, 21, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-400, [class*=\"theme-dark\"] .dark\\:bg-yellow-400, [class*=\"theme-light\"].light\\:bg-yellow-400, [class*=\"theme-light\"] .light\\:bg-yellow-400 {\n  --bg-opacity: 1 !important;\n  background-color: #E3A008 !important;\n  background-color: rgba(227, 160, 8, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-500, [class*=\"theme-dark\"] .dark\\:bg-yellow-500, [class*=\"theme-light\"].light\\:bg-yellow-500, [class*=\"theme-light\"] .light\\:bg-yellow-500 {\n  --bg-opacity: 1 !important;\n  background-color: #C27803 !important;\n  background-color: rgba(194, 120, 3, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-600, [class*=\"theme-dark\"] .dark\\:bg-yellow-600, [class*=\"theme-light\"].light\\:bg-yellow-600, [class*=\"theme-light\"] .light\\:bg-yellow-600 {\n  --bg-opacity: 1 !important;\n  background-color: #9F580A !important;\n  background-color: rgba(159, 88, 10, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-700, [class*=\"theme-dark\"] .dark\\:bg-yellow-700, [class*=\"theme-light\"].light\\:bg-yellow-700, [class*=\"theme-light\"] .light\\:bg-yellow-700 {\n  --bg-opacity: 1 !important;\n  background-color: #8E4B10 !important;\n  background-color: rgba(142, 75, 16, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-800, [class*=\"theme-dark\"] .dark\\:bg-yellow-800, [class*=\"theme-light\"].light\\:bg-yellow-800, [class*=\"theme-light\"] .light\\:bg-yellow-800 {\n  --bg-opacity: 1 !important;\n  background-color: #723B13 !important;\n  background-color: rgba(114, 59, 19, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow-900, [class*=\"theme-dark\"] .dark\\:bg-yellow-900, [class*=\"theme-light\"].light\\:bg-yellow-900, [class*=\"theme-light\"] .light\\:bg-yellow-900 {\n  --bg-opacity: 1 !important;\n  background-color: #633112 !important;\n  background-color: rgba(99, 49, 18, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-yellow, [class*=\"theme-dark\"] .dark\\:bg-yellow, [class*=\"theme-light\"].light\\:bg-yellow, [class*=\"theme-light\"] .light\\:bg-yellow {\n  --bg-opacity: 1 !important;\n  background-color: #C27803 !important;\n  background-color: rgba(194, 120, 3, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-50, [class*=\"theme-dark\"] .dark\\:bg-green-50, [class*=\"theme-light\"].light\\:bg-green-50, [class*=\"theme-light\"] .light\\:bg-green-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F3FAF7 !important;\n  background-color: rgba(243, 250, 247, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-100, [class*=\"theme-dark\"] .dark\\:bg-green-100, [class*=\"theme-light\"].light\\:bg-green-100, [class*=\"theme-light\"] .light\\:bg-green-100 {\n  --bg-opacity: 1 !important;\n  background-color: #DEF7EC !important;\n  background-color: rgba(222, 247, 236, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-200, [class*=\"theme-dark\"] .dark\\:bg-green-200, [class*=\"theme-light\"].light\\:bg-green-200, [class*=\"theme-light\"] .light\\:bg-green-200 {\n  --bg-opacity: 1 !important;\n  background-color: #BCF0DA !important;\n  background-color: rgba(188, 240, 218, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-300, [class*=\"theme-dark\"] .dark\\:bg-green-300, [class*=\"theme-light\"].light\\:bg-green-300, [class*=\"theme-light\"] .light\\:bg-green-300 {\n  --bg-opacity: 1 !important;\n  background-color: #84E1BC !important;\n  background-color: rgba(132, 225, 188, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-400, [class*=\"theme-dark\"] .dark\\:bg-green-400, [class*=\"theme-light\"].light\\:bg-green-400, [class*=\"theme-light\"] .light\\:bg-green-400 {\n  --bg-opacity: 1 !important;\n  background-color: #31C48D !important;\n  background-color: rgba(49, 196, 141, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-500, [class*=\"theme-dark\"] .dark\\:bg-green-500, [class*=\"theme-light\"].light\\:bg-green-500, [class*=\"theme-light\"] .light\\:bg-green-500 {\n  --bg-opacity: 1 !important;\n  background-color: #0E9F6E !important;\n  background-color: rgba(14, 159, 110, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-600, [class*=\"theme-dark\"] .dark\\:bg-green-600, [class*=\"theme-light\"].light\\:bg-green-600, [class*=\"theme-light\"] .light\\:bg-green-600 {\n  --bg-opacity: 1 !important;\n  background-color: #057A55 !important;\n  background-color: rgba(5, 122, 85, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-700, [class*=\"theme-dark\"] .dark\\:bg-green-700, [class*=\"theme-light\"].light\\:bg-green-700, [class*=\"theme-light\"] .light\\:bg-green-700 {\n  --bg-opacity: 1 !important;\n  background-color: #046C4E !important;\n  background-color: rgba(4, 108, 78, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-800, [class*=\"theme-dark\"] .dark\\:bg-green-800, [class*=\"theme-light\"].light\\:bg-green-800, [class*=\"theme-light\"] .light\\:bg-green-800 {\n  --bg-opacity: 1 !important;\n  background-color: #03543F !important;\n  background-color: rgba(3, 84, 63, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green-900, [class*=\"theme-dark\"] .dark\\:bg-green-900, [class*=\"theme-light\"].light\\:bg-green-900, [class*=\"theme-light\"] .light\\:bg-green-900 {\n  --bg-opacity: 1 !important;\n  background-color: #014737 !important;\n  background-color: rgba(1, 71, 55, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-green, [class*=\"theme-dark\"] .dark\\:bg-green, [class*=\"theme-light\"].light\\:bg-green, [class*=\"theme-light\"] .light\\:bg-green {\n  --bg-opacity: 1 !important;\n  background-color: #0E9F6E !important;\n  background-color: rgba(14, 159, 110, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-50, [class*=\"theme-dark\"] .dark\\:bg-teal-50, [class*=\"theme-light\"].light\\:bg-teal-50, [class*=\"theme-light\"] .light\\:bg-teal-50 {\n  --bg-opacity: 1 !important;\n  background-color: #EDFAFA !important;\n  background-color: rgba(237, 250, 250, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-100, [class*=\"theme-dark\"] .dark\\:bg-teal-100, [class*=\"theme-light\"].light\\:bg-teal-100, [class*=\"theme-light\"] .light\\:bg-teal-100 {\n  --bg-opacity: 1 !important;\n  background-color: #D5F5F6 !important;\n  background-color: rgba(213, 245, 246, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-200, [class*=\"theme-dark\"] .dark\\:bg-teal-200, [class*=\"theme-light\"].light\\:bg-teal-200, [class*=\"theme-light\"] .light\\:bg-teal-200 {\n  --bg-opacity: 1 !important;\n  background-color: #AFECEF !important;\n  background-color: rgba(175, 236, 239, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-300, [class*=\"theme-dark\"] .dark\\:bg-teal-300, [class*=\"theme-light\"].light\\:bg-teal-300, [class*=\"theme-light\"] .light\\:bg-teal-300 {\n  --bg-opacity: 1 !important;\n  background-color: #7EDCE2 !important;\n  background-color: rgba(126, 220, 226, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-400, [class*=\"theme-dark\"] .dark\\:bg-teal-400, [class*=\"theme-light\"].light\\:bg-teal-400, [class*=\"theme-light\"] .light\\:bg-teal-400 {\n  --bg-opacity: 1 !important;\n  background-color: #16BDCA !important;\n  background-color: rgba(22, 189, 202, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-500, [class*=\"theme-dark\"] .dark\\:bg-teal-500, [class*=\"theme-light\"].light\\:bg-teal-500, [class*=\"theme-light\"] .light\\:bg-teal-500 {\n  --bg-opacity: 1 !important;\n  background-color: #0694A2 !important;\n  background-color: rgba(6, 148, 162, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-600, [class*=\"theme-dark\"] .dark\\:bg-teal-600, [class*=\"theme-light\"].light\\:bg-teal-600, [class*=\"theme-light\"] .light\\:bg-teal-600 {\n  --bg-opacity: 1 !important;\n  background-color: #047481 !important;\n  background-color: rgba(4, 116, 129, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-700, [class*=\"theme-dark\"] .dark\\:bg-teal-700, [class*=\"theme-light\"].light\\:bg-teal-700, [class*=\"theme-light\"] .light\\:bg-teal-700 {\n  --bg-opacity: 1 !important;\n  background-color: #036672 !important;\n  background-color: rgba(3, 102, 114, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-800, [class*=\"theme-dark\"] .dark\\:bg-teal-800, [class*=\"theme-light\"].light\\:bg-teal-800, [class*=\"theme-light\"] .light\\:bg-teal-800 {\n  --bg-opacity: 1 !important;\n  background-color: #05505C !important;\n  background-color: rgba(5, 80, 92, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal-900, [class*=\"theme-dark\"] .dark\\:bg-teal-900, [class*=\"theme-light\"].light\\:bg-teal-900, [class*=\"theme-light\"] .light\\:bg-teal-900 {\n  --bg-opacity: 1 !important;\n  background-color: #014451 !important;\n  background-color: rgba(1, 68, 81, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-teal, [class*=\"theme-dark\"] .dark\\:bg-teal, [class*=\"theme-light\"].light\\:bg-teal, [class*=\"theme-light\"] .light\\:bg-teal {\n  --bg-opacity: 1 !important;\n  background-color: #0694A2 !important;\n  background-color: rgba(6, 148, 162, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-50, [class*=\"theme-dark\"] .dark\\:bg-blue-50, [class*=\"theme-light\"].light\\:bg-blue-50, [class*=\"theme-light\"] .light\\:bg-blue-50 {\n  --bg-opacity: 1 !important;\n  background-color: #EBF5FF !important;\n  background-color: rgba(235, 245, 255, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-100, [class*=\"theme-dark\"] .dark\\:bg-blue-100, [class*=\"theme-light\"].light\\:bg-blue-100, [class*=\"theme-light\"] .light\\:bg-blue-100 {\n  --bg-opacity: 1 !important;\n  background-color: #E1EFFE !important;\n  background-color: rgba(225, 239, 254, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-200, [class*=\"theme-dark\"] .dark\\:bg-blue-200, [class*=\"theme-light\"].light\\:bg-blue-200, [class*=\"theme-light\"] .light\\:bg-blue-200 {\n  --bg-opacity: 1 !important;\n  background-color: #C3DDFD !important;\n  background-color: rgba(195, 221, 253, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-300, [class*=\"theme-dark\"] .dark\\:bg-blue-300, [class*=\"theme-light\"].light\\:bg-blue-300, [class*=\"theme-light\"] .light\\:bg-blue-300 {\n  --bg-opacity: 1 !important;\n  background-color: #A4CAFE !important;\n  background-color: rgba(164, 202, 254, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-400, [class*=\"theme-dark\"] .dark\\:bg-blue-400, [class*=\"theme-light\"].light\\:bg-blue-400, [class*=\"theme-light\"] .light\\:bg-blue-400 {\n  --bg-opacity: 1 !important;\n  background-color: #76A9FA !important;\n  background-color: rgba(118, 169, 250, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-500, [class*=\"theme-dark\"] .dark\\:bg-blue-500, [class*=\"theme-light\"].light\\:bg-blue-500, [class*=\"theme-light\"] .light\\:bg-blue-500 {\n  --bg-opacity: 1 !important;\n  background-color: #3F83F8 !important;\n  background-color: rgba(63, 131, 248, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-600, [class*=\"theme-dark\"] .dark\\:bg-blue-600, [class*=\"theme-light\"].light\\:bg-blue-600, [class*=\"theme-light\"] .light\\:bg-blue-600 {\n  --bg-opacity: 1 !important;\n  background-color: #1C64F2 !important;\n  background-color: rgba(28, 100, 242, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-700, [class*=\"theme-dark\"] .dark\\:bg-blue-700, [class*=\"theme-light\"].light\\:bg-blue-700, [class*=\"theme-light\"] .light\\:bg-blue-700 {\n  --bg-opacity: 1 !important;\n  background-color: #1A56DB !important;\n  background-color: rgba(26, 86, 219, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-800, [class*=\"theme-dark\"] .dark\\:bg-blue-800, [class*=\"theme-light\"].light\\:bg-blue-800, [class*=\"theme-light\"] .light\\:bg-blue-800 {\n  --bg-opacity: 1 !important;\n  background-color: #1E429F !important;\n  background-color: rgba(30, 66, 159, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue-900, [class*=\"theme-dark\"] .dark\\:bg-blue-900, [class*=\"theme-light\"].light\\:bg-blue-900, [class*=\"theme-light\"] .light\\:bg-blue-900 {\n  --bg-opacity: 1 !important;\n  background-color: #233876 !important;\n  background-color: rgba(35, 56, 118, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-blue, [class*=\"theme-dark\"] .dark\\:bg-blue, [class*=\"theme-light\"].light\\:bg-blue, [class*=\"theme-light\"] .light\\:bg-blue {\n  --bg-opacity: 1 !important;\n  background-color: #3F83F8 !important;\n  background-color: rgba(63, 131, 248, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-50, [class*=\"theme-dark\"] .dark\\:bg-indigo-50, [class*=\"theme-light\"].light\\:bg-indigo-50, [class*=\"theme-light\"] .light\\:bg-indigo-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F0F5FF !important;\n  background-color: rgba(240, 245, 255, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-100, [class*=\"theme-dark\"] .dark\\:bg-indigo-100, [class*=\"theme-light\"].light\\:bg-indigo-100, [class*=\"theme-light\"] .light\\:bg-indigo-100 {\n  --bg-opacity: 1 !important;\n  background-color: #E5EDFF !important;\n  background-color: rgba(229, 237, 255, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-200, [class*=\"theme-dark\"] .dark\\:bg-indigo-200, [class*=\"theme-light\"].light\\:bg-indigo-200, [class*=\"theme-light\"] .light\\:bg-indigo-200 {\n  --bg-opacity: 1 !important;\n  background-color: #CDDBFE !important;\n  background-color: rgba(205, 219, 254, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-300, [class*=\"theme-dark\"] .dark\\:bg-indigo-300, [class*=\"theme-light\"].light\\:bg-indigo-300, [class*=\"theme-light\"] .light\\:bg-indigo-300 {\n  --bg-opacity: 1 !important;\n  background-color: #B4C6FC !important;\n  background-color: rgba(180, 198, 252, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-400, [class*=\"theme-dark\"] .dark\\:bg-indigo-400, [class*=\"theme-light\"].light\\:bg-indigo-400, [class*=\"theme-light\"] .light\\:bg-indigo-400 {\n  --bg-opacity: 1 !important;\n  background-color: #8DA2FB !important;\n  background-color: rgba(141, 162, 251, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-500, [class*=\"theme-dark\"] .dark\\:bg-indigo-500, [class*=\"theme-light\"].light\\:bg-indigo-500, [class*=\"theme-light\"] .light\\:bg-indigo-500 {\n  --bg-opacity: 1 !important;\n  background-color: #6875F5 !important;\n  background-color: rgba(104, 117, 245, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-600, [class*=\"theme-dark\"] .dark\\:bg-indigo-600, [class*=\"theme-light\"].light\\:bg-indigo-600, [class*=\"theme-light\"] .light\\:bg-indigo-600 {\n  --bg-opacity: 1 !important;\n  background-color: #5850EC !important;\n  background-color: rgba(88, 80, 236, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-700, [class*=\"theme-dark\"] .dark\\:bg-indigo-700, [class*=\"theme-light\"].light\\:bg-indigo-700, [class*=\"theme-light\"] .light\\:bg-indigo-700 {\n  --bg-opacity: 1 !important;\n  background-color: #5145CD !important;\n  background-color: rgba(81, 69, 205, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-800, [class*=\"theme-dark\"] .dark\\:bg-indigo-800, [class*=\"theme-light\"].light\\:bg-indigo-800, [class*=\"theme-light\"] .light\\:bg-indigo-800 {\n  --bg-opacity: 1 !important;\n  background-color: #42389D !important;\n  background-color: rgba(66, 56, 157, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo-900, [class*=\"theme-dark\"] .dark\\:bg-indigo-900, [class*=\"theme-light\"].light\\:bg-indigo-900, [class*=\"theme-light\"] .light\\:bg-indigo-900 {\n  --bg-opacity: 1 !important;\n  background-color: #362F78 !important;\n  background-color: rgba(54, 47, 120, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-indigo, [class*=\"theme-dark\"] .dark\\:bg-indigo, [class*=\"theme-light\"].light\\:bg-indigo, [class*=\"theme-light\"] .light\\:bg-indigo {\n  --bg-opacity: 1 !important;\n  background-color: #6875F5 !important;\n  background-color: rgba(104, 117, 245, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-50, [class*=\"theme-dark\"] .dark\\:bg-purple-50, [class*=\"theme-light\"].light\\:bg-purple-50, [class*=\"theme-light\"] .light\\:bg-purple-50 {\n  --bg-opacity: 1 !important;\n  background-color: #F6F5FF !important;\n  background-color: rgba(246, 245, 255, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-100, [class*=\"theme-dark\"] .dark\\:bg-purple-100, [class*=\"theme-light\"].light\\:bg-purple-100, [class*=\"theme-light\"] .light\\:bg-purple-100 {\n  --bg-opacity: 1 !important;\n  background-color: #EDEBFE !important;\n  background-color: rgba(237, 235, 254, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-200, [class*=\"theme-dark\"] .dark\\:bg-purple-200, [class*=\"theme-light\"].light\\:bg-purple-200, [class*=\"theme-light\"] .light\\:bg-purple-200 {\n  --bg-opacity: 1 !important;\n  background-color: #DCD7FE !important;\n  background-color: rgba(220, 215, 254, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-300, [class*=\"theme-dark\"] .dark\\:bg-purple-300, [class*=\"theme-light\"].light\\:bg-purple-300, [class*=\"theme-light\"] .light\\:bg-purple-300 {\n  --bg-opacity: 1 !important;\n  background-color: #CABFFD !important;\n  background-color: rgba(202, 191, 253, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-400, [class*=\"theme-dark\"] .dark\\:bg-purple-400, [class*=\"theme-light\"].light\\:bg-purple-400, [class*=\"theme-light\"] .light\\:bg-purple-400 {\n  --bg-opacity: 1 !important;\n  background-color: #AC94FA !important;\n  background-color: rgba(172, 148, 250, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-500, [class*=\"theme-dark\"] .dark\\:bg-purple-500, [class*=\"theme-light\"].light\\:bg-purple-500, [class*=\"theme-light\"] .light\\:bg-purple-500 {\n  --bg-opacity: 1 !important;\n  background-color: #9061F9 !important;\n  background-color: rgba(144, 97, 249, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-600, [class*=\"theme-dark\"] .dark\\:bg-purple-600, [class*=\"theme-light\"].light\\:bg-purple-600, [class*=\"theme-light\"] .light\\:bg-purple-600 {\n  --bg-opacity: 1 !important;\n  background-color: #7E3AF2 !important;\n  background-color: rgba(126, 58, 242, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-700, [class*=\"theme-dark\"] .dark\\:bg-purple-700, [class*=\"theme-light\"].light\\:bg-purple-700, [class*=\"theme-light\"] .light\\:bg-purple-700 {\n  --bg-opacity: 1 !important;\n  background-color: #6C2BD9 !important;\n  background-color: rgba(108, 43, 217, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-800, [class*=\"theme-dark\"] .dark\\:bg-purple-800, [class*=\"theme-light\"].light\\:bg-purple-800, [class*=\"theme-light\"] .light\\:bg-purple-800 {\n  --bg-opacity: 1 !important;\n  background-color: #5521B5 !important;\n  background-color: rgba(85, 33, 181, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple-900, [class*=\"theme-dark\"] .dark\\:bg-purple-900, [class*=\"theme-light\"].light\\:bg-purple-900, [class*=\"theme-light\"] .light\\:bg-purple-900 {\n  --bg-opacity: 1 !important;\n  background-color: #4A1D96 !important;\n  background-color: rgba(74, 29, 150, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-purple, [class*=\"theme-dark\"] .dark\\:bg-purple, [class*=\"theme-light\"].light\\:bg-purple, [class*=\"theme-light\"] .light\\:bg-purple {\n  --bg-opacity: 1 !important;\n  background-color: #9061F9 !important;\n  background-color: rgba(144, 97, 249, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-50, [class*=\"theme-dark\"] .dark\\:bg-pink-50, [class*=\"theme-light\"].light\\:bg-pink-50, [class*=\"theme-light\"] .light\\:bg-pink-50 {\n  --bg-opacity: 1 !important;\n  background-color: #FDF2F8 !important;\n  background-color: rgba(253, 242, 248, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-100, [class*=\"theme-dark\"] .dark\\:bg-pink-100, [class*=\"theme-light\"].light\\:bg-pink-100, [class*=\"theme-light\"] .light\\:bg-pink-100 {\n  --bg-opacity: 1 !important;\n  background-color: #FCE8F3 !important;\n  background-color: rgba(252, 232, 243, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-200, [class*=\"theme-dark\"] .dark\\:bg-pink-200, [class*=\"theme-light\"].light\\:bg-pink-200, [class*=\"theme-light\"] .light\\:bg-pink-200 {\n  --bg-opacity: 1 !important;\n  background-color: #FAD1E8 !important;\n  background-color: rgba(250, 209, 232, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-300, [class*=\"theme-dark\"] .dark\\:bg-pink-300, [class*=\"theme-light\"].light\\:bg-pink-300, [class*=\"theme-light\"] .light\\:bg-pink-300 {\n  --bg-opacity: 1 !important;\n  background-color: #F8B4D9 !important;\n  background-color: rgba(248, 180, 217, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-400, [class*=\"theme-dark\"] .dark\\:bg-pink-400, [class*=\"theme-light\"].light\\:bg-pink-400, [class*=\"theme-light\"] .light\\:bg-pink-400 {\n  --bg-opacity: 1 !important;\n  background-color: #F17EB8 !important;\n  background-color: rgba(241, 126, 184, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-500, [class*=\"theme-dark\"] .dark\\:bg-pink-500, [class*=\"theme-light\"].light\\:bg-pink-500, [class*=\"theme-light\"] .light\\:bg-pink-500 {\n  --bg-opacity: 1 !important;\n  background-color: #E74694 !important;\n  background-color: rgba(231, 70, 148, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-600, [class*=\"theme-dark\"] .dark\\:bg-pink-600, [class*=\"theme-light\"].light\\:bg-pink-600, [class*=\"theme-light\"] .light\\:bg-pink-600 {\n  --bg-opacity: 1 !important;\n  background-color: #D61F69 !important;\n  background-color: rgba(214, 31, 105, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-700, [class*=\"theme-dark\"] .dark\\:bg-pink-700, [class*=\"theme-light\"].light\\:bg-pink-700, [class*=\"theme-light\"] .light\\:bg-pink-700 {\n  --bg-opacity: 1 !important;\n  background-color: #BF125D !important;\n  background-color: rgba(191, 18, 93, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-800, [class*=\"theme-dark\"] .dark\\:bg-pink-800, [class*=\"theme-light\"].light\\:bg-pink-800, [class*=\"theme-light\"] .light\\:bg-pink-800 {\n  --bg-opacity: 1 !important;\n  background-color: #99154B !important;\n  background-color: rgba(153, 21, 75, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink-900, [class*=\"theme-dark\"] .dark\\:bg-pink-900, [class*=\"theme-light\"].light\\:bg-pink-900, [class*=\"theme-light\"] .light\\:bg-pink-900 {\n  --bg-opacity: 1 !important;\n  background-color: #751A3D !important;\n  background-color: rgba(117, 26, 61, var(--bg-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:bg-pink, [class*=\"theme-dark\"] .dark\\:bg-pink, [class*=\"theme-light\"].light\\:bg-pink, [class*=\"theme-light\"] .light\\:bg-pink {\n  --bg-opacity: 1 !important;\n  background-color: #E74694 !important;\n  background-color: rgba(231, 70, 148, var(--bg-opacity)) !important;\n}\n\n.bg-opacity-0 {\n  --bg-opacity: 0 !important;\n}\n\n.bg-opacity-12 {\n  --bg-opacity: 0.12 !important;\n}\n\n.bg-opacity-25 {\n  --bg-opacity: 0.25 !important;\n}\n\n.bg-opacity-38 {\n  --bg-opacity: 0.38 !important;\n}\n\n.bg-opacity-50 {\n  --bg-opacity: 0.5 !important;\n}\n\n.bg-opacity-54 {\n  --bg-opacity: 0.54 !important;\n}\n\n.bg-opacity-70 {\n  --bg-opacity: 0.70 !important;\n}\n\n.bg-opacity-75 {\n  --bg-opacity: 0.75 !important;\n}\n\n.bg-opacity-84 {\n  --bg-opacity: 0.84 !important;\n}\n\n.bg-opacity-100 {\n  --bg-opacity: 1 !important;\n}\n\n.hover\\:bg-opacity-0:hover {\n  --bg-opacity: 0 !important;\n}\n\n.hover\\:bg-opacity-12:hover {\n  --bg-opacity: 0.12 !important;\n}\n\n.hover\\:bg-opacity-25:hover {\n  --bg-opacity: 0.25 !important;\n}\n\n.hover\\:bg-opacity-38:hover {\n  --bg-opacity: 0.38 !important;\n}\n\n.hover\\:bg-opacity-50:hover {\n  --bg-opacity: 0.5 !important;\n}\n\n.hover\\:bg-opacity-54:hover {\n  --bg-opacity: 0.54 !important;\n}\n\n.hover\\:bg-opacity-70:hover {\n  --bg-opacity: 0.70 !important;\n}\n\n.hover\\:bg-opacity-75:hover {\n  --bg-opacity: 0.75 !important;\n}\n\n.hover\\:bg-opacity-84:hover {\n  --bg-opacity: 0.84 !important;\n}\n\n.hover\\:bg-opacity-100:hover {\n  --bg-opacity: 1 !important;\n}\n\n.focus\\:bg-opacity-0:focus {\n  --bg-opacity: 0 !important;\n}\n\n.focus\\:bg-opacity-12:focus {\n  --bg-opacity: 0.12 !important;\n}\n\n.focus\\:bg-opacity-25:focus {\n  --bg-opacity: 0.25 !important;\n}\n\n.focus\\:bg-opacity-38:focus {\n  --bg-opacity: 0.38 !important;\n}\n\n.focus\\:bg-opacity-50:focus {\n  --bg-opacity: 0.5 !important;\n}\n\n.focus\\:bg-opacity-54:focus {\n  --bg-opacity: 0.54 !important;\n}\n\n.focus\\:bg-opacity-70:focus {\n  --bg-opacity: 0.70 !important;\n}\n\n.focus\\:bg-opacity-75:focus {\n  --bg-opacity: 0.75 !important;\n}\n\n.focus\\:bg-opacity-84:focus {\n  --bg-opacity: 0.84 !important;\n}\n\n.focus\\:bg-opacity-100:focus {\n  --bg-opacity: 1 !important;\n}\n\n.bg-bottom {\n  background-position: bottom !important;\n}\n\n.bg-center {\n  background-position: center !important;\n}\n\n.bg-left {\n  background-position: left !important;\n}\n\n.bg-left-bottom {\n  background-position: left bottom !important;\n}\n\n.bg-left-top {\n  background-position: left top !important;\n}\n\n.bg-right {\n  background-position: right !important;\n}\n\n.bg-right-bottom {\n  background-position: right bottom !important;\n}\n\n.bg-right-top {\n  background-position: right top !important;\n}\n\n.bg-top {\n  background-position: top !important;\n}\n\n.bg-repeat {\n  background-repeat: repeat !important;\n}\n\n.bg-no-repeat {\n  background-repeat: no-repeat !important;\n}\n\n.bg-repeat-x {\n  background-repeat: repeat-x !important;\n}\n\n.bg-repeat-y {\n  background-repeat: repeat-y !important;\n}\n\n.bg-repeat-round {\n  background-repeat: round !important;\n}\n\n.bg-repeat-space {\n  background-repeat: space !important;\n}\n\n.bg-auto {\n  background-size: auto !important;\n}\n\n.bg-cover {\n  background-size: cover !important;\n}\n\n.bg-contain {\n  background-size: contain !important;\n}\n\n.border-collapse {\n  border-collapse: collapse !important;\n}\n\n.border-separate {\n  border-collapse: separate !important;\n}\n\n.border-current {\n  border-color: currentColor !important;\n}\n\n.border-transparent {\n  border-color: transparent !important;\n}\n\n.border-white {\n  --border-opacity: 1 !important;\n  border-color: #FFFFFF !important;\n  border-color: rgba(255, 255, 255, var(--border-opacity)) !important;\n}\n\n.border-black {\n  --border-opacity: 1 !important;\n  border-color: #000000 !important;\n  border-color: rgba(0, 0, 0, var(--border-opacity)) !important;\n}\n\n.border-gray-50 {\n  --border-opacity: 1 !important;\n  border-color: #F9FAFB !important;\n  border-color: rgba(249, 250, 251, var(--border-opacity)) !important;\n}\n\n.border-gray-100 {\n  --border-opacity: 1 !important;\n  border-color: #F4F5F7 !important;\n  border-color: rgba(244, 245, 247, var(--border-opacity)) !important;\n}\n\n.border-gray-200 {\n  --border-opacity: 1 !important;\n  border-color: #E5E7EB !important;\n  border-color: rgba(229, 231, 235, var(--border-opacity)) !important;\n}\n\n.border-gray-300 {\n  --border-opacity: 1 !important;\n  border-color: #D2D6DC !important;\n  border-color: rgba(210, 214, 220, var(--border-opacity)) !important;\n}\n\n.border-gray-400 {\n  --border-opacity: 1 !important;\n  border-color: #9FA6B2 !important;\n  border-color: rgba(159, 166, 178, var(--border-opacity)) !important;\n}\n\n.border-gray-500 {\n  --border-opacity: 1 !important;\n  border-color: #6B7280 !important;\n  border-color: rgba(107, 114, 128, var(--border-opacity)) !important;\n}\n\n.border-gray-600 {\n  --border-opacity: 1 !important;\n  border-color: #4B5563 !important;\n  border-color: rgba(75, 85, 99, var(--border-opacity)) !important;\n}\n\n.border-gray-700 {\n  --border-opacity: 1 !important;\n  border-color: #374151 !important;\n  border-color: rgba(55, 65, 81, var(--border-opacity)) !important;\n}\n\n.border-gray-800 {\n  --border-opacity: 1 !important;\n  border-color: #252F3F !important;\n  border-color: rgba(37, 47, 63, var(--border-opacity)) !important;\n}\n\n.border-gray-900 {\n  --border-opacity: 1 !important;\n  border-color: #161E2E !important;\n  border-color: rgba(22, 30, 46, var(--border-opacity)) !important;\n}\n\n.border-gray {\n  --border-opacity: 1 !important;\n  border-color: #6B7280 !important;\n  border-color: rgba(107, 114, 128, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-50 {\n  --border-opacity: 1 !important;\n  border-color: #FBFDFE !important;\n  border-color: rgba(251, 253, 254, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-100 {\n  --border-opacity: 1 !important;\n  border-color: #F1F5F9 !important;\n  border-color: rgba(241, 245, 249, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-200 {\n  --border-opacity: 1 !important;\n  border-color: #E2E8F0 !important;\n  border-color: rgba(226, 232, 240, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-300 {\n  --border-opacity: 1 !important;\n  border-color: #CFD8E3 !important;\n  border-color: rgba(207, 216, 227, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-400 {\n  --border-opacity: 1 !important;\n  border-color: #97A6BA !important;\n  border-color: rgba(151, 166, 186, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-500 {\n  --border-opacity: 1 !important;\n  border-color: #64748B !important;\n  border-color: rgba(100, 116, 139, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-600 {\n  --border-opacity: 1 !important;\n  border-color: #475569 !important;\n  border-color: rgba(71, 85, 105, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-700 {\n  --border-opacity: 1 !important;\n  border-color: #364152 !important;\n  border-color: rgba(54, 65, 82, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-800 {\n  --border-opacity: 1 !important;\n  border-color: #27303F !important;\n  border-color: rgba(39, 48, 63, var(--border-opacity)) !important;\n}\n\n.border-cool-gray-900 {\n  --border-opacity: 1 !important;\n  border-color: #1A202E !important;\n  border-color: rgba(26, 32, 46, var(--border-opacity)) !important;\n}\n\n.border-cool-gray {\n  --border-opacity: 1 !important;\n  border-color: #64748B !important;\n  border-color: rgba(100, 116, 139, var(--border-opacity)) !important;\n}\n\n.border-red-50 {\n  --border-opacity: 1 !important;\n  border-color: #FDF2F2 !important;\n  border-color: rgba(253, 242, 242, var(--border-opacity)) !important;\n}\n\n.border-red-100 {\n  --border-opacity: 1 !important;\n  border-color: #FDE8E8 !important;\n  border-color: rgba(253, 232, 232, var(--border-opacity)) !important;\n}\n\n.border-red-200 {\n  --border-opacity: 1 !important;\n  border-color: #FBD5D5 !important;\n  border-color: rgba(251, 213, 213, var(--border-opacity)) !important;\n}\n\n.border-red-300 {\n  --border-opacity: 1 !important;\n  border-color: #F8B4B4 !important;\n  border-color: rgba(248, 180, 180, var(--border-opacity)) !important;\n}\n\n.border-red-400 {\n  --border-opacity: 1 !important;\n  border-color: #F98080 !important;\n  border-color: rgba(249, 128, 128, var(--border-opacity)) !important;\n}\n\n.border-red-500 {\n  --border-opacity: 1 !important;\n  border-color: #F05252 !important;\n  border-color: rgba(240, 82, 82, var(--border-opacity)) !important;\n}\n\n.border-red-600 {\n  --border-opacity: 1 !important;\n  border-color: #E02424 !important;\n  border-color: rgba(224, 36, 36, var(--border-opacity)) !important;\n}\n\n.border-red-700 {\n  --border-opacity: 1 !important;\n  border-color: #C81E1E !important;\n  border-color: rgba(200, 30, 30, var(--border-opacity)) !important;\n}\n\n.border-red-800 {\n  --border-opacity: 1 !important;\n  border-color: #9B1C1C !important;\n  border-color: rgba(155, 28, 28, var(--border-opacity)) !important;\n}\n\n.border-red-900 {\n  --border-opacity: 1 !important;\n  border-color: #771D1D !important;\n  border-color: rgba(119, 29, 29, var(--border-opacity)) !important;\n}\n\n.border-red {\n  --border-opacity: 1 !important;\n  border-color: #F05252 !important;\n  border-color: rgba(240, 82, 82, var(--border-opacity)) !important;\n}\n\n.border-orange-50 {\n  --border-opacity: 1 !important;\n  border-color: #FFF8F1 !important;\n  border-color: rgba(255, 248, 241, var(--border-opacity)) !important;\n}\n\n.border-orange-100 {\n  --border-opacity: 1 !important;\n  border-color: #FEECDC !important;\n  border-color: rgba(254, 236, 220, var(--border-opacity)) !important;\n}\n\n.border-orange-200 {\n  --border-opacity: 1 !important;\n  border-color: #FCD9BD !important;\n  border-color: rgba(252, 217, 189, var(--border-opacity)) !important;\n}\n\n.border-orange-300 {\n  --border-opacity: 1 !important;\n  border-color: #FDBA8C !important;\n  border-color: rgba(253, 186, 140, var(--border-opacity)) !important;\n}\n\n.border-orange-400 {\n  --border-opacity: 1 !important;\n  border-color: #FF8A4C !important;\n  border-color: rgba(255, 138, 76, var(--border-opacity)) !important;\n}\n\n.border-orange-500 {\n  --border-opacity: 1 !important;\n  border-color: #FF5A1F !important;\n  border-color: rgba(255, 90, 31, var(--border-opacity)) !important;\n}\n\n.border-orange-600 {\n  --border-opacity: 1 !important;\n  border-color: #D03801 !important;\n  border-color: rgba(208, 56, 1, var(--border-opacity)) !important;\n}\n\n.border-orange-700 {\n  --border-opacity: 1 !important;\n  border-color: #B43403 !important;\n  border-color: rgba(180, 52, 3, var(--border-opacity)) !important;\n}\n\n.border-orange-800 {\n  --border-opacity: 1 !important;\n  border-color: #8A2C0D !important;\n  border-color: rgba(138, 44, 13, var(--border-opacity)) !important;\n}\n\n.border-orange-900 {\n  --border-opacity: 1 !important;\n  border-color: #771D1D !important;\n  border-color: rgba(119, 29, 29, var(--border-opacity)) !important;\n}\n\n.border-orange {\n  --border-opacity: 1 !important;\n  border-color: #FF5A1F !important;\n  border-color: rgba(255, 90, 31, var(--border-opacity)) !important;\n}\n\n.border-yellow-50 {\n  --border-opacity: 1 !important;\n  border-color: #FDFDEA !important;\n  border-color: rgba(253, 253, 234, var(--border-opacity)) !important;\n}\n\n.border-yellow-100 {\n  --border-opacity: 1 !important;\n  border-color: #FDF6B2 !important;\n  border-color: rgba(253, 246, 178, var(--border-opacity)) !important;\n}\n\n.border-yellow-200 {\n  --border-opacity: 1 !important;\n  border-color: #FCE96A !important;\n  border-color: rgba(252, 233, 106, var(--border-opacity)) !important;\n}\n\n.border-yellow-300 {\n  --border-opacity: 1 !important;\n  border-color: #FACA15 !important;\n  border-color: rgba(250, 202, 21, var(--border-opacity)) !important;\n}\n\n.border-yellow-400 {\n  --border-opacity: 1 !important;\n  border-color: #E3A008 !important;\n  border-color: rgba(227, 160, 8, var(--border-opacity)) !important;\n}\n\n.border-yellow-500 {\n  --border-opacity: 1 !important;\n  border-color: #C27803 !important;\n  border-color: rgba(194, 120, 3, var(--border-opacity)) !important;\n}\n\n.border-yellow-600 {\n  --border-opacity: 1 !important;\n  border-color: #9F580A !important;\n  border-color: rgba(159, 88, 10, var(--border-opacity)) !important;\n}\n\n.border-yellow-700 {\n  --border-opacity: 1 !important;\n  border-color: #8E4B10 !important;\n  border-color: rgba(142, 75, 16, var(--border-opacity)) !important;\n}\n\n.border-yellow-800 {\n  --border-opacity: 1 !important;\n  border-color: #723B13 !important;\n  border-color: rgba(114, 59, 19, var(--border-opacity)) !important;\n}\n\n.border-yellow-900 {\n  --border-opacity: 1 !important;\n  border-color: #633112 !important;\n  border-color: rgba(99, 49, 18, var(--border-opacity)) !important;\n}\n\n.border-yellow {\n  --border-opacity: 1 !important;\n  border-color: #C27803 !important;\n  border-color: rgba(194, 120, 3, var(--border-opacity)) !important;\n}\n\n.border-green-50 {\n  --border-opacity: 1 !important;\n  border-color: #F3FAF7 !important;\n  border-color: rgba(243, 250, 247, var(--border-opacity)) !important;\n}\n\n.border-green-100 {\n  --border-opacity: 1 !important;\n  border-color: #DEF7EC !important;\n  border-color: rgba(222, 247, 236, var(--border-opacity)) !important;\n}\n\n.border-green-200 {\n  --border-opacity: 1 !important;\n  border-color: #BCF0DA !important;\n  border-color: rgba(188, 240, 218, var(--border-opacity)) !important;\n}\n\n.border-green-300 {\n  --border-opacity: 1 !important;\n  border-color: #84E1BC !important;\n  border-color: rgba(132, 225, 188, var(--border-opacity)) !important;\n}\n\n.border-green-400 {\n  --border-opacity: 1 !important;\n  border-color: #31C48D !important;\n  border-color: rgba(49, 196, 141, var(--border-opacity)) !important;\n}\n\n.border-green-500 {\n  --border-opacity: 1 !important;\n  border-color: #0E9F6E !important;\n  border-color: rgba(14, 159, 110, var(--border-opacity)) !important;\n}\n\n.border-green-600 {\n  --border-opacity: 1 !important;\n  border-color: #057A55 !important;\n  border-color: rgba(5, 122, 85, var(--border-opacity)) !important;\n}\n\n.border-green-700 {\n  --border-opacity: 1 !important;\n  border-color: #046C4E !important;\n  border-color: rgba(4, 108, 78, var(--border-opacity)) !important;\n}\n\n.border-green-800 {\n  --border-opacity: 1 !important;\n  border-color: #03543F !important;\n  border-color: rgba(3, 84, 63, var(--border-opacity)) !important;\n}\n\n.border-green-900 {\n  --border-opacity: 1 !important;\n  border-color: #014737 !important;\n  border-color: rgba(1, 71, 55, var(--border-opacity)) !important;\n}\n\n.border-green {\n  --border-opacity: 1 !important;\n  border-color: #0E9F6E !important;\n  border-color: rgba(14, 159, 110, var(--border-opacity)) !important;\n}\n\n.border-teal-50 {\n  --border-opacity: 1 !important;\n  border-color: #EDFAFA !important;\n  border-color: rgba(237, 250, 250, var(--border-opacity)) !important;\n}\n\n.border-teal-100 {\n  --border-opacity: 1 !important;\n  border-color: #D5F5F6 !important;\n  border-color: rgba(213, 245, 246, var(--border-opacity)) !important;\n}\n\n.border-teal-200 {\n  --border-opacity: 1 !important;\n  border-color: #AFECEF !important;\n  border-color: rgba(175, 236, 239, var(--border-opacity)) !important;\n}\n\n.border-teal-300 {\n  --border-opacity: 1 !important;\n  border-color: #7EDCE2 !important;\n  border-color: rgba(126, 220, 226, var(--border-opacity)) !important;\n}\n\n.border-teal-400 {\n  --border-opacity: 1 !important;\n  border-color: #16BDCA !important;\n  border-color: rgba(22, 189, 202, var(--border-opacity)) !important;\n}\n\n.border-teal-500 {\n  --border-opacity: 1 !important;\n  border-color: #0694A2 !important;\n  border-color: rgba(6, 148, 162, var(--border-opacity)) !important;\n}\n\n.border-teal-600 {\n  --border-opacity: 1 !important;\n  border-color: #047481 !important;\n  border-color: rgba(4, 116, 129, var(--border-opacity)) !important;\n}\n\n.border-teal-700 {\n  --border-opacity: 1 !important;\n  border-color: #036672 !important;\n  border-color: rgba(3, 102, 114, var(--border-opacity)) !important;\n}\n\n.border-teal-800 {\n  --border-opacity: 1 !important;\n  border-color: #05505C !important;\n  border-color: rgba(5, 80, 92, var(--border-opacity)) !important;\n}\n\n.border-teal-900 {\n  --border-opacity: 1 !important;\n  border-color: #014451 !important;\n  border-color: rgba(1, 68, 81, var(--border-opacity)) !important;\n}\n\n.border-teal {\n  --border-opacity: 1 !important;\n  border-color: #0694A2 !important;\n  border-color: rgba(6, 148, 162, var(--border-opacity)) !important;\n}\n\n.border-blue-50 {\n  --border-opacity: 1 !important;\n  border-color: #EBF5FF !important;\n  border-color: rgba(235, 245, 255, var(--border-opacity)) !important;\n}\n\n.border-blue-100 {\n  --border-opacity: 1 !important;\n  border-color: #E1EFFE !important;\n  border-color: rgba(225, 239, 254, var(--border-opacity)) !important;\n}\n\n.border-blue-200 {\n  --border-opacity: 1 !important;\n  border-color: #C3DDFD !important;\n  border-color: rgba(195, 221, 253, var(--border-opacity)) !important;\n}\n\n.border-blue-300 {\n  --border-opacity: 1 !important;\n  border-color: #A4CAFE !important;\n  border-color: rgba(164, 202, 254, var(--border-opacity)) !important;\n}\n\n.border-blue-400 {\n  --border-opacity: 1 !important;\n  border-color: #76A9FA !important;\n  border-color: rgba(118, 169, 250, var(--border-opacity)) !important;\n}\n\n.border-blue-500 {\n  --border-opacity: 1 !important;\n  border-color: #3F83F8 !important;\n  border-color: rgba(63, 131, 248, var(--border-opacity)) !important;\n}\n\n.border-blue-600 {\n  --border-opacity: 1 !important;\n  border-color: #1C64F2 !important;\n  border-color: rgba(28, 100, 242, var(--border-opacity)) !important;\n}\n\n.border-blue-700 {\n  --border-opacity: 1 !important;\n  border-color: #1A56DB !important;\n  border-color: rgba(26, 86, 219, var(--border-opacity)) !important;\n}\n\n.border-blue-800 {\n  --border-opacity: 1 !important;\n  border-color: #1E429F !important;\n  border-color: rgba(30, 66, 159, var(--border-opacity)) !important;\n}\n\n.border-blue-900 {\n  --border-opacity: 1 !important;\n  border-color: #233876 !important;\n  border-color: rgba(35, 56, 118, var(--border-opacity)) !important;\n}\n\n.border-blue {\n  --border-opacity: 1 !important;\n  border-color: #3F83F8 !important;\n  border-color: rgba(63, 131, 248, var(--border-opacity)) !important;\n}\n\n.border-indigo-50 {\n  --border-opacity: 1 !important;\n  border-color: #F0F5FF !important;\n  border-color: rgba(240, 245, 255, var(--border-opacity)) !important;\n}\n\n.border-indigo-100 {\n  --border-opacity: 1 !important;\n  border-color: #E5EDFF !important;\n  border-color: rgba(229, 237, 255, var(--border-opacity)) !important;\n}\n\n.border-indigo-200 {\n  --border-opacity: 1 !important;\n  border-color: #CDDBFE !important;\n  border-color: rgba(205, 219, 254, var(--border-opacity)) !important;\n}\n\n.border-indigo-300 {\n  --border-opacity: 1 !important;\n  border-color: #B4C6FC !important;\n  border-color: rgba(180, 198, 252, var(--border-opacity)) !important;\n}\n\n.border-indigo-400 {\n  --border-opacity: 1 !important;\n  border-color: #8DA2FB !important;\n  border-color: rgba(141, 162, 251, var(--border-opacity)) !important;\n}\n\n.border-indigo-500 {\n  --border-opacity: 1 !important;\n  border-color: #6875F5 !important;\n  border-color: rgba(104, 117, 245, var(--border-opacity)) !important;\n}\n\n.border-indigo-600 {\n  --border-opacity: 1 !important;\n  border-color: #5850EC !important;\n  border-color: rgba(88, 80, 236, var(--border-opacity)) !important;\n}\n\n.border-indigo-700 {\n  --border-opacity: 1 !important;\n  border-color: #5145CD !important;\n  border-color: rgba(81, 69, 205, var(--border-opacity)) !important;\n}\n\n.border-indigo-800 {\n  --border-opacity: 1 !important;\n  border-color: #42389D !important;\n  border-color: rgba(66, 56, 157, var(--border-opacity)) !important;\n}\n\n.border-indigo-900 {\n  --border-opacity: 1 !important;\n  border-color: #362F78 !important;\n  border-color: rgba(54, 47, 120, var(--border-opacity)) !important;\n}\n\n.border-indigo {\n  --border-opacity: 1 !important;\n  border-color: #6875F5 !important;\n  border-color: rgba(104, 117, 245, var(--border-opacity)) !important;\n}\n\n.border-purple-50 {\n  --border-opacity: 1 !important;\n  border-color: #F6F5FF !important;\n  border-color: rgba(246, 245, 255, var(--border-opacity)) !important;\n}\n\n.border-purple-100 {\n  --border-opacity: 1 !important;\n  border-color: #EDEBFE !important;\n  border-color: rgba(237, 235, 254, var(--border-opacity)) !important;\n}\n\n.border-purple-200 {\n  --border-opacity: 1 !important;\n  border-color: #DCD7FE !important;\n  border-color: rgba(220, 215, 254, var(--border-opacity)) !important;\n}\n\n.border-purple-300 {\n  --border-opacity: 1 !important;\n  border-color: #CABFFD !important;\n  border-color: rgba(202, 191, 253, var(--border-opacity)) !important;\n}\n\n.border-purple-400 {\n  --border-opacity: 1 !important;\n  border-color: #AC94FA !important;\n  border-color: rgba(172, 148, 250, var(--border-opacity)) !important;\n}\n\n.border-purple-500 {\n  --border-opacity: 1 !important;\n  border-color: #9061F9 !important;\n  border-color: rgba(144, 97, 249, var(--border-opacity)) !important;\n}\n\n.border-purple-600 {\n  --border-opacity: 1 !important;\n  border-color: #7E3AF2 !important;\n  border-color: rgba(126, 58, 242, var(--border-opacity)) !important;\n}\n\n.border-purple-700 {\n  --border-opacity: 1 !important;\n  border-color: #6C2BD9 !important;\n  border-color: rgba(108, 43, 217, var(--border-opacity)) !important;\n}\n\n.border-purple-800 {\n  --border-opacity: 1 !important;\n  border-color: #5521B5 !important;\n  border-color: rgba(85, 33, 181, var(--border-opacity)) !important;\n}\n\n.border-purple-900 {\n  --border-opacity: 1 !important;\n  border-color: #4A1D96 !important;\n  border-color: rgba(74, 29, 150, var(--border-opacity)) !important;\n}\n\n.border-purple {\n  --border-opacity: 1 !important;\n  border-color: #9061F9 !important;\n  border-color: rgba(144, 97, 249, var(--border-opacity)) !important;\n}\n\n.border-pink-50 {\n  --border-opacity: 1 !important;\n  border-color: #FDF2F8 !important;\n  border-color: rgba(253, 242, 248, var(--border-opacity)) !important;\n}\n\n.border-pink-100 {\n  --border-opacity: 1 !important;\n  border-color: #FCE8F3 !important;\n  border-color: rgba(252, 232, 243, var(--border-opacity)) !important;\n}\n\n.border-pink-200 {\n  --border-opacity: 1 !important;\n  border-color: #FAD1E8 !important;\n  border-color: rgba(250, 209, 232, var(--border-opacity)) !important;\n}\n\n.border-pink-300 {\n  --border-opacity: 1 !important;\n  border-color: #F8B4D9 !important;\n  border-color: rgba(248, 180, 217, var(--border-opacity)) !important;\n}\n\n.border-pink-400 {\n  --border-opacity: 1 !important;\n  border-color: #F17EB8 !important;\n  border-color: rgba(241, 126, 184, var(--border-opacity)) !important;\n}\n\n.border-pink-500 {\n  --border-opacity: 1 !important;\n  border-color: #E74694 !important;\n  border-color: rgba(231, 70, 148, var(--border-opacity)) !important;\n}\n\n.border-pink-600 {\n  --border-opacity: 1 !important;\n  border-color: #D61F69 !important;\n  border-color: rgba(214, 31, 105, var(--border-opacity)) !important;\n}\n\n.border-pink-700 {\n  --border-opacity: 1 !important;\n  border-color: #BF125D !important;\n  border-color: rgba(191, 18, 93, var(--border-opacity)) !important;\n}\n\n.border-pink-800 {\n  --border-opacity: 1 !important;\n  border-color: #99154B !important;\n  border-color: rgba(153, 21, 75, var(--border-opacity)) !important;\n}\n\n.border-pink-900 {\n  --border-opacity: 1 !important;\n  border-color: #751A3D !important;\n  border-color: rgba(117, 26, 61, var(--border-opacity)) !important;\n}\n\n.border-pink {\n  --border-opacity: 1 !important;\n  border-color: #E74694 !important;\n  border-color: rgba(231, 70, 148, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-current, [class*=\"theme-dark\"] .dark\\:border-current, [class*=\"theme-light\"].light\\:border-current, [class*=\"theme-light\"] .light\\:border-current {\n  border-color: currentColor !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-transparent, [class*=\"theme-dark\"] .dark\\:border-transparent, [class*=\"theme-light\"].light\\:border-transparent, [class*=\"theme-light\"] .light\\:border-transparent {\n  border-color: transparent !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-white, [class*=\"theme-dark\"] .dark\\:border-white, [class*=\"theme-light\"].light\\:border-white, [class*=\"theme-light\"] .light\\:border-white {\n  --border-opacity: 1 !important;\n  border-color: #FFFFFF !important;\n  border-color: rgba(255, 255, 255, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-black, [class*=\"theme-dark\"] .dark\\:border-black, [class*=\"theme-light\"].light\\:border-black, [class*=\"theme-light\"] .light\\:border-black {\n  --border-opacity: 1 !important;\n  border-color: #000000 !important;\n  border-color: rgba(0, 0, 0, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-50, [class*=\"theme-dark\"] .dark\\:border-gray-50, [class*=\"theme-light\"].light\\:border-gray-50, [class*=\"theme-light\"] .light\\:border-gray-50 {\n  --border-opacity: 1 !important;\n  border-color: #F9FAFB !important;\n  border-color: rgba(249, 250, 251, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-100, [class*=\"theme-dark\"] .dark\\:border-gray-100, [class*=\"theme-light\"].light\\:border-gray-100, [class*=\"theme-light\"] .light\\:border-gray-100 {\n  --border-opacity: 1 !important;\n  border-color: #F4F5F7 !important;\n  border-color: rgba(244, 245, 247, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-200, [class*=\"theme-dark\"] .dark\\:border-gray-200, [class*=\"theme-light\"].light\\:border-gray-200, [class*=\"theme-light\"] .light\\:border-gray-200 {\n  --border-opacity: 1 !important;\n  border-color: #E5E7EB !important;\n  border-color: rgba(229, 231, 235, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-300, [class*=\"theme-dark\"] .dark\\:border-gray-300, [class*=\"theme-light\"].light\\:border-gray-300, [class*=\"theme-light\"] .light\\:border-gray-300 {\n  --border-opacity: 1 !important;\n  border-color: #D2D6DC !important;\n  border-color: rgba(210, 214, 220, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-400, [class*=\"theme-dark\"] .dark\\:border-gray-400, [class*=\"theme-light\"].light\\:border-gray-400, [class*=\"theme-light\"] .light\\:border-gray-400 {\n  --border-opacity: 1 !important;\n  border-color: #9FA6B2 !important;\n  border-color: rgba(159, 166, 178, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-500, [class*=\"theme-dark\"] .dark\\:border-gray-500, [class*=\"theme-light\"].light\\:border-gray-500, [class*=\"theme-light\"] .light\\:border-gray-500 {\n  --border-opacity: 1 !important;\n  border-color: #6B7280 !important;\n  border-color: rgba(107, 114, 128, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-600, [class*=\"theme-dark\"] .dark\\:border-gray-600, [class*=\"theme-light\"].light\\:border-gray-600, [class*=\"theme-light\"] .light\\:border-gray-600 {\n  --border-opacity: 1 !important;\n  border-color: #4B5563 !important;\n  border-color: rgba(75, 85, 99, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-700, [class*=\"theme-dark\"] .dark\\:border-gray-700, [class*=\"theme-light\"].light\\:border-gray-700, [class*=\"theme-light\"] .light\\:border-gray-700 {\n  --border-opacity: 1 !important;\n  border-color: #374151 !important;\n  border-color: rgba(55, 65, 81, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-800, [class*=\"theme-dark\"] .dark\\:border-gray-800, [class*=\"theme-light\"].light\\:border-gray-800, [class*=\"theme-light\"] .light\\:border-gray-800 {\n  --border-opacity: 1 !important;\n  border-color: #252F3F !important;\n  border-color: rgba(37, 47, 63, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray-900, [class*=\"theme-dark\"] .dark\\:border-gray-900, [class*=\"theme-light\"].light\\:border-gray-900, [class*=\"theme-light\"] .light\\:border-gray-900 {\n  --border-opacity: 1 !important;\n  border-color: #161E2E !important;\n  border-color: rgba(22, 30, 46, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-gray, [class*=\"theme-dark\"] .dark\\:border-gray, [class*=\"theme-light\"].light\\:border-gray, [class*=\"theme-light\"] .light\\:border-gray {\n  --border-opacity: 1 !important;\n  border-color: #6B7280 !important;\n  border-color: rgba(107, 114, 128, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-50, [class*=\"theme-dark\"] .dark\\:border-cool-gray-50, [class*=\"theme-light\"].light\\:border-cool-gray-50, [class*=\"theme-light\"] .light\\:border-cool-gray-50 {\n  --border-opacity: 1 !important;\n  border-color: #FBFDFE !important;\n  border-color: rgba(251, 253, 254, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-100, [class*=\"theme-dark\"] .dark\\:border-cool-gray-100, [class*=\"theme-light\"].light\\:border-cool-gray-100, [class*=\"theme-light\"] .light\\:border-cool-gray-100 {\n  --border-opacity: 1 !important;\n  border-color: #F1F5F9 !important;\n  border-color: rgba(241, 245, 249, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-200, [class*=\"theme-dark\"] .dark\\:border-cool-gray-200, [class*=\"theme-light\"].light\\:border-cool-gray-200, [class*=\"theme-light\"] .light\\:border-cool-gray-200 {\n  --border-opacity: 1 !important;\n  border-color: #E2E8F0 !important;\n  border-color: rgba(226, 232, 240, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-300, [class*=\"theme-dark\"] .dark\\:border-cool-gray-300, [class*=\"theme-light\"].light\\:border-cool-gray-300, [class*=\"theme-light\"] .light\\:border-cool-gray-300 {\n  --border-opacity: 1 !important;\n  border-color: #CFD8E3 !important;\n  border-color: rgba(207, 216, 227, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-400, [class*=\"theme-dark\"] .dark\\:border-cool-gray-400, [class*=\"theme-light\"].light\\:border-cool-gray-400, [class*=\"theme-light\"] .light\\:border-cool-gray-400 {\n  --border-opacity: 1 !important;\n  border-color: #97A6BA !important;\n  border-color: rgba(151, 166, 186, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-500, [class*=\"theme-dark\"] .dark\\:border-cool-gray-500, [class*=\"theme-light\"].light\\:border-cool-gray-500, [class*=\"theme-light\"] .light\\:border-cool-gray-500 {\n  --border-opacity: 1 !important;\n  border-color: #64748B !important;\n  border-color: rgba(100, 116, 139, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-600, [class*=\"theme-dark\"] .dark\\:border-cool-gray-600, [class*=\"theme-light\"].light\\:border-cool-gray-600, [class*=\"theme-light\"] .light\\:border-cool-gray-600 {\n  --border-opacity: 1 !important;\n  border-color: #475569 !important;\n  border-color: rgba(71, 85, 105, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-700, [class*=\"theme-dark\"] .dark\\:border-cool-gray-700, [class*=\"theme-light\"].light\\:border-cool-gray-700, [class*=\"theme-light\"] .light\\:border-cool-gray-700 {\n  --border-opacity: 1 !important;\n  border-color: #364152 !important;\n  border-color: rgba(54, 65, 82, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-800, [class*=\"theme-dark\"] .dark\\:border-cool-gray-800, [class*=\"theme-light\"].light\\:border-cool-gray-800, [class*=\"theme-light\"] .light\\:border-cool-gray-800 {\n  --border-opacity: 1 !important;\n  border-color: #27303F !important;\n  border-color: rgba(39, 48, 63, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray-900, [class*=\"theme-dark\"] .dark\\:border-cool-gray-900, [class*=\"theme-light\"].light\\:border-cool-gray-900, [class*=\"theme-light\"] .light\\:border-cool-gray-900 {\n  --border-opacity: 1 !important;\n  border-color: #1A202E !important;\n  border-color: rgba(26, 32, 46, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-cool-gray, [class*=\"theme-dark\"] .dark\\:border-cool-gray, [class*=\"theme-light\"].light\\:border-cool-gray, [class*=\"theme-light\"] .light\\:border-cool-gray {\n  --border-opacity: 1 !important;\n  border-color: #64748B !important;\n  border-color: rgba(100, 116, 139, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-50, [class*=\"theme-dark\"] .dark\\:border-red-50, [class*=\"theme-light\"].light\\:border-red-50, [class*=\"theme-light\"] .light\\:border-red-50 {\n  --border-opacity: 1 !important;\n  border-color: #FDF2F2 !important;\n  border-color: rgba(253, 242, 242, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-100, [class*=\"theme-dark\"] .dark\\:border-red-100, [class*=\"theme-light\"].light\\:border-red-100, [class*=\"theme-light\"] .light\\:border-red-100 {\n  --border-opacity: 1 !important;\n  border-color: #FDE8E8 !important;\n  border-color: rgba(253, 232, 232, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-200, [class*=\"theme-dark\"] .dark\\:border-red-200, [class*=\"theme-light\"].light\\:border-red-200, [class*=\"theme-light\"] .light\\:border-red-200 {\n  --border-opacity: 1 !important;\n  border-color: #FBD5D5 !important;\n  border-color: rgba(251, 213, 213, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-300, [class*=\"theme-dark\"] .dark\\:border-red-300, [class*=\"theme-light\"].light\\:border-red-300, [class*=\"theme-light\"] .light\\:border-red-300 {\n  --border-opacity: 1 !important;\n  border-color: #F8B4B4 !important;\n  border-color: rgba(248, 180, 180, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-400, [class*=\"theme-dark\"] .dark\\:border-red-400, [class*=\"theme-light\"].light\\:border-red-400, [class*=\"theme-light\"] .light\\:border-red-400 {\n  --border-opacity: 1 !important;\n  border-color: #F98080 !important;\n  border-color: rgba(249, 128, 128, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-500, [class*=\"theme-dark\"] .dark\\:border-red-500, [class*=\"theme-light\"].light\\:border-red-500, [class*=\"theme-light\"] .light\\:border-red-500 {\n  --border-opacity: 1 !important;\n  border-color: #F05252 !important;\n  border-color: rgba(240, 82, 82, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-600, [class*=\"theme-dark\"] .dark\\:border-red-600, [class*=\"theme-light\"].light\\:border-red-600, [class*=\"theme-light\"] .light\\:border-red-600 {\n  --border-opacity: 1 !important;\n  border-color: #E02424 !important;\n  border-color: rgba(224, 36, 36, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-700, [class*=\"theme-dark\"] .dark\\:border-red-700, [class*=\"theme-light\"].light\\:border-red-700, [class*=\"theme-light\"] .light\\:border-red-700 {\n  --border-opacity: 1 !important;\n  border-color: #C81E1E !important;\n  border-color: rgba(200, 30, 30, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-800, [class*=\"theme-dark\"] .dark\\:border-red-800, [class*=\"theme-light\"].light\\:border-red-800, [class*=\"theme-light\"] .light\\:border-red-800 {\n  --border-opacity: 1 !important;\n  border-color: #9B1C1C !important;\n  border-color: rgba(155, 28, 28, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red-900, [class*=\"theme-dark\"] .dark\\:border-red-900, [class*=\"theme-light\"].light\\:border-red-900, [class*=\"theme-light\"] .light\\:border-red-900 {\n  --border-opacity: 1 !important;\n  border-color: #771D1D !important;\n  border-color: rgba(119, 29, 29, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-red, [class*=\"theme-dark\"] .dark\\:border-red, [class*=\"theme-light\"].light\\:border-red, [class*=\"theme-light\"] .light\\:border-red {\n  --border-opacity: 1 !important;\n  border-color: #F05252 !important;\n  border-color: rgba(240, 82, 82, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-50, [class*=\"theme-dark\"] .dark\\:border-orange-50, [class*=\"theme-light\"].light\\:border-orange-50, [class*=\"theme-light\"] .light\\:border-orange-50 {\n  --border-opacity: 1 !important;\n  border-color: #FFF8F1 !important;\n  border-color: rgba(255, 248, 241, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-100, [class*=\"theme-dark\"] .dark\\:border-orange-100, [class*=\"theme-light\"].light\\:border-orange-100, [class*=\"theme-light\"] .light\\:border-orange-100 {\n  --border-opacity: 1 !important;\n  border-color: #FEECDC !important;\n  border-color: rgba(254, 236, 220, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-200, [class*=\"theme-dark\"] .dark\\:border-orange-200, [class*=\"theme-light\"].light\\:border-orange-200, [class*=\"theme-light\"] .light\\:border-orange-200 {\n  --border-opacity: 1 !important;\n  border-color: #FCD9BD !important;\n  border-color: rgba(252, 217, 189, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-300, [class*=\"theme-dark\"] .dark\\:border-orange-300, [class*=\"theme-light\"].light\\:border-orange-300, [class*=\"theme-light\"] .light\\:border-orange-300 {\n  --border-opacity: 1 !important;\n  border-color: #FDBA8C !important;\n  border-color: rgba(253, 186, 140, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-400, [class*=\"theme-dark\"] .dark\\:border-orange-400, [class*=\"theme-light\"].light\\:border-orange-400, [class*=\"theme-light\"] .light\\:border-orange-400 {\n  --border-opacity: 1 !important;\n  border-color: #FF8A4C !important;\n  border-color: rgba(255, 138, 76, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-500, [class*=\"theme-dark\"] .dark\\:border-orange-500, [class*=\"theme-light\"].light\\:border-orange-500, [class*=\"theme-light\"] .light\\:border-orange-500 {\n  --border-opacity: 1 !important;\n  border-color: #FF5A1F !important;\n  border-color: rgba(255, 90, 31, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-600, [class*=\"theme-dark\"] .dark\\:border-orange-600, [class*=\"theme-light\"].light\\:border-orange-600, [class*=\"theme-light\"] .light\\:border-orange-600 {\n  --border-opacity: 1 !important;\n  border-color: #D03801 !important;\n  border-color: rgba(208, 56, 1, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-700, [class*=\"theme-dark\"] .dark\\:border-orange-700, [class*=\"theme-light\"].light\\:border-orange-700, [class*=\"theme-light\"] .light\\:border-orange-700 {\n  --border-opacity: 1 !important;\n  border-color: #B43403 !important;\n  border-color: rgba(180, 52, 3, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-800, [class*=\"theme-dark\"] .dark\\:border-orange-800, [class*=\"theme-light\"].light\\:border-orange-800, [class*=\"theme-light\"] .light\\:border-orange-800 {\n  --border-opacity: 1 !important;\n  border-color: #8A2C0D !important;\n  border-color: rgba(138, 44, 13, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange-900, [class*=\"theme-dark\"] .dark\\:border-orange-900, [class*=\"theme-light\"].light\\:border-orange-900, [class*=\"theme-light\"] .light\\:border-orange-900 {\n  --border-opacity: 1 !important;\n  border-color: #771D1D !important;\n  border-color: rgba(119, 29, 29, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-orange, [class*=\"theme-dark\"] .dark\\:border-orange, [class*=\"theme-light\"].light\\:border-orange, [class*=\"theme-light\"] .light\\:border-orange {\n  --border-opacity: 1 !important;\n  border-color: #FF5A1F !important;\n  border-color: rgba(255, 90, 31, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-50, [class*=\"theme-dark\"] .dark\\:border-yellow-50, [class*=\"theme-light\"].light\\:border-yellow-50, [class*=\"theme-light\"] .light\\:border-yellow-50 {\n  --border-opacity: 1 !important;\n  border-color: #FDFDEA !important;\n  border-color: rgba(253, 253, 234, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-100, [class*=\"theme-dark\"] .dark\\:border-yellow-100, [class*=\"theme-light\"].light\\:border-yellow-100, [class*=\"theme-light\"] .light\\:border-yellow-100 {\n  --border-opacity: 1 !important;\n  border-color: #FDF6B2 !important;\n  border-color: rgba(253, 246, 178, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-200, [class*=\"theme-dark\"] .dark\\:border-yellow-200, [class*=\"theme-light\"].light\\:border-yellow-200, [class*=\"theme-light\"] .light\\:border-yellow-200 {\n  --border-opacity: 1 !important;\n  border-color: #FCE96A !important;\n  border-color: rgba(252, 233, 106, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-300, [class*=\"theme-dark\"] .dark\\:border-yellow-300, [class*=\"theme-light\"].light\\:border-yellow-300, [class*=\"theme-light\"] .light\\:border-yellow-300 {\n  --border-opacity: 1 !important;\n  border-color: #FACA15 !important;\n  border-color: rgba(250, 202, 21, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-400, [class*=\"theme-dark\"] .dark\\:border-yellow-400, [class*=\"theme-light\"].light\\:border-yellow-400, [class*=\"theme-light\"] .light\\:border-yellow-400 {\n  --border-opacity: 1 !important;\n  border-color: #E3A008 !important;\n  border-color: rgba(227, 160, 8, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-500, [class*=\"theme-dark\"] .dark\\:border-yellow-500, [class*=\"theme-light\"].light\\:border-yellow-500, [class*=\"theme-light\"] .light\\:border-yellow-500 {\n  --border-opacity: 1 !important;\n  border-color: #C27803 !important;\n  border-color: rgba(194, 120, 3, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-600, [class*=\"theme-dark\"] .dark\\:border-yellow-600, [class*=\"theme-light\"].light\\:border-yellow-600, [class*=\"theme-light\"] .light\\:border-yellow-600 {\n  --border-opacity: 1 !important;\n  border-color: #9F580A !important;\n  border-color: rgba(159, 88, 10, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-700, [class*=\"theme-dark\"] .dark\\:border-yellow-700, [class*=\"theme-light\"].light\\:border-yellow-700, [class*=\"theme-light\"] .light\\:border-yellow-700 {\n  --border-opacity: 1 !important;\n  border-color: #8E4B10 !important;\n  border-color: rgba(142, 75, 16, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-800, [class*=\"theme-dark\"] .dark\\:border-yellow-800, [class*=\"theme-light\"].light\\:border-yellow-800, [class*=\"theme-light\"] .light\\:border-yellow-800 {\n  --border-opacity: 1 !important;\n  border-color: #723B13 !important;\n  border-color: rgba(114, 59, 19, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow-900, [class*=\"theme-dark\"] .dark\\:border-yellow-900, [class*=\"theme-light\"].light\\:border-yellow-900, [class*=\"theme-light\"] .light\\:border-yellow-900 {\n  --border-opacity: 1 !important;\n  border-color: #633112 !important;\n  border-color: rgba(99, 49, 18, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-yellow, [class*=\"theme-dark\"] .dark\\:border-yellow, [class*=\"theme-light\"].light\\:border-yellow, [class*=\"theme-light\"] .light\\:border-yellow {\n  --border-opacity: 1 !important;\n  border-color: #C27803 !important;\n  border-color: rgba(194, 120, 3, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-50, [class*=\"theme-dark\"] .dark\\:border-green-50, [class*=\"theme-light\"].light\\:border-green-50, [class*=\"theme-light\"] .light\\:border-green-50 {\n  --border-opacity: 1 !important;\n  border-color: #F3FAF7 !important;\n  border-color: rgba(243, 250, 247, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-100, [class*=\"theme-dark\"] .dark\\:border-green-100, [class*=\"theme-light\"].light\\:border-green-100, [class*=\"theme-light\"] .light\\:border-green-100 {\n  --border-opacity: 1 !important;\n  border-color: #DEF7EC !important;\n  border-color: rgba(222, 247, 236, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-200, [class*=\"theme-dark\"] .dark\\:border-green-200, [class*=\"theme-light\"].light\\:border-green-200, [class*=\"theme-light\"] .light\\:border-green-200 {\n  --border-opacity: 1 !important;\n  border-color: #BCF0DA !important;\n  border-color: rgba(188, 240, 218, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-300, [class*=\"theme-dark\"] .dark\\:border-green-300, [class*=\"theme-light\"].light\\:border-green-300, [class*=\"theme-light\"] .light\\:border-green-300 {\n  --border-opacity: 1 !important;\n  border-color: #84E1BC !important;\n  border-color: rgba(132, 225, 188, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-400, [class*=\"theme-dark\"] .dark\\:border-green-400, [class*=\"theme-light\"].light\\:border-green-400, [class*=\"theme-light\"] .light\\:border-green-400 {\n  --border-opacity: 1 !important;\n  border-color: #31C48D !important;\n  border-color: rgba(49, 196, 141, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-500, [class*=\"theme-dark\"] .dark\\:border-green-500, [class*=\"theme-light\"].light\\:border-green-500, [class*=\"theme-light\"] .light\\:border-green-500 {\n  --border-opacity: 1 !important;\n  border-color: #0E9F6E !important;\n  border-color: rgba(14, 159, 110, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-600, [class*=\"theme-dark\"] .dark\\:border-green-600, [class*=\"theme-light\"].light\\:border-green-600, [class*=\"theme-light\"] .light\\:border-green-600 {\n  --border-opacity: 1 !important;\n  border-color: #057A55 !important;\n  border-color: rgba(5, 122, 85, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-700, [class*=\"theme-dark\"] .dark\\:border-green-700, [class*=\"theme-light\"].light\\:border-green-700, [class*=\"theme-light\"] .light\\:border-green-700 {\n  --border-opacity: 1 !important;\n  border-color: #046C4E !important;\n  border-color: rgba(4, 108, 78, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-800, [class*=\"theme-dark\"] .dark\\:border-green-800, [class*=\"theme-light\"].light\\:border-green-800, [class*=\"theme-light\"] .light\\:border-green-800 {\n  --border-opacity: 1 !important;\n  border-color: #03543F !important;\n  border-color: rgba(3, 84, 63, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green-900, [class*=\"theme-dark\"] .dark\\:border-green-900, [class*=\"theme-light\"].light\\:border-green-900, [class*=\"theme-light\"] .light\\:border-green-900 {\n  --border-opacity: 1 !important;\n  border-color: #014737 !important;\n  border-color: rgba(1, 71, 55, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-green, [class*=\"theme-dark\"] .dark\\:border-green, [class*=\"theme-light\"].light\\:border-green, [class*=\"theme-light\"] .light\\:border-green {\n  --border-opacity: 1 !important;\n  border-color: #0E9F6E !important;\n  border-color: rgba(14, 159, 110, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-50, [class*=\"theme-dark\"] .dark\\:border-teal-50, [class*=\"theme-light\"].light\\:border-teal-50, [class*=\"theme-light\"] .light\\:border-teal-50 {\n  --border-opacity: 1 !important;\n  border-color: #EDFAFA !important;\n  border-color: rgba(237, 250, 250, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-100, [class*=\"theme-dark\"] .dark\\:border-teal-100, [class*=\"theme-light\"].light\\:border-teal-100, [class*=\"theme-light\"] .light\\:border-teal-100 {\n  --border-opacity: 1 !important;\n  border-color: #D5F5F6 !important;\n  border-color: rgba(213, 245, 246, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-200, [class*=\"theme-dark\"] .dark\\:border-teal-200, [class*=\"theme-light\"].light\\:border-teal-200, [class*=\"theme-light\"] .light\\:border-teal-200 {\n  --border-opacity: 1 !important;\n  border-color: #AFECEF !important;\n  border-color: rgba(175, 236, 239, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-300, [class*=\"theme-dark\"] .dark\\:border-teal-300, [class*=\"theme-light\"].light\\:border-teal-300, [class*=\"theme-light\"] .light\\:border-teal-300 {\n  --border-opacity: 1 !important;\n  border-color: #7EDCE2 !important;\n  border-color: rgba(126, 220, 226, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-400, [class*=\"theme-dark\"] .dark\\:border-teal-400, [class*=\"theme-light\"].light\\:border-teal-400, [class*=\"theme-light\"] .light\\:border-teal-400 {\n  --border-opacity: 1 !important;\n  border-color: #16BDCA !important;\n  border-color: rgba(22, 189, 202, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-500, [class*=\"theme-dark\"] .dark\\:border-teal-500, [class*=\"theme-light\"].light\\:border-teal-500, [class*=\"theme-light\"] .light\\:border-teal-500 {\n  --border-opacity: 1 !important;\n  border-color: #0694A2 !important;\n  border-color: rgba(6, 148, 162, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-600, [class*=\"theme-dark\"] .dark\\:border-teal-600, [class*=\"theme-light\"].light\\:border-teal-600, [class*=\"theme-light\"] .light\\:border-teal-600 {\n  --border-opacity: 1 !important;\n  border-color: #047481 !important;\n  border-color: rgba(4, 116, 129, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-700, [class*=\"theme-dark\"] .dark\\:border-teal-700, [class*=\"theme-light\"].light\\:border-teal-700, [class*=\"theme-light\"] .light\\:border-teal-700 {\n  --border-opacity: 1 !important;\n  border-color: #036672 !important;\n  border-color: rgba(3, 102, 114, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-800, [class*=\"theme-dark\"] .dark\\:border-teal-800, [class*=\"theme-light\"].light\\:border-teal-800, [class*=\"theme-light\"] .light\\:border-teal-800 {\n  --border-opacity: 1 !important;\n  border-color: #05505C !important;\n  border-color: rgba(5, 80, 92, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal-900, [class*=\"theme-dark\"] .dark\\:border-teal-900, [class*=\"theme-light\"].light\\:border-teal-900, [class*=\"theme-light\"] .light\\:border-teal-900 {\n  --border-opacity: 1 !important;\n  border-color: #014451 !important;\n  border-color: rgba(1, 68, 81, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-teal, [class*=\"theme-dark\"] .dark\\:border-teal, [class*=\"theme-light\"].light\\:border-teal, [class*=\"theme-light\"] .light\\:border-teal {\n  --border-opacity: 1 !important;\n  border-color: #0694A2 !important;\n  border-color: rgba(6, 148, 162, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-50, [class*=\"theme-dark\"] .dark\\:border-blue-50, [class*=\"theme-light\"].light\\:border-blue-50, [class*=\"theme-light\"] .light\\:border-blue-50 {\n  --border-opacity: 1 !important;\n  border-color: #EBF5FF !important;\n  border-color: rgba(235, 245, 255, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-100, [class*=\"theme-dark\"] .dark\\:border-blue-100, [class*=\"theme-light\"].light\\:border-blue-100, [class*=\"theme-light\"] .light\\:border-blue-100 {\n  --border-opacity: 1 !important;\n  border-color: #E1EFFE !important;\n  border-color: rgba(225, 239, 254, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-200, [class*=\"theme-dark\"] .dark\\:border-blue-200, [class*=\"theme-light\"].light\\:border-blue-200, [class*=\"theme-light\"] .light\\:border-blue-200 {\n  --border-opacity: 1 !important;\n  border-color: #C3DDFD !important;\n  border-color: rgba(195, 221, 253, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-300, [class*=\"theme-dark\"] .dark\\:border-blue-300, [class*=\"theme-light\"].light\\:border-blue-300, [class*=\"theme-light\"] .light\\:border-blue-300 {\n  --border-opacity: 1 !important;\n  border-color: #A4CAFE !important;\n  border-color: rgba(164, 202, 254, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-400, [class*=\"theme-dark\"] .dark\\:border-blue-400, [class*=\"theme-light\"].light\\:border-blue-400, [class*=\"theme-light\"] .light\\:border-blue-400 {\n  --border-opacity: 1 !important;\n  border-color: #76A9FA !important;\n  border-color: rgba(118, 169, 250, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-500, [class*=\"theme-dark\"] .dark\\:border-blue-500, [class*=\"theme-light\"].light\\:border-blue-500, [class*=\"theme-light\"] .light\\:border-blue-500 {\n  --border-opacity: 1 !important;\n  border-color: #3F83F8 !important;\n  border-color: rgba(63, 131, 248, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-600, [class*=\"theme-dark\"] .dark\\:border-blue-600, [class*=\"theme-light\"].light\\:border-blue-600, [class*=\"theme-light\"] .light\\:border-blue-600 {\n  --border-opacity: 1 !important;\n  border-color: #1C64F2 !important;\n  border-color: rgba(28, 100, 242, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-700, [class*=\"theme-dark\"] .dark\\:border-blue-700, [class*=\"theme-light\"].light\\:border-blue-700, [class*=\"theme-light\"] .light\\:border-blue-700 {\n  --border-opacity: 1 !important;\n  border-color: #1A56DB !important;\n  border-color: rgba(26, 86, 219, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-800, [class*=\"theme-dark\"] .dark\\:border-blue-800, [class*=\"theme-light\"].light\\:border-blue-800, [class*=\"theme-light\"] .light\\:border-blue-800 {\n  --border-opacity: 1 !important;\n  border-color: #1E429F !important;\n  border-color: rgba(30, 66, 159, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue-900, [class*=\"theme-dark\"] .dark\\:border-blue-900, [class*=\"theme-light\"].light\\:border-blue-900, [class*=\"theme-light\"] .light\\:border-blue-900 {\n  --border-opacity: 1 !important;\n  border-color: #233876 !important;\n  border-color: rgba(35, 56, 118, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-blue, [class*=\"theme-dark\"] .dark\\:border-blue, [class*=\"theme-light\"].light\\:border-blue, [class*=\"theme-light\"] .light\\:border-blue {\n  --border-opacity: 1 !important;\n  border-color: #3F83F8 !important;\n  border-color: rgba(63, 131, 248, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-50, [class*=\"theme-dark\"] .dark\\:border-indigo-50, [class*=\"theme-light\"].light\\:border-indigo-50, [class*=\"theme-light\"] .light\\:border-indigo-50 {\n  --border-opacity: 1 !important;\n  border-color: #F0F5FF !important;\n  border-color: rgba(240, 245, 255, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-100, [class*=\"theme-dark\"] .dark\\:border-indigo-100, [class*=\"theme-light\"].light\\:border-indigo-100, [class*=\"theme-light\"] .light\\:border-indigo-100 {\n  --border-opacity: 1 !important;\n  border-color: #E5EDFF !important;\n  border-color: rgba(229, 237, 255, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-200, [class*=\"theme-dark\"] .dark\\:border-indigo-200, [class*=\"theme-light\"].light\\:border-indigo-200, [class*=\"theme-light\"] .light\\:border-indigo-200 {\n  --border-opacity: 1 !important;\n  border-color: #CDDBFE !important;\n  border-color: rgba(205, 219, 254, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-300, [class*=\"theme-dark\"] .dark\\:border-indigo-300, [class*=\"theme-light\"].light\\:border-indigo-300, [class*=\"theme-light\"] .light\\:border-indigo-300 {\n  --border-opacity: 1 !important;\n  border-color: #B4C6FC !important;\n  border-color: rgba(180, 198, 252, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-400, [class*=\"theme-dark\"] .dark\\:border-indigo-400, [class*=\"theme-light\"].light\\:border-indigo-400, [class*=\"theme-light\"] .light\\:border-indigo-400 {\n  --border-opacity: 1 !important;\n  border-color: #8DA2FB !important;\n  border-color: rgba(141, 162, 251, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-500, [class*=\"theme-dark\"] .dark\\:border-indigo-500, [class*=\"theme-light\"].light\\:border-indigo-500, [class*=\"theme-light\"] .light\\:border-indigo-500 {\n  --border-opacity: 1 !important;\n  border-color: #6875F5 !important;\n  border-color: rgba(104, 117, 245, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-600, [class*=\"theme-dark\"] .dark\\:border-indigo-600, [class*=\"theme-light\"].light\\:border-indigo-600, [class*=\"theme-light\"] .light\\:border-indigo-600 {\n  --border-opacity: 1 !important;\n  border-color: #5850EC !important;\n  border-color: rgba(88, 80, 236, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-700, [class*=\"theme-dark\"] .dark\\:border-indigo-700, [class*=\"theme-light\"].light\\:border-indigo-700, [class*=\"theme-light\"] .light\\:border-indigo-700 {\n  --border-opacity: 1 !important;\n  border-color: #5145CD !important;\n  border-color: rgba(81, 69, 205, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-800, [class*=\"theme-dark\"] .dark\\:border-indigo-800, [class*=\"theme-light\"].light\\:border-indigo-800, [class*=\"theme-light\"] .light\\:border-indigo-800 {\n  --border-opacity: 1 !important;\n  border-color: #42389D !important;\n  border-color: rgba(66, 56, 157, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo-900, [class*=\"theme-dark\"] .dark\\:border-indigo-900, [class*=\"theme-light\"].light\\:border-indigo-900, [class*=\"theme-light\"] .light\\:border-indigo-900 {\n  --border-opacity: 1 !important;\n  border-color: #362F78 !important;\n  border-color: rgba(54, 47, 120, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-indigo, [class*=\"theme-dark\"] .dark\\:border-indigo, [class*=\"theme-light\"].light\\:border-indigo, [class*=\"theme-light\"] .light\\:border-indigo {\n  --border-opacity: 1 !important;\n  border-color: #6875F5 !important;\n  border-color: rgba(104, 117, 245, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-50, [class*=\"theme-dark\"] .dark\\:border-purple-50, [class*=\"theme-light\"].light\\:border-purple-50, [class*=\"theme-light\"] .light\\:border-purple-50 {\n  --border-opacity: 1 !important;\n  border-color: #F6F5FF !important;\n  border-color: rgba(246, 245, 255, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-100, [class*=\"theme-dark\"] .dark\\:border-purple-100, [class*=\"theme-light\"].light\\:border-purple-100, [class*=\"theme-light\"] .light\\:border-purple-100 {\n  --border-opacity: 1 !important;\n  border-color: #EDEBFE !important;\n  border-color: rgba(237, 235, 254, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-200, [class*=\"theme-dark\"] .dark\\:border-purple-200, [class*=\"theme-light\"].light\\:border-purple-200, [class*=\"theme-light\"] .light\\:border-purple-200 {\n  --border-opacity: 1 !important;\n  border-color: #DCD7FE !important;\n  border-color: rgba(220, 215, 254, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-300, [class*=\"theme-dark\"] .dark\\:border-purple-300, [class*=\"theme-light\"].light\\:border-purple-300, [class*=\"theme-light\"] .light\\:border-purple-300 {\n  --border-opacity: 1 !important;\n  border-color: #CABFFD !important;\n  border-color: rgba(202, 191, 253, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-400, [class*=\"theme-dark\"] .dark\\:border-purple-400, [class*=\"theme-light\"].light\\:border-purple-400, [class*=\"theme-light\"] .light\\:border-purple-400 {\n  --border-opacity: 1 !important;\n  border-color: #AC94FA !important;\n  border-color: rgba(172, 148, 250, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-500, [class*=\"theme-dark\"] .dark\\:border-purple-500, [class*=\"theme-light\"].light\\:border-purple-500, [class*=\"theme-light\"] .light\\:border-purple-500 {\n  --border-opacity: 1 !important;\n  border-color: #9061F9 !important;\n  border-color: rgba(144, 97, 249, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-600, [class*=\"theme-dark\"] .dark\\:border-purple-600, [class*=\"theme-light\"].light\\:border-purple-600, [class*=\"theme-light\"] .light\\:border-purple-600 {\n  --border-opacity: 1 !important;\n  border-color: #7E3AF2 !important;\n  border-color: rgba(126, 58, 242, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-700, [class*=\"theme-dark\"] .dark\\:border-purple-700, [class*=\"theme-light\"].light\\:border-purple-700, [class*=\"theme-light\"] .light\\:border-purple-700 {\n  --border-opacity: 1 !important;\n  border-color: #6C2BD9 !important;\n  border-color: rgba(108, 43, 217, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-800, [class*=\"theme-dark\"] .dark\\:border-purple-800, [class*=\"theme-light\"].light\\:border-purple-800, [class*=\"theme-light\"] .light\\:border-purple-800 {\n  --border-opacity: 1 !important;\n  border-color: #5521B5 !important;\n  border-color: rgba(85, 33, 181, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple-900, [class*=\"theme-dark\"] .dark\\:border-purple-900, [class*=\"theme-light\"].light\\:border-purple-900, [class*=\"theme-light\"] .light\\:border-purple-900 {\n  --border-opacity: 1 !important;\n  border-color: #4A1D96 !important;\n  border-color: rgba(74, 29, 150, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-purple, [class*=\"theme-dark\"] .dark\\:border-purple, [class*=\"theme-light\"].light\\:border-purple, [class*=\"theme-light\"] .light\\:border-purple {\n  --border-opacity: 1 !important;\n  border-color: #9061F9 !important;\n  border-color: rgba(144, 97, 249, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-50, [class*=\"theme-dark\"] .dark\\:border-pink-50, [class*=\"theme-light\"].light\\:border-pink-50, [class*=\"theme-light\"] .light\\:border-pink-50 {\n  --border-opacity: 1 !important;\n  border-color: #FDF2F8 !important;\n  border-color: rgba(253, 242, 248, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-100, [class*=\"theme-dark\"] .dark\\:border-pink-100, [class*=\"theme-light\"].light\\:border-pink-100, [class*=\"theme-light\"] .light\\:border-pink-100 {\n  --border-opacity: 1 !important;\n  border-color: #FCE8F3 !important;\n  border-color: rgba(252, 232, 243, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-200, [class*=\"theme-dark\"] .dark\\:border-pink-200, [class*=\"theme-light\"].light\\:border-pink-200, [class*=\"theme-light\"] .light\\:border-pink-200 {\n  --border-opacity: 1 !important;\n  border-color: #FAD1E8 !important;\n  border-color: rgba(250, 209, 232, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-300, [class*=\"theme-dark\"] .dark\\:border-pink-300, [class*=\"theme-light\"].light\\:border-pink-300, [class*=\"theme-light\"] .light\\:border-pink-300 {\n  --border-opacity: 1 !important;\n  border-color: #F8B4D9 !important;\n  border-color: rgba(248, 180, 217, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-400, [class*=\"theme-dark\"] .dark\\:border-pink-400, [class*=\"theme-light\"].light\\:border-pink-400, [class*=\"theme-light\"] .light\\:border-pink-400 {\n  --border-opacity: 1 !important;\n  border-color: #F17EB8 !important;\n  border-color: rgba(241, 126, 184, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-500, [class*=\"theme-dark\"] .dark\\:border-pink-500, [class*=\"theme-light\"].light\\:border-pink-500, [class*=\"theme-light\"] .light\\:border-pink-500 {\n  --border-opacity: 1 !important;\n  border-color: #E74694 !important;\n  border-color: rgba(231, 70, 148, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-600, [class*=\"theme-dark\"] .dark\\:border-pink-600, [class*=\"theme-light\"].light\\:border-pink-600, [class*=\"theme-light\"] .light\\:border-pink-600 {\n  --border-opacity: 1 !important;\n  border-color: #D61F69 !important;\n  border-color: rgba(214, 31, 105, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-700, [class*=\"theme-dark\"] .dark\\:border-pink-700, [class*=\"theme-light\"].light\\:border-pink-700, [class*=\"theme-light\"] .light\\:border-pink-700 {\n  --border-opacity: 1 !important;\n  border-color: #BF125D !important;\n  border-color: rgba(191, 18, 93, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-800, [class*=\"theme-dark\"] .dark\\:border-pink-800, [class*=\"theme-light\"].light\\:border-pink-800, [class*=\"theme-light\"] .light\\:border-pink-800 {\n  --border-opacity: 1 !important;\n  border-color: #99154B !important;\n  border-color: rgba(153, 21, 75, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink-900, [class*=\"theme-dark\"] .dark\\:border-pink-900, [class*=\"theme-light\"].light\\:border-pink-900, [class*=\"theme-light\"] .light\\:border-pink-900 {\n  --border-opacity: 1 !important;\n  border-color: #751A3D !important;\n  border-color: rgba(117, 26, 61, var(--border-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:border-pink, [class*=\"theme-dark\"] .dark\\:border-pink, [class*=\"theme-light\"].light\\:border-pink, [class*=\"theme-light\"] .light\\:border-pink {\n  --border-opacity: 1 !important;\n  border-color: #E74694 !important;\n  border-color: rgba(231, 70, 148, var(--border-opacity)) !important;\n}\n\n.border-opacity-0 {\n  --border-opacity: 0 !important;\n}\n\n.border-opacity-12 {\n  --border-opacity: 0.12 !important;\n}\n\n.border-opacity-25 {\n  --border-opacity: 0.25 !important;\n}\n\n.border-opacity-38 {\n  --border-opacity: 0.38 !important;\n}\n\n.border-opacity-50 {\n  --border-opacity: 0.5 !important;\n}\n\n.border-opacity-54 {\n  --border-opacity: 0.54 !important;\n}\n\n.border-opacity-70 {\n  --border-opacity: 0.70 !important;\n}\n\n.border-opacity-75 {\n  --border-opacity: 0.75 !important;\n}\n\n.border-opacity-84 {\n  --border-opacity: 0.84 !important;\n}\n\n.border-opacity-100 {\n  --border-opacity: 1 !important;\n}\n\n.hover\\:border-opacity-0:hover {\n  --border-opacity: 0 !important;\n}\n\n.hover\\:border-opacity-12:hover {\n  --border-opacity: 0.12 !important;\n}\n\n.hover\\:border-opacity-25:hover {\n  --border-opacity: 0.25 !important;\n}\n\n.hover\\:border-opacity-38:hover {\n  --border-opacity: 0.38 !important;\n}\n\n.hover\\:border-opacity-50:hover {\n  --border-opacity: 0.5 !important;\n}\n\n.hover\\:border-opacity-54:hover {\n  --border-opacity: 0.54 !important;\n}\n\n.hover\\:border-opacity-70:hover {\n  --border-opacity: 0.70 !important;\n}\n\n.hover\\:border-opacity-75:hover {\n  --border-opacity: 0.75 !important;\n}\n\n.hover\\:border-opacity-84:hover {\n  --border-opacity: 0.84 !important;\n}\n\n.hover\\:border-opacity-100:hover {\n  --border-opacity: 1 !important;\n}\n\n.focus\\:border-opacity-0:focus {\n  --border-opacity: 0 !important;\n}\n\n.focus\\:border-opacity-12:focus {\n  --border-opacity: 0.12 !important;\n}\n\n.focus\\:border-opacity-25:focus {\n  --border-opacity: 0.25 !important;\n}\n\n.focus\\:border-opacity-38:focus {\n  --border-opacity: 0.38 !important;\n}\n\n.focus\\:border-opacity-50:focus {\n  --border-opacity: 0.5 !important;\n}\n\n.focus\\:border-opacity-54:focus {\n  --border-opacity: 0.54 !important;\n}\n\n.focus\\:border-opacity-70:focus {\n  --border-opacity: 0.70 !important;\n}\n\n.focus\\:border-opacity-75:focus {\n  --border-opacity: 0.75 !important;\n}\n\n.focus\\:border-opacity-84:focus {\n  --border-opacity: 0.84 !important;\n}\n\n.focus\\:border-opacity-100:focus {\n  --border-opacity: 1 !important;\n}\n\n.rounded-none {\n  border-radius: 0 !important;\n}\n\n.rounded-sm {\n  border-radius: 0.125rem !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-md {\n  border-radius: 0.375rem !important;\n}\n\n.rounded-lg {\n  border-radius: 0.5rem !important;\n}\n\n.rounded-full {\n  border-radius: 9999px !important;\n}\n\n.rounded-t-none {\n  border-top-left-radius: 0 !important;\n  border-top-right-radius: 0 !important;\n}\n\n.rounded-r-none {\n  border-top-right-radius: 0 !important;\n  border-bottom-right-radius: 0 !important;\n}\n\n.rounded-b-none {\n  border-bottom-right-radius: 0 !important;\n  border-bottom-left-radius: 0 !important;\n}\n\n.rounded-l-none {\n  border-top-left-radius: 0 !important;\n  border-bottom-left-radius: 0 !important;\n}\n\n.rounded-t-sm {\n  border-top-left-radius: 0.125rem !important;\n  border-top-right-radius: 0.125rem !important;\n}\n\n.rounded-r-sm {\n  border-top-right-radius: 0.125rem !important;\n  border-bottom-right-radius: 0.125rem !important;\n}\n\n.rounded-b-sm {\n  border-bottom-right-radius: 0.125rem !important;\n  border-bottom-left-radius: 0.125rem !important;\n}\n\n.rounded-l-sm {\n  border-top-left-radius: 0.125rem !important;\n  border-bottom-left-radius: 0.125rem !important;\n}\n\n.rounded-t {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-r {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-b {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-l {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-t-md {\n  border-top-left-radius: 0.375rem !important;\n  border-top-right-radius: 0.375rem !important;\n}\n\n.rounded-r-md {\n  border-top-right-radius: 0.375rem !important;\n  border-bottom-right-radius: 0.375rem !important;\n}\n\n.rounded-b-md {\n  border-bottom-right-radius: 0.375rem !important;\n  border-bottom-left-radius: 0.375rem !important;\n}\n\n.rounded-l-md {\n  border-top-left-radius: 0.375rem !important;\n  border-bottom-left-radius: 0.375rem !important;\n}\n\n.rounded-t-lg {\n  border-top-left-radius: 0.5rem !important;\n  border-top-right-radius: 0.5rem !important;\n}\n\n.rounded-r-lg {\n  border-top-right-radius: 0.5rem !important;\n  border-bottom-right-radius: 0.5rem !important;\n}\n\n.rounded-b-lg {\n  border-bottom-right-radius: 0.5rem !important;\n  border-bottom-left-radius: 0.5rem !important;\n}\n\n.rounded-l-lg {\n  border-top-left-radius: 0.5rem !important;\n  border-bottom-left-radius: 0.5rem !important;\n}\n\n.rounded-t-full {\n  border-top-left-radius: 9999px !important;\n  border-top-right-radius: 9999px !important;\n}\n\n.rounded-r-full {\n  border-top-right-radius: 9999px !important;\n  border-bottom-right-radius: 9999px !important;\n}\n\n.rounded-b-full {\n  border-bottom-right-radius: 9999px !important;\n  border-bottom-left-radius: 9999px !important;\n}\n\n.rounded-l-full {\n  border-top-left-radius: 9999px !important;\n  border-bottom-left-radius: 9999px !important;\n}\n\n.rounded-tl-none {\n  border-top-left-radius: 0 !important;\n}\n\n.rounded-tr-none {\n  border-top-right-radius: 0 !important;\n}\n\n.rounded-br-none {\n  border-bottom-right-radius: 0 !important;\n}\n\n.rounded-bl-none {\n  border-bottom-left-radius: 0 !important;\n}\n\n.rounded-tl-sm {\n  border-top-left-radius: 0.125rem !important;\n}\n\n.rounded-tr-sm {\n  border-top-right-radius: 0.125rem !important;\n}\n\n.rounded-br-sm {\n  border-bottom-right-radius: 0.125rem !important;\n}\n\n.rounded-bl-sm {\n  border-bottom-left-radius: 0.125rem !important;\n}\n\n.rounded-tl {\n  border-top-left-radius: 0.25rem !important;\n}\n\n.rounded-tr {\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-br {\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bl {\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-tl-md {\n  border-top-left-radius: 0.375rem !important;\n}\n\n.rounded-tr-md {\n  border-top-right-radius: 0.375rem !important;\n}\n\n.rounded-br-md {\n  border-bottom-right-radius: 0.375rem !important;\n}\n\n.rounded-bl-md {\n  border-bottom-left-radius: 0.375rem !important;\n}\n\n.rounded-tl-lg {\n  border-top-left-radius: 0.5rem !important;\n}\n\n.rounded-tr-lg {\n  border-top-right-radius: 0.5rem !important;\n}\n\n.rounded-br-lg {\n  border-bottom-right-radius: 0.5rem !important;\n}\n\n.rounded-bl-lg {\n  border-bottom-left-radius: 0.5rem !important;\n}\n\n.rounded-tl-full {\n  border-top-left-radius: 9999px !important;\n}\n\n.rounded-tr-full {\n  border-top-right-radius: 9999px !important;\n}\n\n.rounded-br-full {\n  border-bottom-right-radius: 9999px !important;\n}\n\n.rounded-bl-full {\n  border-bottom-left-radius: 9999px !important;\n}\n\n.border-solid {\n  border-style: solid !important;\n}\n\n.border-dashed {\n  border-style: dashed !important;\n}\n\n.border-dotted {\n  border-style: dotted !important;\n}\n\n.border-double {\n  border-style: double !important;\n}\n\n.border-none {\n  border-style: none !important;\n}\n\n.border-0 {\n  border-width: 0 !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-8 {\n  border-width: 8px !important;\n}\n\n.border {\n  border-width: 1px !important;\n}\n\n.border-t-0 {\n  border-top-width: 0 !important;\n}\n\n.border-r-0 {\n  border-right-width: 0 !important;\n}\n\n.border-b-0 {\n  border-bottom-width: 0 !important;\n}\n\n.border-l-0 {\n  border-left-width: 0 !important;\n}\n\n.border-t-2 {\n  border-top-width: 2px !important;\n}\n\n.border-r-2 {\n  border-right-width: 2px !important;\n}\n\n.border-b-2 {\n  border-bottom-width: 2px !important;\n}\n\n.border-l-2 {\n  border-left-width: 2px !important;\n}\n\n.border-t-4 {\n  border-top-width: 4px !important;\n}\n\n.border-r-4 {\n  border-right-width: 4px !important;\n}\n\n.border-b-4 {\n  border-bottom-width: 4px !important;\n}\n\n.border-l-4 {\n  border-left-width: 4px !important;\n}\n\n.border-t-8 {\n  border-top-width: 8px !important;\n}\n\n.border-r-8 {\n  border-right-width: 8px !important;\n}\n\n.border-b-8 {\n  border-bottom-width: 8px !important;\n}\n\n.border-l-8 {\n  border-left-width: 8px !important;\n}\n\n.border-t {\n  border-top-width: 1px !important;\n}\n\n.border-r {\n  border-right-width: 1px !important;\n}\n\n.border-b {\n  border-bottom-width: 1px !important;\n}\n\n.border-l {\n  border-left-width: 1px !important;\n}\n\n.first\\:border-0:first-child {\n  border-width: 0 !important;\n}\n\n.first\\:border-2:first-child {\n  border-width: 2px !important;\n}\n\n.first\\:border-4:first-child {\n  border-width: 4px !important;\n}\n\n.first\\:border-8:first-child {\n  border-width: 8px !important;\n}\n\n.first\\:border:first-child {\n  border-width: 1px !important;\n}\n\n.first\\:border-t-0:first-child {\n  border-top-width: 0 !important;\n}\n\n.first\\:border-r-0:first-child {\n  border-right-width: 0 !important;\n}\n\n.first\\:border-b-0:first-child {\n  border-bottom-width: 0 !important;\n}\n\n.first\\:border-l-0:first-child {\n  border-left-width: 0 !important;\n}\n\n.first\\:border-t-2:first-child {\n  border-top-width: 2px !important;\n}\n\n.first\\:border-r-2:first-child {\n  border-right-width: 2px !important;\n}\n\n.first\\:border-b-2:first-child {\n  border-bottom-width: 2px !important;\n}\n\n.first\\:border-l-2:first-child {\n  border-left-width: 2px !important;\n}\n\n.first\\:border-t-4:first-child {\n  border-top-width: 4px !important;\n}\n\n.first\\:border-r-4:first-child {\n  border-right-width: 4px !important;\n}\n\n.first\\:border-b-4:first-child {\n  border-bottom-width: 4px !important;\n}\n\n.first\\:border-l-4:first-child {\n  border-left-width: 4px !important;\n}\n\n.first\\:border-t-8:first-child {\n  border-top-width: 8px !important;\n}\n\n.first\\:border-r-8:first-child {\n  border-right-width: 8px !important;\n}\n\n.first\\:border-b-8:first-child {\n  border-bottom-width: 8px !important;\n}\n\n.first\\:border-l-8:first-child {\n  border-left-width: 8px !important;\n}\n\n.first\\:border-t:first-child {\n  border-top-width: 1px !important;\n}\n\n.first\\:border-r:first-child {\n  border-right-width: 1px !important;\n}\n\n.first\\:border-b:first-child {\n  border-bottom-width: 1px !important;\n}\n\n.first\\:border-l:first-child {\n  border-left-width: 1px !important;\n}\n\n.last\\:border-0:last-child {\n  border-width: 0 !important;\n}\n\n.last\\:border-2:last-child {\n  border-width: 2px !important;\n}\n\n.last\\:border-4:last-child {\n  border-width: 4px !important;\n}\n\n.last\\:border-8:last-child {\n  border-width: 8px !important;\n}\n\n.last\\:border:last-child {\n  border-width: 1px !important;\n}\n\n.last\\:border-t-0:last-child {\n  border-top-width: 0 !important;\n}\n\n.last\\:border-r-0:last-child {\n  border-right-width: 0 !important;\n}\n\n.last\\:border-b-0:last-child {\n  border-bottom-width: 0 !important;\n}\n\n.last\\:border-l-0:last-child {\n  border-left-width: 0 !important;\n}\n\n.last\\:border-t-2:last-child {\n  border-top-width: 2px !important;\n}\n\n.last\\:border-r-2:last-child {\n  border-right-width: 2px !important;\n}\n\n.last\\:border-b-2:last-child {\n  border-bottom-width: 2px !important;\n}\n\n.last\\:border-l-2:last-child {\n  border-left-width: 2px !important;\n}\n\n.last\\:border-t-4:last-child {\n  border-top-width: 4px !important;\n}\n\n.last\\:border-r-4:last-child {\n  border-right-width: 4px !important;\n}\n\n.last\\:border-b-4:last-child {\n  border-bottom-width: 4px !important;\n}\n\n.last\\:border-l-4:last-child {\n  border-left-width: 4px !important;\n}\n\n.last\\:border-t-8:last-child {\n  border-top-width: 8px !important;\n}\n\n.last\\:border-r-8:last-child {\n  border-right-width: 8px !important;\n}\n\n.last\\:border-b-8:last-child {\n  border-bottom-width: 8px !important;\n}\n\n.last\\:border-l-8:last-child {\n  border-left-width: 8px !important;\n}\n\n.last\\:border-t:last-child {\n  border-top-width: 1px !important;\n}\n\n.last\\:border-r:last-child {\n  border-right-width: 1px !important;\n}\n\n.last\\:border-b:last-child {\n  border-bottom-width: 1px !important;\n}\n\n.last\\:border-l:last-child {\n  border-left-width: 1px !important;\n}\n\n.box-border {\n  box-sizing: border-box !important;\n}\n\n.box-content {\n  box-sizing: content-box !important;\n}\n\n.cursor-auto {\n  cursor: auto !important;\n}\n\n.cursor-default {\n  cursor: default !important;\n}\n\n.cursor-pointer {\n  cursor: pointer !important;\n}\n\n.cursor-wait {\n  cursor: wait !important;\n}\n\n.cursor-text {\n  cursor: text !important;\n}\n\n.cursor-move {\n  cursor: move !important;\n}\n\n.cursor-not-allowed {\n  cursor: not-allowed !important;\n}\n\n.block {\n  display: block !important;\n}\n\n.inline-block {\n  display: inline-block !important;\n}\n\n.inline {\n  display: inline !important;\n}\n\n.flex {\n  display: flex !important;\n}\n\n.inline-flex {\n  display: inline-flex !important;\n}\n\n.table {\n  display: table !important;\n}\n\n.table-caption {\n  display: table-caption !important;\n}\n\n.table-cell {\n  display: table-cell !important;\n}\n\n.table-column {\n  display: table-column !important;\n}\n\n.table-column-group {\n  display: table-column-group !important;\n}\n\n.table-footer-group {\n  display: table-footer-group !important;\n}\n\n.table-header-group {\n  display: table-header-group !important;\n}\n\n.table-row-group {\n  display: table-row-group !important;\n}\n\n.table-row {\n  display: table-row !important;\n}\n\n.flow-root {\n  display: flow-root !important;\n}\n\n.grid {\n  display: grid !important;\n}\n\n.inline-grid {\n  display: inline-grid !important;\n}\n\n.hidden {\n  display: none !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-col {\n  flex-direction: column !important;\n}\n\n.flex-col-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.flex-no-wrap {\n  flex-wrap: nowrap !important;\n}\n\n.items-start {\n  align-items: flex-start !important;\n}\n\n.items-end {\n  align-items: flex-end !important;\n}\n\n.items-center {\n  align-items: center !important;\n}\n\n.items-baseline {\n  align-items: baseline !important;\n}\n\n.items-stretch {\n  align-items: stretch !important;\n}\n\n.self-auto {\n  align-self: auto !important;\n}\n\n.self-start {\n  align-self: flex-start !important;\n}\n\n.self-end {\n  align-self: flex-end !important;\n}\n\n.self-center {\n  align-self: center !important;\n}\n\n.self-stretch {\n  align-self: stretch !important;\n}\n\n.justify-start {\n  justify-content: flex-start !important;\n}\n\n.justify-end {\n  justify-content: flex-end !important;\n}\n\n.justify-center {\n  justify-content: center !important;\n}\n\n.justify-between {\n  justify-content: space-between !important;\n}\n\n.justify-around {\n  justify-content: space-around !important;\n}\n\n.justify-evenly {\n  justify-content: space-evenly !important;\n}\n\n.content-center {\n  align-content: center !important;\n}\n\n.content-start {\n  align-content: flex-start !important;\n}\n\n.content-end {\n  align-content: flex-end !important;\n}\n\n.content-between {\n  align-content: space-between !important;\n}\n\n.content-around {\n  align-content: space-around !important;\n}\n\n.flex-0 {\n  flex: 0 0 auto !important;\n}\n\n.flex-1 {\n  flex: 1 1 0% !important;\n}\n\n.flex-auto {\n  flex: 1 1 auto !important;\n}\n\n.flex-initial {\n  flex: 0 1 auto !important;\n}\n\n.flex-none {\n  flex: none !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink {\n  flex-shrink: 1 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-6 {\n  order: 6 !important;\n}\n\n.order-7 {\n  order: 7 !important;\n}\n\n.order-8 {\n  order: 8 !important;\n}\n\n.order-9 {\n  order: 9 !important;\n}\n\n.order-10 {\n  order: 10 !important;\n}\n\n.order-11 {\n  order: 11 !important;\n}\n\n.order-12 {\n  order: 12 !important;\n}\n\n.order-first {\n  order: -9999 !important;\n}\n\n.order-last {\n  order: 9999 !important;\n}\n\n.order-none {\n  order: 0 !important;\n}\n\n.font-sans {\n  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !important;\n}\n\n.font-serif {\n  font-family: Georgia, Cambria, \"Times New Roman\", Times, serif !important;\n}\n\n.font-mono {\n  font-family: \"IBM Plex Mono\", Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !important;\n}\n\n.font-hairline {\n  font-weight: 100 !important;\n}\n\n.font-thin {\n  font-weight: 200 !important;\n}\n\n.font-light {\n  font-weight: 300 !important;\n}\n\n.font-normal {\n  font-weight: 400 !important;\n}\n\n.font-medium {\n  font-weight: 500 !important;\n}\n\n.font-semibold {\n  font-weight: 600 !important;\n}\n\n.font-bold {\n  font-weight: 700 !important;\n}\n\n.font-extrabold {\n  font-weight: 800 !important;\n}\n\n.font-black {\n  font-weight: 900 !important;\n}\n\n.h-0 {\n  height: 0 !important;\n}\n\n.h-1 {\n  height: 0.25rem !important;\n}\n\n.h-2 {\n  height: 0.5rem !important;\n}\n\n.h-3 {\n  height: 0.75rem !important;\n}\n\n.h-4 {\n  height: 1rem !important;\n}\n\n.h-5 {\n  height: 1.25rem !important;\n}\n\n.h-6 {\n  height: 1.5rem !important;\n}\n\n.h-8 {\n  height: 2rem !important;\n}\n\n.h-10 {\n  height: 2.5rem !important;\n}\n\n.h-12 {\n  height: 3rem !important;\n}\n\n.h-14 {\n  height: 3.5rem !important;\n}\n\n.h-16 {\n  height: 4rem !important;\n}\n\n.h-18 {\n  height: 4.5rem !important;\n}\n\n.h-20 {\n  height: 5rem !important;\n}\n\n.h-22 {\n  height: 5.5rem !important;\n}\n\n.h-24 {\n  height: 6rem !important;\n}\n\n.h-26 {\n  height: 6.5rem !important;\n}\n\n.h-28 {\n  height: 7rem !important;\n}\n\n.h-30 {\n  height: 7.5rem !important;\n}\n\n.h-32 {\n  height: 8rem !important;\n}\n\n.h-36 {\n  height: 9rem !important;\n}\n\n.h-40 {\n  height: 10rem !important;\n}\n\n.h-48 {\n  height: 12rem !important;\n}\n\n.h-50 {\n  height: 12.5rem !important;\n}\n\n.h-56 {\n  height: 14rem !important;\n}\n\n.h-60 {\n  height: 15rem !important;\n}\n\n.h-64 {\n  height: 16rem !important;\n}\n\n.h-80 {\n  height: 20rem !important;\n}\n\n.h-90 {\n  height: 24rem !important;\n}\n\n.h-100 {\n  height: 25rem !important;\n}\n\n.h-120 {\n  height: 30rem !important;\n}\n\n.h-128 {\n  height: 32rem !important;\n}\n\n.h-140 {\n  height: 35rem !important;\n}\n\n.h-160 {\n  height: 40rem !important;\n}\n\n.h-180 {\n  height: 45rem !important;\n}\n\n.h-192 {\n  height: 48rem !important;\n}\n\n.h-200 {\n  height: 50rem !important;\n}\n\n.h-240 {\n  height: 60rem !important;\n}\n\n.h-256 {\n  height: 64rem !important;\n}\n\n.h-280 {\n  height: 70rem !important;\n}\n\n.h-320 {\n  height: 80rem !important;\n}\n\n.h-360 {\n  height: 90rem !important;\n}\n\n.h-400 {\n  height: 100rem !important;\n}\n\n.h-480 {\n  height: 120rem !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.h-px {\n  height: 1px !important;\n}\n\n.h-2px {\n  height: 2px !important;\n}\n\n.h-full {\n  height: 100% !important;\n}\n\n.h-screen {\n  height: 100vh !important;\n}\n\n.h-1\\/2 {\n  height: 50% !important;\n}\n\n.h-1\\/3 {\n  height: 33.33333% !important;\n}\n\n.h-2\\/3 {\n  height: 66.66667% !important;\n}\n\n.h-1\\/4 {\n  height: 25% !important;\n}\n\n.h-2\\/4 {\n  height: 50% !important;\n}\n\n.h-3\\/4 {\n  height: 75% !important;\n}\n\n.h-1\\/5 {\n  height: 20% !important;\n}\n\n.h-2\\/5 {\n  height: 40% !important;\n}\n\n.h-3\\/5 {\n  height: 60% !important;\n}\n\n.h-4\\/5 {\n  height: 80% !important;\n}\n\n.h-1\\/12 {\n  height: 8.33333% !important;\n}\n\n.h-2\\/12 {\n  height: 16.66667% !important;\n}\n\n.h-3\\/12 {\n  height: 25% !important;\n}\n\n.h-4\\/12 {\n  height: 33.33333% !important;\n}\n\n.h-5\\/12 {\n  height: 41.66667% !important;\n}\n\n.h-6\\/12 {\n  height: 50% !important;\n}\n\n.h-7\\/12 {\n  height: 58.33333% !important;\n}\n\n.h-8\\/12 {\n  height: 66.66667% !important;\n}\n\n.h-9\\/12 {\n  height: 75% !important;\n}\n\n.h-10\\/12 {\n  height: 83.33333% !important;\n}\n\n.h-11\\/12 {\n  height: 91.66667% !important;\n}\n\n.text-xs {\n  font-size: 0.625rem !important;\n}\n\n.text-sm {\n  font-size: 0.75rem !important;\n}\n\n.text-md {\n  font-size: 0.8125rem !important;\n}\n\n.text-base {\n  font-size: 0.875rem !important;\n}\n\n.text-lg {\n  font-size: 1rem !important;\n}\n\n.text-xl {\n  font-size: 1.125rem !important;\n}\n\n.text-2xl {\n  font-size: 1.25rem !important;\n}\n\n.text-3xl {\n  font-size: 1.5rem !important;\n}\n\n.text-4xl {\n  font-size: 2rem !important;\n}\n\n.text-5xl {\n  font-size: 2.25rem !important;\n}\n\n.text-6xl {\n  font-size: 2.5rem !important;\n}\n\n.text-7xl {\n  font-size: 3rem !important;\n}\n\n.text-8xl {\n  font-size: 4rem !important;\n}\n\n.text-9xl {\n  font-size: 6rem !important;\n}\n\n.text-10xl {\n  font-size: 8rem !important;\n}\n\n.leading-3 {\n  line-height: .75rem !important;\n}\n\n.leading-4 {\n  line-height: 1rem !important;\n}\n\n.leading-5 {\n  line-height: 1.25rem !important;\n}\n\n.leading-6 {\n  line-height: 1.5rem !important;\n}\n\n.leading-7 {\n  line-height: 1.75rem !important;\n}\n\n.leading-8 {\n  line-height: 2rem !important;\n}\n\n.leading-9 {\n  line-height: 2.25rem !important;\n}\n\n.leading-10 {\n  line-height: 2.5rem !important;\n}\n\n.leading-none {\n  line-height: 1 !important;\n}\n\n.leading-tight {\n  line-height: 1.25 !important;\n}\n\n.leading-snug {\n  line-height: 1.375 !important;\n}\n\n.leading-normal {\n  line-height: 1.5 !important;\n}\n\n.leading-relaxed {\n  line-height: 1.625 !important;\n}\n\n.leading-loose {\n  line-height: 2 !important;\n}\n\n.list-inside {\n  list-style-position: inside !important;\n}\n\n.list-outside {\n  list-style-position: outside !important;\n}\n\n.list-none {\n  list-style-type: none !important;\n}\n\n.list-disc {\n  list-style-type: disc !important;\n}\n\n.list-decimal {\n  list-style-type: decimal !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 0.75rem !important;\n}\n\n.m-4 {\n  margin: 1rem !important;\n}\n\n.m-5 {\n  margin: 1.25rem !important;\n}\n\n.m-6 {\n  margin: 1.5rem !important;\n}\n\n.m-8 {\n  margin: 2rem !important;\n}\n\n.m-10 {\n  margin: 2.5rem !important;\n}\n\n.m-12 {\n  margin: 3rem !important;\n}\n\n.m-14 {\n  margin: 3.5rem !important;\n}\n\n.m-16 {\n  margin: 4rem !important;\n}\n\n.m-18 {\n  margin: 4.5rem !important;\n}\n\n.m-20 {\n  margin: 5rem !important;\n}\n\n.m-22 {\n  margin: 5.5rem !important;\n}\n\n.m-24 {\n  margin: 6rem !important;\n}\n\n.m-26 {\n  margin: 6.5rem !important;\n}\n\n.m-28 {\n  margin: 7rem !important;\n}\n\n.m-30 {\n  margin: 7.5rem !important;\n}\n\n.m-32 {\n  margin: 8rem !important;\n}\n\n.m-36 {\n  margin: 9rem !important;\n}\n\n.m-40 {\n  margin: 10rem !important;\n}\n\n.m-48 {\n  margin: 12rem !important;\n}\n\n.m-56 {\n  margin: 14rem !important;\n}\n\n.m-64 {\n  margin: 16rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.m-px {\n  margin: 1px !important;\n}\n\n.m-2px {\n  margin: 2px !important;\n}\n\n.-m-1 {\n  margin: -0.25rem !important;\n}\n\n.-m-2 {\n  margin: -0.5rem !important;\n}\n\n.-m-3 {\n  margin: -0.75rem !important;\n}\n\n.-m-4 {\n  margin: -1rem !important;\n}\n\n.-m-5 {\n  margin: -1.25rem !important;\n}\n\n.-m-6 {\n  margin: -1.5rem !important;\n}\n\n.-m-8 {\n  margin: -2rem !important;\n}\n\n.-m-10 {\n  margin: -2.5rem !important;\n}\n\n.-m-12 {\n  margin: -3rem !important;\n}\n\n.-m-14 {\n  margin: -3.5rem !important;\n}\n\n.-m-16 {\n  margin: -4rem !important;\n}\n\n.-m-18 {\n  margin: -4.5rem !important;\n}\n\n.-m-20 {\n  margin: -5rem !important;\n}\n\n.-m-22 {\n  margin: -5.5rem !important;\n}\n\n.-m-24 {\n  margin: -6rem !important;\n}\n\n.-m-26 {\n  margin: -6.5rem !important;\n}\n\n.-m-28 {\n  margin: -7rem !important;\n}\n\n.-m-30 {\n  margin: -7.5rem !important;\n}\n\n.-m-32 {\n  margin: -8rem !important;\n}\n\n.-m-36 {\n  margin: -9rem !important;\n}\n\n.-m-40 {\n  margin: -10rem !important;\n}\n\n.-m-48 {\n  margin: -12rem !important;\n}\n\n.-m-56 {\n  margin: -14rem !important;\n}\n\n.-m-64 {\n  margin: -16rem !important;\n}\n\n.-m-px {\n  margin: -1px !important;\n}\n\n.-m-2px {\n  margin: -2px !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 0.75rem !important;\n  margin-bottom: 0.75rem !important;\n}\n\n.mx-3 {\n  margin-left: 0.75rem !important;\n  margin-right: 0.75rem !important;\n}\n\n.my-4 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.my-5 {\n  margin-top: 1.25rem !important;\n  margin-bottom: 1.25rem !important;\n}\n\n.mx-5 {\n  margin-left: 1.25rem !important;\n  margin-right: 1.25rem !important;\n}\n\n.my-6 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.mx-6 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.my-8 {\n  margin-top: 2rem !important;\n  margin-bottom: 2rem !important;\n}\n\n.mx-8 {\n  margin-left: 2rem !important;\n  margin-right: 2rem !important;\n}\n\n.my-10 {\n  margin-top: 2.5rem !important;\n  margin-bottom: 2.5rem !important;\n}\n\n.mx-10 {\n  margin-left: 2.5rem !important;\n  margin-right: 2.5rem !important;\n}\n\n.my-12 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.mx-12 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.my-14 {\n  margin-top: 3.5rem !important;\n  margin-bottom: 3.5rem !important;\n}\n\n.mx-14 {\n  margin-left: 3.5rem !important;\n  margin-right: 3.5rem !important;\n}\n\n.my-16 {\n  margin-top: 4rem !important;\n  margin-bottom: 4rem !important;\n}\n\n.mx-16 {\n  margin-left: 4rem !important;\n  margin-right: 4rem !important;\n}\n\n.my-18 {\n  margin-top: 4.5rem !important;\n  margin-bottom: 4.5rem !important;\n}\n\n.mx-18 {\n  margin-left: 4.5rem !important;\n  margin-right: 4.5rem !important;\n}\n\n.my-20 {\n  margin-top: 5rem !important;\n  margin-bottom: 5rem !important;\n}\n\n.mx-20 {\n  margin-left: 5rem !important;\n  margin-right: 5rem !important;\n}\n\n.my-22 {\n  margin-top: 5.5rem !important;\n  margin-bottom: 5.5rem !important;\n}\n\n.mx-22 {\n  margin-left: 5.5rem !important;\n  margin-right: 5.5rem !important;\n}\n\n.my-24 {\n  margin-top: 6rem !important;\n  margin-bottom: 6rem !important;\n}\n\n.mx-24 {\n  margin-left: 6rem !important;\n  margin-right: 6rem !important;\n}\n\n.my-26 {\n  margin-top: 6.5rem !important;\n  margin-bottom: 6.5rem !important;\n}\n\n.mx-26 {\n  margin-left: 6.5rem !important;\n  margin-right: 6.5rem !important;\n}\n\n.my-28 {\n  margin-top: 7rem !important;\n  margin-bottom: 7rem !important;\n}\n\n.mx-28 {\n  margin-left: 7rem !important;\n  margin-right: 7rem !important;\n}\n\n.my-30 {\n  margin-top: 7.5rem !important;\n  margin-bottom: 7.5rem !important;\n}\n\n.mx-30 {\n  margin-left: 7.5rem !important;\n  margin-right: 7.5rem !important;\n}\n\n.my-32 {\n  margin-top: 8rem !important;\n  margin-bottom: 8rem !important;\n}\n\n.mx-32 {\n  margin-left: 8rem !important;\n  margin-right: 8rem !important;\n}\n\n.my-36 {\n  margin-top: 9rem !important;\n  margin-bottom: 9rem !important;\n}\n\n.mx-36 {\n  margin-left: 9rem !important;\n  margin-right: 9rem !important;\n}\n\n.my-40 {\n  margin-top: 10rem !important;\n  margin-bottom: 10rem !important;\n}\n\n.mx-40 {\n  margin-left: 10rem !important;\n  margin-right: 10rem !important;\n}\n\n.my-48 {\n  margin-top: 12rem !important;\n  margin-bottom: 12rem !important;\n}\n\n.mx-48 {\n  margin-left: 12rem !important;\n  margin-right: 12rem !important;\n}\n\n.my-56 {\n  margin-top: 14rem !important;\n  margin-bottom: 14rem !important;\n}\n\n.mx-56 {\n  margin-left: 14rem !important;\n  margin-right: 14rem !important;\n}\n\n.my-64 {\n  margin-top: 16rem !important;\n  margin-bottom: 16rem !important;\n}\n\n.mx-64 {\n  margin-left: 16rem !important;\n  margin-right: 16rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-px {\n  margin-top: 1px !important;\n  margin-bottom: 1px !important;\n}\n\n.mx-px {\n  margin-left: 1px !important;\n  margin-right: 1px !important;\n}\n\n.my-2px {\n  margin-top: 2px !important;\n  margin-bottom: 2px !important;\n}\n\n.mx-2px {\n  margin-left: 2px !important;\n  margin-right: 2px !important;\n}\n\n.-my-1 {\n  margin-top: -0.25rem !important;\n  margin-bottom: -0.25rem !important;\n}\n\n.-mx-1 {\n  margin-left: -0.25rem !important;\n  margin-right: -0.25rem !important;\n}\n\n.-my-2 {\n  margin-top: -0.5rem !important;\n  margin-bottom: -0.5rem !important;\n}\n\n.-mx-2 {\n  margin-left: -0.5rem !important;\n  margin-right: -0.5rem !important;\n}\n\n.-my-3 {\n  margin-top: -0.75rem !important;\n  margin-bottom: -0.75rem !important;\n}\n\n.-mx-3 {\n  margin-left: -0.75rem !important;\n  margin-right: -0.75rem !important;\n}\n\n.-my-4 {\n  margin-top: -1rem !important;\n  margin-bottom: -1rem !important;\n}\n\n.-mx-4 {\n  margin-left: -1rem !important;\n  margin-right: -1rem !important;\n}\n\n.-my-5 {\n  margin-top: -1.25rem !important;\n  margin-bottom: -1.25rem !important;\n}\n\n.-mx-5 {\n  margin-left: -1.25rem !important;\n  margin-right: -1.25rem !important;\n}\n\n.-my-6 {\n  margin-top: -1.5rem !important;\n  margin-bottom: -1.5rem !important;\n}\n\n.-mx-6 {\n  margin-left: -1.5rem !important;\n  margin-right: -1.5rem !important;\n}\n\n.-my-8 {\n  margin-top: -2rem !important;\n  margin-bottom: -2rem !important;\n}\n\n.-mx-8 {\n  margin-left: -2rem !important;\n  margin-right: -2rem !important;\n}\n\n.-my-10 {\n  margin-top: -2.5rem !important;\n  margin-bottom: -2.5rem !important;\n}\n\n.-mx-10 {\n  margin-left: -2.5rem !important;\n  margin-right: -2.5rem !important;\n}\n\n.-my-12 {\n  margin-top: -3rem !important;\n  margin-bottom: -3rem !important;\n}\n\n.-mx-12 {\n  margin-left: -3rem !important;\n  margin-right: -3rem !important;\n}\n\n.-my-14 {\n  margin-top: -3.5rem !important;\n  margin-bottom: -3.5rem !important;\n}\n\n.-mx-14 {\n  margin-left: -3.5rem !important;\n  margin-right: -3.5rem !important;\n}\n\n.-my-16 {\n  margin-top: -4rem !important;\n  margin-bottom: -4rem !important;\n}\n\n.-mx-16 {\n  margin-left: -4rem !important;\n  margin-right: -4rem !important;\n}\n\n.-my-18 {\n  margin-top: -4.5rem !important;\n  margin-bottom: -4.5rem !important;\n}\n\n.-mx-18 {\n  margin-left: -4.5rem !important;\n  margin-right: -4.5rem !important;\n}\n\n.-my-20 {\n  margin-top: -5rem !important;\n  margin-bottom: -5rem !important;\n}\n\n.-mx-20 {\n  margin-left: -5rem !important;\n  margin-right: -5rem !important;\n}\n\n.-my-22 {\n  margin-top: -5.5rem !important;\n  margin-bottom: -5.5rem !important;\n}\n\n.-mx-22 {\n  margin-left: -5.5rem !important;\n  margin-right: -5.5rem !important;\n}\n\n.-my-24 {\n  margin-top: -6rem !important;\n  margin-bottom: -6rem !important;\n}\n\n.-mx-24 {\n  margin-left: -6rem !important;\n  margin-right: -6rem !important;\n}\n\n.-my-26 {\n  margin-top: -6.5rem !important;\n  margin-bottom: -6.5rem !important;\n}\n\n.-mx-26 {\n  margin-left: -6.5rem !important;\n  margin-right: -6.5rem !important;\n}\n\n.-my-28 {\n  margin-top: -7rem !important;\n  margin-bottom: -7rem !important;\n}\n\n.-mx-28 {\n  margin-left: -7rem !important;\n  margin-right: -7rem !important;\n}\n\n.-my-30 {\n  margin-top: -7.5rem !important;\n  margin-bottom: -7.5rem !important;\n}\n\n.-mx-30 {\n  margin-left: -7.5rem !important;\n  margin-right: -7.5rem !important;\n}\n\n.-my-32 {\n  margin-top: -8rem !important;\n  margin-bottom: -8rem !important;\n}\n\n.-mx-32 {\n  margin-left: -8rem !important;\n  margin-right: -8rem !important;\n}\n\n.-my-36 {\n  margin-top: -9rem !important;\n  margin-bottom: -9rem !important;\n}\n\n.-mx-36 {\n  margin-left: -9rem !important;\n  margin-right: -9rem !important;\n}\n\n.-my-40 {\n  margin-top: -10rem !important;\n  margin-bottom: -10rem !important;\n}\n\n.-mx-40 {\n  margin-left: -10rem !important;\n  margin-right: -10rem !important;\n}\n\n.-my-48 {\n  margin-top: -12rem !important;\n  margin-bottom: -12rem !important;\n}\n\n.-mx-48 {\n  margin-left: -12rem !important;\n  margin-right: -12rem !important;\n}\n\n.-my-56 {\n  margin-top: -14rem !important;\n  margin-bottom: -14rem !important;\n}\n\n.-mx-56 {\n  margin-left: -14rem !important;\n  margin-right: -14rem !important;\n}\n\n.-my-64 {\n  margin-top: -16rem !important;\n  margin-bottom: -16rem !important;\n}\n\n.-mx-64 {\n  margin-left: -16rem !important;\n  margin-right: -16rem !important;\n}\n\n.-my-px {\n  margin-top: -1px !important;\n  margin-bottom: -1px !important;\n}\n\n.-mx-px {\n  margin-left: -1px !important;\n  margin-right: -1px !important;\n}\n\n.-my-2px {\n  margin-top: -2px !important;\n  margin-bottom: -2px !important;\n}\n\n.-mx-2px {\n  margin-left: -2px !important;\n  margin-right: -2px !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mr-0 {\n  margin-right: 0 !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.ml-0 {\n  margin-left: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n  margin-left: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n  margin-left: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 0.75rem !important;\n}\n\n.mr-3 {\n  margin-right: 0.75rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 0.75rem !important;\n}\n\n.ml-3 {\n  margin-left: 0.75rem !important;\n}\n\n.mt-4 {\n  margin-top: 1rem !important;\n}\n\n.mr-4 {\n  margin-right: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-4 {\n  margin-left: 1rem !important;\n}\n\n.mt-5 {\n  margin-top: 1.25rem !important;\n}\n\n.mr-5 {\n  margin-right: 1.25rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 1.25rem !important;\n}\n\n.ml-5 {\n  margin-left: 1.25rem !important;\n}\n\n.mt-6 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-6 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-6 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-6 {\n  margin-left: 1.5rem !important;\n}\n\n.mt-8 {\n  margin-top: 2rem !important;\n}\n\n.mr-8 {\n  margin-right: 2rem !important;\n}\n\n.mb-8 {\n  margin-bottom: 2rem !important;\n}\n\n.ml-8 {\n  margin-left: 2rem !important;\n}\n\n.mt-10 {\n  margin-top: 2.5rem !important;\n}\n\n.mr-10 {\n  margin-right: 2.5rem !important;\n}\n\n.mb-10 {\n  margin-bottom: 2.5rem !important;\n}\n\n.ml-10 {\n  margin-left: 2.5rem !important;\n}\n\n.mt-12 {\n  margin-top: 3rem !important;\n}\n\n.mr-12 {\n  margin-right: 3rem !important;\n}\n\n.mb-12 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-12 {\n  margin-left: 3rem !important;\n}\n\n.mt-14 {\n  margin-top: 3.5rem !important;\n}\n\n.mr-14 {\n  margin-right: 3.5rem !important;\n}\n\n.mb-14 {\n  margin-bottom: 3.5rem !important;\n}\n\n.ml-14 {\n  margin-left: 3.5rem !important;\n}\n\n.mt-16 {\n  margin-top: 4rem !important;\n}\n\n.mr-16 {\n  margin-right: 4rem !important;\n}\n\n.mb-16 {\n  margin-bottom: 4rem !important;\n}\n\n.ml-16 {\n  margin-left: 4rem !important;\n}\n\n.mt-18 {\n  margin-top: 4.5rem !important;\n}\n\n.mr-18 {\n  margin-right: 4.5rem !important;\n}\n\n.mb-18 {\n  margin-bottom: 4.5rem !important;\n}\n\n.ml-18 {\n  margin-left: 4.5rem !important;\n}\n\n.mt-20 {\n  margin-top: 5rem !important;\n}\n\n.mr-20 {\n  margin-right: 5rem !important;\n}\n\n.mb-20 {\n  margin-bottom: 5rem !important;\n}\n\n.ml-20 {\n  margin-left: 5rem !important;\n}\n\n.mt-22 {\n  margin-top: 5.5rem !important;\n}\n\n.mr-22 {\n  margin-right: 5.5rem !important;\n}\n\n.mb-22 {\n  margin-bottom: 5.5rem !important;\n}\n\n.ml-22 {\n  margin-left: 5.5rem !important;\n}\n\n.mt-24 {\n  margin-top: 6rem !important;\n}\n\n.mr-24 {\n  margin-right: 6rem !important;\n}\n\n.mb-24 {\n  margin-bottom: 6rem !important;\n}\n\n.ml-24 {\n  margin-left: 6rem !important;\n}\n\n.mt-26 {\n  margin-top: 6.5rem !important;\n}\n\n.mr-26 {\n  margin-right: 6.5rem !important;\n}\n\n.mb-26 {\n  margin-bottom: 6.5rem !important;\n}\n\n.ml-26 {\n  margin-left: 6.5rem !important;\n}\n\n.mt-28 {\n  margin-top: 7rem !important;\n}\n\n.mr-28 {\n  margin-right: 7rem !important;\n}\n\n.mb-28 {\n  margin-bottom: 7rem !important;\n}\n\n.ml-28 {\n  margin-left: 7rem !important;\n}\n\n.mt-30 {\n  margin-top: 7.5rem !important;\n}\n\n.mr-30 {\n  margin-right: 7.5rem !important;\n}\n\n.mb-30 {\n  margin-bottom: 7.5rem !important;\n}\n\n.ml-30 {\n  margin-left: 7.5rem !important;\n}\n\n.mt-32 {\n  margin-top: 8rem !important;\n}\n\n.mr-32 {\n  margin-right: 8rem !important;\n}\n\n.mb-32 {\n  margin-bottom: 8rem !important;\n}\n\n.ml-32 {\n  margin-left: 8rem !important;\n}\n\n.mt-36 {\n  margin-top: 9rem !important;\n}\n\n.mr-36 {\n  margin-right: 9rem !important;\n}\n\n.mb-36 {\n  margin-bottom: 9rem !important;\n}\n\n.ml-36 {\n  margin-left: 9rem !important;\n}\n\n.mt-40 {\n  margin-top: 10rem !important;\n}\n\n.mr-40 {\n  margin-right: 10rem !important;\n}\n\n.mb-40 {\n  margin-bottom: 10rem !important;\n}\n\n.ml-40 {\n  margin-left: 10rem !important;\n}\n\n.mt-48 {\n  margin-top: 12rem !important;\n}\n\n.mr-48 {\n  margin-right: 12rem !important;\n}\n\n.mb-48 {\n  margin-bottom: 12rem !important;\n}\n\n.ml-48 {\n  margin-left: 12rem !important;\n}\n\n.mt-56 {\n  margin-top: 14rem !important;\n}\n\n.mr-56 {\n  margin-right: 14rem !important;\n}\n\n.mb-56 {\n  margin-bottom: 14rem !important;\n}\n\n.ml-56 {\n  margin-left: 14rem !important;\n}\n\n.mt-64 {\n  margin-top: 16rem !important;\n}\n\n.mr-64 {\n  margin-right: 16rem !important;\n}\n\n.mb-64 {\n  margin-bottom: 16rem !important;\n}\n\n.ml-64 {\n  margin-left: 16rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto {\n  margin-left: auto !important;\n}\n\n.mt-px {\n  margin-top: 1px !important;\n}\n\n.mr-px {\n  margin-right: 1px !important;\n}\n\n.mb-px {\n  margin-bottom: 1px !important;\n}\n\n.ml-px {\n  margin-left: 1px !important;\n}\n\n.mt-2px {\n  margin-top: 2px !important;\n}\n\n.mr-2px {\n  margin-right: 2px !important;\n}\n\n.mb-2px {\n  margin-bottom: 2px !important;\n}\n\n.ml-2px {\n  margin-left: 2px !important;\n}\n\n.-mt-1 {\n  margin-top: -0.25rem !important;\n}\n\n.-mr-1 {\n  margin-right: -0.25rem !important;\n}\n\n.-mb-1 {\n  margin-bottom: -0.25rem !important;\n}\n\n.-ml-1 {\n  margin-left: -0.25rem !important;\n}\n\n.-mt-2 {\n  margin-top: -0.5rem !important;\n}\n\n.-mr-2 {\n  margin-right: -0.5rem !important;\n}\n\n.-mb-2 {\n  margin-bottom: -0.5rem !important;\n}\n\n.-ml-2 {\n  margin-left: -0.5rem !important;\n}\n\n.-mt-3 {\n  margin-top: -0.75rem !important;\n}\n\n.-mr-3 {\n  margin-right: -0.75rem !important;\n}\n\n.-mb-3 {\n  margin-bottom: -0.75rem !important;\n}\n\n.-ml-3 {\n  margin-left: -0.75rem !important;\n}\n\n.-mt-4 {\n  margin-top: -1rem !important;\n}\n\n.-mr-4 {\n  margin-right: -1rem !important;\n}\n\n.-mb-4 {\n  margin-bottom: -1rem !important;\n}\n\n.-ml-4 {\n  margin-left: -1rem !important;\n}\n\n.-mt-5 {\n  margin-top: -1.25rem !important;\n}\n\n.-mr-5 {\n  margin-right: -1.25rem !important;\n}\n\n.-mb-5 {\n  margin-bottom: -1.25rem !important;\n}\n\n.-ml-5 {\n  margin-left: -1.25rem !important;\n}\n\n.-mt-6 {\n  margin-top: -1.5rem !important;\n}\n\n.-mr-6 {\n  margin-right: -1.5rem !important;\n}\n\n.-mb-6 {\n  margin-bottom: -1.5rem !important;\n}\n\n.-ml-6 {\n  margin-left: -1.5rem !important;\n}\n\n.-mt-8 {\n  margin-top: -2rem !important;\n}\n\n.-mr-8 {\n  margin-right: -2rem !important;\n}\n\n.-mb-8 {\n  margin-bottom: -2rem !important;\n}\n\n.-ml-8 {\n  margin-left: -2rem !important;\n}\n\n.-mt-10 {\n  margin-top: -2.5rem !important;\n}\n\n.-mr-10 {\n  margin-right: -2.5rem !important;\n}\n\n.-mb-10 {\n  margin-bottom: -2.5rem !important;\n}\n\n.-ml-10 {\n  margin-left: -2.5rem !important;\n}\n\n.-mt-12 {\n  margin-top: -3rem !important;\n}\n\n.-mr-12 {\n  margin-right: -3rem !important;\n}\n\n.-mb-12 {\n  margin-bottom: -3rem !important;\n}\n\n.-ml-12 {\n  margin-left: -3rem !important;\n}\n\n.-mt-14 {\n  margin-top: -3.5rem !important;\n}\n\n.-mr-14 {\n  margin-right: -3.5rem !important;\n}\n\n.-mb-14 {\n  margin-bottom: -3.5rem !important;\n}\n\n.-ml-14 {\n  margin-left: -3.5rem !important;\n}\n\n.-mt-16 {\n  margin-top: -4rem !important;\n}\n\n.-mr-16 {\n  margin-right: -4rem !important;\n}\n\n.-mb-16 {\n  margin-bottom: -4rem !important;\n}\n\n.-ml-16 {\n  margin-left: -4rem !important;\n}\n\n.-mt-18 {\n  margin-top: -4.5rem !important;\n}\n\n.-mr-18 {\n  margin-right: -4.5rem !important;\n}\n\n.-mb-18 {\n  margin-bottom: -4.5rem !important;\n}\n\n.-ml-18 {\n  margin-left: -4.5rem !important;\n}\n\n.-mt-20 {\n  margin-top: -5rem !important;\n}\n\n.-mr-20 {\n  margin-right: -5rem !important;\n}\n\n.-mb-20 {\n  margin-bottom: -5rem !important;\n}\n\n.-ml-20 {\n  margin-left: -5rem !important;\n}\n\n.-mt-22 {\n  margin-top: -5.5rem !important;\n}\n\n.-mr-22 {\n  margin-right: -5.5rem !important;\n}\n\n.-mb-22 {\n  margin-bottom: -5.5rem !important;\n}\n\n.-ml-22 {\n  margin-left: -5.5rem !important;\n}\n\n.-mt-24 {\n  margin-top: -6rem !important;\n}\n\n.-mr-24 {\n  margin-right: -6rem !important;\n}\n\n.-mb-24 {\n  margin-bottom: -6rem !important;\n}\n\n.-ml-24 {\n  margin-left: -6rem !important;\n}\n\n.-mt-26 {\n  margin-top: -6.5rem !important;\n}\n\n.-mr-26 {\n  margin-right: -6.5rem !important;\n}\n\n.-mb-26 {\n  margin-bottom: -6.5rem !important;\n}\n\n.-ml-26 {\n  margin-left: -6.5rem !important;\n}\n\n.-mt-28 {\n  margin-top: -7rem !important;\n}\n\n.-mr-28 {\n  margin-right: -7rem !important;\n}\n\n.-mb-28 {\n  margin-bottom: -7rem !important;\n}\n\n.-ml-28 {\n  margin-left: -7rem !important;\n}\n\n.-mt-30 {\n  margin-top: -7.5rem !important;\n}\n\n.-mr-30 {\n  margin-right: -7.5rem !important;\n}\n\n.-mb-30 {\n  margin-bottom: -7.5rem !important;\n}\n\n.-ml-30 {\n  margin-left: -7.5rem !important;\n}\n\n.-mt-32 {\n  margin-top: -8rem !important;\n}\n\n.-mr-32 {\n  margin-right: -8rem !important;\n}\n\n.-mb-32 {\n  margin-bottom: -8rem !important;\n}\n\n.-ml-32 {\n  margin-left: -8rem !important;\n}\n\n.-mt-36 {\n  margin-top: -9rem !important;\n}\n\n.-mr-36 {\n  margin-right: -9rem !important;\n}\n\n.-mb-36 {\n  margin-bottom: -9rem !important;\n}\n\n.-ml-36 {\n  margin-left: -9rem !important;\n}\n\n.-mt-40 {\n  margin-top: -10rem !important;\n}\n\n.-mr-40 {\n  margin-right: -10rem !important;\n}\n\n.-mb-40 {\n  margin-bottom: -10rem !important;\n}\n\n.-ml-40 {\n  margin-left: -10rem !important;\n}\n\n.-mt-48 {\n  margin-top: -12rem !important;\n}\n\n.-mr-48 {\n  margin-right: -12rem !important;\n}\n\n.-mb-48 {\n  margin-bottom: -12rem !important;\n}\n\n.-ml-48 {\n  margin-left: -12rem !important;\n}\n\n.-mt-56 {\n  margin-top: -14rem !important;\n}\n\n.-mr-56 {\n  margin-right: -14rem !important;\n}\n\n.-mb-56 {\n  margin-bottom: -14rem !important;\n}\n\n.-ml-56 {\n  margin-left: -14rem !important;\n}\n\n.-mt-64 {\n  margin-top: -16rem !important;\n}\n\n.-mr-64 {\n  margin-right: -16rem !important;\n}\n\n.-mb-64 {\n  margin-bottom: -16rem !important;\n}\n\n.-ml-64 {\n  margin-left: -16rem !important;\n}\n\n.-mt-px {\n  margin-top: -1px !important;\n}\n\n.-mr-px {\n  margin-right: -1px !important;\n}\n\n.-mb-px {\n  margin-bottom: -1px !important;\n}\n\n.-ml-px {\n  margin-left: -1px !important;\n}\n\n.-mt-2px {\n  margin-top: -2px !important;\n}\n\n.-mr-2px {\n  margin-right: -2px !important;\n}\n\n.-mb-2px {\n  margin-bottom: -2px !important;\n}\n\n.-ml-2px {\n  margin-left: -2px !important;\n}\n\n.max-h-0 {\n  max-height: 0 !important;\n}\n\n.max-h-1 {\n  max-height: 0.25rem !important;\n}\n\n.max-h-2 {\n  max-height: 0.5rem !important;\n}\n\n.max-h-3 {\n  max-height: 0.75rem !important;\n}\n\n.max-h-4 {\n  max-height: 1rem !important;\n}\n\n.max-h-5 {\n  max-height: 1.25rem !important;\n}\n\n.max-h-6 {\n  max-height: 1.5rem !important;\n}\n\n.max-h-8 {\n  max-height: 2rem !important;\n}\n\n.max-h-10 {\n  max-height: 2.5rem !important;\n}\n\n.max-h-12 {\n  max-height: 3rem !important;\n}\n\n.max-h-14 {\n  max-height: 3.5rem !important;\n}\n\n.max-h-16 {\n  max-height: 4rem !important;\n}\n\n.max-h-18 {\n  max-height: 4.5rem !important;\n}\n\n.max-h-20 {\n  max-height: 5rem !important;\n}\n\n.max-h-22 {\n  max-height: 5.5rem !important;\n}\n\n.max-h-24 {\n  max-height: 6rem !important;\n}\n\n.max-h-26 {\n  max-height: 6.5rem !important;\n}\n\n.max-h-28 {\n  max-height: 7rem !important;\n}\n\n.max-h-30 {\n  max-height: 7.5rem !important;\n}\n\n.max-h-32 {\n  max-height: 8rem !important;\n}\n\n.max-h-36 {\n  max-height: 9rem !important;\n}\n\n.max-h-40 {\n  max-height: 10rem !important;\n}\n\n.max-h-48 {\n  max-height: 12rem !important;\n}\n\n.max-h-50 {\n  max-height: 12.5rem !important;\n}\n\n.max-h-56 {\n  max-height: 14rem !important;\n}\n\n.max-h-60 {\n  max-height: 15rem !important;\n}\n\n.max-h-64 {\n  max-height: 16rem !important;\n}\n\n.max-h-80 {\n  max-height: 20rem !important;\n}\n\n.max-h-90 {\n  max-height: 24rem !important;\n}\n\n.max-h-100 {\n  max-height: 25rem !important;\n}\n\n.max-h-120 {\n  max-height: 30rem !important;\n}\n\n.max-h-128 {\n  max-height: 32rem !important;\n}\n\n.max-h-140 {\n  max-height: 35rem !important;\n}\n\n.max-h-160 {\n  max-height: 40rem !important;\n}\n\n.max-h-180 {\n  max-height: 45rem !important;\n}\n\n.max-h-192 {\n  max-height: 48rem !important;\n}\n\n.max-h-200 {\n  max-height: 50rem !important;\n}\n\n.max-h-240 {\n  max-height: 60rem !important;\n}\n\n.max-h-256 {\n  max-height: 64rem !important;\n}\n\n.max-h-280 {\n  max-height: 70rem !important;\n}\n\n.max-h-320 {\n  max-height: 80rem !important;\n}\n\n.max-h-360 {\n  max-height: 90rem !important;\n}\n\n.max-h-400 {\n  max-height: 100rem !important;\n}\n\n.max-h-480 {\n  max-height: 120rem !important;\n}\n\n.max-h-full {\n  max-height: 100% !important;\n}\n\n.max-h-screen {\n  max-height: 100vh !important;\n}\n\n.max-h-none {\n  max-height: none !important;\n}\n\n.max-h-px {\n  max-height: 1px !important;\n}\n\n.max-h-2px {\n  max-height: 2px !important;\n}\n\n.max-h-1\\/2 {\n  max-height: 50% !important;\n}\n\n.max-h-1\\/3 {\n  max-height: 33.33333% !important;\n}\n\n.max-h-2\\/3 {\n  max-height: 66.66667% !important;\n}\n\n.max-h-1\\/4 {\n  max-height: 25% !important;\n}\n\n.max-h-2\\/4 {\n  max-height: 50% !important;\n}\n\n.max-h-3\\/4 {\n  max-height: 75% !important;\n}\n\n.max-h-1\\/5 {\n  max-height: 20% !important;\n}\n\n.max-h-2\\/5 {\n  max-height: 40% !important;\n}\n\n.max-h-3\\/5 {\n  max-height: 60% !important;\n}\n\n.max-h-4\\/5 {\n  max-height: 80% !important;\n}\n\n.max-h-1\\/12 {\n  max-height: 8.33333% !important;\n}\n\n.max-h-2\\/12 {\n  max-height: 16.66667% !important;\n}\n\n.max-h-3\\/12 {\n  max-height: 25% !important;\n}\n\n.max-h-4\\/12 {\n  max-height: 33.33333% !important;\n}\n\n.max-h-5\\/12 {\n  max-height: 41.66667% !important;\n}\n\n.max-h-6\\/12 {\n  max-height: 50% !important;\n}\n\n.max-h-7\\/12 {\n  max-height: 58.33333% !important;\n}\n\n.max-h-8\\/12 {\n  max-height: 66.66667% !important;\n}\n\n.max-h-9\\/12 {\n  max-height: 75% !important;\n}\n\n.max-h-10\\/12 {\n  max-height: 83.33333% !important;\n}\n\n.max-h-11\\/12 {\n  max-height: 91.66667% !important;\n}\n\n.max-w-0 {\n  max-width: 0 !important;\n}\n\n.max-w-1 {\n  max-width: 0.25rem !important;\n}\n\n.max-w-2 {\n  max-width: 0.5rem !important;\n}\n\n.max-w-3 {\n  max-width: 0.75rem !important;\n}\n\n.max-w-4 {\n  max-width: 1rem !important;\n}\n\n.max-w-5 {\n  max-width: 1.25rem !important;\n}\n\n.max-w-6 {\n  max-width: 1.5rem !important;\n}\n\n.max-w-8 {\n  max-width: 2rem !important;\n}\n\n.max-w-10 {\n  max-width: 2.5rem !important;\n}\n\n.max-w-12 {\n  max-width: 3rem !important;\n}\n\n.max-w-14 {\n  max-width: 3.5rem !important;\n}\n\n.max-w-16 {\n  max-width: 4rem !important;\n}\n\n.max-w-18 {\n  max-width: 4.5rem !important;\n}\n\n.max-w-20 {\n  max-width: 5rem !important;\n}\n\n.max-w-22 {\n  max-width: 5.5rem !important;\n}\n\n.max-w-24 {\n  max-width: 6rem !important;\n}\n\n.max-w-26 {\n  max-width: 6.5rem !important;\n}\n\n.max-w-28 {\n  max-width: 7rem !important;\n}\n\n.max-w-30 {\n  max-width: 7.5rem !important;\n}\n\n.max-w-32 {\n  max-width: 8rem !important;\n}\n\n.max-w-36 {\n  max-width: 9rem !important;\n}\n\n.max-w-40 {\n  max-width: 10rem !important;\n}\n\n.max-w-48 {\n  max-width: 12rem !important;\n}\n\n.max-w-50 {\n  max-width: 12.5rem !important;\n}\n\n.max-w-56 {\n  max-width: 14rem !important;\n}\n\n.max-w-60 {\n  max-width: 15rem !important;\n}\n\n.max-w-64 {\n  max-width: 16rem !important;\n}\n\n.max-w-80 {\n  max-width: 20rem !important;\n}\n\n.max-w-90 {\n  max-width: 24rem !important;\n}\n\n.max-w-100 {\n  max-width: 25rem !important;\n}\n\n.max-w-120 {\n  max-width: 30rem !important;\n}\n\n.max-w-128 {\n  max-width: 32rem !important;\n}\n\n.max-w-140 {\n  max-width: 35rem !important;\n}\n\n.max-w-160 {\n  max-width: 40rem !important;\n}\n\n.max-w-180 {\n  max-width: 45rem !important;\n}\n\n.max-w-192 {\n  max-width: 48rem !important;\n}\n\n.max-w-200 {\n  max-width: 50rem !important;\n}\n\n.max-w-240 {\n  max-width: 60rem !important;\n}\n\n.max-w-256 {\n  max-width: 64rem !important;\n}\n\n.max-w-280 {\n  max-width: 70rem !important;\n}\n\n.max-w-320 {\n  max-width: 80rem !important;\n}\n\n.max-w-360 {\n  max-width: 90rem !important;\n}\n\n.max-w-400 {\n  max-width: 100rem !important;\n}\n\n.max-w-480 {\n  max-width: 120rem !important;\n}\n\n.max-w-none {\n  max-width: none !important;\n}\n\n.max-w-xs {\n  max-width: 20rem !important;\n}\n\n.max-w-sm {\n  max-width: 24rem !important;\n}\n\n.max-w-md {\n  max-width: 28rem !important;\n}\n\n.max-w-lg {\n  max-width: 32rem !important;\n}\n\n.max-w-xl {\n  max-width: 36rem !important;\n}\n\n.max-w-2xl {\n  max-width: 42rem !important;\n}\n\n.max-w-3xl {\n  max-width: 48rem !important;\n}\n\n.max-w-4xl {\n  max-width: 56rem !important;\n}\n\n.max-w-5xl {\n  max-width: 64rem !important;\n}\n\n.max-w-6xl {\n  max-width: 72rem !important;\n}\n\n.max-w-full {\n  max-width: 100% !important;\n}\n\n.max-w-screen {\n  max-width: 100vw !important;\n}\n\n.max-w-px {\n  max-width: 1px !important;\n}\n\n.max-w-2px {\n  max-width: 2px !important;\n}\n\n.max-w-1\\/2 {\n  max-width: 50% !important;\n}\n\n.max-w-1\\/3 {\n  max-width: 33.33333% !important;\n}\n\n.max-w-2\\/3 {\n  max-width: 66.66667% !important;\n}\n\n.max-w-1\\/4 {\n  max-width: 25% !important;\n}\n\n.max-w-2\\/4 {\n  max-width: 50% !important;\n}\n\n.max-w-3\\/4 {\n  max-width: 75% !important;\n}\n\n.max-w-1\\/5 {\n  max-width: 20% !important;\n}\n\n.max-w-2\\/5 {\n  max-width: 40% !important;\n}\n\n.max-w-3\\/5 {\n  max-width: 60% !important;\n}\n\n.max-w-4\\/5 {\n  max-width: 80% !important;\n}\n\n.max-w-1\\/12 {\n  max-width: 8.33333% !important;\n}\n\n.max-w-2\\/12 {\n  max-width: 16.66667% !important;\n}\n\n.max-w-3\\/12 {\n  max-width: 25% !important;\n}\n\n.max-w-4\\/12 {\n  max-width: 33.33333% !important;\n}\n\n.max-w-5\\/12 {\n  max-width: 41.66667% !important;\n}\n\n.max-w-6\\/12 {\n  max-width: 50% !important;\n}\n\n.max-w-7\\/12 {\n  max-width: 58.33333% !important;\n}\n\n.max-w-8\\/12 {\n  max-width: 66.66667% !important;\n}\n\n.max-w-9\\/12 {\n  max-width: 75% !important;\n}\n\n.max-w-10\\/12 {\n  max-width: 83.33333% !important;\n}\n\n.max-w-11\\/12 {\n  max-width: 91.66667% !important;\n}\n\n.min-h-0 {\n  min-height: 0 !important;\n}\n\n.min-h-1 {\n  min-height: 0.25rem !important;\n}\n\n.min-h-2 {\n  min-height: 0.5rem !important;\n}\n\n.min-h-3 {\n  min-height: 0.75rem !important;\n}\n\n.min-h-4 {\n  min-height: 1rem !important;\n}\n\n.min-h-5 {\n  min-height: 1.25rem !important;\n}\n\n.min-h-6 {\n  min-height: 1.5rem !important;\n}\n\n.min-h-8 {\n  min-height: 2rem !important;\n}\n\n.min-h-10 {\n  min-height: 2.5rem !important;\n}\n\n.min-h-12 {\n  min-height: 3rem !important;\n}\n\n.min-h-14 {\n  min-height: 3.5rem !important;\n}\n\n.min-h-16 {\n  min-height: 4rem !important;\n}\n\n.min-h-18 {\n  min-height: 4.5rem !important;\n}\n\n.min-h-20 {\n  min-height: 5rem !important;\n}\n\n.min-h-22 {\n  min-height: 5.5rem !important;\n}\n\n.min-h-24 {\n  min-height: 6rem !important;\n}\n\n.min-h-26 {\n  min-height: 6.5rem !important;\n}\n\n.min-h-28 {\n  min-height: 7rem !important;\n}\n\n.min-h-30 {\n  min-height: 7.5rem !important;\n}\n\n.min-h-32 {\n  min-height: 8rem !important;\n}\n\n.min-h-36 {\n  min-height: 9rem !important;\n}\n\n.min-h-40 {\n  min-height: 10rem !important;\n}\n\n.min-h-48 {\n  min-height: 12rem !important;\n}\n\n.min-h-50 {\n  min-height: 12.5rem !important;\n}\n\n.min-h-56 {\n  min-height: 14rem !important;\n}\n\n.min-h-60 {\n  min-height: 15rem !important;\n}\n\n.min-h-64 {\n  min-height: 16rem !important;\n}\n\n.min-h-80 {\n  min-height: 20rem !important;\n}\n\n.min-h-90 {\n  min-height: 24rem !important;\n}\n\n.min-h-100 {\n  min-height: 25rem !important;\n}\n\n.min-h-120 {\n  min-height: 30rem !important;\n}\n\n.min-h-128 {\n  min-height: 32rem !important;\n}\n\n.min-h-140 {\n  min-height: 35rem !important;\n}\n\n.min-h-160 {\n  min-height: 40rem !important;\n}\n\n.min-h-180 {\n  min-height: 45rem !important;\n}\n\n.min-h-192 {\n  min-height: 48rem !important;\n}\n\n.min-h-200 {\n  min-height: 50rem !important;\n}\n\n.min-h-240 {\n  min-height: 60rem !important;\n}\n\n.min-h-256 {\n  min-height: 64rem !important;\n}\n\n.min-h-280 {\n  min-height: 70rem !important;\n}\n\n.min-h-320 {\n  min-height: 80rem !important;\n}\n\n.min-h-360 {\n  min-height: 90rem !important;\n}\n\n.min-h-400 {\n  min-height: 100rem !important;\n}\n\n.min-h-480 {\n  min-height: 120rem !important;\n}\n\n.min-h-full {\n  min-height: 100% !important;\n}\n\n.min-h-screen {\n  min-height: 100vh !important;\n}\n\n.min-h-px {\n  min-height: 1px !important;\n}\n\n.min-h-2px {\n  min-height: 2px !important;\n}\n\n.min-h-1\\/2 {\n  min-height: 50% !important;\n}\n\n.min-h-1\\/3 {\n  min-height: 33.33333% !important;\n}\n\n.min-h-2\\/3 {\n  min-height: 66.66667% !important;\n}\n\n.min-h-1\\/4 {\n  min-height: 25% !important;\n}\n\n.min-h-2\\/4 {\n  min-height: 50% !important;\n}\n\n.min-h-3\\/4 {\n  min-height: 75% !important;\n}\n\n.min-h-1\\/5 {\n  min-height: 20% !important;\n}\n\n.min-h-2\\/5 {\n  min-height: 40% !important;\n}\n\n.min-h-3\\/5 {\n  min-height: 60% !important;\n}\n\n.min-h-4\\/5 {\n  min-height: 80% !important;\n}\n\n.min-h-1\\/12 {\n  min-height: 8.33333% !important;\n}\n\n.min-h-2\\/12 {\n  min-height: 16.66667% !important;\n}\n\n.min-h-3\\/12 {\n  min-height: 25% !important;\n}\n\n.min-h-4\\/12 {\n  min-height: 33.33333% !important;\n}\n\n.min-h-5\\/12 {\n  min-height: 41.66667% !important;\n}\n\n.min-h-6\\/12 {\n  min-height: 50% !important;\n}\n\n.min-h-7\\/12 {\n  min-height: 58.33333% !important;\n}\n\n.min-h-8\\/12 {\n  min-height: 66.66667% !important;\n}\n\n.min-h-9\\/12 {\n  min-height: 75% !important;\n}\n\n.min-h-10\\/12 {\n  min-height: 83.33333% !important;\n}\n\n.min-h-11\\/12 {\n  min-height: 91.66667% !important;\n}\n\n.min-w-0 {\n  min-width: 0 !important;\n}\n\n.min-w-1 {\n  min-width: 0.25rem !important;\n}\n\n.min-w-2 {\n  min-width: 0.5rem !important;\n}\n\n.min-w-3 {\n  min-width: 0.75rem !important;\n}\n\n.min-w-4 {\n  min-width: 1rem !important;\n}\n\n.min-w-5 {\n  min-width: 1.25rem !important;\n}\n\n.min-w-6 {\n  min-width: 1.5rem !important;\n}\n\n.min-w-8 {\n  min-width: 2rem !important;\n}\n\n.min-w-10 {\n  min-width: 2.5rem !important;\n}\n\n.min-w-12 {\n  min-width: 3rem !important;\n}\n\n.min-w-14 {\n  min-width: 3.5rem !important;\n}\n\n.min-w-16 {\n  min-width: 4rem !important;\n}\n\n.min-w-18 {\n  min-width: 4.5rem !important;\n}\n\n.min-w-20 {\n  min-width: 5rem !important;\n}\n\n.min-w-22 {\n  min-width: 5.5rem !important;\n}\n\n.min-w-24 {\n  min-width: 6rem !important;\n}\n\n.min-w-26 {\n  min-width: 6.5rem !important;\n}\n\n.min-w-28 {\n  min-width: 7rem !important;\n}\n\n.min-w-30 {\n  min-width: 7.5rem !important;\n}\n\n.min-w-32 {\n  min-width: 8rem !important;\n}\n\n.min-w-36 {\n  min-width: 9rem !important;\n}\n\n.min-w-40 {\n  min-width: 10rem !important;\n}\n\n.min-w-48 {\n  min-width: 12rem !important;\n}\n\n.min-w-50 {\n  min-width: 12.5rem !important;\n}\n\n.min-w-56 {\n  min-width: 14rem !important;\n}\n\n.min-w-60 {\n  min-width: 15rem !important;\n}\n\n.min-w-64 {\n  min-width: 16rem !important;\n}\n\n.min-w-80 {\n  min-width: 20rem !important;\n}\n\n.min-w-90 {\n  min-width: 24rem !important;\n}\n\n.min-w-100 {\n  min-width: 25rem !important;\n}\n\n.min-w-120 {\n  min-width: 30rem !important;\n}\n\n.min-w-128 {\n  min-width: 32rem !important;\n}\n\n.min-w-140 {\n  min-width: 35rem !important;\n}\n\n.min-w-160 {\n  min-width: 40rem !important;\n}\n\n.min-w-180 {\n  min-width: 45rem !important;\n}\n\n.min-w-192 {\n  min-width: 48rem !important;\n}\n\n.min-w-200 {\n  min-width: 50rem !important;\n}\n\n.min-w-240 {\n  min-width: 60rem !important;\n}\n\n.min-w-256 {\n  min-width: 64rem !important;\n}\n\n.min-w-280 {\n  min-width: 70rem !important;\n}\n\n.min-w-320 {\n  min-width: 80rem !important;\n}\n\n.min-w-360 {\n  min-width: 90rem !important;\n}\n\n.min-w-400 {\n  min-width: 100rem !important;\n}\n\n.min-w-480 {\n  min-width: 120rem !important;\n}\n\n.min-w-full {\n  min-width: 100% !important;\n}\n\n.min-w-screen {\n  min-width: 100vw !important;\n}\n\n.min-w-px {\n  min-width: 1px !important;\n}\n\n.min-w-2px {\n  min-width: 2px !important;\n}\n\n.min-w-1\\/2 {\n  min-width: 50% !important;\n}\n\n.min-w-1\\/3 {\n  min-width: 33.33333% !important;\n}\n\n.min-w-2\\/3 {\n  min-width: 66.66667% !important;\n}\n\n.min-w-1\\/4 {\n  min-width: 25% !important;\n}\n\n.min-w-2\\/4 {\n  min-width: 50% !important;\n}\n\n.min-w-3\\/4 {\n  min-width: 75% !important;\n}\n\n.min-w-1\\/5 {\n  min-width: 20% !important;\n}\n\n.min-w-2\\/5 {\n  min-width: 40% !important;\n}\n\n.min-w-3\\/5 {\n  min-width: 60% !important;\n}\n\n.min-w-4\\/5 {\n  min-width: 80% !important;\n}\n\n.min-w-1\\/12 {\n  min-width: 8.33333% !important;\n}\n\n.min-w-2\\/12 {\n  min-width: 16.66667% !important;\n}\n\n.min-w-3\\/12 {\n  min-width: 25% !important;\n}\n\n.min-w-4\\/12 {\n  min-width: 33.33333% !important;\n}\n\n.min-w-5\\/12 {\n  min-width: 41.66667% !important;\n}\n\n.min-w-6\\/12 {\n  min-width: 50% !important;\n}\n\n.min-w-7\\/12 {\n  min-width: 58.33333% !important;\n}\n\n.min-w-8\\/12 {\n  min-width: 66.66667% !important;\n}\n\n.min-w-9\\/12 {\n  min-width: 75% !important;\n}\n\n.min-w-10\\/12 {\n  min-width: 83.33333% !important;\n}\n\n.min-w-11\\/12 {\n  min-width: 91.66667% !important;\n}\n\n.object-contain {\n  -o-object-fit: contain !important;\n     object-fit: contain !important;\n}\n\n.object-cover {\n  -o-object-fit: cover !important;\n     object-fit: cover !important;\n}\n\n.object-fill {\n  -o-object-fit: fill !important;\n     object-fit: fill !important;\n}\n\n.object-none {\n  -o-object-fit: none !important;\n     object-fit: none !important;\n}\n\n.object-scale-down {\n  -o-object-fit: scale-down !important;\n     object-fit: scale-down !important;\n}\n\n.object-bottom {\n  -o-object-position: bottom !important;\n     object-position: bottom !important;\n}\n\n.object-center {\n  -o-object-position: center !important;\n     object-position: center !important;\n}\n\n.object-left {\n  -o-object-position: left !important;\n     object-position: left !important;\n}\n\n.object-left-bottom {\n  -o-object-position: left bottom !important;\n     object-position: left bottom !important;\n}\n\n.object-left-top {\n  -o-object-position: left top !important;\n     object-position: left top !important;\n}\n\n.object-right {\n  -o-object-position: right !important;\n     object-position: right !important;\n}\n\n.object-right-bottom {\n  -o-object-position: right bottom !important;\n     object-position: right bottom !important;\n}\n\n.object-right-top {\n  -o-object-position: right top !important;\n     object-position: right top !important;\n}\n\n.object-top {\n  -o-object-position: top !important;\n     object-position: top !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-12 {\n  opacity: 0.12 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-38 {\n  opacity: 0.38 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-54 {\n  opacity: 0.54 !important;\n}\n\n.opacity-70 {\n  opacity: 0.70 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-84 {\n  opacity: 0.84 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.hover\\:opacity-0:hover {\n  opacity: 0 !important;\n}\n\n.hover\\:opacity-12:hover {\n  opacity: 0.12 !important;\n}\n\n.hover\\:opacity-25:hover {\n  opacity: 0.25 !important;\n}\n\n.hover\\:opacity-38:hover {\n  opacity: 0.38 !important;\n}\n\n.hover\\:opacity-50:hover {\n  opacity: 0.5 !important;\n}\n\n.hover\\:opacity-54:hover {\n  opacity: 0.54 !important;\n}\n\n.hover\\:opacity-70:hover {\n  opacity: 0.70 !important;\n}\n\n.hover\\:opacity-75:hover {\n  opacity: 0.75 !important;\n}\n\n.hover\\:opacity-84:hover {\n  opacity: 0.84 !important;\n}\n\n.hover\\:opacity-100:hover {\n  opacity: 1 !important;\n}\n\n.focus\\:opacity-0:focus {\n  opacity: 0 !important;\n}\n\n.focus\\:opacity-12:focus {\n  opacity: 0.12 !important;\n}\n\n.focus\\:opacity-25:focus {\n  opacity: 0.25 !important;\n}\n\n.focus\\:opacity-38:focus {\n  opacity: 0.38 !important;\n}\n\n.focus\\:opacity-50:focus {\n  opacity: 0.5 !important;\n}\n\n.focus\\:opacity-54:focus {\n  opacity: 0.54 !important;\n}\n\n.focus\\:opacity-70:focus {\n  opacity: 0.70 !important;\n}\n\n.focus\\:opacity-75:focus {\n  opacity: 0.75 !important;\n}\n\n.focus\\:opacity-84:focus {\n  opacity: 0.84 !important;\n}\n\n.focus\\:opacity-100:focus {\n  opacity: 1 !important;\n}\n\n.outline-none {\n  outline: 0 !important;\n}\n\n.focus\\:outline-none:focus {\n  outline: 0 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.overflow-x-auto {\n  overflow-x: auto !important;\n}\n\n.overflow-y-auto {\n  overflow-y: auto !important;\n}\n\n.overflow-x-hidden {\n  overflow-x: hidden !important;\n}\n\n.overflow-y-hidden {\n  overflow-y: hidden !important;\n}\n\n.overflow-x-visible {\n  overflow-x: visible !important;\n}\n\n.overflow-y-visible {\n  overflow-y: visible !important;\n}\n\n.overflow-x-scroll {\n  overflow-x: scroll !important;\n}\n\n.overflow-y-scroll {\n  overflow-y: scroll !important;\n}\n\n.scrolling-touch {\n  -webkit-overflow-scrolling: touch !important;\n}\n\n.scrolling-auto {\n  -webkit-overflow-scrolling: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 0.75rem !important;\n}\n\n.p-4 {\n  padding: 1rem !important;\n}\n\n.p-5 {\n  padding: 1.25rem !important;\n}\n\n.p-6 {\n  padding: 1.5rem !important;\n}\n\n.p-8 {\n  padding: 2rem !important;\n}\n\n.p-10 {\n  padding: 2.5rem !important;\n}\n\n.p-12 {\n  padding: 3rem !important;\n}\n\n.p-14 {\n  padding: 3.5rem !important;\n}\n\n.p-16 {\n  padding: 4rem !important;\n}\n\n.p-18 {\n  padding: 4.5rem !important;\n}\n\n.p-20 {\n  padding: 5rem !important;\n}\n\n.p-22 {\n  padding: 5.5rem !important;\n}\n\n.p-24 {\n  padding: 6rem !important;\n}\n\n.p-26 {\n  padding: 6.5rem !important;\n}\n\n.p-28 {\n  padding: 7rem !important;\n}\n\n.p-30 {\n  padding: 7.5rem !important;\n}\n\n.p-32 {\n  padding: 8rem !important;\n}\n\n.p-36 {\n  padding: 9rem !important;\n}\n\n.p-40 {\n  padding: 10rem !important;\n}\n\n.p-48 {\n  padding: 12rem !important;\n}\n\n.p-56 {\n  padding: 14rem !important;\n}\n\n.p-64 {\n  padding: 16rem !important;\n}\n\n.p-px {\n  padding: 1px !important;\n}\n\n.p-2px {\n  padding: 2px !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.px-0 {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 0.75rem !important;\n  padding-bottom: 0.75rem !important;\n}\n\n.px-3 {\n  padding-left: 0.75rem !important;\n  padding-right: 0.75rem !important;\n}\n\n.py-4 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.py-5 {\n  padding-top: 1.25rem !important;\n  padding-bottom: 1.25rem !important;\n}\n\n.px-5 {\n  padding-left: 1.25rem !important;\n  padding-right: 1.25rem !important;\n}\n\n.py-6 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.px-6 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.py-8 {\n  padding-top: 2rem !important;\n  padding-bottom: 2rem !important;\n}\n\n.px-8 {\n  padding-left: 2rem !important;\n  padding-right: 2rem !important;\n}\n\n.py-10 {\n  padding-top: 2.5rem !important;\n  padding-bottom: 2.5rem !important;\n}\n\n.px-10 {\n  padding-left: 2.5rem !important;\n  padding-right: 2.5rem !important;\n}\n\n.py-12 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.px-12 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.py-14 {\n  padding-top: 3.5rem !important;\n  padding-bottom: 3.5rem !important;\n}\n\n.px-14 {\n  padding-left: 3.5rem !important;\n  padding-right: 3.5rem !important;\n}\n\n.py-16 {\n  padding-top: 4rem !important;\n  padding-bottom: 4rem !important;\n}\n\n.px-16 {\n  padding-left: 4rem !important;\n  padding-right: 4rem !important;\n}\n\n.py-18 {\n  padding-top: 4.5rem !important;\n  padding-bottom: 4.5rem !important;\n}\n\n.px-18 {\n  padding-left: 4.5rem !important;\n  padding-right: 4.5rem !important;\n}\n\n.py-20 {\n  padding-top: 5rem !important;\n  padding-bottom: 5rem !important;\n}\n\n.px-20 {\n  padding-left: 5rem !important;\n  padding-right: 5rem !important;\n}\n\n.py-22 {\n  padding-top: 5.5rem !important;\n  padding-bottom: 5.5rem !important;\n}\n\n.px-22 {\n  padding-left: 5.5rem !important;\n  padding-right: 5.5rem !important;\n}\n\n.py-24 {\n  padding-top: 6rem !important;\n  padding-bottom: 6rem !important;\n}\n\n.px-24 {\n  padding-left: 6rem !important;\n  padding-right: 6rem !important;\n}\n\n.py-26 {\n  padding-top: 6.5rem !important;\n  padding-bottom: 6.5rem !important;\n}\n\n.px-26 {\n  padding-left: 6.5rem !important;\n  padding-right: 6.5rem !important;\n}\n\n.py-28 {\n  padding-top: 7rem !important;\n  padding-bottom: 7rem !important;\n}\n\n.px-28 {\n  padding-left: 7rem !important;\n  padding-right: 7rem !important;\n}\n\n.py-30 {\n  padding-top: 7.5rem !important;\n  padding-bottom: 7.5rem !important;\n}\n\n.px-30 {\n  padding-left: 7.5rem !important;\n  padding-right: 7.5rem !important;\n}\n\n.py-32 {\n  padding-top: 8rem !important;\n  padding-bottom: 8rem !important;\n}\n\n.px-32 {\n  padding-left: 8rem !important;\n  padding-right: 8rem !important;\n}\n\n.py-36 {\n  padding-top: 9rem !important;\n  padding-bottom: 9rem !important;\n}\n\n.px-36 {\n  padding-left: 9rem !important;\n  padding-right: 9rem !important;\n}\n\n.py-40 {\n  padding-top: 10rem !important;\n  padding-bottom: 10rem !important;\n}\n\n.px-40 {\n  padding-left: 10rem !important;\n  padding-right: 10rem !important;\n}\n\n.py-48 {\n  padding-top: 12rem !important;\n  padding-bottom: 12rem !important;\n}\n\n.px-48 {\n  padding-left: 12rem !important;\n  padding-right: 12rem !important;\n}\n\n.py-56 {\n  padding-top: 14rem !important;\n  padding-bottom: 14rem !important;\n}\n\n.px-56 {\n  padding-left: 14rem !important;\n  padding-right: 14rem !important;\n}\n\n.py-64 {\n  padding-top: 16rem !important;\n  padding-bottom: 16rem !important;\n}\n\n.px-64 {\n  padding-left: 16rem !important;\n  padding-right: 16rem !important;\n}\n\n.py-px {\n  padding-top: 1px !important;\n  padding-bottom: 1px !important;\n}\n\n.px-px {\n  padding-left: 1px !important;\n  padding-right: 1px !important;\n}\n\n.py-2px {\n  padding-top: 2px !important;\n  padding-bottom: 2px !important;\n}\n\n.px-2px {\n  padding-left: 2px !important;\n  padding-right: 2px !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0 {\n  padding-left: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 0.75rem !important;\n}\n\n.pr-3 {\n  padding-right: 0.75rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 0.75rem !important;\n}\n\n.pl-3 {\n  padding-left: 0.75rem !important;\n}\n\n.pt-4 {\n  padding-top: 1rem !important;\n}\n\n.pr-4 {\n  padding-right: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-4 {\n  padding-left: 1rem !important;\n}\n\n.pt-5 {\n  padding-top: 1.25rem !important;\n}\n\n.pr-5 {\n  padding-right: 1.25rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 1.25rem !important;\n}\n\n.pl-5 {\n  padding-left: 1.25rem !important;\n}\n\n.pt-6 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-6 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-6 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-6 {\n  padding-left: 1.5rem !important;\n}\n\n.pt-8 {\n  padding-top: 2rem !important;\n}\n\n.pr-8 {\n  padding-right: 2rem !important;\n}\n\n.pb-8 {\n  padding-bottom: 2rem !important;\n}\n\n.pl-8 {\n  padding-left: 2rem !important;\n}\n\n.pt-10 {\n  padding-top: 2.5rem !important;\n}\n\n.pr-10 {\n  padding-right: 2.5rem !important;\n}\n\n.pb-10 {\n  padding-bottom: 2.5rem !important;\n}\n\n.pl-10 {\n  padding-left: 2.5rem !important;\n}\n\n.pt-12 {\n  padding-top: 3rem !important;\n}\n\n.pr-12 {\n  padding-right: 3rem !important;\n}\n\n.pb-12 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-12 {\n  padding-left: 3rem !important;\n}\n\n.pt-14 {\n  padding-top: 3.5rem !important;\n}\n\n.pr-14 {\n  padding-right: 3.5rem !important;\n}\n\n.pb-14 {\n  padding-bottom: 3.5rem !important;\n}\n\n.pl-14 {\n  padding-left: 3.5rem !important;\n}\n\n.pt-16 {\n  padding-top: 4rem !important;\n}\n\n.pr-16 {\n  padding-right: 4rem !important;\n}\n\n.pb-16 {\n  padding-bottom: 4rem !important;\n}\n\n.pl-16 {\n  padding-left: 4rem !important;\n}\n\n.pt-18 {\n  padding-top: 4.5rem !important;\n}\n\n.pr-18 {\n  padding-right: 4.5rem !important;\n}\n\n.pb-18 {\n  padding-bottom: 4.5rem !important;\n}\n\n.pl-18 {\n  padding-left: 4.5rem !important;\n}\n\n.pt-20 {\n  padding-top: 5rem !important;\n}\n\n.pr-20 {\n  padding-right: 5rem !important;\n}\n\n.pb-20 {\n  padding-bottom: 5rem !important;\n}\n\n.pl-20 {\n  padding-left: 5rem !important;\n}\n\n.pt-22 {\n  padding-top: 5.5rem !important;\n}\n\n.pr-22 {\n  padding-right: 5.5rem !important;\n}\n\n.pb-22 {\n  padding-bottom: 5.5rem !important;\n}\n\n.pl-22 {\n  padding-left: 5.5rem !important;\n}\n\n.pt-24 {\n  padding-top: 6rem !important;\n}\n\n.pr-24 {\n  padding-right: 6rem !important;\n}\n\n.pb-24 {\n  padding-bottom: 6rem !important;\n}\n\n.pl-24 {\n  padding-left: 6rem !important;\n}\n\n.pt-26 {\n  padding-top: 6.5rem !important;\n}\n\n.pr-26 {\n  padding-right: 6.5rem !important;\n}\n\n.pb-26 {\n  padding-bottom: 6.5rem !important;\n}\n\n.pl-26 {\n  padding-left: 6.5rem !important;\n}\n\n.pt-28 {\n  padding-top: 7rem !important;\n}\n\n.pr-28 {\n  padding-right: 7rem !important;\n}\n\n.pb-28 {\n  padding-bottom: 7rem !important;\n}\n\n.pl-28 {\n  padding-left: 7rem !important;\n}\n\n.pt-30 {\n  padding-top: 7.5rem !important;\n}\n\n.pr-30 {\n  padding-right: 7.5rem !important;\n}\n\n.pb-30 {\n  padding-bottom: 7.5rem !important;\n}\n\n.pl-30 {\n  padding-left: 7.5rem !important;\n}\n\n.pt-32 {\n  padding-top: 8rem !important;\n}\n\n.pr-32 {\n  padding-right: 8rem !important;\n}\n\n.pb-32 {\n  padding-bottom: 8rem !important;\n}\n\n.pl-32 {\n  padding-left: 8rem !important;\n}\n\n.pt-36 {\n  padding-top: 9rem !important;\n}\n\n.pr-36 {\n  padding-right: 9rem !important;\n}\n\n.pb-36 {\n  padding-bottom: 9rem !important;\n}\n\n.pl-36 {\n  padding-left: 9rem !important;\n}\n\n.pt-40 {\n  padding-top: 10rem !important;\n}\n\n.pr-40 {\n  padding-right: 10rem !important;\n}\n\n.pb-40 {\n  padding-bottom: 10rem !important;\n}\n\n.pl-40 {\n  padding-left: 10rem !important;\n}\n\n.pt-48 {\n  padding-top: 12rem !important;\n}\n\n.pr-48 {\n  padding-right: 12rem !important;\n}\n\n.pb-48 {\n  padding-bottom: 12rem !important;\n}\n\n.pl-48 {\n  padding-left: 12rem !important;\n}\n\n.pt-56 {\n  padding-top: 14rem !important;\n}\n\n.pr-56 {\n  padding-right: 14rem !important;\n}\n\n.pb-56 {\n  padding-bottom: 14rem !important;\n}\n\n.pl-56 {\n  padding-left: 14rem !important;\n}\n\n.pt-64 {\n  padding-top: 16rem !important;\n}\n\n.pr-64 {\n  padding-right: 16rem !important;\n}\n\n.pb-64 {\n  padding-bottom: 16rem !important;\n}\n\n.pl-64 {\n  padding-left: 16rem !important;\n}\n\n.pt-px {\n  padding-top: 1px !important;\n}\n\n.pr-px {\n  padding-right: 1px !important;\n}\n\n.pb-px {\n  padding-bottom: 1px !important;\n}\n\n.pl-px {\n  padding-left: 1px !important;\n}\n\n.pt-2px {\n  padding-top: 2px !important;\n}\n\n.pr-2px {\n  padding-right: 2px !important;\n}\n\n.pb-2px {\n  padding-bottom: 2px !important;\n}\n\n.pl-2px {\n  padding-left: 2px !important;\n}\n\n.placeholder-opacity-0::-webkit-input-placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.placeholder-opacity-0::-moz-placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.placeholder-opacity-0::-ms-input-placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.placeholder-opacity-0::placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.placeholder-opacity-12::-webkit-input-placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.placeholder-opacity-12::-moz-placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.placeholder-opacity-12::-ms-input-placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.placeholder-opacity-12::placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.placeholder-opacity-25::-webkit-input-placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.placeholder-opacity-25::-moz-placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.placeholder-opacity-25::-ms-input-placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.placeholder-opacity-25::placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.placeholder-opacity-38::-webkit-input-placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.placeholder-opacity-38::-moz-placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.placeholder-opacity-38::-ms-input-placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.placeholder-opacity-38::placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.placeholder-opacity-50::-webkit-input-placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.placeholder-opacity-50::-moz-placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.placeholder-opacity-50::-ms-input-placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.placeholder-opacity-50::placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.placeholder-opacity-54::-webkit-input-placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.placeholder-opacity-54::-moz-placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.placeholder-opacity-54::-ms-input-placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.placeholder-opacity-54::placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.placeholder-opacity-70::-webkit-input-placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.placeholder-opacity-70::-moz-placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.placeholder-opacity-70::-ms-input-placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.placeholder-opacity-70::placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.placeholder-opacity-75::-webkit-input-placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.placeholder-opacity-75::-moz-placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.placeholder-opacity-75::-ms-input-placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.placeholder-opacity-75::placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.placeholder-opacity-84::-webkit-input-placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.placeholder-opacity-84::-moz-placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.placeholder-opacity-84::-ms-input-placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.placeholder-opacity-84::placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.placeholder-opacity-100::-webkit-input-placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.placeholder-opacity-100::-moz-placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.placeholder-opacity-100::-ms-input-placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.placeholder-opacity-100::placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.focus\\:placeholder-opacity-0:focus::placeholder {\n  --placeholder-opacity: 0 !important;\n}\n\n.focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.focus\\:placeholder-opacity-12:focus::placeholder {\n  --placeholder-opacity: 0.12 !important;\n}\n\n.focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.focus\\:placeholder-opacity-25:focus::placeholder {\n  --placeholder-opacity: 0.25 !important;\n}\n\n.focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.focus\\:placeholder-opacity-38:focus::placeholder {\n  --placeholder-opacity: 0.38 !important;\n}\n\n.focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.focus\\:placeholder-opacity-50:focus::placeholder {\n  --placeholder-opacity: 0.5 !important;\n}\n\n.focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.focus\\:placeholder-opacity-54:focus::placeholder {\n  --placeholder-opacity: 0.54 !important;\n}\n\n.focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.focus\\:placeholder-opacity-70:focus::placeholder {\n  --placeholder-opacity: 0.70 !important;\n}\n\n.focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.focus\\:placeholder-opacity-75:focus::placeholder {\n  --placeholder-opacity: 0.75 !important;\n}\n\n.focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.focus\\:placeholder-opacity-84:focus::placeholder {\n  --placeholder-opacity: 0.84 !important;\n}\n\n.focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.focus\\:placeholder-opacity-100:focus::placeholder {\n  --placeholder-opacity: 1 !important;\n}\n\n.pointer-events-none {\n  pointer-events: none !important;\n}\n\n.pointer-events-auto {\n  pointer-events: auto !important;\n}\n\n.static {\n  position: static !important;\n}\n\n.fixed {\n  position: fixed !important;\n}\n\n.absolute {\n  position: absolute !important;\n}\n\n.relative {\n  position: relative !important;\n}\n\n.sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.inset-0 {\n  top: 0 !important;\n  right: 0 !important;\n  bottom: 0 !important;\n  left: 0 !important;\n}\n\n.inset-auto {\n  top: auto !important;\n  right: auto !important;\n  bottom: auto !important;\n  left: auto !important;\n}\n\n.inset-y-0 {\n  top: 0 !important;\n  bottom: 0 !important;\n}\n\n.inset-x-0 {\n  right: 0 !important;\n  left: 0 !important;\n}\n\n.inset-y-auto {\n  top: auto !important;\n  bottom: auto !important;\n}\n\n.inset-x-auto {\n  right: auto !important;\n  left: auto !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.right-0 {\n  right: 0 !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.left-0 {\n  left: 0 !important;\n}\n\n.top-auto {\n  top: auto !important;\n}\n\n.right-auto {\n  right: auto !important;\n}\n\n.bottom-auto {\n  bottom: auto !important;\n}\n\n.left-auto {\n  left: auto !important;\n}\n\n.resize-none {\n  resize: none !important;\n}\n\n.resize-y {\n  resize: vertical !important;\n}\n\n.resize-x {\n  resize: horizontal !important;\n}\n\n.resize {\n  resize: both !important;\n}\n\n.shadow-xs {\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n}\n\n.shadow {\n  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n}\n\n.shadow-md {\n  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n}\n\n.shadow-xl {\n  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n}\n\n.shadow-2xl {\n  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n}\n\n.shadow-inner {\n  box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n}\n\n.shadow-outline {\n  box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.shadow-solid {\n  box-shadow: 0 0 0 2px currentColor !important;\n}\n\n.hover\\:shadow-xs:hover {\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n}\n\n.hover\\:shadow-sm:hover {\n  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n}\n\n.hover\\:shadow:hover {\n  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n}\n\n.hover\\:shadow-md:hover {\n  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n}\n\n.hover\\:shadow-lg:hover {\n  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n}\n\n.hover\\:shadow-xl:hover {\n  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n}\n\n.hover\\:shadow-2xl:hover {\n  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n}\n\n.hover\\:shadow-inner:hover {\n  box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n}\n\n.hover\\:shadow-outline:hover {\n  box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n}\n\n.hover\\:shadow-none:hover {\n  box-shadow: none !important;\n}\n\n.hover\\:shadow-solid:hover {\n  box-shadow: 0 0 0 2px currentColor !important;\n}\n\n.focus\\:shadow-xs:focus {\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n}\n\n.focus\\:shadow-sm:focus {\n  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n}\n\n.focus\\:shadow:focus {\n  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n}\n\n.focus\\:shadow-md:focus {\n  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n}\n\n.focus\\:shadow-lg:focus {\n  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n}\n\n.focus\\:shadow-xl:focus {\n  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n}\n\n.focus\\:shadow-2xl:focus {\n  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n}\n\n.focus\\:shadow-inner:focus {\n  box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n}\n\n.focus\\:shadow-outline:focus {\n  box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n}\n\n.focus\\:shadow-none:focus {\n  box-shadow: none !important;\n}\n\n.focus\\:shadow-solid:focus {\n  box-shadow: 0 0 0 2px currentColor !important;\n}\n\n.fill-current {\n  fill: currentColor !important;\n}\n\n.stroke-current {\n  stroke: currentColor !important;\n}\n\n.stroke-0 {\n  stroke-width: 0 !important;\n}\n\n.stroke-1 {\n  stroke-width: 1 !important;\n}\n\n.stroke-2 {\n  stroke-width: 2 !important;\n}\n\n.table-auto {\n  table-layout: auto !important;\n}\n\n.table-fixed {\n  table-layout: fixed !important;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-current {\n  color: currentColor !important;\n}\n\n.text-transparent {\n  color: transparent !important;\n}\n\n.text-white {\n  --text-opacity: 1 !important;\n  color: #FFFFFF !important;\n  color: rgba(255, 255, 255, var(--text-opacity)) !important;\n}\n\n.text-black {\n  --text-opacity: 1 !important;\n  color: #000000 !important;\n  color: rgba(0, 0, 0, var(--text-opacity)) !important;\n}\n\n.text-gray-50 {\n  --text-opacity: 1 !important;\n  color: #F9FAFB !important;\n  color: rgba(249, 250, 251, var(--text-opacity)) !important;\n}\n\n.text-gray-100 {\n  --text-opacity: 1 !important;\n  color: #F4F5F7 !important;\n  color: rgba(244, 245, 247, var(--text-opacity)) !important;\n}\n\n.text-gray-200 {\n  --text-opacity: 1 !important;\n  color: #E5E7EB !important;\n  color: rgba(229, 231, 235, var(--text-opacity)) !important;\n}\n\n.text-gray-300 {\n  --text-opacity: 1 !important;\n  color: #D2D6DC !important;\n  color: rgba(210, 214, 220, var(--text-opacity)) !important;\n}\n\n.text-gray-400 {\n  --text-opacity: 1 !important;\n  color: #9FA6B2 !important;\n  color: rgba(159, 166, 178, var(--text-opacity)) !important;\n}\n\n.text-gray-500 {\n  --text-opacity: 1 !important;\n  color: #6B7280 !important;\n  color: rgba(107, 114, 128, var(--text-opacity)) !important;\n}\n\n.text-gray-600 {\n  --text-opacity: 1 !important;\n  color: #4B5563 !important;\n  color: rgba(75, 85, 99, var(--text-opacity)) !important;\n}\n\n.text-gray-700 {\n  --text-opacity: 1 !important;\n  color: #374151 !important;\n  color: rgba(55, 65, 81, var(--text-opacity)) !important;\n}\n\n.text-gray-800 {\n  --text-opacity: 1 !important;\n  color: #252F3F !important;\n  color: rgba(37, 47, 63, var(--text-opacity)) !important;\n}\n\n.text-gray-900 {\n  --text-opacity: 1 !important;\n  color: #161E2E !important;\n  color: rgba(22, 30, 46, var(--text-opacity)) !important;\n}\n\n.text-gray {\n  --text-opacity: 1 !important;\n  color: #6B7280 !important;\n  color: rgba(107, 114, 128, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-50 {\n  --text-opacity: 1 !important;\n  color: #FBFDFE !important;\n  color: rgba(251, 253, 254, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-100 {\n  --text-opacity: 1 !important;\n  color: #F1F5F9 !important;\n  color: rgba(241, 245, 249, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-200 {\n  --text-opacity: 1 !important;\n  color: #E2E8F0 !important;\n  color: rgba(226, 232, 240, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-300 {\n  --text-opacity: 1 !important;\n  color: #CFD8E3 !important;\n  color: rgba(207, 216, 227, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-400 {\n  --text-opacity: 1 !important;\n  color: #97A6BA !important;\n  color: rgba(151, 166, 186, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-500 {\n  --text-opacity: 1 !important;\n  color: #64748B !important;\n  color: rgba(100, 116, 139, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-600 {\n  --text-opacity: 1 !important;\n  color: #475569 !important;\n  color: rgba(71, 85, 105, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-700 {\n  --text-opacity: 1 !important;\n  color: #364152 !important;\n  color: rgba(54, 65, 82, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-800 {\n  --text-opacity: 1 !important;\n  color: #27303F !important;\n  color: rgba(39, 48, 63, var(--text-opacity)) !important;\n}\n\n.text-cool-gray-900 {\n  --text-opacity: 1 !important;\n  color: #1A202E !important;\n  color: rgba(26, 32, 46, var(--text-opacity)) !important;\n}\n\n.text-cool-gray {\n  --text-opacity: 1 !important;\n  color: #64748B !important;\n  color: rgba(100, 116, 139, var(--text-opacity)) !important;\n}\n\n.text-red-50 {\n  --text-opacity: 1 !important;\n  color: #FDF2F2 !important;\n  color: rgba(253, 242, 242, var(--text-opacity)) !important;\n}\n\n.text-red-100 {\n  --text-opacity: 1 !important;\n  color: #FDE8E8 !important;\n  color: rgba(253, 232, 232, var(--text-opacity)) !important;\n}\n\n.text-red-200 {\n  --text-opacity: 1 !important;\n  color: #FBD5D5 !important;\n  color: rgba(251, 213, 213, var(--text-opacity)) !important;\n}\n\n.text-red-300 {\n  --text-opacity: 1 !important;\n  color: #F8B4B4 !important;\n  color: rgba(248, 180, 180, var(--text-opacity)) !important;\n}\n\n.text-red-400 {\n  --text-opacity: 1 !important;\n  color: #F98080 !important;\n  color: rgba(249, 128, 128, var(--text-opacity)) !important;\n}\n\n.text-red-500 {\n  --text-opacity: 1 !important;\n  color: #F05252 !important;\n  color: rgba(240, 82, 82, var(--text-opacity)) !important;\n}\n\n.text-red-600 {\n  --text-opacity: 1 !important;\n  color: #E02424 !important;\n  color: rgba(224, 36, 36, var(--text-opacity)) !important;\n}\n\n.text-red-700 {\n  --text-opacity: 1 !important;\n  color: #C81E1E !important;\n  color: rgba(200, 30, 30, var(--text-opacity)) !important;\n}\n\n.text-red-800 {\n  --text-opacity: 1 !important;\n  color: #9B1C1C !important;\n  color: rgba(155, 28, 28, var(--text-opacity)) !important;\n}\n\n.text-red-900 {\n  --text-opacity: 1 !important;\n  color: #771D1D !important;\n  color: rgba(119, 29, 29, var(--text-opacity)) !important;\n}\n\n.text-red {\n  --text-opacity: 1 !important;\n  color: #F05252 !important;\n  color: rgba(240, 82, 82, var(--text-opacity)) !important;\n}\n\n.text-orange-50 {\n  --text-opacity: 1 !important;\n  color: #FFF8F1 !important;\n  color: rgba(255, 248, 241, var(--text-opacity)) !important;\n}\n\n.text-orange-100 {\n  --text-opacity: 1 !important;\n  color: #FEECDC !important;\n  color: rgba(254, 236, 220, var(--text-opacity)) !important;\n}\n\n.text-orange-200 {\n  --text-opacity: 1 !important;\n  color: #FCD9BD !important;\n  color: rgba(252, 217, 189, var(--text-opacity)) !important;\n}\n\n.text-orange-300 {\n  --text-opacity: 1 !important;\n  color: #FDBA8C !important;\n  color: rgba(253, 186, 140, var(--text-opacity)) !important;\n}\n\n.text-orange-400 {\n  --text-opacity: 1 !important;\n  color: #FF8A4C !important;\n  color: rgba(255, 138, 76, var(--text-opacity)) !important;\n}\n\n.text-orange-500 {\n  --text-opacity: 1 !important;\n  color: #FF5A1F !important;\n  color: rgba(255, 90, 31, var(--text-opacity)) !important;\n}\n\n.text-orange-600 {\n  --text-opacity: 1 !important;\n  color: #D03801 !important;\n  color: rgba(208, 56, 1, var(--text-opacity)) !important;\n}\n\n.text-orange-700 {\n  --text-opacity: 1 !important;\n  color: #B43403 !important;\n  color: rgba(180, 52, 3, var(--text-opacity)) !important;\n}\n\n.text-orange-800 {\n  --text-opacity: 1 !important;\n  color: #8A2C0D !important;\n  color: rgba(138, 44, 13, var(--text-opacity)) !important;\n}\n\n.text-orange-900 {\n  --text-opacity: 1 !important;\n  color: #771D1D !important;\n  color: rgba(119, 29, 29, var(--text-opacity)) !important;\n}\n\n.text-orange {\n  --text-opacity: 1 !important;\n  color: #FF5A1F !important;\n  color: rgba(255, 90, 31, var(--text-opacity)) !important;\n}\n\n.text-yellow-50 {\n  --text-opacity: 1 !important;\n  color: #FDFDEA !important;\n  color: rgba(253, 253, 234, var(--text-opacity)) !important;\n}\n\n.text-yellow-100 {\n  --text-opacity: 1 !important;\n  color: #FDF6B2 !important;\n  color: rgba(253, 246, 178, var(--text-opacity)) !important;\n}\n\n.text-yellow-200 {\n  --text-opacity: 1 !important;\n  color: #FCE96A !important;\n  color: rgba(252, 233, 106, var(--text-opacity)) !important;\n}\n\n.text-yellow-300 {\n  --text-opacity: 1 !important;\n  color: #FACA15 !important;\n  color: rgba(250, 202, 21, var(--text-opacity)) !important;\n}\n\n.text-yellow-400 {\n  --text-opacity: 1 !important;\n  color: #E3A008 !important;\n  color: rgba(227, 160, 8, var(--text-opacity)) !important;\n}\n\n.text-yellow-500 {\n  --text-opacity: 1 !important;\n  color: #C27803 !important;\n  color: rgba(194, 120, 3, var(--text-opacity)) !important;\n}\n\n.text-yellow-600 {\n  --text-opacity: 1 !important;\n  color: #9F580A !important;\n  color: rgba(159, 88, 10, var(--text-opacity)) !important;\n}\n\n.text-yellow-700 {\n  --text-opacity: 1 !important;\n  color: #8E4B10 !important;\n  color: rgba(142, 75, 16, var(--text-opacity)) !important;\n}\n\n.text-yellow-800 {\n  --text-opacity: 1 !important;\n  color: #723B13 !important;\n  color: rgba(114, 59, 19, var(--text-opacity)) !important;\n}\n\n.text-yellow-900 {\n  --text-opacity: 1 !important;\n  color: #633112 !important;\n  color: rgba(99, 49, 18, var(--text-opacity)) !important;\n}\n\n.text-yellow {\n  --text-opacity: 1 !important;\n  color: #C27803 !important;\n  color: rgba(194, 120, 3, var(--text-opacity)) !important;\n}\n\n.text-green-50 {\n  --text-opacity: 1 !important;\n  color: #F3FAF7 !important;\n  color: rgba(243, 250, 247, var(--text-opacity)) !important;\n}\n\n.text-green-100 {\n  --text-opacity: 1 !important;\n  color: #DEF7EC !important;\n  color: rgba(222, 247, 236, var(--text-opacity)) !important;\n}\n\n.text-green-200 {\n  --text-opacity: 1 !important;\n  color: #BCF0DA !important;\n  color: rgba(188, 240, 218, var(--text-opacity)) !important;\n}\n\n.text-green-300 {\n  --text-opacity: 1 !important;\n  color: #84E1BC !important;\n  color: rgba(132, 225, 188, var(--text-opacity)) !important;\n}\n\n.text-green-400 {\n  --text-opacity: 1 !important;\n  color: #31C48D !important;\n  color: rgba(49, 196, 141, var(--text-opacity)) !important;\n}\n\n.text-green-500 {\n  --text-opacity: 1 !important;\n  color: #0E9F6E !important;\n  color: rgba(14, 159, 110, var(--text-opacity)) !important;\n}\n\n.text-green-600 {\n  --text-opacity: 1 !important;\n  color: #057A55 !important;\n  color: rgba(5, 122, 85, var(--text-opacity)) !important;\n}\n\n.text-green-700 {\n  --text-opacity: 1 !important;\n  color: #046C4E !important;\n  color: rgba(4, 108, 78, var(--text-opacity)) !important;\n}\n\n.text-green-800 {\n  --text-opacity: 1 !important;\n  color: #03543F !important;\n  color: rgba(3, 84, 63, var(--text-opacity)) !important;\n}\n\n.text-green-900 {\n  --text-opacity: 1 !important;\n  color: #014737 !important;\n  color: rgba(1, 71, 55, var(--text-opacity)) !important;\n}\n\n.text-green {\n  --text-opacity: 1 !important;\n  color: #0E9F6E !important;\n  color: rgba(14, 159, 110, var(--text-opacity)) !important;\n}\n\n.text-teal-50 {\n  --text-opacity: 1 !important;\n  color: #EDFAFA !important;\n  color: rgba(237, 250, 250, var(--text-opacity)) !important;\n}\n\n.text-teal-100 {\n  --text-opacity: 1 !important;\n  color: #D5F5F6 !important;\n  color: rgba(213, 245, 246, var(--text-opacity)) !important;\n}\n\n.text-teal-200 {\n  --text-opacity: 1 !important;\n  color: #AFECEF !important;\n  color: rgba(175, 236, 239, var(--text-opacity)) !important;\n}\n\n.text-teal-300 {\n  --text-opacity: 1 !important;\n  color: #7EDCE2 !important;\n  color: rgba(126, 220, 226, var(--text-opacity)) !important;\n}\n\n.text-teal-400 {\n  --text-opacity: 1 !important;\n  color: #16BDCA !important;\n  color: rgba(22, 189, 202, var(--text-opacity)) !important;\n}\n\n.text-teal-500 {\n  --text-opacity: 1 !important;\n  color: #0694A2 !important;\n  color: rgba(6, 148, 162, var(--text-opacity)) !important;\n}\n\n.text-teal-600 {\n  --text-opacity: 1 !important;\n  color: #047481 !important;\n  color: rgba(4, 116, 129, var(--text-opacity)) !important;\n}\n\n.text-teal-700 {\n  --text-opacity: 1 !important;\n  color: #036672 !important;\n  color: rgba(3, 102, 114, var(--text-opacity)) !important;\n}\n\n.text-teal-800 {\n  --text-opacity: 1 !important;\n  color: #05505C !important;\n  color: rgba(5, 80, 92, var(--text-opacity)) !important;\n}\n\n.text-teal-900 {\n  --text-opacity: 1 !important;\n  color: #014451 !important;\n  color: rgba(1, 68, 81, var(--text-opacity)) !important;\n}\n\n.text-teal {\n  --text-opacity: 1 !important;\n  color: #0694A2 !important;\n  color: rgba(6, 148, 162, var(--text-opacity)) !important;\n}\n\n.text-blue-50 {\n  --text-opacity: 1 !important;\n  color: #EBF5FF !important;\n  color: rgba(235, 245, 255, var(--text-opacity)) !important;\n}\n\n.text-blue-100 {\n  --text-opacity: 1 !important;\n  color: #E1EFFE !important;\n  color: rgba(225, 239, 254, var(--text-opacity)) !important;\n}\n\n.text-blue-200 {\n  --text-opacity: 1 !important;\n  color: #C3DDFD !important;\n  color: rgba(195, 221, 253, var(--text-opacity)) !important;\n}\n\n.text-blue-300 {\n  --text-opacity: 1 !important;\n  color: #A4CAFE !important;\n  color: rgba(164, 202, 254, var(--text-opacity)) !important;\n}\n\n.text-blue-400 {\n  --text-opacity: 1 !important;\n  color: #76A9FA !important;\n  color: rgba(118, 169, 250, var(--text-opacity)) !important;\n}\n\n.text-blue-500 {\n  --text-opacity: 1 !important;\n  color: #3F83F8 !important;\n  color: rgba(63, 131, 248, var(--text-opacity)) !important;\n}\n\n.text-blue-600 {\n  --text-opacity: 1 !important;\n  color: #1C64F2 !important;\n  color: rgba(28, 100, 242, var(--text-opacity)) !important;\n}\n\n.text-blue-700 {\n  --text-opacity: 1 !important;\n  color: #1A56DB !important;\n  color: rgba(26, 86, 219, var(--text-opacity)) !important;\n}\n\n.text-blue-800 {\n  --text-opacity: 1 !important;\n  color: #1E429F !important;\n  color: rgba(30, 66, 159, var(--text-opacity)) !important;\n}\n\n.text-blue-900 {\n  --text-opacity: 1 !important;\n  color: #233876 !important;\n  color: rgba(35, 56, 118, var(--text-opacity)) !important;\n}\n\n.text-blue {\n  --text-opacity: 1 !important;\n  color: #3F83F8 !important;\n  color: rgba(63, 131, 248, var(--text-opacity)) !important;\n}\n\n.text-indigo-50 {\n  --text-opacity: 1 !important;\n  color: #F0F5FF !important;\n  color: rgba(240, 245, 255, var(--text-opacity)) !important;\n}\n\n.text-indigo-100 {\n  --text-opacity: 1 !important;\n  color: #E5EDFF !important;\n  color: rgba(229, 237, 255, var(--text-opacity)) !important;\n}\n\n.text-indigo-200 {\n  --text-opacity: 1 !important;\n  color: #CDDBFE !important;\n  color: rgba(205, 219, 254, var(--text-opacity)) !important;\n}\n\n.text-indigo-300 {\n  --text-opacity: 1 !important;\n  color: #B4C6FC !important;\n  color: rgba(180, 198, 252, var(--text-opacity)) !important;\n}\n\n.text-indigo-400 {\n  --text-opacity: 1 !important;\n  color: #8DA2FB !important;\n  color: rgba(141, 162, 251, var(--text-opacity)) !important;\n}\n\n.text-indigo-500 {\n  --text-opacity: 1 !important;\n  color: #6875F5 !important;\n  color: rgba(104, 117, 245, var(--text-opacity)) !important;\n}\n\n.text-indigo-600 {\n  --text-opacity: 1 !important;\n  color: #5850EC !important;\n  color: rgba(88, 80, 236, var(--text-opacity)) !important;\n}\n\n.text-indigo-700 {\n  --text-opacity: 1 !important;\n  color: #5145CD !important;\n  color: rgba(81, 69, 205, var(--text-opacity)) !important;\n}\n\n.text-indigo-800 {\n  --text-opacity: 1 !important;\n  color: #42389D !important;\n  color: rgba(66, 56, 157, var(--text-opacity)) !important;\n}\n\n.text-indigo-900 {\n  --text-opacity: 1 !important;\n  color: #362F78 !important;\n  color: rgba(54, 47, 120, var(--text-opacity)) !important;\n}\n\n.text-indigo {\n  --text-opacity: 1 !important;\n  color: #6875F5 !important;\n  color: rgba(104, 117, 245, var(--text-opacity)) !important;\n}\n\n.text-purple-50 {\n  --text-opacity: 1 !important;\n  color: #F6F5FF !important;\n  color: rgba(246, 245, 255, var(--text-opacity)) !important;\n}\n\n.text-purple-100 {\n  --text-opacity: 1 !important;\n  color: #EDEBFE !important;\n  color: rgba(237, 235, 254, var(--text-opacity)) !important;\n}\n\n.text-purple-200 {\n  --text-opacity: 1 !important;\n  color: #DCD7FE !important;\n  color: rgba(220, 215, 254, var(--text-opacity)) !important;\n}\n\n.text-purple-300 {\n  --text-opacity: 1 !important;\n  color: #CABFFD !important;\n  color: rgba(202, 191, 253, var(--text-opacity)) !important;\n}\n\n.text-purple-400 {\n  --text-opacity: 1 !important;\n  color: #AC94FA !important;\n  color: rgba(172, 148, 250, var(--text-opacity)) !important;\n}\n\n.text-purple-500 {\n  --text-opacity: 1 !important;\n  color: #9061F9 !important;\n  color: rgba(144, 97, 249, var(--text-opacity)) !important;\n}\n\n.text-purple-600 {\n  --text-opacity: 1 !important;\n  color: #7E3AF2 !important;\n  color: rgba(126, 58, 242, var(--text-opacity)) !important;\n}\n\n.text-purple-700 {\n  --text-opacity: 1 !important;\n  color: #6C2BD9 !important;\n  color: rgba(108, 43, 217, var(--text-opacity)) !important;\n}\n\n.text-purple-800 {\n  --text-opacity: 1 !important;\n  color: #5521B5 !important;\n  color: rgba(85, 33, 181, var(--text-opacity)) !important;\n}\n\n.text-purple-900 {\n  --text-opacity: 1 !important;\n  color: #4A1D96 !important;\n  color: rgba(74, 29, 150, var(--text-opacity)) !important;\n}\n\n.text-purple {\n  --text-opacity: 1 !important;\n  color: #9061F9 !important;\n  color: rgba(144, 97, 249, var(--text-opacity)) !important;\n}\n\n.text-pink-50 {\n  --text-opacity: 1 !important;\n  color: #FDF2F8 !important;\n  color: rgba(253, 242, 248, var(--text-opacity)) !important;\n}\n\n.text-pink-100 {\n  --text-opacity: 1 !important;\n  color: #FCE8F3 !important;\n  color: rgba(252, 232, 243, var(--text-opacity)) !important;\n}\n\n.text-pink-200 {\n  --text-opacity: 1 !important;\n  color: #FAD1E8 !important;\n  color: rgba(250, 209, 232, var(--text-opacity)) !important;\n}\n\n.text-pink-300 {\n  --text-opacity: 1 !important;\n  color: #F8B4D9 !important;\n  color: rgba(248, 180, 217, var(--text-opacity)) !important;\n}\n\n.text-pink-400 {\n  --text-opacity: 1 !important;\n  color: #F17EB8 !important;\n  color: rgba(241, 126, 184, var(--text-opacity)) !important;\n}\n\n.text-pink-500 {\n  --text-opacity: 1 !important;\n  color: #E74694 !important;\n  color: rgba(231, 70, 148, var(--text-opacity)) !important;\n}\n\n.text-pink-600 {\n  --text-opacity: 1 !important;\n  color: #D61F69 !important;\n  color: rgba(214, 31, 105, var(--text-opacity)) !important;\n}\n\n.text-pink-700 {\n  --text-opacity: 1 !important;\n  color: #BF125D !important;\n  color: rgba(191, 18, 93, var(--text-opacity)) !important;\n}\n\n.text-pink-800 {\n  --text-opacity: 1 !important;\n  color: #99154B !important;\n  color: rgba(153, 21, 75, var(--text-opacity)) !important;\n}\n\n.text-pink-900 {\n  --text-opacity: 1 !important;\n  color: #751A3D !important;\n  color: rgba(117, 26, 61, var(--text-opacity)) !important;\n}\n\n.text-pink {\n  --text-opacity: 1 !important;\n  color: #E74694 !important;\n  color: rgba(231, 70, 148, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-current, [class*=\"theme-dark\"] .dark\\:text-current, [class*=\"theme-light\"].light\\:text-current, [class*=\"theme-light\"] .light\\:text-current {\n  color: currentColor !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-transparent, [class*=\"theme-dark\"] .dark\\:text-transparent, [class*=\"theme-light\"].light\\:text-transparent, [class*=\"theme-light\"] .light\\:text-transparent {\n  color: transparent !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-white, [class*=\"theme-dark\"] .dark\\:text-white, [class*=\"theme-light\"].light\\:text-white, [class*=\"theme-light\"] .light\\:text-white {\n  --text-opacity: 1 !important;\n  color: #FFFFFF !important;\n  color: rgba(255, 255, 255, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-black, [class*=\"theme-dark\"] .dark\\:text-black, [class*=\"theme-light\"].light\\:text-black, [class*=\"theme-light\"] .light\\:text-black {\n  --text-opacity: 1 !important;\n  color: #000000 !important;\n  color: rgba(0, 0, 0, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-50, [class*=\"theme-dark\"] .dark\\:text-gray-50, [class*=\"theme-light\"].light\\:text-gray-50, [class*=\"theme-light\"] .light\\:text-gray-50 {\n  --text-opacity: 1 !important;\n  color: #F9FAFB !important;\n  color: rgba(249, 250, 251, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-100, [class*=\"theme-dark\"] .dark\\:text-gray-100, [class*=\"theme-light\"].light\\:text-gray-100, [class*=\"theme-light\"] .light\\:text-gray-100 {\n  --text-opacity: 1 !important;\n  color: #F4F5F7 !important;\n  color: rgba(244, 245, 247, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-200, [class*=\"theme-dark\"] .dark\\:text-gray-200, [class*=\"theme-light\"].light\\:text-gray-200, [class*=\"theme-light\"] .light\\:text-gray-200 {\n  --text-opacity: 1 !important;\n  color: #E5E7EB !important;\n  color: rgba(229, 231, 235, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-300, [class*=\"theme-dark\"] .dark\\:text-gray-300, [class*=\"theme-light\"].light\\:text-gray-300, [class*=\"theme-light\"] .light\\:text-gray-300 {\n  --text-opacity: 1 !important;\n  color: #D2D6DC !important;\n  color: rgba(210, 214, 220, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-400, [class*=\"theme-dark\"] .dark\\:text-gray-400, [class*=\"theme-light\"].light\\:text-gray-400, [class*=\"theme-light\"] .light\\:text-gray-400 {\n  --text-opacity: 1 !important;\n  color: #9FA6B2 !important;\n  color: rgba(159, 166, 178, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-500, [class*=\"theme-dark\"] .dark\\:text-gray-500, [class*=\"theme-light\"].light\\:text-gray-500, [class*=\"theme-light\"] .light\\:text-gray-500 {\n  --text-opacity: 1 !important;\n  color: #6B7280 !important;\n  color: rgba(107, 114, 128, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-600, [class*=\"theme-dark\"] .dark\\:text-gray-600, [class*=\"theme-light\"].light\\:text-gray-600, [class*=\"theme-light\"] .light\\:text-gray-600 {\n  --text-opacity: 1 !important;\n  color: #4B5563 !important;\n  color: rgba(75, 85, 99, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-700, [class*=\"theme-dark\"] .dark\\:text-gray-700, [class*=\"theme-light\"].light\\:text-gray-700, [class*=\"theme-light\"] .light\\:text-gray-700 {\n  --text-opacity: 1 !important;\n  color: #374151 !important;\n  color: rgba(55, 65, 81, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-800, [class*=\"theme-dark\"] .dark\\:text-gray-800, [class*=\"theme-light\"].light\\:text-gray-800, [class*=\"theme-light\"] .light\\:text-gray-800 {\n  --text-opacity: 1 !important;\n  color: #252F3F !important;\n  color: rgba(37, 47, 63, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray-900, [class*=\"theme-dark\"] .dark\\:text-gray-900, [class*=\"theme-light\"].light\\:text-gray-900, [class*=\"theme-light\"] .light\\:text-gray-900 {\n  --text-opacity: 1 !important;\n  color: #161E2E !important;\n  color: rgba(22, 30, 46, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-gray, [class*=\"theme-dark\"] .dark\\:text-gray, [class*=\"theme-light\"].light\\:text-gray, [class*=\"theme-light\"] .light\\:text-gray {\n  --text-opacity: 1 !important;\n  color: #6B7280 !important;\n  color: rgba(107, 114, 128, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-50, [class*=\"theme-dark\"] .dark\\:text-cool-gray-50, [class*=\"theme-light\"].light\\:text-cool-gray-50, [class*=\"theme-light\"] .light\\:text-cool-gray-50 {\n  --text-opacity: 1 !important;\n  color: #FBFDFE !important;\n  color: rgba(251, 253, 254, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-100, [class*=\"theme-dark\"] .dark\\:text-cool-gray-100, [class*=\"theme-light\"].light\\:text-cool-gray-100, [class*=\"theme-light\"] .light\\:text-cool-gray-100 {\n  --text-opacity: 1 !important;\n  color: #F1F5F9 !important;\n  color: rgba(241, 245, 249, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-200, [class*=\"theme-dark\"] .dark\\:text-cool-gray-200, [class*=\"theme-light\"].light\\:text-cool-gray-200, [class*=\"theme-light\"] .light\\:text-cool-gray-200 {\n  --text-opacity: 1 !important;\n  color: #E2E8F0 !important;\n  color: rgba(226, 232, 240, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-300, [class*=\"theme-dark\"] .dark\\:text-cool-gray-300, [class*=\"theme-light\"].light\\:text-cool-gray-300, [class*=\"theme-light\"] .light\\:text-cool-gray-300 {\n  --text-opacity: 1 !important;\n  color: #CFD8E3 !important;\n  color: rgba(207, 216, 227, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-400, [class*=\"theme-dark\"] .dark\\:text-cool-gray-400, [class*=\"theme-light\"].light\\:text-cool-gray-400, [class*=\"theme-light\"] .light\\:text-cool-gray-400 {\n  --text-opacity: 1 !important;\n  color: #97A6BA !important;\n  color: rgba(151, 166, 186, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-500, [class*=\"theme-dark\"] .dark\\:text-cool-gray-500, [class*=\"theme-light\"].light\\:text-cool-gray-500, [class*=\"theme-light\"] .light\\:text-cool-gray-500 {\n  --text-opacity: 1 !important;\n  color: #64748B !important;\n  color: rgba(100, 116, 139, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-600, [class*=\"theme-dark\"] .dark\\:text-cool-gray-600, [class*=\"theme-light\"].light\\:text-cool-gray-600, [class*=\"theme-light\"] .light\\:text-cool-gray-600 {\n  --text-opacity: 1 !important;\n  color: #475569 !important;\n  color: rgba(71, 85, 105, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-700, [class*=\"theme-dark\"] .dark\\:text-cool-gray-700, [class*=\"theme-light\"].light\\:text-cool-gray-700, [class*=\"theme-light\"] .light\\:text-cool-gray-700 {\n  --text-opacity: 1 !important;\n  color: #364152 !important;\n  color: rgba(54, 65, 82, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-800, [class*=\"theme-dark\"] .dark\\:text-cool-gray-800, [class*=\"theme-light\"].light\\:text-cool-gray-800, [class*=\"theme-light\"] .light\\:text-cool-gray-800 {\n  --text-opacity: 1 !important;\n  color: #27303F !important;\n  color: rgba(39, 48, 63, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray-900, [class*=\"theme-dark\"] .dark\\:text-cool-gray-900, [class*=\"theme-light\"].light\\:text-cool-gray-900, [class*=\"theme-light\"] .light\\:text-cool-gray-900 {\n  --text-opacity: 1 !important;\n  color: #1A202E !important;\n  color: rgba(26, 32, 46, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-cool-gray, [class*=\"theme-dark\"] .dark\\:text-cool-gray, [class*=\"theme-light\"].light\\:text-cool-gray, [class*=\"theme-light\"] .light\\:text-cool-gray {\n  --text-opacity: 1 !important;\n  color: #64748B !important;\n  color: rgba(100, 116, 139, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-50, [class*=\"theme-dark\"] .dark\\:text-red-50, [class*=\"theme-light\"].light\\:text-red-50, [class*=\"theme-light\"] .light\\:text-red-50 {\n  --text-opacity: 1 !important;\n  color: #FDF2F2 !important;\n  color: rgba(253, 242, 242, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-100, [class*=\"theme-dark\"] .dark\\:text-red-100, [class*=\"theme-light\"].light\\:text-red-100, [class*=\"theme-light\"] .light\\:text-red-100 {\n  --text-opacity: 1 !important;\n  color: #FDE8E8 !important;\n  color: rgba(253, 232, 232, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-200, [class*=\"theme-dark\"] .dark\\:text-red-200, [class*=\"theme-light\"].light\\:text-red-200, [class*=\"theme-light\"] .light\\:text-red-200 {\n  --text-opacity: 1 !important;\n  color: #FBD5D5 !important;\n  color: rgba(251, 213, 213, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-300, [class*=\"theme-dark\"] .dark\\:text-red-300, [class*=\"theme-light\"].light\\:text-red-300, [class*=\"theme-light\"] .light\\:text-red-300 {\n  --text-opacity: 1 !important;\n  color: #F8B4B4 !important;\n  color: rgba(248, 180, 180, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-400, [class*=\"theme-dark\"] .dark\\:text-red-400, [class*=\"theme-light\"].light\\:text-red-400, [class*=\"theme-light\"] .light\\:text-red-400 {\n  --text-opacity: 1 !important;\n  color: #F98080 !important;\n  color: rgba(249, 128, 128, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-500, [class*=\"theme-dark\"] .dark\\:text-red-500, [class*=\"theme-light\"].light\\:text-red-500, [class*=\"theme-light\"] .light\\:text-red-500 {\n  --text-opacity: 1 !important;\n  color: #F05252 !important;\n  color: rgba(240, 82, 82, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-600, [class*=\"theme-dark\"] .dark\\:text-red-600, [class*=\"theme-light\"].light\\:text-red-600, [class*=\"theme-light\"] .light\\:text-red-600 {\n  --text-opacity: 1 !important;\n  color: #E02424 !important;\n  color: rgba(224, 36, 36, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-700, [class*=\"theme-dark\"] .dark\\:text-red-700, [class*=\"theme-light\"].light\\:text-red-700, [class*=\"theme-light\"] .light\\:text-red-700 {\n  --text-opacity: 1 !important;\n  color: #C81E1E !important;\n  color: rgba(200, 30, 30, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-800, [class*=\"theme-dark\"] .dark\\:text-red-800, [class*=\"theme-light\"].light\\:text-red-800, [class*=\"theme-light\"] .light\\:text-red-800 {\n  --text-opacity: 1 !important;\n  color: #9B1C1C !important;\n  color: rgba(155, 28, 28, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red-900, [class*=\"theme-dark\"] .dark\\:text-red-900, [class*=\"theme-light\"].light\\:text-red-900, [class*=\"theme-light\"] .light\\:text-red-900 {\n  --text-opacity: 1 !important;\n  color: #771D1D !important;\n  color: rgba(119, 29, 29, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-red, [class*=\"theme-dark\"] .dark\\:text-red, [class*=\"theme-light\"].light\\:text-red, [class*=\"theme-light\"] .light\\:text-red {\n  --text-opacity: 1 !important;\n  color: #F05252 !important;\n  color: rgba(240, 82, 82, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-50, [class*=\"theme-dark\"] .dark\\:text-orange-50, [class*=\"theme-light\"].light\\:text-orange-50, [class*=\"theme-light\"] .light\\:text-orange-50 {\n  --text-opacity: 1 !important;\n  color: #FFF8F1 !important;\n  color: rgba(255, 248, 241, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-100, [class*=\"theme-dark\"] .dark\\:text-orange-100, [class*=\"theme-light\"].light\\:text-orange-100, [class*=\"theme-light\"] .light\\:text-orange-100 {\n  --text-opacity: 1 !important;\n  color: #FEECDC !important;\n  color: rgba(254, 236, 220, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-200, [class*=\"theme-dark\"] .dark\\:text-orange-200, [class*=\"theme-light\"].light\\:text-orange-200, [class*=\"theme-light\"] .light\\:text-orange-200 {\n  --text-opacity: 1 !important;\n  color: #FCD9BD !important;\n  color: rgba(252, 217, 189, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-300, [class*=\"theme-dark\"] .dark\\:text-orange-300, [class*=\"theme-light\"].light\\:text-orange-300, [class*=\"theme-light\"] .light\\:text-orange-300 {\n  --text-opacity: 1 !important;\n  color: #FDBA8C !important;\n  color: rgba(253, 186, 140, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-400, [class*=\"theme-dark\"] .dark\\:text-orange-400, [class*=\"theme-light\"].light\\:text-orange-400, [class*=\"theme-light\"] .light\\:text-orange-400 {\n  --text-opacity: 1 !important;\n  color: #FF8A4C !important;\n  color: rgba(255, 138, 76, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-500, [class*=\"theme-dark\"] .dark\\:text-orange-500, [class*=\"theme-light\"].light\\:text-orange-500, [class*=\"theme-light\"] .light\\:text-orange-500 {\n  --text-opacity: 1 !important;\n  color: #FF5A1F !important;\n  color: rgba(255, 90, 31, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-600, [class*=\"theme-dark\"] .dark\\:text-orange-600, [class*=\"theme-light\"].light\\:text-orange-600, [class*=\"theme-light\"] .light\\:text-orange-600 {\n  --text-opacity: 1 !important;\n  color: #D03801 !important;\n  color: rgba(208, 56, 1, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-700, [class*=\"theme-dark\"] .dark\\:text-orange-700, [class*=\"theme-light\"].light\\:text-orange-700, [class*=\"theme-light\"] .light\\:text-orange-700 {\n  --text-opacity: 1 !important;\n  color: #B43403 !important;\n  color: rgba(180, 52, 3, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-800, [class*=\"theme-dark\"] .dark\\:text-orange-800, [class*=\"theme-light\"].light\\:text-orange-800, [class*=\"theme-light\"] .light\\:text-orange-800 {\n  --text-opacity: 1 !important;\n  color: #8A2C0D !important;\n  color: rgba(138, 44, 13, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange-900, [class*=\"theme-dark\"] .dark\\:text-orange-900, [class*=\"theme-light\"].light\\:text-orange-900, [class*=\"theme-light\"] .light\\:text-orange-900 {\n  --text-opacity: 1 !important;\n  color: #771D1D !important;\n  color: rgba(119, 29, 29, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-orange, [class*=\"theme-dark\"] .dark\\:text-orange, [class*=\"theme-light\"].light\\:text-orange, [class*=\"theme-light\"] .light\\:text-orange {\n  --text-opacity: 1 !important;\n  color: #FF5A1F !important;\n  color: rgba(255, 90, 31, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-50, [class*=\"theme-dark\"] .dark\\:text-yellow-50, [class*=\"theme-light\"].light\\:text-yellow-50, [class*=\"theme-light\"] .light\\:text-yellow-50 {\n  --text-opacity: 1 !important;\n  color: #FDFDEA !important;\n  color: rgba(253, 253, 234, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-100, [class*=\"theme-dark\"] .dark\\:text-yellow-100, [class*=\"theme-light\"].light\\:text-yellow-100, [class*=\"theme-light\"] .light\\:text-yellow-100 {\n  --text-opacity: 1 !important;\n  color: #FDF6B2 !important;\n  color: rgba(253, 246, 178, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-200, [class*=\"theme-dark\"] .dark\\:text-yellow-200, [class*=\"theme-light\"].light\\:text-yellow-200, [class*=\"theme-light\"] .light\\:text-yellow-200 {\n  --text-opacity: 1 !important;\n  color: #FCE96A !important;\n  color: rgba(252, 233, 106, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-300, [class*=\"theme-dark\"] .dark\\:text-yellow-300, [class*=\"theme-light\"].light\\:text-yellow-300, [class*=\"theme-light\"] .light\\:text-yellow-300 {\n  --text-opacity: 1 !important;\n  color: #FACA15 !important;\n  color: rgba(250, 202, 21, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-400, [class*=\"theme-dark\"] .dark\\:text-yellow-400, [class*=\"theme-light\"].light\\:text-yellow-400, [class*=\"theme-light\"] .light\\:text-yellow-400 {\n  --text-opacity: 1 !important;\n  color: #E3A008 !important;\n  color: rgba(227, 160, 8, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-500, [class*=\"theme-dark\"] .dark\\:text-yellow-500, [class*=\"theme-light\"].light\\:text-yellow-500, [class*=\"theme-light\"] .light\\:text-yellow-500 {\n  --text-opacity: 1 !important;\n  color: #C27803 !important;\n  color: rgba(194, 120, 3, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-600, [class*=\"theme-dark\"] .dark\\:text-yellow-600, [class*=\"theme-light\"].light\\:text-yellow-600, [class*=\"theme-light\"] .light\\:text-yellow-600 {\n  --text-opacity: 1 !important;\n  color: #9F580A !important;\n  color: rgba(159, 88, 10, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-700, [class*=\"theme-dark\"] .dark\\:text-yellow-700, [class*=\"theme-light\"].light\\:text-yellow-700, [class*=\"theme-light\"] .light\\:text-yellow-700 {\n  --text-opacity: 1 !important;\n  color: #8E4B10 !important;\n  color: rgba(142, 75, 16, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-800, [class*=\"theme-dark\"] .dark\\:text-yellow-800, [class*=\"theme-light\"].light\\:text-yellow-800, [class*=\"theme-light\"] .light\\:text-yellow-800 {\n  --text-opacity: 1 !important;\n  color: #723B13 !important;\n  color: rgba(114, 59, 19, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow-900, [class*=\"theme-dark\"] .dark\\:text-yellow-900, [class*=\"theme-light\"].light\\:text-yellow-900, [class*=\"theme-light\"] .light\\:text-yellow-900 {\n  --text-opacity: 1 !important;\n  color: #633112 !important;\n  color: rgba(99, 49, 18, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-yellow, [class*=\"theme-dark\"] .dark\\:text-yellow, [class*=\"theme-light\"].light\\:text-yellow, [class*=\"theme-light\"] .light\\:text-yellow {\n  --text-opacity: 1 !important;\n  color: #C27803 !important;\n  color: rgba(194, 120, 3, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-50, [class*=\"theme-dark\"] .dark\\:text-green-50, [class*=\"theme-light\"].light\\:text-green-50, [class*=\"theme-light\"] .light\\:text-green-50 {\n  --text-opacity: 1 !important;\n  color: #F3FAF7 !important;\n  color: rgba(243, 250, 247, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-100, [class*=\"theme-dark\"] .dark\\:text-green-100, [class*=\"theme-light\"].light\\:text-green-100, [class*=\"theme-light\"] .light\\:text-green-100 {\n  --text-opacity: 1 !important;\n  color: #DEF7EC !important;\n  color: rgba(222, 247, 236, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-200, [class*=\"theme-dark\"] .dark\\:text-green-200, [class*=\"theme-light\"].light\\:text-green-200, [class*=\"theme-light\"] .light\\:text-green-200 {\n  --text-opacity: 1 !important;\n  color: #BCF0DA !important;\n  color: rgba(188, 240, 218, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-300, [class*=\"theme-dark\"] .dark\\:text-green-300, [class*=\"theme-light\"].light\\:text-green-300, [class*=\"theme-light\"] .light\\:text-green-300 {\n  --text-opacity: 1 !important;\n  color: #84E1BC !important;\n  color: rgba(132, 225, 188, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-400, [class*=\"theme-dark\"] .dark\\:text-green-400, [class*=\"theme-light\"].light\\:text-green-400, [class*=\"theme-light\"] .light\\:text-green-400 {\n  --text-opacity: 1 !important;\n  color: #31C48D !important;\n  color: rgba(49, 196, 141, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-500, [class*=\"theme-dark\"] .dark\\:text-green-500, [class*=\"theme-light\"].light\\:text-green-500, [class*=\"theme-light\"] .light\\:text-green-500 {\n  --text-opacity: 1 !important;\n  color: #0E9F6E !important;\n  color: rgba(14, 159, 110, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-600, [class*=\"theme-dark\"] .dark\\:text-green-600, [class*=\"theme-light\"].light\\:text-green-600, [class*=\"theme-light\"] .light\\:text-green-600 {\n  --text-opacity: 1 !important;\n  color: #057A55 !important;\n  color: rgba(5, 122, 85, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-700, [class*=\"theme-dark\"] .dark\\:text-green-700, [class*=\"theme-light\"].light\\:text-green-700, [class*=\"theme-light\"] .light\\:text-green-700 {\n  --text-opacity: 1 !important;\n  color: #046C4E !important;\n  color: rgba(4, 108, 78, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-800, [class*=\"theme-dark\"] .dark\\:text-green-800, [class*=\"theme-light\"].light\\:text-green-800, [class*=\"theme-light\"] .light\\:text-green-800 {\n  --text-opacity: 1 !important;\n  color: #03543F !important;\n  color: rgba(3, 84, 63, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green-900, [class*=\"theme-dark\"] .dark\\:text-green-900, [class*=\"theme-light\"].light\\:text-green-900, [class*=\"theme-light\"] .light\\:text-green-900 {\n  --text-opacity: 1 !important;\n  color: #014737 !important;\n  color: rgba(1, 71, 55, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-green, [class*=\"theme-dark\"] .dark\\:text-green, [class*=\"theme-light\"].light\\:text-green, [class*=\"theme-light\"] .light\\:text-green {\n  --text-opacity: 1 !important;\n  color: #0E9F6E !important;\n  color: rgba(14, 159, 110, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-50, [class*=\"theme-dark\"] .dark\\:text-teal-50, [class*=\"theme-light\"].light\\:text-teal-50, [class*=\"theme-light\"] .light\\:text-teal-50 {\n  --text-opacity: 1 !important;\n  color: #EDFAFA !important;\n  color: rgba(237, 250, 250, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-100, [class*=\"theme-dark\"] .dark\\:text-teal-100, [class*=\"theme-light\"].light\\:text-teal-100, [class*=\"theme-light\"] .light\\:text-teal-100 {\n  --text-opacity: 1 !important;\n  color: #D5F5F6 !important;\n  color: rgba(213, 245, 246, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-200, [class*=\"theme-dark\"] .dark\\:text-teal-200, [class*=\"theme-light\"].light\\:text-teal-200, [class*=\"theme-light\"] .light\\:text-teal-200 {\n  --text-opacity: 1 !important;\n  color: #AFECEF !important;\n  color: rgba(175, 236, 239, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-300, [class*=\"theme-dark\"] .dark\\:text-teal-300, [class*=\"theme-light\"].light\\:text-teal-300, [class*=\"theme-light\"] .light\\:text-teal-300 {\n  --text-opacity: 1 !important;\n  color: #7EDCE2 !important;\n  color: rgba(126, 220, 226, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-400, [class*=\"theme-dark\"] .dark\\:text-teal-400, [class*=\"theme-light\"].light\\:text-teal-400, [class*=\"theme-light\"] .light\\:text-teal-400 {\n  --text-opacity: 1 !important;\n  color: #16BDCA !important;\n  color: rgba(22, 189, 202, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-500, [class*=\"theme-dark\"] .dark\\:text-teal-500, [class*=\"theme-light\"].light\\:text-teal-500, [class*=\"theme-light\"] .light\\:text-teal-500 {\n  --text-opacity: 1 !important;\n  color: #0694A2 !important;\n  color: rgba(6, 148, 162, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-600, [class*=\"theme-dark\"] .dark\\:text-teal-600, [class*=\"theme-light\"].light\\:text-teal-600, [class*=\"theme-light\"] .light\\:text-teal-600 {\n  --text-opacity: 1 !important;\n  color: #047481 !important;\n  color: rgba(4, 116, 129, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-700, [class*=\"theme-dark\"] .dark\\:text-teal-700, [class*=\"theme-light\"].light\\:text-teal-700, [class*=\"theme-light\"] .light\\:text-teal-700 {\n  --text-opacity: 1 !important;\n  color: #036672 !important;\n  color: rgba(3, 102, 114, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-800, [class*=\"theme-dark\"] .dark\\:text-teal-800, [class*=\"theme-light\"].light\\:text-teal-800, [class*=\"theme-light\"] .light\\:text-teal-800 {\n  --text-opacity: 1 !important;\n  color: #05505C !important;\n  color: rgba(5, 80, 92, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal-900, [class*=\"theme-dark\"] .dark\\:text-teal-900, [class*=\"theme-light\"].light\\:text-teal-900, [class*=\"theme-light\"] .light\\:text-teal-900 {\n  --text-opacity: 1 !important;\n  color: #014451 !important;\n  color: rgba(1, 68, 81, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-teal, [class*=\"theme-dark\"] .dark\\:text-teal, [class*=\"theme-light\"].light\\:text-teal, [class*=\"theme-light\"] .light\\:text-teal {\n  --text-opacity: 1 !important;\n  color: #0694A2 !important;\n  color: rgba(6, 148, 162, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-50, [class*=\"theme-dark\"] .dark\\:text-blue-50, [class*=\"theme-light\"].light\\:text-blue-50, [class*=\"theme-light\"] .light\\:text-blue-50 {\n  --text-opacity: 1 !important;\n  color: #EBF5FF !important;\n  color: rgba(235, 245, 255, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-100, [class*=\"theme-dark\"] .dark\\:text-blue-100, [class*=\"theme-light\"].light\\:text-blue-100, [class*=\"theme-light\"] .light\\:text-blue-100 {\n  --text-opacity: 1 !important;\n  color: #E1EFFE !important;\n  color: rgba(225, 239, 254, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-200, [class*=\"theme-dark\"] .dark\\:text-blue-200, [class*=\"theme-light\"].light\\:text-blue-200, [class*=\"theme-light\"] .light\\:text-blue-200 {\n  --text-opacity: 1 !important;\n  color: #C3DDFD !important;\n  color: rgba(195, 221, 253, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-300, [class*=\"theme-dark\"] .dark\\:text-blue-300, [class*=\"theme-light\"].light\\:text-blue-300, [class*=\"theme-light\"] .light\\:text-blue-300 {\n  --text-opacity: 1 !important;\n  color: #A4CAFE !important;\n  color: rgba(164, 202, 254, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-400, [class*=\"theme-dark\"] .dark\\:text-blue-400, [class*=\"theme-light\"].light\\:text-blue-400, [class*=\"theme-light\"] .light\\:text-blue-400 {\n  --text-opacity: 1 !important;\n  color: #76A9FA !important;\n  color: rgba(118, 169, 250, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-500, [class*=\"theme-dark\"] .dark\\:text-blue-500, [class*=\"theme-light\"].light\\:text-blue-500, [class*=\"theme-light\"] .light\\:text-blue-500 {\n  --text-opacity: 1 !important;\n  color: #3F83F8 !important;\n  color: rgba(63, 131, 248, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-600, [class*=\"theme-dark\"] .dark\\:text-blue-600, [class*=\"theme-light\"].light\\:text-blue-600, [class*=\"theme-light\"] .light\\:text-blue-600 {\n  --text-opacity: 1 !important;\n  color: #1C64F2 !important;\n  color: rgba(28, 100, 242, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-700, [class*=\"theme-dark\"] .dark\\:text-blue-700, [class*=\"theme-light\"].light\\:text-blue-700, [class*=\"theme-light\"] .light\\:text-blue-700 {\n  --text-opacity: 1 !important;\n  color: #1A56DB !important;\n  color: rgba(26, 86, 219, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-800, [class*=\"theme-dark\"] .dark\\:text-blue-800, [class*=\"theme-light\"].light\\:text-blue-800, [class*=\"theme-light\"] .light\\:text-blue-800 {\n  --text-opacity: 1 !important;\n  color: #1E429F !important;\n  color: rgba(30, 66, 159, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue-900, [class*=\"theme-dark\"] .dark\\:text-blue-900, [class*=\"theme-light\"].light\\:text-blue-900, [class*=\"theme-light\"] .light\\:text-blue-900 {\n  --text-opacity: 1 !important;\n  color: #233876 !important;\n  color: rgba(35, 56, 118, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-blue, [class*=\"theme-dark\"] .dark\\:text-blue, [class*=\"theme-light\"].light\\:text-blue, [class*=\"theme-light\"] .light\\:text-blue {\n  --text-opacity: 1 !important;\n  color: #3F83F8 !important;\n  color: rgba(63, 131, 248, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-50, [class*=\"theme-dark\"] .dark\\:text-indigo-50, [class*=\"theme-light\"].light\\:text-indigo-50, [class*=\"theme-light\"] .light\\:text-indigo-50 {\n  --text-opacity: 1 !important;\n  color: #F0F5FF !important;\n  color: rgba(240, 245, 255, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-100, [class*=\"theme-dark\"] .dark\\:text-indigo-100, [class*=\"theme-light\"].light\\:text-indigo-100, [class*=\"theme-light\"] .light\\:text-indigo-100 {\n  --text-opacity: 1 !important;\n  color: #E5EDFF !important;\n  color: rgba(229, 237, 255, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-200, [class*=\"theme-dark\"] .dark\\:text-indigo-200, [class*=\"theme-light\"].light\\:text-indigo-200, [class*=\"theme-light\"] .light\\:text-indigo-200 {\n  --text-opacity: 1 !important;\n  color: #CDDBFE !important;\n  color: rgba(205, 219, 254, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-300, [class*=\"theme-dark\"] .dark\\:text-indigo-300, [class*=\"theme-light\"].light\\:text-indigo-300, [class*=\"theme-light\"] .light\\:text-indigo-300 {\n  --text-opacity: 1 !important;\n  color: #B4C6FC !important;\n  color: rgba(180, 198, 252, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-400, [class*=\"theme-dark\"] .dark\\:text-indigo-400, [class*=\"theme-light\"].light\\:text-indigo-400, [class*=\"theme-light\"] .light\\:text-indigo-400 {\n  --text-opacity: 1 !important;\n  color: #8DA2FB !important;\n  color: rgba(141, 162, 251, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-500, [class*=\"theme-dark\"] .dark\\:text-indigo-500, [class*=\"theme-light\"].light\\:text-indigo-500, [class*=\"theme-light\"] .light\\:text-indigo-500 {\n  --text-opacity: 1 !important;\n  color: #6875F5 !important;\n  color: rgba(104, 117, 245, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-600, [class*=\"theme-dark\"] .dark\\:text-indigo-600, [class*=\"theme-light\"].light\\:text-indigo-600, [class*=\"theme-light\"] .light\\:text-indigo-600 {\n  --text-opacity: 1 !important;\n  color: #5850EC !important;\n  color: rgba(88, 80, 236, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-700, [class*=\"theme-dark\"] .dark\\:text-indigo-700, [class*=\"theme-light\"].light\\:text-indigo-700, [class*=\"theme-light\"] .light\\:text-indigo-700 {\n  --text-opacity: 1 !important;\n  color: #5145CD !important;\n  color: rgba(81, 69, 205, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-800, [class*=\"theme-dark\"] .dark\\:text-indigo-800, [class*=\"theme-light\"].light\\:text-indigo-800, [class*=\"theme-light\"] .light\\:text-indigo-800 {\n  --text-opacity: 1 !important;\n  color: #42389D !important;\n  color: rgba(66, 56, 157, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo-900, [class*=\"theme-dark\"] .dark\\:text-indigo-900, [class*=\"theme-light\"].light\\:text-indigo-900, [class*=\"theme-light\"] .light\\:text-indigo-900 {\n  --text-opacity: 1 !important;\n  color: #362F78 !important;\n  color: rgba(54, 47, 120, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-indigo, [class*=\"theme-dark\"] .dark\\:text-indigo, [class*=\"theme-light\"].light\\:text-indigo, [class*=\"theme-light\"] .light\\:text-indigo {\n  --text-opacity: 1 !important;\n  color: #6875F5 !important;\n  color: rgba(104, 117, 245, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-50, [class*=\"theme-dark\"] .dark\\:text-purple-50, [class*=\"theme-light\"].light\\:text-purple-50, [class*=\"theme-light\"] .light\\:text-purple-50 {\n  --text-opacity: 1 !important;\n  color: #F6F5FF !important;\n  color: rgba(246, 245, 255, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-100, [class*=\"theme-dark\"] .dark\\:text-purple-100, [class*=\"theme-light\"].light\\:text-purple-100, [class*=\"theme-light\"] .light\\:text-purple-100 {\n  --text-opacity: 1 !important;\n  color: #EDEBFE !important;\n  color: rgba(237, 235, 254, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-200, [class*=\"theme-dark\"] .dark\\:text-purple-200, [class*=\"theme-light\"].light\\:text-purple-200, [class*=\"theme-light\"] .light\\:text-purple-200 {\n  --text-opacity: 1 !important;\n  color: #DCD7FE !important;\n  color: rgba(220, 215, 254, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-300, [class*=\"theme-dark\"] .dark\\:text-purple-300, [class*=\"theme-light\"].light\\:text-purple-300, [class*=\"theme-light\"] .light\\:text-purple-300 {\n  --text-opacity: 1 !important;\n  color: #CABFFD !important;\n  color: rgba(202, 191, 253, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-400, [class*=\"theme-dark\"] .dark\\:text-purple-400, [class*=\"theme-light\"].light\\:text-purple-400, [class*=\"theme-light\"] .light\\:text-purple-400 {\n  --text-opacity: 1 !important;\n  color: #AC94FA !important;\n  color: rgba(172, 148, 250, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-500, [class*=\"theme-dark\"] .dark\\:text-purple-500, [class*=\"theme-light\"].light\\:text-purple-500, [class*=\"theme-light\"] .light\\:text-purple-500 {\n  --text-opacity: 1 !important;\n  color: #9061F9 !important;\n  color: rgba(144, 97, 249, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-600, [class*=\"theme-dark\"] .dark\\:text-purple-600, [class*=\"theme-light\"].light\\:text-purple-600, [class*=\"theme-light\"] .light\\:text-purple-600 {\n  --text-opacity: 1 !important;\n  color: #7E3AF2 !important;\n  color: rgba(126, 58, 242, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-700, [class*=\"theme-dark\"] .dark\\:text-purple-700, [class*=\"theme-light\"].light\\:text-purple-700, [class*=\"theme-light\"] .light\\:text-purple-700 {\n  --text-opacity: 1 !important;\n  color: #6C2BD9 !important;\n  color: rgba(108, 43, 217, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-800, [class*=\"theme-dark\"] .dark\\:text-purple-800, [class*=\"theme-light\"].light\\:text-purple-800, [class*=\"theme-light\"] .light\\:text-purple-800 {\n  --text-opacity: 1 !important;\n  color: #5521B5 !important;\n  color: rgba(85, 33, 181, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple-900, [class*=\"theme-dark\"] .dark\\:text-purple-900, [class*=\"theme-light\"].light\\:text-purple-900, [class*=\"theme-light\"] .light\\:text-purple-900 {\n  --text-opacity: 1 !important;\n  color: #4A1D96 !important;\n  color: rgba(74, 29, 150, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-purple, [class*=\"theme-dark\"] .dark\\:text-purple, [class*=\"theme-light\"].light\\:text-purple, [class*=\"theme-light\"] .light\\:text-purple {\n  --text-opacity: 1 !important;\n  color: #9061F9 !important;\n  color: rgba(144, 97, 249, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-50, [class*=\"theme-dark\"] .dark\\:text-pink-50, [class*=\"theme-light\"].light\\:text-pink-50, [class*=\"theme-light\"] .light\\:text-pink-50 {\n  --text-opacity: 1 !important;\n  color: #FDF2F8 !important;\n  color: rgba(253, 242, 248, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-100, [class*=\"theme-dark\"] .dark\\:text-pink-100, [class*=\"theme-light\"].light\\:text-pink-100, [class*=\"theme-light\"] .light\\:text-pink-100 {\n  --text-opacity: 1 !important;\n  color: #FCE8F3 !important;\n  color: rgba(252, 232, 243, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-200, [class*=\"theme-dark\"] .dark\\:text-pink-200, [class*=\"theme-light\"].light\\:text-pink-200, [class*=\"theme-light\"] .light\\:text-pink-200 {\n  --text-opacity: 1 !important;\n  color: #FAD1E8 !important;\n  color: rgba(250, 209, 232, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-300, [class*=\"theme-dark\"] .dark\\:text-pink-300, [class*=\"theme-light\"].light\\:text-pink-300, [class*=\"theme-light\"] .light\\:text-pink-300 {\n  --text-opacity: 1 !important;\n  color: #F8B4D9 !important;\n  color: rgba(248, 180, 217, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-400, [class*=\"theme-dark\"] .dark\\:text-pink-400, [class*=\"theme-light\"].light\\:text-pink-400, [class*=\"theme-light\"] .light\\:text-pink-400 {\n  --text-opacity: 1 !important;\n  color: #F17EB8 !important;\n  color: rgba(241, 126, 184, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-500, [class*=\"theme-dark\"] .dark\\:text-pink-500, [class*=\"theme-light\"].light\\:text-pink-500, [class*=\"theme-light\"] .light\\:text-pink-500 {\n  --text-opacity: 1 !important;\n  color: #E74694 !important;\n  color: rgba(231, 70, 148, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-600, [class*=\"theme-dark\"] .dark\\:text-pink-600, [class*=\"theme-light\"].light\\:text-pink-600, [class*=\"theme-light\"] .light\\:text-pink-600 {\n  --text-opacity: 1 !important;\n  color: #D61F69 !important;\n  color: rgba(214, 31, 105, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-700, [class*=\"theme-dark\"] .dark\\:text-pink-700, [class*=\"theme-light\"].light\\:text-pink-700, [class*=\"theme-light\"] .light\\:text-pink-700 {\n  --text-opacity: 1 !important;\n  color: #BF125D !important;\n  color: rgba(191, 18, 93, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-800, [class*=\"theme-dark\"] .dark\\:text-pink-800, [class*=\"theme-light\"].light\\:text-pink-800, [class*=\"theme-light\"] .light\\:text-pink-800 {\n  --text-opacity: 1 !important;\n  color: #99154B !important;\n  color: rgba(153, 21, 75, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink-900, [class*=\"theme-dark\"] .dark\\:text-pink-900, [class*=\"theme-light\"].light\\:text-pink-900, [class*=\"theme-light\"] .light\\:text-pink-900 {\n  --text-opacity: 1 !important;\n  color: #751A3D !important;\n  color: rgba(117, 26, 61, var(--text-opacity)) !important;\n}\n\n[class*=\"theme-dark\"].dark\\:text-pink, [class*=\"theme-dark\"] .dark\\:text-pink, [class*=\"theme-light\"].light\\:text-pink, [class*=\"theme-light\"] .light\\:text-pink {\n  --text-opacity: 1 !important;\n  color: #E74694 !important;\n  color: rgba(231, 70, 148, var(--text-opacity)) !important;\n}\n\n.text-opacity-0 {\n  --text-opacity: 0 !important;\n}\n\n.text-opacity-12 {\n  --text-opacity: 0.12 !important;\n}\n\n.text-opacity-25 {\n  --text-opacity: 0.25 !important;\n}\n\n.text-opacity-38 {\n  --text-opacity: 0.38 !important;\n}\n\n.text-opacity-50 {\n  --text-opacity: 0.5 !important;\n}\n\n.text-opacity-54 {\n  --text-opacity: 0.54 !important;\n}\n\n.text-opacity-70 {\n  --text-opacity: 0.70 !important;\n}\n\n.text-opacity-75 {\n  --text-opacity: 0.75 !important;\n}\n\n.text-opacity-84 {\n  --text-opacity: 0.84 !important;\n}\n\n.text-opacity-100 {\n  --text-opacity: 1 !important;\n}\n\n.hover\\:text-opacity-0:hover {\n  --text-opacity: 0 !important;\n}\n\n.hover\\:text-opacity-12:hover {\n  --text-opacity: 0.12 !important;\n}\n\n.hover\\:text-opacity-25:hover {\n  --text-opacity: 0.25 !important;\n}\n\n.hover\\:text-opacity-38:hover {\n  --text-opacity: 0.38 !important;\n}\n\n.hover\\:text-opacity-50:hover {\n  --text-opacity: 0.5 !important;\n}\n\n.hover\\:text-opacity-54:hover {\n  --text-opacity: 0.54 !important;\n}\n\n.hover\\:text-opacity-70:hover {\n  --text-opacity: 0.70 !important;\n}\n\n.hover\\:text-opacity-75:hover {\n  --text-opacity: 0.75 !important;\n}\n\n.hover\\:text-opacity-84:hover {\n  --text-opacity: 0.84 !important;\n}\n\n.hover\\:text-opacity-100:hover {\n  --text-opacity: 1 !important;\n}\n\n.focus\\:text-opacity-0:focus {\n  --text-opacity: 0 !important;\n}\n\n.focus\\:text-opacity-12:focus {\n  --text-opacity: 0.12 !important;\n}\n\n.focus\\:text-opacity-25:focus {\n  --text-opacity: 0.25 !important;\n}\n\n.focus\\:text-opacity-38:focus {\n  --text-opacity: 0.38 !important;\n}\n\n.focus\\:text-opacity-50:focus {\n  --text-opacity: 0.5 !important;\n}\n\n.focus\\:text-opacity-54:focus {\n  --text-opacity: 0.54 !important;\n}\n\n.focus\\:text-opacity-70:focus {\n  --text-opacity: 0.70 !important;\n}\n\n.focus\\:text-opacity-75:focus {\n  --text-opacity: 0.75 !important;\n}\n\n.focus\\:text-opacity-84:focus {\n  --text-opacity: 0.84 !important;\n}\n\n.focus\\:text-opacity-100:focus {\n  --text-opacity: 1 !important;\n}\n\n.italic {\n  font-style: italic !important;\n}\n\n.not-italic {\n  font-style: normal !important;\n}\n\n.uppercase {\n  text-transform: uppercase !important;\n}\n\n.lowercase {\n  text-transform: lowercase !important;\n}\n\n.capitalize {\n  text-transform: capitalize !important;\n}\n\n.normal-case {\n  text-transform: none !important;\n}\n\n.underline {\n  text-decoration: underline !important;\n}\n\n.line-through {\n  text-decoration: line-through !important;\n}\n\n.no-underline {\n  text-decoration: none !important;\n}\n\n.hover\\:underline:hover {\n  text-decoration: underline !important;\n}\n\n.hover\\:line-through:hover {\n  text-decoration: line-through !important;\n}\n\n.hover\\:no-underline:hover {\n  text-decoration: none !important;\n}\n\n.focus\\:underline:focus {\n  text-decoration: underline !important;\n}\n\n.focus\\:line-through:focus {\n  text-decoration: line-through !important;\n}\n\n.focus\\:no-underline:focus {\n  text-decoration: none !important;\n}\n\n.antialiased {\n  -webkit-font-smoothing: antialiased !important;\n  -moz-osx-font-smoothing: grayscale !important;\n}\n\n.subpixel-antialiased {\n  -webkit-font-smoothing: auto !important;\n  -moz-osx-font-smoothing: auto !important;\n}\n\n.tracking-tighter {\n  letter-spacing: -0.05em !important;\n}\n\n.tracking-tight {\n  letter-spacing: -0.025em !important;\n}\n\n.tracking-normal {\n  letter-spacing: 0 !important;\n}\n\n.tracking-wide {\n  letter-spacing: 0.025em !important;\n}\n\n.tracking-wider {\n  letter-spacing: 0.05em !important;\n}\n\n.tracking-widest {\n  letter-spacing: 0.1em !important;\n}\n\n.select-none {\n  -webkit-user-select: none !important;\n     -moz-user-select: none !important;\n      -ms-user-select: none !important;\n          user-select: none !important;\n}\n\n.select-text {\n  -webkit-user-select: text !important;\n     -moz-user-select: text !important;\n      -ms-user-select: text !important;\n          user-select: text !important;\n}\n\n.select-all {\n  -webkit-user-select: all !important;\n     -moz-user-select: all !important;\n      -ms-user-select: all !important;\n          user-select: all !important;\n}\n\n.select-auto {\n  -webkit-user-select: auto !important;\n     -moz-user-select: auto !important;\n      -ms-user-select: auto !important;\n          user-select: auto !important;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n.whitespace-normal {\n  white-space: normal !important;\n}\n\n.whitespace-no-wrap {\n  white-space: nowrap !important;\n}\n\n.whitespace-pre {\n  white-space: pre !important;\n}\n\n.whitespace-pre-line {\n  white-space: pre-line !important;\n}\n\n.whitespace-pre-wrap {\n  white-space: pre-wrap !important;\n}\n\n.break-normal {\n  overflow-wrap: normal !important;\n  word-break: normal !important;\n}\n\n.break-words {\n  overflow-wrap: break-word !important;\n}\n\n.break-all {\n  word-break: break-all !important;\n}\n\n.truncate {\n  overflow: hidden !important;\n  text-overflow: ellipsis !important;\n  white-space: nowrap !important;\n}\n\n.w-0 {\n  width: 0 !important;\n}\n\n.w-1 {\n  width: 0.25rem !important;\n}\n\n.w-2 {\n  width: 0.5rem !important;\n}\n\n.w-3 {\n  width: 0.75rem !important;\n}\n\n.w-4 {\n  width: 1rem !important;\n}\n\n.w-5 {\n  width: 1.25rem !important;\n}\n\n.w-6 {\n  width: 1.5rem !important;\n}\n\n.w-8 {\n  width: 2rem !important;\n}\n\n.w-10 {\n  width: 2.5rem !important;\n}\n\n.w-12 {\n  width: 3rem !important;\n}\n\n.w-14 {\n  width: 3.5rem !important;\n}\n\n.w-16 {\n  width: 4rem !important;\n}\n\n.w-18 {\n  width: 4.5rem !important;\n}\n\n.w-20 {\n  width: 5rem !important;\n}\n\n.w-22 {\n  width: 5.5rem !important;\n}\n\n.w-24 {\n  width: 6rem !important;\n}\n\n.w-26 {\n  width: 6.5rem !important;\n}\n\n.w-28 {\n  width: 7rem !important;\n}\n\n.w-30 {\n  width: 7.5rem !important;\n}\n\n.w-32 {\n  width: 8rem !important;\n}\n\n.w-36 {\n  width: 9rem !important;\n}\n\n.w-40 {\n  width: 10rem !important;\n}\n\n.w-48 {\n  width: 12rem !important;\n}\n\n.w-50 {\n  width: 12.5rem !important;\n}\n\n.w-56 {\n  width: 14rem !important;\n}\n\n.w-60 {\n  width: 15rem !important;\n}\n\n.w-64 {\n  width: 16rem !important;\n}\n\n.w-80 {\n  width: 20rem !important;\n}\n\n.w-90 {\n  width: 24rem !important;\n}\n\n.w-100 {\n  width: 25rem !important;\n}\n\n.w-120 {\n  width: 30rem !important;\n}\n\n.w-128 {\n  width: 32rem !important;\n}\n\n.w-140 {\n  width: 35rem !important;\n}\n\n.w-160 {\n  width: 40rem !important;\n}\n\n.w-180 {\n  width: 45rem !important;\n}\n\n.w-192 {\n  width: 48rem !important;\n}\n\n.w-200 {\n  width: 50rem !important;\n}\n\n.w-240 {\n  width: 60rem !important;\n}\n\n.w-256 {\n  width: 64rem !important;\n}\n\n.w-280 {\n  width: 70rem !important;\n}\n\n.w-320 {\n  width: 80rem !important;\n}\n\n.w-360 {\n  width: 90rem !important;\n}\n\n.w-400 {\n  width: 100rem !important;\n}\n\n.w-480 {\n  width: 120rem !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.w-px {\n  width: 1px !important;\n}\n\n.w-2px {\n  width: 2px !important;\n}\n\n.w-1\\/2 {\n  width: 50% !important;\n}\n\n.w-1\\/3 {\n  width: 33.33333% !important;\n}\n\n.w-2\\/3 {\n  width: 66.66667% !important;\n}\n\n.w-1\\/4 {\n  width: 25% !important;\n}\n\n.w-2\\/4 {\n  width: 50% !important;\n}\n\n.w-3\\/4 {\n  width: 75% !important;\n}\n\n.w-1\\/5 {\n  width: 20% !important;\n}\n\n.w-2\\/5 {\n  width: 40% !important;\n}\n\n.w-3\\/5 {\n  width: 60% !important;\n}\n\n.w-4\\/5 {\n  width: 80% !important;\n}\n\n.w-1\\/6 {\n  width: 16.666667% !important;\n}\n\n.w-2\\/6 {\n  width: 33.333333% !important;\n}\n\n.w-3\\/6 {\n  width: 50% !important;\n}\n\n.w-4\\/6 {\n  width: 66.666667% !important;\n}\n\n.w-5\\/6 {\n  width: 83.333333% !important;\n}\n\n.w-1\\/12 {\n  width: 8.33333% !important;\n}\n\n.w-2\\/12 {\n  width: 16.66667% !important;\n}\n\n.w-3\\/12 {\n  width: 25% !important;\n}\n\n.w-4\\/12 {\n  width: 33.33333% !important;\n}\n\n.w-5\\/12 {\n  width: 41.66667% !important;\n}\n\n.w-6\\/12 {\n  width: 50% !important;\n}\n\n.w-7\\/12 {\n  width: 58.33333% !important;\n}\n\n.w-8\\/12 {\n  width: 66.66667% !important;\n}\n\n.w-9\\/12 {\n  width: 75% !important;\n}\n\n.w-10\\/12 {\n  width: 83.33333% !important;\n}\n\n.w-11\\/12 {\n  width: 91.66667% !important;\n}\n\n.w-full {\n  width: 100% !important;\n}\n\n.w-screen {\n  width: 100vw !important;\n}\n\n.z-0 {\n  z-index: 0 !important;\n}\n\n.z-10 {\n  z-index: 10 !important;\n}\n\n.z-20 {\n  z-index: 20 !important;\n}\n\n.z-30 {\n  z-index: 30 !important;\n}\n\n.z-40 {\n  z-index: 40 !important;\n}\n\n.z-50 {\n  z-index: 50 !important;\n}\n\n.z-60 {\n  z-index: 60 !important;\n}\n\n.z-70 {\n  z-index: 70 !important;\n}\n\n.z-80 {\n  z-index: 80 !important;\n}\n\n.z-90 {\n  z-index: 90 !important;\n}\n\n.z-99 {\n  z-index: 99 !important;\n}\n\n.z-999 {\n  z-index: 999 !important;\n}\n\n.z-9999 {\n  z-index: 9999 !important;\n}\n\n.z-99999 {\n  z-index: 99999 !important;\n}\n\n.z-auto {\n  z-index: auto !important;\n}\n\n.-z-1 {\n  z-index: -1 !important;\n}\n\n.gap-0 {\n  grid-gap: 0 !important;\n  gap: 0 !important;\n}\n\n.gap-1 {\n  grid-gap: 0.25rem !important;\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  grid-gap: 0.5rem !important;\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  grid-gap: 0.75rem !important;\n  gap: 0.75rem !important;\n}\n\n.gap-4 {\n  grid-gap: 1rem !important;\n  gap: 1rem !important;\n}\n\n.gap-5 {\n  grid-gap: 1.25rem !important;\n  gap: 1.25rem !important;\n}\n\n.gap-6 {\n  grid-gap: 1.5rem !important;\n  gap: 1.5rem !important;\n}\n\n.gap-8 {\n  grid-gap: 2rem !important;\n  gap: 2rem !important;\n}\n\n.gap-10 {\n  grid-gap: 2.5rem !important;\n  gap: 2.5rem !important;\n}\n\n.gap-12 {\n  grid-gap: 3rem !important;\n  gap: 3rem !important;\n}\n\n.gap-14 {\n  grid-gap: 3.5rem !important;\n  gap: 3.5rem !important;\n}\n\n.gap-16 {\n  grid-gap: 4rem !important;\n  gap: 4rem !important;\n}\n\n.gap-18 {\n  grid-gap: 4.5rem !important;\n  gap: 4.5rem !important;\n}\n\n.gap-20 {\n  grid-gap: 5rem !important;\n  gap: 5rem !important;\n}\n\n.gap-22 {\n  grid-gap: 5.5rem !important;\n  gap: 5.5rem !important;\n}\n\n.gap-24 {\n  grid-gap: 6rem !important;\n  gap: 6rem !important;\n}\n\n.gap-26 {\n  grid-gap: 6.5rem !important;\n  gap: 6.5rem !important;\n}\n\n.gap-28 {\n  grid-gap: 7rem !important;\n  gap: 7rem !important;\n}\n\n.gap-30 {\n  grid-gap: 7.5rem !important;\n  gap: 7.5rem !important;\n}\n\n.gap-32 {\n  grid-gap: 8rem !important;\n  gap: 8rem !important;\n}\n\n.gap-36 {\n  grid-gap: 9rem !important;\n  gap: 9rem !important;\n}\n\n.gap-40 {\n  grid-gap: 10rem !important;\n  gap: 10rem !important;\n}\n\n.gap-48 {\n  grid-gap: 12rem !important;\n  gap: 12rem !important;\n}\n\n.gap-56 {\n  grid-gap: 14rem !important;\n  gap: 14rem !important;\n}\n\n.gap-64 {\n  grid-gap: 16rem !important;\n  gap: 16rem !important;\n}\n\n.gap-px {\n  grid-gap: 1px !important;\n  gap: 1px !important;\n}\n\n.gap-2px {\n  grid-gap: 2px !important;\n  gap: 2px !important;\n}\n\n.col-gap-0 {\n  grid-column-gap: 0 !important;\n  -moz-column-gap: 0 !important;\n       column-gap: 0 !important;\n}\n\n.col-gap-1 {\n  grid-column-gap: 0.25rem !important;\n  -moz-column-gap: 0.25rem !important;\n       column-gap: 0.25rem !important;\n}\n\n.col-gap-2 {\n  grid-column-gap: 0.5rem !important;\n  -moz-column-gap: 0.5rem !important;\n       column-gap: 0.5rem !important;\n}\n\n.col-gap-3 {\n  grid-column-gap: 0.75rem !important;\n  -moz-column-gap: 0.75rem !important;\n       column-gap: 0.75rem !important;\n}\n\n.col-gap-4 {\n  grid-column-gap: 1rem !important;\n  -moz-column-gap: 1rem !important;\n       column-gap: 1rem !important;\n}\n\n.col-gap-5 {\n  grid-column-gap: 1.25rem !important;\n  -moz-column-gap: 1.25rem !important;\n       column-gap: 1.25rem !important;\n}\n\n.col-gap-6 {\n  grid-column-gap: 1.5rem !important;\n  -moz-column-gap: 1.5rem !important;\n       column-gap: 1.5rem !important;\n}\n\n.col-gap-8 {\n  grid-column-gap: 2rem !important;\n  -moz-column-gap: 2rem !important;\n       column-gap: 2rem !important;\n}\n\n.col-gap-10 {\n  grid-column-gap: 2.5rem !important;\n  -moz-column-gap: 2.5rem !important;\n       column-gap: 2.5rem !important;\n}\n\n.col-gap-12 {\n  grid-column-gap: 3rem !important;\n  -moz-column-gap: 3rem !important;\n       column-gap: 3rem !important;\n}\n\n.col-gap-14 {\n  grid-column-gap: 3.5rem !important;\n  -moz-column-gap: 3.5rem !important;\n       column-gap: 3.5rem !important;\n}\n\n.col-gap-16 {\n  grid-column-gap: 4rem !important;\n  -moz-column-gap: 4rem !important;\n       column-gap: 4rem !important;\n}\n\n.col-gap-18 {\n  grid-column-gap: 4.5rem !important;\n  -moz-column-gap: 4.5rem !important;\n       column-gap: 4.5rem !important;\n}\n\n.col-gap-20 {\n  grid-column-gap: 5rem !important;\n  -moz-column-gap: 5rem !important;\n       column-gap: 5rem !important;\n}\n\n.col-gap-22 {\n  grid-column-gap: 5.5rem !important;\n  -moz-column-gap: 5.5rem !important;\n       column-gap: 5.5rem !important;\n}\n\n.col-gap-24 {\n  grid-column-gap: 6rem !important;\n  -moz-column-gap: 6rem !important;\n       column-gap: 6rem !important;\n}\n\n.col-gap-26 {\n  grid-column-gap: 6.5rem !important;\n  -moz-column-gap: 6.5rem !important;\n       column-gap: 6.5rem !important;\n}\n\n.col-gap-28 {\n  grid-column-gap: 7rem !important;\n  -moz-column-gap: 7rem !important;\n       column-gap: 7rem !important;\n}\n\n.col-gap-30 {\n  grid-column-gap: 7.5rem !important;\n  -moz-column-gap: 7.5rem !important;\n       column-gap: 7.5rem !important;\n}\n\n.col-gap-32 {\n  grid-column-gap: 8rem !important;\n  -moz-column-gap: 8rem !important;\n       column-gap: 8rem !important;\n}\n\n.col-gap-36 {\n  grid-column-gap: 9rem !important;\n  -moz-column-gap: 9rem !important;\n       column-gap: 9rem !important;\n}\n\n.col-gap-40 {\n  grid-column-gap: 10rem !important;\n  -moz-column-gap: 10rem !important;\n       column-gap: 10rem !important;\n}\n\n.col-gap-48 {\n  grid-column-gap: 12rem !important;\n  -moz-column-gap: 12rem !important;\n       column-gap: 12rem !important;\n}\n\n.col-gap-56 {\n  grid-column-gap: 14rem !important;\n  -moz-column-gap: 14rem !important;\n       column-gap: 14rem !important;\n}\n\n.col-gap-64 {\n  grid-column-gap: 16rem !important;\n  -moz-column-gap: 16rem !important;\n       column-gap: 16rem !important;\n}\n\n.col-gap-px {\n  grid-column-gap: 1px !important;\n  -moz-column-gap: 1px !important;\n       column-gap: 1px !important;\n}\n\n.col-gap-2px {\n  grid-column-gap: 2px !important;\n  -moz-column-gap: 2px !important;\n       column-gap: 2px !important;\n}\n\n.row-gap-0 {\n  grid-row-gap: 0 !important;\n  row-gap: 0 !important;\n}\n\n.row-gap-1 {\n  grid-row-gap: 0.25rem !important;\n  row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n  grid-row-gap: 0.5rem !important;\n  row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n  grid-row-gap: 0.75rem !important;\n  row-gap: 0.75rem !important;\n}\n\n.row-gap-4 {\n  grid-row-gap: 1rem !important;\n  row-gap: 1rem !important;\n}\n\n.row-gap-5 {\n  grid-row-gap: 1.25rem !important;\n  row-gap: 1.25rem !important;\n}\n\n.row-gap-6 {\n  grid-row-gap: 1.5rem !important;\n  row-gap: 1.5rem !important;\n}\n\n.row-gap-8 {\n  grid-row-gap: 2rem !important;\n  row-gap: 2rem !important;\n}\n\n.row-gap-10 {\n  grid-row-gap: 2.5rem !important;\n  row-gap: 2.5rem !important;\n}\n\n.row-gap-12 {\n  grid-row-gap: 3rem !important;\n  row-gap: 3rem !important;\n}\n\n.row-gap-14 {\n  grid-row-gap: 3.5rem !important;\n  row-gap: 3.5rem !important;\n}\n\n.row-gap-16 {\n  grid-row-gap: 4rem !important;\n  row-gap: 4rem !important;\n}\n\n.row-gap-18 {\n  grid-row-gap: 4.5rem !important;\n  row-gap: 4.5rem !important;\n}\n\n.row-gap-20 {\n  grid-row-gap: 5rem !important;\n  row-gap: 5rem !important;\n}\n\n.row-gap-22 {\n  grid-row-gap: 5.5rem !important;\n  row-gap: 5.5rem !important;\n}\n\n.row-gap-24 {\n  grid-row-gap: 6rem !important;\n  row-gap: 6rem !important;\n}\n\n.row-gap-26 {\n  grid-row-gap: 6.5rem !important;\n  row-gap: 6.5rem !important;\n}\n\n.row-gap-28 {\n  grid-row-gap: 7rem !important;\n  row-gap: 7rem !important;\n}\n\n.row-gap-30 {\n  grid-row-gap: 7.5rem !important;\n  row-gap: 7.5rem !important;\n}\n\n.row-gap-32 {\n  grid-row-gap: 8rem !important;\n  row-gap: 8rem !important;\n}\n\n.row-gap-36 {\n  grid-row-gap: 9rem !important;\n  row-gap: 9rem !important;\n}\n\n.row-gap-40 {\n  grid-row-gap: 10rem !important;\n  row-gap: 10rem !important;\n}\n\n.row-gap-48 {\n  grid-row-gap: 12rem !important;\n  row-gap: 12rem !important;\n}\n\n.row-gap-56 {\n  grid-row-gap: 14rem !important;\n  row-gap: 14rem !important;\n}\n\n.row-gap-64 {\n  grid-row-gap: 16rem !important;\n  row-gap: 16rem !important;\n}\n\n.row-gap-px {\n  grid-row-gap: 1px !important;\n  row-gap: 1px !important;\n}\n\n.row-gap-2px {\n  grid-row-gap: 2px !important;\n  row-gap: 2px !important;\n}\n\n.grid-flow-row {\n  grid-auto-flow: row !important;\n}\n\n.grid-flow-col {\n  grid-auto-flow: column !important;\n}\n\n.grid-flow-row-dense {\n  grid-auto-flow: row dense !important;\n}\n\n.grid-flow-col-dense {\n  grid-auto-flow: column dense !important;\n}\n\n.grid-cols-1 {\n  grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-2 {\n  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-3 {\n  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-4 {\n  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-5 {\n  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-6 {\n  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-7 {\n  grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-8 {\n  grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-9 {\n  grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-10 {\n  grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-11 {\n  grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-12 {\n  grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n}\n\n.grid-cols-none {\n  grid-template-columns: none !important;\n}\n\n.col-auto {\n  grid-column: auto !important;\n}\n\n.col-span-1 {\n  grid-column: span 1 / span 1 !important;\n}\n\n.col-span-2 {\n  grid-column: span 2 / span 2 !important;\n}\n\n.col-span-3 {\n  grid-column: span 3 / span 3 !important;\n}\n\n.col-span-4 {\n  grid-column: span 4 / span 4 !important;\n}\n\n.col-span-5 {\n  grid-column: span 5 / span 5 !important;\n}\n\n.col-span-6 {\n  grid-column: span 6 / span 6 !important;\n}\n\n.col-span-7 {\n  grid-column: span 7 / span 7 !important;\n}\n\n.col-span-8 {\n  grid-column: span 8 / span 8 !important;\n}\n\n.col-span-9 {\n  grid-column: span 9 / span 9 !important;\n}\n\n.col-span-10 {\n  grid-column: span 10 / span 10 !important;\n}\n\n.col-span-11 {\n  grid-column: span 11 / span 11 !important;\n}\n\n.col-span-12 {\n  grid-column: span 12 / span 12 !important;\n}\n\n.col-start-1 {\n  grid-column-start: 1 !important;\n}\n\n.col-start-2 {\n  grid-column-start: 2 !important;\n}\n\n.col-start-3 {\n  grid-column-start: 3 !important;\n}\n\n.col-start-4 {\n  grid-column-start: 4 !important;\n}\n\n.col-start-5 {\n  grid-column-start: 5 !important;\n}\n\n.col-start-6 {\n  grid-column-start: 6 !important;\n}\n\n.col-start-7 {\n  grid-column-start: 7 !important;\n}\n\n.col-start-8 {\n  grid-column-start: 8 !important;\n}\n\n.col-start-9 {\n  grid-column-start: 9 !important;\n}\n\n.col-start-10 {\n  grid-column-start: 10 !important;\n}\n\n.col-start-11 {\n  grid-column-start: 11 !important;\n}\n\n.col-start-12 {\n  grid-column-start: 12 !important;\n}\n\n.col-start-13 {\n  grid-column-start: 13 !important;\n}\n\n.col-start-auto {\n  grid-column-start: auto !important;\n}\n\n.col-end-1 {\n  grid-column-end: 1 !important;\n}\n\n.col-end-2 {\n  grid-column-end: 2 !important;\n}\n\n.col-end-3 {\n  grid-column-end: 3 !important;\n}\n\n.col-end-4 {\n  grid-column-end: 4 !important;\n}\n\n.col-end-5 {\n  grid-column-end: 5 !important;\n}\n\n.col-end-6 {\n  grid-column-end: 6 !important;\n}\n\n.col-end-7 {\n  grid-column-end: 7 !important;\n}\n\n.col-end-8 {\n  grid-column-end: 8 !important;\n}\n\n.col-end-9 {\n  grid-column-end: 9 !important;\n}\n\n.col-end-10 {\n  grid-column-end: 10 !important;\n}\n\n.col-end-11 {\n  grid-column-end: 11 !important;\n}\n\n.col-end-12 {\n  grid-column-end: 12 !important;\n}\n\n.col-end-13 {\n  grid-column-end: 13 !important;\n}\n\n.col-end-auto {\n  grid-column-end: auto !important;\n}\n\n.grid-rows-1 {\n  grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n}\n\n.grid-rows-2 {\n  grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n}\n\n.grid-rows-3 {\n  grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n}\n\n.grid-rows-4 {\n  grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n}\n\n.grid-rows-5 {\n  grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n}\n\n.grid-rows-6 {\n  grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n}\n\n.grid-rows-none {\n  grid-template-rows: none !important;\n}\n\n.row-auto {\n  grid-row: auto !important;\n}\n\n.row-span-1 {\n  grid-row: span 1 / span 1 !important;\n}\n\n.row-span-2 {\n  grid-row: span 2 / span 2 !important;\n}\n\n.row-span-3 {\n  grid-row: span 3 / span 3 !important;\n}\n\n.row-span-4 {\n  grid-row: span 4 / span 4 !important;\n}\n\n.row-span-5 {\n  grid-row: span 5 / span 5 !important;\n}\n\n.row-span-6 {\n  grid-row: span 6 / span 6 !important;\n}\n\n.row-start-1 {\n  grid-row-start: 1 !important;\n}\n\n.row-start-2 {\n  grid-row-start: 2 !important;\n}\n\n.row-start-3 {\n  grid-row-start: 3 !important;\n}\n\n.row-start-4 {\n  grid-row-start: 4 !important;\n}\n\n.row-start-5 {\n  grid-row-start: 5 !important;\n}\n\n.row-start-6 {\n  grid-row-start: 6 !important;\n}\n\n.row-start-7 {\n  grid-row-start: 7 !important;\n}\n\n.row-start-auto {\n  grid-row-start: auto !important;\n}\n\n.row-end-1 {\n  grid-row-end: 1 !important;\n}\n\n.row-end-2 {\n  grid-row-end: 2 !important;\n}\n\n.row-end-3 {\n  grid-row-end: 3 !important;\n}\n\n.row-end-4 {\n  grid-row-end: 4 !important;\n}\n\n.row-end-5 {\n  grid-row-end: 5 !important;\n}\n\n.row-end-6 {\n  grid-row-end: 6 !important;\n}\n\n.row-end-7 {\n  grid-row-end: 7 !important;\n}\n\n.row-end-auto {\n  grid-row-end: auto !important;\n}\n\n.transform {\n  --transform-translate-x: 0 !important;\n  --transform-translate-y: 0 !important;\n  --transform-rotate: 0 !important;\n  --transform-skew-x: 0 !important;\n  --transform-skew-y: 0 !important;\n  --transform-scale-x: 1 !important;\n  --transform-scale-y: 1 !important;\n  transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n}\n\n.transform-none {\n  transform: none !important;\n}\n\n.origin-center {\n  transform-origin: center !important;\n}\n\n.origin-top {\n  transform-origin: top !important;\n}\n\n.origin-top-right {\n  transform-origin: top right !important;\n}\n\n.origin-right {\n  transform-origin: right !important;\n}\n\n.origin-bottom-right {\n  transform-origin: bottom right !important;\n}\n\n.origin-bottom {\n  transform-origin: bottom !important;\n}\n\n.origin-bottom-left {\n  transform-origin: bottom left !important;\n}\n\n.origin-left {\n  transform-origin: left !important;\n}\n\n.origin-top-left {\n  transform-origin: top left !important;\n}\n\n.scale-0 {\n  --transform-scale-x: 0 !important;\n  --transform-scale-y: 0 !important;\n}\n\n.scale-50 {\n  --transform-scale-x: .5 !important;\n  --transform-scale-y: .5 !important;\n}\n\n.scale-75 {\n  --transform-scale-x: .75 !important;\n  --transform-scale-y: .75 !important;\n}\n\n.scale-90 {\n  --transform-scale-x: .9 !important;\n  --transform-scale-y: .9 !important;\n}\n\n.scale-95 {\n  --transform-scale-x: .95 !important;\n  --transform-scale-y: .95 !important;\n}\n\n.scale-100 {\n  --transform-scale-x: 1 !important;\n  --transform-scale-y: 1 !important;\n}\n\n.scale-105 {\n  --transform-scale-x: 1.05 !important;\n  --transform-scale-y: 1.05 !important;\n}\n\n.scale-110 {\n  --transform-scale-x: 1.1 !important;\n  --transform-scale-y: 1.1 !important;\n}\n\n.scale-125 {\n  --transform-scale-x: 1.25 !important;\n  --transform-scale-y: 1.25 !important;\n}\n\n.scale-150 {\n  --transform-scale-x: 1.5 !important;\n  --transform-scale-y: 1.5 !important;\n}\n\n.scale-x-0 {\n  --transform-scale-x: 0 !important;\n}\n\n.scale-x-50 {\n  --transform-scale-x: .5 !important;\n}\n\n.scale-x-75 {\n  --transform-scale-x: .75 !important;\n}\n\n.scale-x-90 {\n  --transform-scale-x: .9 !important;\n}\n\n.scale-x-95 {\n  --transform-scale-x: .95 !important;\n}\n\n.scale-x-100 {\n  --transform-scale-x: 1 !important;\n}\n\n.scale-x-105 {\n  --transform-scale-x: 1.05 !important;\n}\n\n.scale-x-110 {\n  --transform-scale-x: 1.1 !important;\n}\n\n.scale-x-125 {\n  --transform-scale-x: 1.25 !important;\n}\n\n.scale-x-150 {\n  --transform-scale-x: 1.5 !important;\n}\n\n.scale-y-0 {\n  --transform-scale-y: 0 !important;\n}\n\n.scale-y-50 {\n  --transform-scale-y: .5 !important;\n}\n\n.scale-y-75 {\n  --transform-scale-y: .75 !important;\n}\n\n.scale-y-90 {\n  --transform-scale-y: .9 !important;\n}\n\n.scale-y-95 {\n  --transform-scale-y: .95 !important;\n}\n\n.scale-y-100 {\n  --transform-scale-y: 1 !important;\n}\n\n.scale-y-105 {\n  --transform-scale-y: 1.05 !important;\n}\n\n.scale-y-110 {\n  --transform-scale-y: 1.1 !important;\n}\n\n.scale-y-125 {\n  --transform-scale-y: 1.25 !important;\n}\n\n.scale-y-150 {\n  --transform-scale-y: 1.5 !important;\n}\n\n.rotate-0 {\n  --transform-rotate: 0 !important;\n}\n\n.rotate-15 {\n  --transform-rotate: 15deg !important;\n}\n\n.rotate-30 {\n  --transform-rotate: 30deg !important;\n}\n\n.rotate-45 {\n  --transform-rotate: 45deg !important;\n}\n\n.rotate-60 {\n  --transform-rotate: 60deg !important;\n}\n\n.rotate-90 {\n  --transform-rotate: 90deg !important;\n}\n\n.rotate-180 {\n  --transform-rotate: 180deg !important;\n}\n\n.rotate-270 {\n  --transform-rotate: 270deg !important;\n}\n\n.-rotate-180 {\n  --transform-rotate: -180deg !important;\n}\n\n.-rotate-90 {\n  --transform-rotate: -90deg !important;\n}\n\n.-rotate-45 {\n  --transform-rotate: -45deg !important;\n}\n\n.-rotate-270 {\n  --transform-rotate: 270deg !important;\n}\n\n.translate-x-0 {\n  --transform-translate-x: 0 !important;\n}\n\n.translate-x-1 {\n  --transform-translate-x: 0.25rem !important;\n}\n\n.translate-x-2 {\n  --transform-translate-x: 0.5rem !important;\n}\n\n.translate-x-3 {\n  --transform-translate-x: 0.75rem !important;\n}\n\n.translate-x-4 {\n  --transform-translate-x: 1rem !important;\n}\n\n.translate-x-5 {\n  --transform-translate-x: 1.25rem !important;\n}\n\n.translate-x-6 {\n  --transform-translate-x: 1.5rem !important;\n}\n\n.translate-x-8 {\n  --transform-translate-x: 2rem !important;\n}\n\n.translate-x-10 {\n  --transform-translate-x: 2.5rem !important;\n}\n\n.translate-x-12 {\n  --transform-translate-x: 3rem !important;\n}\n\n.translate-x-14 {\n  --transform-translate-x: 3.5rem !important;\n}\n\n.translate-x-16 {\n  --transform-translate-x: 4rem !important;\n}\n\n.translate-x-18 {\n  --transform-translate-x: 4.5rem !important;\n}\n\n.translate-x-20 {\n  --transform-translate-x: 5rem !important;\n}\n\n.translate-x-22 {\n  --transform-translate-x: 5.5rem !important;\n}\n\n.translate-x-24 {\n  --transform-translate-x: 6rem !important;\n}\n\n.translate-x-26 {\n  --transform-translate-x: 6.5rem !important;\n}\n\n.translate-x-28 {\n  --transform-translate-x: 7rem !important;\n}\n\n.translate-x-30 {\n  --transform-translate-x: 7.5rem !important;\n}\n\n.translate-x-32 {\n  --transform-translate-x: 8rem !important;\n}\n\n.translate-x-36 {\n  --transform-translate-x: 9rem !important;\n}\n\n.translate-x-40 {\n  --transform-translate-x: 10rem !important;\n}\n\n.translate-x-48 {\n  --transform-translate-x: 12rem !important;\n}\n\n.translate-x-56 {\n  --transform-translate-x: 14rem !important;\n}\n\n.translate-x-64 {\n  --transform-translate-x: 16rem !important;\n}\n\n.translate-x-px {\n  --transform-translate-x: 1px !important;\n}\n\n.translate-x-2px {\n  --transform-translate-x: 2px !important;\n}\n\n.-translate-x-1 {\n  --transform-translate-x: -0.25rem !important;\n}\n\n.-translate-x-2 {\n  --transform-translate-x: -0.5rem !important;\n}\n\n.-translate-x-3 {\n  --transform-translate-x: -0.75rem !important;\n}\n\n.-translate-x-4 {\n  --transform-translate-x: -1rem !important;\n}\n\n.-translate-x-5 {\n  --transform-translate-x: -1.25rem !important;\n}\n\n.-translate-x-6 {\n  --transform-translate-x: -1.5rem !important;\n}\n\n.-translate-x-8 {\n  --transform-translate-x: -2rem !important;\n}\n\n.-translate-x-10 {\n  --transform-translate-x: -2.5rem !important;\n}\n\n.-translate-x-12 {\n  --transform-translate-x: -3rem !important;\n}\n\n.-translate-x-14 {\n  --transform-translate-x: -3.5rem !important;\n}\n\n.-translate-x-16 {\n  --transform-translate-x: -4rem !important;\n}\n\n.-translate-x-18 {\n  --transform-translate-x: -4.5rem !important;\n}\n\n.-translate-x-20 {\n  --transform-translate-x: -5rem !important;\n}\n\n.-translate-x-22 {\n  --transform-translate-x: -5.5rem !important;\n}\n\n.-translate-x-24 {\n  --transform-translate-x: -6rem !important;\n}\n\n.-translate-x-26 {\n  --transform-translate-x: -6.5rem !important;\n}\n\n.-translate-x-28 {\n  --transform-translate-x: -7rem !important;\n}\n\n.-translate-x-30 {\n  --transform-translate-x: -7.5rem !important;\n}\n\n.-translate-x-32 {\n  --transform-translate-x: -8rem !important;\n}\n\n.-translate-x-36 {\n  --transform-translate-x: -9rem !important;\n}\n\n.-translate-x-40 {\n  --transform-translate-x: -10rem !important;\n}\n\n.-translate-x-48 {\n  --transform-translate-x: -12rem !important;\n}\n\n.-translate-x-56 {\n  --transform-translate-x: -14rem !important;\n}\n\n.-translate-x-64 {\n  --transform-translate-x: -16rem !important;\n}\n\n.-translate-x-px {\n  --transform-translate-x: -1px !important;\n}\n\n.-translate-x-2px {\n  --transform-translate-x: -2px !important;\n}\n\n.-translate-x-full {\n  --transform-translate-x: -100% !important;\n}\n\n.-translate-x-1\\/2 {\n  --transform-translate-x: -50% !important;\n}\n\n.translate-x-1\\/2 {\n  --transform-translate-x: 50% !important;\n}\n\n.translate-x-full {\n  --transform-translate-x: 100% !important;\n}\n\n.translate-y-0 {\n  --transform-translate-y: 0 !important;\n}\n\n.translate-y-1 {\n  --transform-translate-y: 0.25rem !important;\n}\n\n.translate-y-2 {\n  --transform-translate-y: 0.5rem !important;\n}\n\n.translate-y-3 {\n  --transform-translate-y: 0.75rem !important;\n}\n\n.translate-y-4 {\n  --transform-translate-y: 1rem !important;\n}\n\n.translate-y-5 {\n  --transform-translate-y: 1.25rem !important;\n}\n\n.translate-y-6 {\n  --transform-translate-y: 1.5rem !important;\n}\n\n.translate-y-8 {\n  --transform-translate-y: 2rem !important;\n}\n\n.translate-y-10 {\n  --transform-translate-y: 2.5rem !important;\n}\n\n.translate-y-12 {\n  --transform-translate-y: 3rem !important;\n}\n\n.translate-y-14 {\n  --transform-translate-y: 3.5rem !important;\n}\n\n.translate-y-16 {\n  --transform-translate-y: 4rem !important;\n}\n\n.translate-y-18 {\n  --transform-translate-y: 4.5rem !important;\n}\n\n.translate-y-20 {\n  --transform-translate-y: 5rem !important;\n}\n\n.translate-y-22 {\n  --transform-translate-y: 5.5rem !important;\n}\n\n.translate-y-24 {\n  --transform-translate-y: 6rem !important;\n}\n\n.translate-y-26 {\n  --transform-translate-y: 6.5rem !important;\n}\n\n.translate-y-28 {\n  --transform-translate-y: 7rem !important;\n}\n\n.translate-y-30 {\n  --transform-translate-y: 7.5rem !important;\n}\n\n.translate-y-32 {\n  --transform-translate-y: 8rem !important;\n}\n\n.translate-y-36 {\n  --transform-translate-y: 9rem !important;\n}\n\n.translate-y-40 {\n  --transform-translate-y: 10rem !important;\n}\n\n.translate-y-48 {\n  --transform-translate-y: 12rem !important;\n}\n\n.translate-y-56 {\n  --transform-translate-y: 14rem !important;\n}\n\n.translate-y-64 {\n  --transform-translate-y: 16rem !important;\n}\n\n.translate-y-px {\n  --transform-translate-y: 1px !important;\n}\n\n.translate-y-2px {\n  --transform-translate-y: 2px !important;\n}\n\n.-translate-y-1 {\n  --transform-translate-y: -0.25rem !important;\n}\n\n.-translate-y-2 {\n  --transform-translate-y: -0.5rem !important;\n}\n\n.-translate-y-3 {\n  --transform-translate-y: -0.75rem !important;\n}\n\n.-translate-y-4 {\n  --transform-translate-y: -1rem !important;\n}\n\n.-translate-y-5 {\n  --transform-translate-y: -1.25rem !important;\n}\n\n.-translate-y-6 {\n  --transform-translate-y: -1.5rem !important;\n}\n\n.-translate-y-8 {\n  --transform-translate-y: -2rem !important;\n}\n\n.-translate-y-10 {\n  --transform-translate-y: -2.5rem !important;\n}\n\n.-translate-y-12 {\n  --transform-translate-y: -3rem !important;\n}\n\n.-translate-y-14 {\n  --transform-translate-y: -3.5rem !important;\n}\n\n.-translate-y-16 {\n  --transform-translate-y: -4rem !important;\n}\n\n.-translate-y-18 {\n  --transform-translate-y: -4.5rem !important;\n}\n\n.-translate-y-20 {\n  --transform-translate-y: -5rem !important;\n}\n\n.-translate-y-22 {\n  --transform-translate-y: -5.5rem !important;\n}\n\n.-translate-y-24 {\n  --transform-translate-y: -6rem !important;\n}\n\n.-translate-y-26 {\n  --transform-translate-y: -6.5rem !important;\n}\n\n.-translate-y-28 {\n  --transform-translate-y: -7rem !important;\n}\n\n.-translate-y-30 {\n  --transform-translate-y: -7.5rem !important;\n}\n\n.-translate-y-32 {\n  --transform-translate-y: -8rem !important;\n}\n\n.-translate-y-36 {\n  --transform-translate-y: -9rem !important;\n}\n\n.-translate-y-40 {\n  --transform-translate-y: -10rem !important;\n}\n\n.-translate-y-48 {\n  --transform-translate-y: -12rem !important;\n}\n\n.-translate-y-56 {\n  --transform-translate-y: -14rem !important;\n}\n\n.-translate-y-64 {\n  --transform-translate-y: -16rem !important;\n}\n\n.-translate-y-px {\n  --transform-translate-y: -1px !important;\n}\n\n.-translate-y-2px {\n  --transform-translate-y: -2px !important;\n}\n\n.-translate-y-full {\n  --transform-translate-y: -100% !important;\n}\n\n.-translate-y-1\\/2 {\n  --transform-translate-y: -50% !important;\n}\n\n.translate-y-1\\/2 {\n  --transform-translate-y: 50% !important;\n}\n\n.translate-y-full {\n  --transform-translate-y: 100% !important;\n}\n\n.skew-x-0 {\n  --transform-skew-x: 0 !important;\n}\n\n.skew-x-3 {\n  --transform-skew-x: 3deg !important;\n}\n\n.skew-x-6 {\n  --transform-skew-x: 6deg !important;\n}\n\n.skew-x-12 {\n  --transform-skew-x: 12deg !important;\n}\n\n.-skew-x-12 {\n  --transform-skew-x: -12deg !important;\n}\n\n.-skew-x-6 {\n  --transform-skew-x: -6deg !important;\n}\n\n.-skew-x-3 {\n  --transform-skew-x: -3deg !important;\n}\n\n.skew-y-0 {\n  --transform-skew-y: 0 !important;\n}\n\n.skew-y-3 {\n  --transform-skew-y: 3deg !important;\n}\n\n.skew-y-6 {\n  --transform-skew-y: 6deg !important;\n}\n\n.skew-y-12 {\n  --transform-skew-y: 12deg !important;\n}\n\n.-skew-y-12 {\n  --transform-skew-y: -12deg !important;\n}\n\n.-skew-y-6 {\n  --transform-skew-y: -6deg !important;\n}\n\n.-skew-y-3 {\n  --transform-skew-y: -3deg !important;\n}\n\n.transition-none {\n  transition-property: none !important;\n}\n\n.transition-all {\n  transition-property: all !important;\n}\n\n.transition {\n  transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform !important;\n}\n\n.transition-colors {\n  transition-property: background-color, border-color, color, fill, stroke !important;\n}\n\n.transition-opacity {\n  transition-property: opacity !important;\n}\n\n.transition-shadow {\n  transition-property: box-shadow !important;\n}\n\n.transition-transform {\n  transition-property: transform !important;\n}\n\n.ease-linear {\n  transition-timing-function: linear !important;\n}\n\n.ease-in {\n  transition-timing-function: cubic-bezier(0.4, 0, 1, 1) !important;\n}\n\n.ease-out {\n  transition-timing-function: cubic-bezier(0, 0, 0.2, 1) !important;\n}\n\n.ease-in-out {\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;\n}\n\n.duration-75 {\n  transition-duration: 75ms !important;\n}\n\n.duration-100 {\n  transition-duration: 100ms !important;\n}\n\n.duration-150 {\n  transition-duration: 150ms !important;\n}\n\n.duration-200 {\n  transition-duration: 200ms !important;\n}\n\n.duration-300 {\n  transition-duration: 300ms !important;\n}\n\n.duration-500 {\n  transition-duration: 500ms !important;\n}\n\n.duration-700 {\n  transition-duration: 700ms !important;\n}\n\n.duration-1000 {\n  transition-duration: 1000ms !important;\n}\n\n.delay-75 {\n  transition-delay: 75ms !important;\n}\n\n.delay-100 {\n  transition-delay: 100ms !important;\n}\n\n.delay-150 {\n  transition-delay: 150ms !important;\n}\n\n.delay-200 {\n  transition-delay: 200ms !important;\n}\n\n.delay-300 {\n  transition-delay: 300ms !important;\n}\n\n.delay-500 {\n  transition-delay: 500ms !important;\n}\n\n.delay-700 {\n  transition-delay: 700ms !important;\n}\n\n.delay-1000 {\n  transition-delay: 1000ms !important;\n}\n\n.text-black-contrast {\n  color: #FFFFFF !important;\n}\n\n.bg-black-contrast {\n  background-color: #FFFFFF !important;\n}\n\n.text-white-contrast {\n  color: #252F3F !important;\n}\n\n.bg-white-contrast {\n  background-color: #252F3F !important;\n}\n\n.text-gray-50-contrast {\n  color: #161E2E !important;\n}\n\n.bg-gray-50-contrast {\n  background-color: #161E2E !important;\n}\n\n.text-gray-100-contrast {\n  color: #161E2E !important;\n}\n\n.bg-gray-100-contrast {\n  background-color: #161E2E !important;\n}\n\n.text-gray-200-contrast {\n  color: #161E2E !important;\n}\n\n.bg-gray-200-contrast {\n  background-color: #161E2E !important;\n}\n\n.text-gray-300-contrast {\n  color: #161E2E !important;\n}\n\n.bg-gray-300-contrast {\n  background-color: #161E2E !important;\n}\n\n.text-gray-400-contrast {\n  color: #161E2E !important;\n}\n\n.bg-gray-400-contrast {\n  background-color: #161E2E !important;\n}\n\n.text-gray-500-contrast {\n  color: #161E2E !important;\n}\n\n.bg-gray-500-contrast {\n  background-color: #161E2E !important;\n}\n\n.text-gray-600-contrast {\n  color: #F9FAFB !important;\n}\n\n.bg-gray-600-contrast {\n  background-color: #F9FAFB !important;\n}\n\n.text-gray-700-contrast {\n  color: #F9FAFB !important;\n}\n\n.bg-gray-700-contrast {\n  background-color: #F9FAFB !important;\n}\n\n.text-gray-800-contrast {\n  color: #F9FAFB !important;\n}\n\n.bg-gray-800-contrast {\n  background-color: #F9FAFB !important;\n}\n\n.text-gray-900-contrast {\n  color: #F9FAFB !important;\n}\n\n.bg-gray-900-contrast {\n  background-color: #F9FAFB !important;\n}\n\n.text-gray-contrast {\n  color: #161E2E !important;\n}\n\n.bg-gray-contrast {\n  background-color: #161E2E !important;\n}\n\n.text-cool-gray-50-contrast {\n  color: #1A202E !important;\n}\n\n.bg-cool-gray-50-contrast {\n  background-color: #1A202E !important;\n}\n\n.text-cool-gray-100-contrast {\n  color: #1A202E !important;\n}\n\n.bg-cool-gray-100-contrast {\n  background-color: #1A202E !important;\n}\n\n.text-cool-gray-200-contrast {\n  color: #1A202E !important;\n}\n\n.bg-cool-gray-200-contrast {\n  background-color: #1A202E !important;\n}\n\n.text-cool-gray-300-contrast {\n  color: #1A202E !important;\n}\n\n.bg-cool-gray-300-contrast {\n  background-color: #1A202E !important;\n}\n\n.text-cool-gray-400-contrast {\n  color: #1A202E !important;\n}\n\n.bg-cool-gray-400-contrast {\n  background-color: #1A202E !important;\n}\n\n.text-cool-gray-500-contrast {\n  color: #1A202E !important;\n}\n\n.bg-cool-gray-500-contrast {\n  background-color: #1A202E !important;\n}\n\n.text-cool-gray-600-contrast {\n  color: #FBFDFE !important;\n}\n\n.bg-cool-gray-600-contrast {\n  background-color: #FBFDFE !important;\n}\n\n.text-cool-gray-700-contrast {\n  color: #FBFDFE !important;\n}\n\n.bg-cool-gray-700-contrast {\n  background-color: #FBFDFE !important;\n}\n\n.text-cool-gray-800-contrast {\n  color: #FBFDFE !important;\n}\n\n.bg-cool-gray-800-contrast {\n  background-color: #FBFDFE !important;\n}\n\n.text-cool-gray-900-contrast {\n  color: #FBFDFE !important;\n}\n\n.bg-cool-gray-900-contrast {\n  background-color: #FBFDFE !important;\n}\n\n.text-cool-gray-contrast {\n  color: #1A202E !important;\n}\n\n.bg-cool-gray-contrast {\n  background-color: #1A202E !important;\n}\n\n.text-red-50-contrast {\n  color: #771D1D !important;\n}\n\n.bg-red-50-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-red-100-contrast {\n  color: #771D1D !important;\n}\n\n.bg-red-100-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-red-200-contrast {\n  color: #771D1D !important;\n}\n\n.bg-red-200-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-red-300-contrast {\n  color: #771D1D !important;\n}\n\n.bg-red-300-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-red-400-contrast {\n  color: #771D1D !important;\n}\n\n.bg-red-400-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-red-500-contrast {\n  color: #771D1D !important;\n}\n\n.bg-red-500-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-red-600-contrast {\n  color: #FDF2F2 !important;\n}\n\n.bg-red-600-contrast {\n  background-color: #FDF2F2 !important;\n}\n\n.text-red-700-contrast {\n  color: #FDF2F2 !important;\n}\n\n.bg-red-700-contrast {\n  background-color: #FDF2F2 !important;\n}\n\n.text-red-800-contrast {\n  color: #FDF2F2 !important;\n}\n\n.bg-red-800-contrast {\n  background-color: #FDF2F2 !important;\n}\n\n.text-red-900-contrast {\n  color: #FDF2F2 !important;\n}\n\n.bg-red-900-contrast {\n  background-color: #FDF2F2 !important;\n}\n\n.text-red-contrast {\n  color: #771D1D !important;\n}\n\n.bg-red-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-orange-50-contrast {\n  color: #771D1D !important;\n}\n\n.bg-orange-50-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-orange-100-contrast {\n  color: #771D1D !important;\n}\n\n.bg-orange-100-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-orange-200-contrast {\n  color: #771D1D !important;\n}\n\n.bg-orange-200-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-orange-300-contrast {\n  color: #771D1D !important;\n}\n\n.bg-orange-300-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-orange-400-contrast {\n  color: #771D1D !important;\n}\n\n.bg-orange-400-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-orange-500-contrast {\n  color: #771D1D !important;\n}\n\n.bg-orange-500-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-orange-600-contrast {\n  color: #FFF8F1 !important;\n}\n\n.bg-orange-600-contrast {\n  background-color: #FFF8F1 !important;\n}\n\n.text-orange-700-contrast {\n  color: #FFF8F1 !important;\n}\n\n.bg-orange-700-contrast {\n  background-color: #FFF8F1 !important;\n}\n\n.text-orange-800-contrast {\n  color: #FFF8F1 !important;\n}\n\n.bg-orange-800-contrast {\n  background-color: #FFF8F1 !important;\n}\n\n.text-orange-900-contrast {\n  color: #FFF8F1 !important;\n}\n\n.bg-orange-900-contrast {\n  background-color: #FFF8F1 !important;\n}\n\n.text-orange-contrast {\n  color: #771D1D !important;\n}\n\n.bg-orange-contrast {\n  background-color: #771D1D !important;\n}\n\n.text-yellow-50-contrast {\n  color: #633112 !important;\n}\n\n.bg-yellow-50-contrast {\n  background-color: #633112 !important;\n}\n\n.text-yellow-100-contrast {\n  color: #633112 !important;\n}\n\n.bg-yellow-100-contrast {\n  background-color: #633112 !important;\n}\n\n.text-yellow-200-contrast {\n  color: #633112 !important;\n}\n\n.bg-yellow-200-contrast {\n  background-color: #633112 !important;\n}\n\n.text-yellow-300-contrast {\n  color: #633112 !important;\n}\n\n.bg-yellow-300-contrast {\n  background-color: #633112 !important;\n}\n\n.text-yellow-400-contrast {\n  color: #633112 !important;\n}\n\n.bg-yellow-400-contrast {\n  background-color: #633112 !important;\n}\n\n.text-yellow-500-contrast {\n  color: #633112 !important;\n}\n\n.bg-yellow-500-contrast {\n  background-color: #633112 !important;\n}\n\n.text-yellow-600-contrast {\n  color: #FDFDEA !important;\n}\n\n.bg-yellow-600-contrast {\n  background-color: #FDFDEA !important;\n}\n\n.text-yellow-700-contrast {\n  color: #FDFDEA !important;\n}\n\n.bg-yellow-700-contrast {\n  background-color: #FDFDEA !important;\n}\n\n.text-yellow-800-contrast {\n  color: #FDFDEA !important;\n}\n\n.bg-yellow-800-contrast {\n  background-color: #FDFDEA !important;\n}\n\n.text-yellow-900-contrast {\n  color: #FDFDEA !important;\n}\n\n.bg-yellow-900-contrast {\n  background-color: #FDFDEA !important;\n}\n\n.text-yellow-contrast {\n  color: #633112 !important;\n}\n\n.bg-yellow-contrast {\n  background-color: #633112 !important;\n}\n\n.text-green-50-contrast {\n  color: #014737 !important;\n}\n\n.bg-green-50-contrast {\n  background-color: #014737 !important;\n}\n\n.text-green-100-contrast {\n  color: #014737 !important;\n}\n\n.bg-green-100-contrast {\n  background-color: #014737 !important;\n}\n\n.text-green-200-contrast {\n  color: #014737 !important;\n}\n\n.bg-green-200-contrast {\n  background-color: #014737 !important;\n}\n\n.text-green-300-contrast {\n  color: #014737 !important;\n}\n\n.bg-green-300-contrast {\n  background-color: #014737 !important;\n}\n\n.text-green-400-contrast {\n  color: #014737 !important;\n}\n\n.bg-green-400-contrast {\n  background-color: #014737 !important;\n}\n\n.text-green-500-contrast {\n  color: #F3FAF7 !important;\n}\n\n.bg-green-500-contrast {\n  background-color: #F3FAF7 !important;\n}\n\n.text-green-600-contrast {\n  color: #F3FAF7 !important;\n}\n\n.bg-green-600-contrast {\n  background-color: #F3FAF7 !important;\n}\n\n.text-green-700-contrast {\n  color: #F3FAF7 !important;\n}\n\n.bg-green-700-contrast {\n  background-color: #F3FAF7 !important;\n}\n\n.text-green-800-contrast {\n  color: #F3FAF7 !important;\n}\n\n.bg-green-800-contrast {\n  background-color: #F3FAF7 !important;\n}\n\n.text-green-900-contrast {\n  color: #F3FAF7 !important;\n}\n\n.bg-green-900-contrast {\n  background-color: #F3FAF7 !important;\n}\n\n.text-green-contrast {\n  color: #F3FAF7 !important;\n}\n\n.bg-green-contrast {\n  background-color: #F3FAF7 !important;\n}\n\n.text-teal-50-contrast {\n  color: #014451 !important;\n}\n\n.bg-teal-50-contrast {\n  background-color: #014451 !important;\n}\n\n.text-teal-100-contrast {\n  color: #014451 !important;\n}\n\n.bg-teal-100-contrast {\n  background-color: #014451 !important;\n}\n\n.text-teal-200-contrast {\n  color: #014451 !important;\n}\n\n.bg-teal-200-contrast {\n  background-color: #014451 !important;\n}\n\n.text-teal-300-contrast {\n  color: #014451 !important;\n}\n\n.bg-teal-300-contrast {\n  background-color: #014451 !important;\n}\n\n.text-teal-400-contrast {\n  color: #014451 !important;\n}\n\n.bg-teal-400-contrast {\n  background-color: #014451 !important;\n}\n\n.text-teal-500-contrast {\n  color: #EDFAFA !important;\n}\n\n.bg-teal-500-contrast {\n  background-color: #EDFAFA !important;\n}\n\n.text-teal-600-contrast {\n  color: #EDFAFA !important;\n}\n\n.bg-teal-600-contrast {\n  background-color: #EDFAFA !important;\n}\n\n.text-teal-700-contrast {\n  color: #EDFAFA !important;\n}\n\n.bg-teal-700-contrast {\n  background-color: #EDFAFA !important;\n}\n\n.text-teal-800-contrast {\n  color: #EDFAFA !important;\n}\n\n.bg-teal-800-contrast {\n  background-color: #EDFAFA !important;\n}\n\n.text-teal-900-contrast {\n  color: #EDFAFA !important;\n}\n\n.bg-teal-900-contrast {\n  background-color: #EDFAFA !important;\n}\n\n.text-teal-contrast {\n  color: #EDFAFA !important;\n}\n\n.bg-teal-contrast {\n  background-color: #EDFAFA !important;\n}\n\n.text-blue-50-contrast {\n  color: #233876 !important;\n}\n\n.bg-blue-50-contrast {\n  background-color: #233876 !important;\n}\n\n.text-blue-100-contrast {\n  color: #233876 !important;\n}\n\n.bg-blue-100-contrast {\n  background-color: #233876 !important;\n}\n\n.text-blue-200-contrast {\n  color: #233876 !important;\n}\n\n.bg-blue-200-contrast {\n  background-color: #233876 !important;\n}\n\n.text-blue-300-contrast {\n  color: #233876 !important;\n}\n\n.bg-blue-300-contrast {\n  background-color: #233876 !important;\n}\n\n.text-blue-400-contrast {\n  color: #233876 !important;\n}\n\n.bg-blue-400-contrast {\n  background-color: #233876 !important;\n}\n\n.text-blue-500-contrast {\n  color: #EBF5FF !important;\n}\n\n.bg-blue-500-contrast {\n  background-color: #EBF5FF !important;\n}\n\n.text-blue-600-contrast {\n  color: #EBF5FF !important;\n}\n\n.bg-blue-600-contrast {\n  background-color: #EBF5FF !important;\n}\n\n.text-blue-700-contrast {\n  color: #EBF5FF !important;\n}\n\n.bg-blue-700-contrast {\n  background-color: #EBF5FF !important;\n}\n\n.text-blue-800-contrast {\n  color: #EBF5FF !important;\n}\n\n.bg-blue-800-contrast {\n  background-color: #EBF5FF !important;\n}\n\n.text-blue-900-contrast {\n  color: #EBF5FF !important;\n}\n\n.bg-blue-900-contrast {\n  background-color: #EBF5FF !important;\n}\n\n.text-blue-contrast {\n  color: #EBF5FF !important;\n}\n\n.bg-blue-contrast {\n  background-color: #EBF5FF !important;\n}\n\n.text-indigo-50-contrast {\n  color: #362F78 !important;\n}\n\n.bg-indigo-50-contrast {\n  background-color: #362F78 !important;\n}\n\n.text-indigo-100-contrast {\n  color: #362F78 !important;\n}\n\n.bg-indigo-100-contrast {\n  background-color: #362F78 !important;\n}\n\n.text-indigo-200-contrast {\n  color: #362F78 !important;\n}\n\n.bg-indigo-200-contrast {\n  background-color: #362F78 !important;\n}\n\n.text-indigo-300-contrast {\n  color: #362F78 !important;\n}\n\n.bg-indigo-300-contrast {\n  background-color: #362F78 !important;\n}\n\n.text-indigo-400-contrast {\n  color: #362F78 !important;\n}\n\n.bg-indigo-400-contrast {\n  background-color: #362F78 !important;\n}\n\n.text-indigo-500-contrast {\n  color: #F0F5FF !important;\n}\n\n.bg-indigo-500-contrast {\n  background-color: #F0F5FF !important;\n}\n\n.text-indigo-600-contrast {\n  color: #F0F5FF !important;\n}\n\n.bg-indigo-600-contrast {\n  background-color: #F0F5FF !important;\n}\n\n.text-indigo-700-contrast {\n  color: #F0F5FF !important;\n}\n\n.bg-indigo-700-contrast {\n  background-color: #F0F5FF !important;\n}\n\n.text-indigo-800-contrast {\n  color: #F0F5FF !important;\n}\n\n.bg-indigo-800-contrast {\n  background-color: #F0F5FF !important;\n}\n\n.text-indigo-900-contrast {\n  color: #F0F5FF !important;\n}\n\n.bg-indigo-900-contrast {\n  background-color: #F0F5FF !important;\n}\n\n.text-indigo-contrast {\n  color: #F0F5FF !important;\n}\n\n.bg-indigo-contrast {\n  background-color: #F0F5FF !important;\n}\n\n.text-purple-50-contrast {\n  color: #4A1D96 !important;\n}\n\n.bg-purple-50-contrast {\n  background-color: #4A1D96 !important;\n}\n\n.text-purple-100-contrast {\n  color: #4A1D96 !important;\n}\n\n.bg-purple-100-contrast {\n  background-color: #4A1D96 !important;\n}\n\n.text-purple-200-contrast {\n  color: #4A1D96 !important;\n}\n\n.bg-purple-200-contrast {\n  background-color: #4A1D96 !important;\n}\n\n.text-purple-300-contrast {\n  color: #4A1D96 !important;\n}\n\n.bg-purple-300-contrast {\n  background-color: #4A1D96 !important;\n}\n\n.text-purple-400-contrast {\n  color: #4A1D96 !important;\n}\n\n.bg-purple-400-contrast {\n  background-color: #4A1D96 !important;\n}\n\n.text-purple-500-contrast {\n  color: #F6F5FF !important;\n}\n\n.bg-purple-500-contrast {\n  background-color: #F6F5FF !important;\n}\n\n.text-purple-600-contrast {\n  color: #F6F5FF !important;\n}\n\n.bg-purple-600-contrast {\n  background-color: #F6F5FF !important;\n}\n\n.text-purple-700-contrast {\n  color: #F6F5FF !important;\n}\n\n.bg-purple-700-contrast {\n  background-color: #F6F5FF !important;\n}\n\n.text-purple-800-contrast {\n  color: #F6F5FF !important;\n}\n\n.bg-purple-800-contrast {\n  background-color: #F6F5FF !important;\n}\n\n.text-purple-900-contrast {\n  color: #F6F5FF !important;\n}\n\n.bg-purple-900-contrast {\n  background-color: #F6F5FF !important;\n}\n\n.text-purple-contrast {\n  color: #F6F5FF !important;\n}\n\n.bg-purple-contrast {\n  background-color: #F6F5FF !important;\n}\n\n.text-pink-50-contrast {\n  color: #751A3D !important;\n}\n\n.bg-pink-50-contrast {\n  background-color: #751A3D !important;\n}\n\n.text-pink-100-contrast {\n  color: #751A3D !important;\n}\n\n.bg-pink-100-contrast {\n  background-color: #751A3D !important;\n}\n\n.text-pink-200-contrast {\n  color: #751A3D !important;\n}\n\n.bg-pink-200-contrast {\n  background-color: #751A3D !important;\n}\n\n.text-pink-300-contrast {\n  color: #751A3D !important;\n}\n\n.bg-pink-300-contrast {\n  background-color: #751A3D !important;\n}\n\n.text-pink-400-contrast {\n  color: #751A3D !important;\n}\n\n.bg-pink-400-contrast {\n  background-color: #751A3D !important;\n}\n\n.text-pink-500-contrast {\n  color: #FDF2F8 !important;\n}\n\n.bg-pink-500-contrast {\n  background-color: #FDF2F8 !important;\n}\n\n.text-pink-600-contrast {\n  color: #FDF2F8 !important;\n}\n\n.bg-pink-600-contrast {\n  background-color: #FDF2F8 !important;\n}\n\n.text-pink-700-contrast {\n  color: #FDF2F8 !important;\n}\n\n.bg-pink-700-contrast {\n  background-color: #FDF2F8 !important;\n}\n\n.text-pink-800-contrast {\n  color: #FDF2F8 !important;\n}\n\n.bg-pink-800-contrast {\n  background-color: #FDF2F8 !important;\n}\n\n.text-pink-900-contrast {\n  color: #FDF2F8 !important;\n}\n\n.bg-pink-900-contrast {\n  background-color: #FDF2F8 !important;\n}\n\n.text-pink-contrast {\n  color: #FDF2F8 !important;\n}\n\n.bg-pink-contrast {\n  background-color: #FDF2F8 !important;\n}\n\n.white {\n  background-color: #FFFFFF !important;\n  color: #252F3F !important;\n}\n\n.white.mat-icon, .white .mat-icon {\n  color: #252F3F !important;\n}\n\n.white.text-secondary, .white .text-secondary {\n  color: rgba(#252F3F, 0.7) !important;\n}\n\n.white.text-hint, .white .text-hint, .white.text-disabled, .white .text-disabled {\n  color: rgba(#252F3F, 0.38) !important;\n}\n\n.white.divider, .white .divider {\n  color: rgba(#252F3F, 0.12) !important;\n}\n\n.text-white.text-secondary, .text-white .text-secondary {\n  color: rgba(#FFFFFF, 0.7) !important;\n}\n\n.text-white.text-hint, .text-white .text-hint, .text-white.text-disabled, .text-white .text-disabled {\n  color: rgba(#FFFFFF, 0.38) !important;\n}\n\n.text-white.divider, .text-white .divider {\n  color: rgba(#FFFFFF, 0.12) !important;\n}\n\n.black {\n  background-color: #000000 !important;\n  color: #FFFFFF !important;\n}\n\n.black.mat-icon, .black .mat-icon {\n  color: #FFFFFF !important;\n}\n\n.black.text-secondary, .black .text-secondary {\n  color: rgba(#FFFFFF, 0.7) !important;\n}\n\n.black.text-hint, .black .text-hint, .black.text-disabled, .black .text-disabled {\n  color: rgba(#FFFFFF, 0.38) !important;\n}\n\n.black.divider, .black .divider {\n  color: rgba(#FFFFFF, 0.12) !important;\n}\n\n.text-black.text-secondary, .text-black .text-secondary {\n  color: rgba(#000000, 0.7) !important;\n}\n\n.text-black.text-hint, .text-black .text-hint, .text-black.text-disabled, .text-black .text-disabled {\n  color: rgba(#000000, 0.38) !important;\n}\n\n.text-black.divider, .text-black .divider {\n  color: rgba(#000000, 0.12) !important;\n}\n\n.gray-50 {\n  background-color: #F9FAFB !important;\n  color: #161E2E !important;\n}\n\n.gray-50.mat-icon, .gray-50 .mat-icon {\n  color: #161E2E !important;\n}\n\n.gray-50.text-secondary, .gray-50 .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.gray-50.text-hint, .gray-50 .text-hint, .gray-50.text-disabled, .gray-50 .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.gray-50.divider, .gray-50 .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.text-gray-50.text-secondary, .text-gray-50 .text-secondary {\n  color: rgba(#F9FAFB, 0.7) !important;\n}\n\n.text-gray-50.text-hint, .text-gray-50 .text-hint, .text-gray-50.text-disabled, .text-gray-50 .text-disabled {\n  color: rgba(#F9FAFB, 0.38) !important;\n}\n\n.text-gray-50.divider, .text-gray-50 .divider {\n  color: rgba(#F9FAFB, 0.12) !important;\n}\n\n.gray-100 {\n  background-color: #F4F5F7 !important;\n  color: #161E2E !important;\n}\n\n.gray-100.mat-icon, .gray-100 .mat-icon {\n  color: #161E2E !important;\n}\n\n.gray-100.text-secondary, .gray-100 .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.gray-100.text-hint, .gray-100 .text-hint, .gray-100.text-disabled, .gray-100 .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.gray-100.divider, .gray-100 .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.text-gray-100.text-secondary, .text-gray-100 .text-secondary {\n  color: rgba(#F4F5F7, 0.7) !important;\n}\n\n.text-gray-100.text-hint, .text-gray-100 .text-hint, .text-gray-100.text-disabled, .text-gray-100 .text-disabled {\n  color: rgba(#F4F5F7, 0.38) !important;\n}\n\n.text-gray-100.divider, .text-gray-100 .divider {\n  color: rgba(#F4F5F7, 0.12) !important;\n}\n\n.gray-200 {\n  background-color: #E5E7EB !important;\n  color: #161E2E !important;\n}\n\n.gray-200.mat-icon, .gray-200 .mat-icon {\n  color: #161E2E !important;\n}\n\n.gray-200.text-secondary, .gray-200 .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.gray-200.text-hint, .gray-200 .text-hint, .gray-200.text-disabled, .gray-200 .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.gray-200.divider, .gray-200 .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.text-gray-200.text-secondary, .text-gray-200 .text-secondary {\n  color: rgba(#E5E7EB, 0.7) !important;\n}\n\n.text-gray-200.text-hint, .text-gray-200 .text-hint, .text-gray-200.text-disabled, .text-gray-200 .text-disabled {\n  color: rgba(#E5E7EB, 0.38) !important;\n}\n\n.text-gray-200.divider, .text-gray-200 .divider {\n  color: rgba(#E5E7EB, 0.12) !important;\n}\n\n.gray-300 {\n  background-color: #D2D6DC !important;\n  color: #161E2E !important;\n}\n\n.gray-300.mat-icon, .gray-300 .mat-icon {\n  color: #161E2E !important;\n}\n\n.gray-300.text-secondary, .gray-300 .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.gray-300.text-hint, .gray-300 .text-hint, .gray-300.text-disabled, .gray-300 .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.gray-300.divider, .gray-300 .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.text-gray-300.text-secondary, .text-gray-300 .text-secondary {\n  color: rgba(#D2D6DC, 0.7) !important;\n}\n\n.text-gray-300.text-hint, .text-gray-300 .text-hint, .text-gray-300.text-disabled, .text-gray-300 .text-disabled {\n  color: rgba(#D2D6DC, 0.38) !important;\n}\n\n.text-gray-300.divider, .text-gray-300 .divider {\n  color: rgba(#D2D6DC, 0.12) !important;\n}\n\n.gray-400 {\n  background-color: #9FA6B2 !important;\n  color: #161E2E !important;\n}\n\n.gray-400.mat-icon, .gray-400 .mat-icon {\n  color: #161E2E !important;\n}\n\n.gray-400.text-secondary, .gray-400 .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.gray-400.text-hint, .gray-400 .text-hint, .gray-400.text-disabled, .gray-400 .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.gray-400.divider, .gray-400 .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.text-gray-400.text-secondary, .text-gray-400 .text-secondary {\n  color: rgba(#9FA6B2, 0.7) !important;\n}\n\n.text-gray-400.text-hint, .text-gray-400 .text-hint, .text-gray-400.text-disabled, .text-gray-400 .text-disabled {\n  color: rgba(#9FA6B2, 0.38) !important;\n}\n\n.text-gray-400.divider, .text-gray-400 .divider {\n  color: rgba(#9FA6B2, 0.12) !important;\n}\n\n.gray-500 {\n  background-color: #6B7280 !important;\n  color: #161E2E !important;\n}\n\n.gray-500.mat-icon, .gray-500 .mat-icon {\n  color: #161E2E !important;\n}\n\n.gray-500.text-secondary, .gray-500 .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.gray-500.text-hint, .gray-500 .text-hint, .gray-500.text-disabled, .gray-500 .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.gray-500.divider, .gray-500 .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.text-gray-500.text-secondary, .text-gray-500 .text-secondary {\n  color: rgba(#6B7280, 0.7) !important;\n}\n\n.text-gray-500.text-hint, .text-gray-500 .text-hint, .text-gray-500.text-disabled, .text-gray-500 .text-disabled {\n  color: rgba(#6B7280, 0.38) !important;\n}\n\n.text-gray-500.divider, .text-gray-500 .divider {\n  color: rgba(#6B7280, 0.12) !important;\n}\n\n.gray-600 {\n  background-color: #4B5563 !important;\n  color: #F9FAFB !important;\n}\n\n.gray-600.mat-icon, .gray-600 .mat-icon {\n  color: #F9FAFB !important;\n}\n\n.gray-600.text-secondary, .gray-600 .text-secondary {\n  color: rgba(#F9FAFB, 0.7) !important;\n}\n\n.gray-600.text-hint, .gray-600 .text-hint, .gray-600.text-disabled, .gray-600 .text-disabled {\n  color: rgba(#F9FAFB, 0.38) !important;\n}\n\n.gray-600.divider, .gray-600 .divider {\n  color: rgba(#F9FAFB, 0.12) !important;\n}\n\n.text-gray-600.text-secondary, .text-gray-600 .text-secondary {\n  color: rgba(#4B5563, 0.7) !important;\n}\n\n.text-gray-600.text-hint, .text-gray-600 .text-hint, .text-gray-600.text-disabled, .text-gray-600 .text-disabled {\n  color: rgba(#4B5563, 0.38) !important;\n}\n\n.text-gray-600.divider, .text-gray-600 .divider {\n  color: rgba(#4B5563, 0.12) !important;\n}\n\n.gray-700 {\n  background-color: #374151 !important;\n  color: #F9FAFB !important;\n}\n\n.gray-700.mat-icon, .gray-700 .mat-icon {\n  color: #F9FAFB !important;\n}\n\n.gray-700.text-secondary, .gray-700 .text-secondary {\n  color: rgba(#F9FAFB, 0.7) !important;\n}\n\n.gray-700.text-hint, .gray-700 .text-hint, .gray-700.text-disabled, .gray-700 .text-disabled {\n  color: rgba(#F9FAFB, 0.38) !important;\n}\n\n.gray-700.divider, .gray-700 .divider {\n  color: rgba(#F9FAFB, 0.12) !important;\n}\n\n.text-gray-700.text-secondary, .text-gray-700 .text-secondary {\n  color: rgba(#374151, 0.7) !important;\n}\n\n.text-gray-700.text-hint, .text-gray-700 .text-hint, .text-gray-700.text-disabled, .text-gray-700 .text-disabled {\n  color: rgba(#374151, 0.38) !important;\n}\n\n.text-gray-700.divider, .text-gray-700 .divider {\n  color: rgba(#374151, 0.12) !important;\n}\n\n.gray-800 {\n  background-color: #252F3F !important;\n  color: #F9FAFB !important;\n}\n\n.gray-800.mat-icon, .gray-800 .mat-icon {\n  color: #F9FAFB !important;\n}\n\n.gray-800.text-secondary, .gray-800 .text-secondary {\n  color: rgba(#F9FAFB, 0.7) !important;\n}\n\n.gray-800.text-hint, .gray-800 .text-hint, .gray-800.text-disabled, .gray-800 .text-disabled {\n  color: rgba(#F9FAFB, 0.38) !important;\n}\n\n.gray-800.divider, .gray-800 .divider {\n  color: rgba(#F9FAFB, 0.12) !important;\n}\n\n.text-gray-800.text-secondary, .text-gray-800 .text-secondary {\n  color: rgba(#252F3F, 0.7) !important;\n}\n\n.text-gray-800.text-hint, .text-gray-800 .text-hint, .text-gray-800.text-disabled, .text-gray-800 .text-disabled {\n  color: rgba(#252F3F, 0.38) !important;\n}\n\n.text-gray-800.divider, .text-gray-800 .divider {\n  color: rgba(#252F3F, 0.12) !important;\n}\n\n.gray-900 {\n  background-color: #161E2E !important;\n  color: #F9FAFB !important;\n}\n\n.gray-900.mat-icon, .gray-900 .mat-icon {\n  color: #F9FAFB !important;\n}\n\n.gray-900.text-secondary, .gray-900 .text-secondary {\n  color: rgba(#F9FAFB, 0.7) !important;\n}\n\n.gray-900.text-hint, .gray-900 .text-hint, .gray-900.text-disabled, .gray-900 .text-disabled {\n  color: rgba(#F9FAFB, 0.38) !important;\n}\n\n.gray-900.divider, .gray-900 .divider {\n  color: rgba(#F9FAFB, 0.12) !important;\n}\n\n.text-gray-900.text-secondary, .text-gray-900 .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.text-gray-900.text-hint, .text-gray-900 .text-hint, .text-gray-900.text-disabled, .text-gray-900 .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.text-gray-900.divider, .text-gray-900 .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.gray {\n  background-color: #6B7280 !important;\n  color: #161E2E !important;\n}\n\n.gray.mat-icon, .gray .mat-icon {\n  color: #161E2E !important;\n}\n\n.gray.text-secondary, .gray .text-secondary {\n  color: rgba(#161E2E, 0.7) !important;\n}\n\n.gray.text-hint, .gray .text-hint, .gray.text-disabled, .gray .text-disabled {\n  color: rgba(#161E2E, 0.38) !important;\n}\n\n.gray.divider, .gray .divider {\n  color: rgba(#161E2E, 0.12) !important;\n}\n\n.text-gray.text-secondary, .text-gray .text-secondary {\n  color: rgba(#6B7280, 0.7) !important;\n}\n\n.text-gray.text-hint, .text-gray .text-hint, .text-gray.text-disabled, .text-gray .text-disabled {\n  color: rgba(#6B7280, 0.38) !important;\n}\n\n.text-gray.divider, .text-gray .divider {\n  color: rgba(#6B7280, 0.12) !important;\n}\n\n.cool-gray-50 {\n  background-color: #FBFDFE !important;\n  color: #1A202E !important;\n}\n\n.cool-gray-50.mat-icon, .cool-gray-50 .mat-icon {\n  color: #1A202E !important;\n}\n\n.cool-gray-50.text-secondary, .cool-gray-50 .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.cool-gray-50.text-hint, .cool-gray-50 .text-hint, .cool-gray-50.text-disabled, .cool-gray-50 .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.cool-gray-50.divider, .cool-gray-50 .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.text-cool-gray-50.text-secondary, .text-cool-gray-50 .text-secondary {\n  color: rgba(#FBFDFE, 0.7) !important;\n}\n\n.text-cool-gray-50.text-hint, .text-cool-gray-50 .text-hint, .text-cool-gray-50.text-disabled, .text-cool-gray-50 .text-disabled {\n  color: rgba(#FBFDFE, 0.38) !important;\n}\n\n.text-cool-gray-50.divider, .text-cool-gray-50 .divider {\n  color: rgba(#FBFDFE, 0.12) !important;\n}\n\n.cool-gray-100 {\n  background-color: #F1F5F9 !important;\n  color: #1A202E !important;\n}\n\n.cool-gray-100.mat-icon, .cool-gray-100 .mat-icon {\n  color: #1A202E !important;\n}\n\n.cool-gray-100.text-secondary, .cool-gray-100 .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.cool-gray-100.text-hint, .cool-gray-100 .text-hint, .cool-gray-100.text-disabled, .cool-gray-100 .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.cool-gray-100.divider, .cool-gray-100 .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.text-cool-gray-100.text-secondary, .text-cool-gray-100 .text-secondary {\n  color: rgba(#F1F5F9, 0.7) !important;\n}\n\n.text-cool-gray-100.text-hint, .text-cool-gray-100 .text-hint, .text-cool-gray-100.text-disabled, .text-cool-gray-100 .text-disabled {\n  color: rgba(#F1F5F9, 0.38) !important;\n}\n\n.text-cool-gray-100.divider, .text-cool-gray-100 .divider {\n  color: rgba(#F1F5F9, 0.12) !important;\n}\n\n.cool-gray-200 {\n  background-color: #E2E8F0 !important;\n  color: #1A202E !important;\n}\n\n.cool-gray-200.mat-icon, .cool-gray-200 .mat-icon {\n  color: #1A202E !important;\n}\n\n.cool-gray-200.text-secondary, .cool-gray-200 .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.cool-gray-200.text-hint, .cool-gray-200 .text-hint, .cool-gray-200.text-disabled, .cool-gray-200 .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.cool-gray-200.divider, .cool-gray-200 .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.text-cool-gray-200.text-secondary, .text-cool-gray-200 .text-secondary {\n  color: rgba(#E2E8F0, 0.7) !important;\n}\n\n.text-cool-gray-200.text-hint, .text-cool-gray-200 .text-hint, .text-cool-gray-200.text-disabled, .text-cool-gray-200 .text-disabled {\n  color: rgba(#E2E8F0, 0.38) !important;\n}\n\n.text-cool-gray-200.divider, .text-cool-gray-200 .divider {\n  color: rgba(#E2E8F0, 0.12) !important;\n}\n\n.cool-gray-300 {\n  background-color: #CFD8E3 !important;\n  color: #1A202E !important;\n}\n\n.cool-gray-300.mat-icon, .cool-gray-300 .mat-icon {\n  color: #1A202E !important;\n}\n\n.cool-gray-300.text-secondary, .cool-gray-300 .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.cool-gray-300.text-hint, .cool-gray-300 .text-hint, .cool-gray-300.text-disabled, .cool-gray-300 .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.cool-gray-300.divider, .cool-gray-300 .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.text-cool-gray-300.text-secondary, .text-cool-gray-300 .text-secondary {\n  color: rgba(#CFD8E3, 0.7) !important;\n}\n\n.text-cool-gray-300.text-hint, .text-cool-gray-300 .text-hint, .text-cool-gray-300.text-disabled, .text-cool-gray-300 .text-disabled {\n  color: rgba(#CFD8E3, 0.38) !important;\n}\n\n.text-cool-gray-300.divider, .text-cool-gray-300 .divider {\n  color: rgba(#CFD8E3, 0.12) !important;\n}\n\n.cool-gray-400 {\n  background-color: #97A6BA !important;\n  color: #1A202E !important;\n}\n\n.cool-gray-400.mat-icon, .cool-gray-400 .mat-icon {\n  color: #1A202E !important;\n}\n\n.cool-gray-400.text-secondary, .cool-gray-400 .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.cool-gray-400.text-hint, .cool-gray-400 .text-hint, .cool-gray-400.text-disabled, .cool-gray-400 .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.cool-gray-400.divider, .cool-gray-400 .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.text-cool-gray-400.text-secondary, .text-cool-gray-400 .text-secondary {\n  color: rgba(#97A6BA, 0.7) !important;\n}\n\n.text-cool-gray-400.text-hint, .text-cool-gray-400 .text-hint, .text-cool-gray-400.text-disabled, .text-cool-gray-400 .text-disabled {\n  color: rgba(#97A6BA, 0.38) !important;\n}\n\n.text-cool-gray-400.divider, .text-cool-gray-400 .divider {\n  color: rgba(#97A6BA, 0.12) !important;\n}\n\n.cool-gray-500 {\n  background-color: #64748B !important;\n  color: #1A202E !important;\n}\n\n.cool-gray-500.mat-icon, .cool-gray-500 .mat-icon {\n  color: #1A202E !important;\n}\n\n.cool-gray-500.text-secondary, .cool-gray-500 .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.cool-gray-500.text-hint, .cool-gray-500 .text-hint, .cool-gray-500.text-disabled, .cool-gray-500 .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.cool-gray-500.divider, .cool-gray-500 .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.text-cool-gray-500.text-secondary, .text-cool-gray-500 .text-secondary {\n  color: rgba(#64748B, 0.7) !important;\n}\n\n.text-cool-gray-500.text-hint, .text-cool-gray-500 .text-hint, .text-cool-gray-500.text-disabled, .text-cool-gray-500 .text-disabled {\n  color: rgba(#64748B, 0.38) !important;\n}\n\n.text-cool-gray-500.divider, .text-cool-gray-500 .divider {\n  color: rgba(#64748B, 0.12) !important;\n}\n\n.cool-gray-600 {\n  background-color: #475569 !important;\n  color: #FBFDFE !important;\n}\n\n.cool-gray-600.mat-icon, .cool-gray-600 .mat-icon {\n  color: #FBFDFE !important;\n}\n\n.cool-gray-600.text-secondary, .cool-gray-600 .text-secondary {\n  color: rgba(#FBFDFE, 0.7) !important;\n}\n\n.cool-gray-600.text-hint, .cool-gray-600 .text-hint, .cool-gray-600.text-disabled, .cool-gray-600 .text-disabled {\n  color: rgba(#FBFDFE, 0.38) !important;\n}\n\n.cool-gray-600.divider, .cool-gray-600 .divider {\n  color: rgba(#FBFDFE, 0.12) !important;\n}\n\n.text-cool-gray-600.text-secondary, .text-cool-gray-600 .text-secondary {\n  color: rgba(#475569, 0.7) !important;\n}\n\n.text-cool-gray-600.text-hint, .text-cool-gray-600 .text-hint, .text-cool-gray-600.text-disabled, .text-cool-gray-600 .text-disabled {\n  color: rgba(#475569, 0.38) !important;\n}\n\n.text-cool-gray-600.divider, .text-cool-gray-600 .divider {\n  color: rgba(#475569, 0.12) !important;\n}\n\n.cool-gray-700 {\n  background-color: #364152 !important;\n  color: #FBFDFE !important;\n}\n\n.cool-gray-700.mat-icon, .cool-gray-700 .mat-icon {\n  color: #FBFDFE !important;\n}\n\n.cool-gray-700.text-secondary, .cool-gray-700 .text-secondary {\n  color: rgba(#FBFDFE, 0.7) !important;\n}\n\n.cool-gray-700.text-hint, .cool-gray-700 .text-hint, .cool-gray-700.text-disabled, .cool-gray-700 .text-disabled {\n  color: rgba(#FBFDFE, 0.38) !important;\n}\n\n.cool-gray-700.divider, .cool-gray-700 .divider {\n  color: rgba(#FBFDFE, 0.12) !important;\n}\n\n.text-cool-gray-700.text-secondary, .text-cool-gray-700 .text-secondary {\n  color: rgba(#364152, 0.7) !important;\n}\n\n.text-cool-gray-700.text-hint, .text-cool-gray-700 .text-hint, .text-cool-gray-700.text-disabled, .text-cool-gray-700 .text-disabled {\n  color: rgba(#364152, 0.38) !important;\n}\n\n.text-cool-gray-700.divider, .text-cool-gray-700 .divider {\n  color: rgba(#364152, 0.12) !important;\n}\n\n.cool-gray-800 {\n  background-color: #27303F !important;\n  color: #FBFDFE !important;\n}\n\n.cool-gray-800.mat-icon, .cool-gray-800 .mat-icon {\n  color: #FBFDFE !important;\n}\n\n.cool-gray-800.text-secondary, .cool-gray-800 .text-secondary {\n  color: rgba(#FBFDFE, 0.7) !important;\n}\n\n.cool-gray-800.text-hint, .cool-gray-800 .text-hint, .cool-gray-800.text-disabled, .cool-gray-800 .text-disabled {\n  color: rgba(#FBFDFE, 0.38) !important;\n}\n\n.cool-gray-800.divider, .cool-gray-800 .divider {\n  color: rgba(#FBFDFE, 0.12) !important;\n}\n\n.text-cool-gray-800.text-secondary, .text-cool-gray-800 .text-secondary {\n  color: rgba(#27303F, 0.7) !important;\n}\n\n.text-cool-gray-800.text-hint, .text-cool-gray-800 .text-hint, .text-cool-gray-800.text-disabled, .text-cool-gray-800 .text-disabled {\n  color: rgba(#27303F, 0.38) !important;\n}\n\n.text-cool-gray-800.divider, .text-cool-gray-800 .divider {\n  color: rgba(#27303F, 0.12) !important;\n}\n\n.cool-gray-900 {\n  background-color: #1A202E !important;\n  color: #FBFDFE !important;\n}\n\n.cool-gray-900.mat-icon, .cool-gray-900 .mat-icon {\n  color: #FBFDFE !important;\n}\n\n.cool-gray-900.text-secondary, .cool-gray-900 .text-secondary {\n  color: rgba(#FBFDFE, 0.7) !important;\n}\n\n.cool-gray-900.text-hint, .cool-gray-900 .text-hint, .cool-gray-900.text-disabled, .cool-gray-900 .text-disabled {\n  color: rgba(#FBFDFE, 0.38) !important;\n}\n\n.cool-gray-900.divider, .cool-gray-900 .divider {\n  color: rgba(#FBFDFE, 0.12) !important;\n}\n\n.text-cool-gray-900.text-secondary, .text-cool-gray-900 .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.text-cool-gray-900.text-hint, .text-cool-gray-900 .text-hint, .text-cool-gray-900.text-disabled, .text-cool-gray-900 .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.text-cool-gray-900.divider, .text-cool-gray-900 .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.cool-gray {\n  background-color: #64748B !important;\n  color: #1A202E !important;\n}\n\n.cool-gray.mat-icon, .cool-gray .mat-icon {\n  color: #1A202E !important;\n}\n\n.cool-gray.text-secondary, .cool-gray .text-secondary {\n  color: rgba(#1A202E, 0.7) !important;\n}\n\n.cool-gray.text-hint, .cool-gray .text-hint, .cool-gray.text-disabled, .cool-gray .text-disabled {\n  color: rgba(#1A202E, 0.38) !important;\n}\n\n.cool-gray.divider, .cool-gray .divider {\n  color: rgba(#1A202E, 0.12) !important;\n}\n\n.text-cool-gray.text-secondary, .text-cool-gray .text-secondary {\n  color: rgba(#64748B, 0.7) !important;\n}\n\n.text-cool-gray.text-hint, .text-cool-gray .text-hint, .text-cool-gray.text-disabled, .text-cool-gray .text-disabled {\n  color: rgba(#64748B, 0.38) !important;\n}\n\n.text-cool-gray.divider, .text-cool-gray .divider {\n  color: rgba(#64748B, 0.12) !important;\n}\n\n.red-50 {\n  background-color: #FDF2F2 !important;\n  color: #771D1D !important;\n}\n\n.red-50.mat-icon, .red-50 .mat-icon {\n  color: #771D1D !important;\n}\n\n.red-50.text-secondary, .red-50 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.red-50.text-hint, .red-50 .text-hint, .red-50.text-disabled, .red-50 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.red-50.divider, .red-50 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-red-50.text-secondary, .text-red-50 .text-secondary {\n  color: rgba(#FDF2F2, 0.7) !important;\n}\n\n.text-red-50.text-hint, .text-red-50 .text-hint, .text-red-50.text-disabled, .text-red-50 .text-disabled {\n  color: rgba(#FDF2F2, 0.38) !important;\n}\n\n.text-red-50.divider, .text-red-50 .divider {\n  color: rgba(#FDF2F2, 0.12) !important;\n}\n\n.red-100 {\n  background-color: #FDE8E8 !important;\n  color: #771D1D !important;\n}\n\n.red-100.mat-icon, .red-100 .mat-icon {\n  color: #771D1D !important;\n}\n\n.red-100.text-secondary, .red-100 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.red-100.text-hint, .red-100 .text-hint, .red-100.text-disabled, .red-100 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.red-100.divider, .red-100 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-red-100.text-secondary, .text-red-100 .text-secondary {\n  color: rgba(#FDE8E8, 0.7) !important;\n}\n\n.text-red-100.text-hint, .text-red-100 .text-hint, .text-red-100.text-disabled, .text-red-100 .text-disabled {\n  color: rgba(#FDE8E8, 0.38) !important;\n}\n\n.text-red-100.divider, .text-red-100 .divider {\n  color: rgba(#FDE8E8, 0.12) !important;\n}\n\n.red-200 {\n  background-color: #FBD5D5 !important;\n  color: #771D1D !important;\n}\n\n.red-200.mat-icon, .red-200 .mat-icon {\n  color: #771D1D !important;\n}\n\n.red-200.text-secondary, .red-200 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.red-200.text-hint, .red-200 .text-hint, .red-200.text-disabled, .red-200 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.red-200.divider, .red-200 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-red-200.text-secondary, .text-red-200 .text-secondary {\n  color: rgba(#FBD5D5, 0.7) !important;\n}\n\n.text-red-200.text-hint, .text-red-200 .text-hint, .text-red-200.text-disabled, .text-red-200 .text-disabled {\n  color: rgba(#FBD5D5, 0.38) !important;\n}\n\n.text-red-200.divider, .text-red-200 .divider {\n  color: rgba(#FBD5D5, 0.12) !important;\n}\n\n.red-300 {\n  background-color: #F8B4B4 !important;\n  color: #771D1D !important;\n}\n\n.red-300.mat-icon, .red-300 .mat-icon {\n  color: #771D1D !important;\n}\n\n.red-300.text-secondary, .red-300 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.red-300.text-hint, .red-300 .text-hint, .red-300.text-disabled, .red-300 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.red-300.divider, .red-300 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-red-300.text-secondary, .text-red-300 .text-secondary {\n  color: rgba(#F8B4B4, 0.7) !important;\n}\n\n.text-red-300.text-hint, .text-red-300 .text-hint, .text-red-300.text-disabled, .text-red-300 .text-disabled {\n  color: rgba(#F8B4B4, 0.38) !important;\n}\n\n.text-red-300.divider, .text-red-300 .divider {\n  color: rgba(#F8B4B4, 0.12) !important;\n}\n\n.red-400 {\n  background-color: #F98080 !important;\n  color: #771D1D !important;\n}\n\n.red-400.mat-icon, .red-400 .mat-icon {\n  color: #771D1D !important;\n}\n\n.red-400.text-secondary, .red-400 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.red-400.text-hint, .red-400 .text-hint, .red-400.text-disabled, .red-400 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.red-400.divider, .red-400 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-red-400.text-secondary, .text-red-400 .text-secondary {\n  color: rgba(#F98080, 0.7) !important;\n}\n\n.text-red-400.text-hint, .text-red-400 .text-hint, .text-red-400.text-disabled, .text-red-400 .text-disabled {\n  color: rgba(#F98080, 0.38) !important;\n}\n\n.text-red-400.divider, .text-red-400 .divider {\n  color: rgba(#F98080, 0.12) !important;\n}\n\n.red-500 {\n  background-color: #F05252 !important;\n  color: #771D1D !important;\n}\n\n.red-500.mat-icon, .red-500 .mat-icon {\n  color: #771D1D !important;\n}\n\n.red-500.text-secondary, .red-500 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.red-500.text-hint, .red-500 .text-hint, .red-500.text-disabled, .red-500 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.red-500.divider, .red-500 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-red-500.text-secondary, .text-red-500 .text-secondary {\n  color: rgba(#F05252, 0.7) !important;\n}\n\n.text-red-500.text-hint, .text-red-500 .text-hint, .text-red-500.text-disabled, .text-red-500 .text-disabled {\n  color: rgba(#F05252, 0.38) !important;\n}\n\n.text-red-500.divider, .text-red-500 .divider {\n  color: rgba(#F05252, 0.12) !important;\n}\n\n.red-600 {\n  background-color: #E02424 !important;\n  color: #FDF2F2 !important;\n}\n\n.red-600.mat-icon, .red-600 .mat-icon {\n  color: #FDF2F2 !important;\n}\n\n.red-600.text-secondary, .red-600 .text-secondary {\n  color: rgba(#FDF2F2, 0.7) !important;\n}\n\n.red-600.text-hint, .red-600 .text-hint, .red-600.text-disabled, .red-600 .text-disabled {\n  color: rgba(#FDF2F2, 0.38) !important;\n}\n\n.red-600.divider, .red-600 .divider {\n  color: rgba(#FDF2F2, 0.12) !important;\n}\n\n.text-red-600.text-secondary, .text-red-600 .text-secondary {\n  color: rgba(#E02424, 0.7) !important;\n}\n\n.text-red-600.text-hint, .text-red-600 .text-hint, .text-red-600.text-disabled, .text-red-600 .text-disabled {\n  color: rgba(#E02424, 0.38) !important;\n}\n\n.text-red-600.divider, .text-red-600 .divider {\n  color: rgba(#E02424, 0.12) !important;\n}\n\n.red-700 {\n  background-color: #C81E1E !important;\n  color: #FDF2F2 !important;\n}\n\n.red-700.mat-icon, .red-700 .mat-icon {\n  color: #FDF2F2 !important;\n}\n\n.red-700.text-secondary, .red-700 .text-secondary {\n  color: rgba(#FDF2F2, 0.7) !important;\n}\n\n.red-700.text-hint, .red-700 .text-hint, .red-700.text-disabled, .red-700 .text-disabled {\n  color: rgba(#FDF2F2, 0.38) !important;\n}\n\n.red-700.divider, .red-700 .divider {\n  color: rgba(#FDF2F2, 0.12) !important;\n}\n\n.text-red-700.text-secondary, .text-red-700 .text-secondary {\n  color: rgba(#C81E1E, 0.7) !important;\n}\n\n.text-red-700.text-hint, .text-red-700 .text-hint, .text-red-700.text-disabled, .text-red-700 .text-disabled {\n  color: rgba(#C81E1E, 0.38) !important;\n}\n\n.text-red-700.divider, .text-red-700 .divider {\n  color: rgba(#C81E1E, 0.12) !important;\n}\n\n.red-800 {\n  background-color: #9B1C1C !important;\n  color: #FDF2F2 !important;\n}\n\n.red-800.mat-icon, .red-800 .mat-icon {\n  color: #FDF2F2 !important;\n}\n\n.red-800.text-secondary, .red-800 .text-secondary {\n  color: rgba(#FDF2F2, 0.7) !important;\n}\n\n.red-800.text-hint, .red-800 .text-hint, .red-800.text-disabled, .red-800 .text-disabled {\n  color: rgba(#FDF2F2, 0.38) !important;\n}\n\n.red-800.divider, .red-800 .divider {\n  color: rgba(#FDF2F2, 0.12) !important;\n}\n\n.text-red-800.text-secondary, .text-red-800 .text-secondary {\n  color: rgba(#9B1C1C, 0.7) !important;\n}\n\n.text-red-800.text-hint, .text-red-800 .text-hint, .text-red-800.text-disabled, .text-red-800 .text-disabled {\n  color: rgba(#9B1C1C, 0.38) !important;\n}\n\n.text-red-800.divider, .text-red-800 .divider {\n  color: rgba(#9B1C1C, 0.12) !important;\n}\n\n.red-900 {\n  background-color: #771D1D !important;\n  color: #FDF2F2 !important;\n}\n\n.red-900.mat-icon, .red-900 .mat-icon {\n  color: #FDF2F2 !important;\n}\n\n.red-900.text-secondary, .red-900 .text-secondary {\n  color: rgba(#FDF2F2, 0.7) !important;\n}\n\n.red-900.text-hint, .red-900 .text-hint, .red-900.text-disabled, .red-900 .text-disabled {\n  color: rgba(#FDF2F2, 0.38) !important;\n}\n\n.red-900.divider, .red-900 .divider {\n  color: rgba(#FDF2F2, 0.12) !important;\n}\n\n.text-red-900.text-secondary, .text-red-900 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.text-red-900.text-hint, .text-red-900 .text-hint, .text-red-900.text-disabled, .text-red-900 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.text-red-900.divider, .text-red-900 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.red {\n  background-color: #F05252 !important;\n  color: #771D1D !important;\n}\n\n.red.mat-icon, .red .mat-icon {\n  color: #771D1D !important;\n}\n\n.red.text-secondary, .red .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.red.text-hint, .red .text-hint, .red.text-disabled, .red .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.red.divider, .red .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-red.text-secondary, .text-red .text-secondary {\n  color: rgba(#F05252, 0.7) !important;\n}\n\n.text-red.text-hint, .text-red .text-hint, .text-red.text-disabled, .text-red .text-disabled {\n  color: rgba(#F05252, 0.38) !important;\n}\n\n.text-red.divider, .text-red .divider {\n  color: rgba(#F05252, 0.12) !important;\n}\n\n.orange-50 {\n  background-color: #FFF8F1 !important;\n  color: #771D1D !important;\n}\n\n.orange-50.mat-icon, .orange-50 .mat-icon {\n  color: #771D1D !important;\n}\n\n.orange-50.text-secondary, .orange-50 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.orange-50.text-hint, .orange-50 .text-hint, .orange-50.text-disabled, .orange-50 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.orange-50.divider, .orange-50 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-orange-50.text-secondary, .text-orange-50 .text-secondary {\n  color: rgba(#FFF8F1, 0.7) !important;\n}\n\n.text-orange-50.text-hint, .text-orange-50 .text-hint, .text-orange-50.text-disabled, .text-orange-50 .text-disabled {\n  color: rgba(#FFF8F1, 0.38) !important;\n}\n\n.text-orange-50.divider, .text-orange-50 .divider {\n  color: rgba(#FFF8F1, 0.12) !important;\n}\n\n.orange-100 {\n  background-color: #FEECDC !important;\n  color: #771D1D !important;\n}\n\n.orange-100.mat-icon, .orange-100 .mat-icon {\n  color: #771D1D !important;\n}\n\n.orange-100.text-secondary, .orange-100 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.orange-100.text-hint, .orange-100 .text-hint, .orange-100.text-disabled, .orange-100 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.orange-100.divider, .orange-100 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-orange-100.text-secondary, .text-orange-100 .text-secondary {\n  color: rgba(#FEECDC, 0.7) !important;\n}\n\n.text-orange-100.text-hint, .text-orange-100 .text-hint, .text-orange-100.text-disabled, .text-orange-100 .text-disabled {\n  color: rgba(#FEECDC, 0.38) !important;\n}\n\n.text-orange-100.divider, .text-orange-100 .divider {\n  color: rgba(#FEECDC, 0.12) !important;\n}\n\n.orange-200 {\n  background-color: #FCD9BD !important;\n  color: #771D1D !important;\n}\n\n.orange-200.mat-icon, .orange-200 .mat-icon {\n  color: #771D1D !important;\n}\n\n.orange-200.text-secondary, .orange-200 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.orange-200.text-hint, .orange-200 .text-hint, .orange-200.text-disabled, .orange-200 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.orange-200.divider, .orange-200 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-orange-200.text-secondary, .text-orange-200 .text-secondary {\n  color: rgba(#FCD9BD, 0.7) !important;\n}\n\n.text-orange-200.text-hint, .text-orange-200 .text-hint, .text-orange-200.text-disabled, .text-orange-200 .text-disabled {\n  color: rgba(#FCD9BD, 0.38) !important;\n}\n\n.text-orange-200.divider, .text-orange-200 .divider {\n  color: rgba(#FCD9BD, 0.12) !important;\n}\n\n.orange-300 {\n  background-color: #FDBA8C !important;\n  color: #771D1D !important;\n}\n\n.orange-300.mat-icon, .orange-300 .mat-icon {\n  color: #771D1D !important;\n}\n\n.orange-300.text-secondary, .orange-300 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.orange-300.text-hint, .orange-300 .text-hint, .orange-300.text-disabled, .orange-300 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.orange-300.divider, .orange-300 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-orange-300.text-secondary, .text-orange-300 .text-secondary {\n  color: rgba(#FDBA8C, 0.7) !important;\n}\n\n.text-orange-300.text-hint, .text-orange-300 .text-hint, .text-orange-300.text-disabled, .text-orange-300 .text-disabled {\n  color: rgba(#FDBA8C, 0.38) !important;\n}\n\n.text-orange-300.divider, .text-orange-300 .divider {\n  color: rgba(#FDBA8C, 0.12) !important;\n}\n\n.orange-400 {\n  background-color: #FF8A4C !important;\n  color: #771D1D !important;\n}\n\n.orange-400.mat-icon, .orange-400 .mat-icon {\n  color: #771D1D !important;\n}\n\n.orange-400.text-secondary, .orange-400 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.orange-400.text-hint, .orange-400 .text-hint, .orange-400.text-disabled, .orange-400 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.orange-400.divider, .orange-400 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-orange-400.text-secondary, .text-orange-400 .text-secondary {\n  color: rgba(#FF8A4C, 0.7) !important;\n}\n\n.text-orange-400.text-hint, .text-orange-400 .text-hint, .text-orange-400.text-disabled, .text-orange-400 .text-disabled {\n  color: rgba(#FF8A4C, 0.38) !important;\n}\n\n.text-orange-400.divider, .text-orange-400 .divider {\n  color: rgba(#FF8A4C, 0.12) !important;\n}\n\n.orange-500 {\n  background-color: #FF5A1F !important;\n  color: #771D1D !important;\n}\n\n.orange-500.mat-icon, .orange-500 .mat-icon {\n  color: #771D1D !important;\n}\n\n.orange-500.text-secondary, .orange-500 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.orange-500.text-hint, .orange-500 .text-hint, .orange-500.text-disabled, .orange-500 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.orange-500.divider, .orange-500 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-orange-500.text-secondary, .text-orange-500 .text-secondary {\n  color: rgba(#FF5A1F, 0.7) !important;\n}\n\n.text-orange-500.text-hint, .text-orange-500 .text-hint, .text-orange-500.text-disabled, .text-orange-500 .text-disabled {\n  color: rgba(#FF5A1F, 0.38) !important;\n}\n\n.text-orange-500.divider, .text-orange-500 .divider {\n  color: rgba(#FF5A1F, 0.12) !important;\n}\n\n.orange-600 {\n  background-color: #D03801 !important;\n  color: #FFF8F1 !important;\n}\n\n.orange-600.mat-icon, .orange-600 .mat-icon {\n  color: #FFF8F1 !important;\n}\n\n.orange-600.text-secondary, .orange-600 .text-secondary {\n  color: rgba(#FFF8F1, 0.7) !important;\n}\n\n.orange-600.text-hint, .orange-600 .text-hint, .orange-600.text-disabled, .orange-600 .text-disabled {\n  color: rgba(#FFF8F1, 0.38) !important;\n}\n\n.orange-600.divider, .orange-600 .divider {\n  color: rgba(#FFF8F1, 0.12) !important;\n}\n\n.text-orange-600.text-secondary, .text-orange-600 .text-secondary {\n  color: rgba(#D03801, 0.7) !important;\n}\n\n.text-orange-600.text-hint, .text-orange-600 .text-hint, .text-orange-600.text-disabled, .text-orange-600 .text-disabled {\n  color: rgba(#D03801, 0.38) !important;\n}\n\n.text-orange-600.divider, .text-orange-600 .divider {\n  color: rgba(#D03801, 0.12) !important;\n}\n\n.orange-700 {\n  background-color: #B43403 !important;\n  color: #FFF8F1 !important;\n}\n\n.orange-700.mat-icon, .orange-700 .mat-icon {\n  color: #FFF8F1 !important;\n}\n\n.orange-700.text-secondary, .orange-700 .text-secondary {\n  color: rgba(#FFF8F1, 0.7) !important;\n}\n\n.orange-700.text-hint, .orange-700 .text-hint, .orange-700.text-disabled, .orange-700 .text-disabled {\n  color: rgba(#FFF8F1, 0.38) !important;\n}\n\n.orange-700.divider, .orange-700 .divider {\n  color: rgba(#FFF8F1, 0.12) !important;\n}\n\n.text-orange-700.text-secondary, .text-orange-700 .text-secondary {\n  color: rgba(#B43403, 0.7) !important;\n}\n\n.text-orange-700.text-hint, .text-orange-700 .text-hint, .text-orange-700.text-disabled, .text-orange-700 .text-disabled {\n  color: rgba(#B43403, 0.38) !important;\n}\n\n.text-orange-700.divider, .text-orange-700 .divider {\n  color: rgba(#B43403, 0.12) !important;\n}\n\n.orange-800 {\n  background-color: #8A2C0D !important;\n  color: #FFF8F1 !important;\n}\n\n.orange-800.mat-icon, .orange-800 .mat-icon {\n  color: #FFF8F1 !important;\n}\n\n.orange-800.text-secondary, .orange-800 .text-secondary {\n  color: rgba(#FFF8F1, 0.7) !important;\n}\n\n.orange-800.text-hint, .orange-800 .text-hint, .orange-800.text-disabled, .orange-800 .text-disabled {\n  color: rgba(#FFF8F1, 0.38) !important;\n}\n\n.orange-800.divider, .orange-800 .divider {\n  color: rgba(#FFF8F1, 0.12) !important;\n}\n\n.text-orange-800.text-secondary, .text-orange-800 .text-secondary {\n  color: rgba(#8A2C0D, 0.7) !important;\n}\n\n.text-orange-800.text-hint, .text-orange-800 .text-hint, .text-orange-800.text-disabled, .text-orange-800 .text-disabled {\n  color: rgba(#8A2C0D, 0.38) !important;\n}\n\n.text-orange-800.divider, .text-orange-800 .divider {\n  color: rgba(#8A2C0D, 0.12) !important;\n}\n\n.orange-900 {\n  background-color: #771D1D !important;\n  color: #FFF8F1 !important;\n}\n\n.orange-900.mat-icon, .orange-900 .mat-icon {\n  color: #FFF8F1 !important;\n}\n\n.orange-900.text-secondary, .orange-900 .text-secondary {\n  color: rgba(#FFF8F1, 0.7) !important;\n}\n\n.orange-900.text-hint, .orange-900 .text-hint, .orange-900.text-disabled, .orange-900 .text-disabled {\n  color: rgba(#FFF8F1, 0.38) !important;\n}\n\n.orange-900.divider, .orange-900 .divider {\n  color: rgba(#FFF8F1, 0.12) !important;\n}\n\n.text-orange-900.text-secondary, .text-orange-900 .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.text-orange-900.text-hint, .text-orange-900 .text-hint, .text-orange-900.text-disabled, .text-orange-900 .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.text-orange-900.divider, .text-orange-900 .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.orange {\n  background-color: #FF5A1F !important;\n  color: #771D1D !important;\n}\n\n.orange.mat-icon, .orange .mat-icon {\n  color: #771D1D !important;\n}\n\n.orange.text-secondary, .orange .text-secondary {\n  color: rgba(#771D1D, 0.7) !important;\n}\n\n.orange.text-hint, .orange .text-hint, .orange.text-disabled, .orange .text-disabled {\n  color: rgba(#771D1D, 0.38) !important;\n}\n\n.orange.divider, .orange .divider {\n  color: rgba(#771D1D, 0.12) !important;\n}\n\n.text-orange.text-secondary, .text-orange .text-secondary {\n  color: rgba(#FF5A1F, 0.7) !important;\n}\n\n.text-orange.text-hint, .text-orange .text-hint, .text-orange.text-disabled, .text-orange .text-disabled {\n  color: rgba(#FF5A1F, 0.38) !important;\n}\n\n.text-orange.divider, .text-orange .divider {\n  color: rgba(#FF5A1F, 0.12) !important;\n}\n\n.yellow-50 {\n  background-color: #FDFDEA !important;\n  color: #633112 !important;\n}\n\n.yellow-50.mat-icon, .yellow-50 .mat-icon {\n  color: #633112 !important;\n}\n\n.yellow-50.text-secondary, .yellow-50 .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.yellow-50.text-hint, .yellow-50 .text-hint, .yellow-50.text-disabled, .yellow-50 .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.yellow-50.divider, .yellow-50 .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.text-yellow-50.text-secondary, .text-yellow-50 .text-secondary {\n  color: rgba(#FDFDEA, 0.7) !important;\n}\n\n.text-yellow-50.text-hint, .text-yellow-50 .text-hint, .text-yellow-50.text-disabled, .text-yellow-50 .text-disabled {\n  color: rgba(#FDFDEA, 0.38) !important;\n}\n\n.text-yellow-50.divider, .text-yellow-50 .divider {\n  color: rgba(#FDFDEA, 0.12) !important;\n}\n\n.yellow-100 {\n  background-color: #FDF6B2 !important;\n  color: #633112 !important;\n}\n\n.yellow-100.mat-icon, .yellow-100 .mat-icon {\n  color: #633112 !important;\n}\n\n.yellow-100.text-secondary, .yellow-100 .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.yellow-100.text-hint, .yellow-100 .text-hint, .yellow-100.text-disabled, .yellow-100 .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.yellow-100.divider, .yellow-100 .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.text-yellow-100.text-secondary, .text-yellow-100 .text-secondary {\n  color: rgba(#FDF6B2, 0.7) !important;\n}\n\n.text-yellow-100.text-hint, .text-yellow-100 .text-hint, .text-yellow-100.text-disabled, .text-yellow-100 .text-disabled {\n  color: rgba(#FDF6B2, 0.38) !important;\n}\n\n.text-yellow-100.divider, .text-yellow-100 .divider {\n  color: rgba(#FDF6B2, 0.12) !important;\n}\n\n.yellow-200 {\n  background-color: #FCE96A !important;\n  color: #633112 !important;\n}\n\n.yellow-200.mat-icon, .yellow-200 .mat-icon {\n  color: #633112 !important;\n}\n\n.yellow-200.text-secondary, .yellow-200 .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.yellow-200.text-hint, .yellow-200 .text-hint, .yellow-200.text-disabled, .yellow-200 .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.yellow-200.divider, .yellow-200 .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.text-yellow-200.text-secondary, .text-yellow-200 .text-secondary {\n  color: rgba(#FCE96A, 0.7) !important;\n}\n\n.text-yellow-200.text-hint, .text-yellow-200 .text-hint, .text-yellow-200.text-disabled, .text-yellow-200 .text-disabled {\n  color: rgba(#FCE96A, 0.38) !important;\n}\n\n.text-yellow-200.divider, .text-yellow-200 .divider {\n  color: rgba(#FCE96A, 0.12) !important;\n}\n\n.yellow-300 {\n  background-color: #FACA15 !important;\n  color: #633112 !important;\n}\n\n.yellow-300.mat-icon, .yellow-300 .mat-icon {\n  color: #633112 !important;\n}\n\n.yellow-300.text-secondary, .yellow-300 .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.yellow-300.text-hint, .yellow-300 .text-hint, .yellow-300.text-disabled, .yellow-300 .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.yellow-300.divider, .yellow-300 .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.text-yellow-300.text-secondary, .text-yellow-300 .text-secondary {\n  color: rgba(#FACA15, 0.7) !important;\n}\n\n.text-yellow-300.text-hint, .text-yellow-300 .text-hint, .text-yellow-300.text-disabled, .text-yellow-300 .text-disabled {\n  color: rgba(#FACA15, 0.38) !important;\n}\n\n.text-yellow-300.divider, .text-yellow-300 .divider {\n  color: rgba(#FACA15, 0.12) !important;\n}\n\n.yellow-400 {\n  background-color: #E3A008 !important;\n  color: #633112 !important;\n}\n\n.yellow-400.mat-icon, .yellow-400 .mat-icon {\n  color: #633112 !important;\n}\n\n.yellow-400.text-secondary, .yellow-400 .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.yellow-400.text-hint, .yellow-400 .text-hint, .yellow-400.text-disabled, .yellow-400 .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.yellow-400.divider, .yellow-400 .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.text-yellow-400.text-secondary, .text-yellow-400 .text-secondary {\n  color: rgba(#E3A008, 0.7) !important;\n}\n\n.text-yellow-400.text-hint, .text-yellow-400 .text-hint, .text-yellow-400.text-disabled, .text-yellow-400 .text-disabled {\n  color: rgba(#E3A008, 0.38) !important;\n}\n\n.text-yellow-400.divider, .text-yellow-400 .divider {\n  color: rgba(#E3A008, 0.12) !important;\n}\n\n.yellow-500 {\n  background-color: #C27803 !important;\n  color: #633112 !important;\n}\n\n.yellow-500.mat-icon, .yellow-500 .mat-icon {\n  color: #633112 !important;\n}\n\n.yellow-500.text-secondary, .yellow-500 .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.yellow-500.text-hint, .yellow-500 .text-hint, .yellow-500.text-disabled, .yellow-500 .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.yellow-500.divider, .yellow-500 .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.text-yellow-500.text-secondary, .text-yellow-500 .text-secondary {\n  color: rgba(#C27803, 0.7) !important;\n}\n\n.text-yellow-500.text-hint, .text-yellow-500 .text-hint, .text-yellow-500.text-disabled, .text-yellow-500 .text-disabled {\n  color: rgba(#C27803, 0.38) !important;\n}\n\n.text-yellow-500.divider, .text-yellow-500 .divider {\n  color: rgba(#C27803, 0.12) !important;\n}\n\n.yellow-600 {\n  background-color: #9F580A !important;\n  color: #FDFDEA !important;\n}\n\n.yellow-600.mat-icon, .yellow-600 .mat-icon {\n  color: #FDFDEA !important;\n}\n\n.yellow-600.text-secondary, .yellow-600 .text-secondary {\n  color: rgba(#FDFDEA, 0.7) !important;\n}\n\n.yellow-600.text-hint, .yellow-600 .text-hint, .yellow-600.text-disabled, .yellow-600 .text-disabled {\n  color: rgba(#FDFDEA, 0.38) !important;\n}\n\n.yellow-600.divider, .yellow-600 .divider {\n  color: rgba(#FDFDEA, 0.12) !important;\n}\n\n.text-yellow-600.text-secondary, .text-yellow-600 .text-secondary {\n  color: rgba(#9F580A, 0.7) !important;\n}\n\n.text-yellow-600.text-hint, .text-yellow-600 .text-hint, .text-yellow-600.text-disabled, .text-yellow-600 .text-disabled {\n  color: rgba(#9F580A, 0.38) !important;\n}\n\n.text-yellow-600.divider, .text-yellow-600 .divider {\n  color: rgba(#9F580A, 0.12) !important;\n}\n\n.yellow-700 {\n  background-color: #8E4B10 !important;\n  color: #FDFDEA !important;\n}\n\n.yellow-700.mat-icon, .yellow-700 .mat-icon {\n  color: #FDFDEA !important;\n}\n\n.yellow-700.text-secondary, .yellow-700 .text-secondary {\n  color: rgba(#FDFDEA, 0.7) !important;\n}\n\n.yellow-700.text-hint, .yellow-700 .text-hint, .yellow-700.text-disabled, .yellow-700 .text-disabled {\n  color: rgba(#FDFDEA, 0.38) !important;\n}\n\n.yellow-700.divider, .yellow-700 .divider {\n  color: rgba(#FDFDEA, 0.12) !important;\n}\n\n.text-yellow-700.text-secondary, .text-yellow-700 .text-secondary {\n  color: rgba(#8E4B10, 0.7) !important;\n}\n\n.text-yellow-700.text-hint, .text-yellow-700 .text-hint, .text-yellow-700.text-disabled, .text-yellow-700 .text-disabled {\n  color: rgba(#8E4B10, 0.38) !important;\n}\n\n.text-yellow-700.divider, .text-yellow-700 .divider {\n  color: rgba(#8E4B10, 0.12) !important;\n}\n\n.yellow-800 {\n  background-color: #723B13 !important;\n  color: #FDFDEA !important;\n}\n\n.yellow-800.mat-icon, .yellow-800 .mat-icon {\n  color: #FDFDEA !important;\n}\n\n.yellow-800.text-secondary, .yellow-800 .text-secondary {\n  color: rgba(#FDFDEA, 0.7) !important;\n}\n\n.yellow-800.text-hint, .yellow-800 .text-hint, .yellow-800.text-disabled, .yellow-800 .text-disabled {\n  color: rgba(#FDFDEA, 0.38) !important;\n}\n\n.yellow-800.divider, .yellow-800 .divider {\n  color: rgba(#FDFDEA, 0.12) !important;\n}\n\n.text-yellow-800.text-secondary, .text-yellow-800 .text-secondary {\n  color: rgba(#723B13, 0.7) !important;\n}\n\n.text-yellow-800.text-hint, .text-yellow-800 .text-hint, .text-yellow-800.text-disabled, .text-yellow-800 .text-disabled {\n  color: rgba(#723B13, 0.38) !important;\n}\n\n.text-yellow-800.divider, .text-yellow-800 .divider {\n  color: rgba(#723B13, 0.12) !important;\n}\n\n.yellow-900 {\n  background-color: #633112 !important;\n  color: #FDFDEA !important;\n}\n\n.yellow-900.mat-icon, .yellow-900 .mat-icon {\n  color: #FDFDEA !important;\n}\n\n.yellow-900.text-secondary, .yellow-900 .text-secondary {\n  color: rgba(#FDFDEA, 0.7) !important;\n}\n\n.yellow-900.text-hint, .yellow-900 .text-hint, .yellow-900.text-disabled, .yellow-900 .text-disabled {\n  color: rgba(#FDFDEA, 0.38) !important;\n}\n\n.yellow-900.divider, .yellow-900 .divider {\n  color: rgba(#FDFDEA, 0.12) !important;\n}\n\n.text-yellow-900.text-secondary, .text-yellow-900 .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.text-yellow-900.text-hint, .text-yellow-900 .text-hint, .text-yellow-900.text-disabled, .text-yellow-900 .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.text-yellow-900.divider, .text-yellow-900 .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.yellow {\n  background-color: #C27803 !important;\n  color: #633112 !important;\n}\n\n.yellow.mat-icon, .yellow .mat-icon {\n  color: #633112 !important;\n}\n\n.yellow.text-secondary, .yellow .text-secondary {\n  color: rgba(#633112, 0.7) !important;\n}\n\n.yellow.text-hint, .yellow .text-hint, .yellow.text-disabled, .yellow .text-disabled {\n  color: rgba(#633112, 0.38) !important;\n}\n\n.yellow.divider, .yellow .divider {\n  color: rgba(#633112, 0.12) !important;\n}\n\n.text-yellow.text-secondary, .text-yellow .text-secondary {\n  color: rgba(#C27803, 0.7) !important;\n}\n\n.text-yellow.text-hint, .text-yellow .text-hint, .text-yellow.text-disabled, .text-yellow .text-disabled {\n  color: rgba(#C27803, 0.38) !important;\n}\n\n.text-yellow.divider, .text-yellow .divider {\n  color: rgba(#C27803, 0.12) !important;\n}\n\n.green-50 {\n  background-color: #F3FAF7 !important;\n  color: #014737 !important;\n}\n\n.green-50.mat-icon, .green-50 .mat-icon {\n  color: #014737 !important;\n}\n\n.green-50.text-secondary, .green-50 .text-secondary {\n  color: rgba(#014737, 0.7) !important;\n}\n\n.green-50.text-hint, .green-50 .text-hint, .green-50.text-disabled, .green-50 .text-disabled {\n  color: rgba(#014737, 0.38) !important;\n}\n\n.green-50.divider, .green-50 .divider {\n  color: rgba(#014737, 0.12) !important;\n}\n\n.text-green-50.text-secondary, .text-green-50 .text-secondary {\n  color: rgba(#F3FAF7, 0.7) !important;\n}\n\n.text-green-50.text-hint, .text-green-50 .text-hint, .text-green-50.text-disabled, .text-green-50 .text-disabled {\n  color: rgba(#F3FAF7, 0.38) !important;\n}\n\n.text-green-50.divider, .text-green-50 .divider {\n  color: rgba(#F3FAF7, 0.12) !important;\n}\n\n.green-100 {\n  background-color: #DEF7EC !important;\n  color: #014737 !important;\n}\n\n.green-100.mat-icon, .green-100 .mat-icon {\n  color: #014737 !important;\n}\n\n.green-100.text-secondary, .green-100 .text-secondary {\n  color: rgba(#014737, 0.7) !important;\n}\n\n.green-100.text-hint, .green-100 .text-hint, .green-100.text-disabled, .green-100 .text-disabled {\n  color: rgba(#014737, 0.38) !important;\n}\n\n.green-100.divider, .green-100 .divider {\n  color: rgba(#014737, 0.12) !important;\n}\n\n.text-green-100.text-secondary, .text-green-100 .text-secondary {\n  color: rgba(#DEF7EC, 0.7) !important;\n}\n\n.text-green-100.text-hint, .text-green-100 .text-hint, .text-green-100.text-disabled, .text-green-100 .text-disabled {\n  color: rgba(#DEF7EC, 0.38) !important;\n}\n\n.text-green-100.divider, .text-green-100 .divider {\n  color: rgba(#DEF7EC, 0.12) !important;\n}\n\n.green-200 {\n  background-color: #BCF0DA !important;\n  color: #014737 !important;\n}\n\n.green-200.mat-icon, .green-200 .mat-icon {\n  color: #014737 !important;\n}\n\n.green-200.text-secondary, .green-200 .text-secondary {\n  color: rgba(#014737, 0.7) !important;\n}\n\n.green-200.text-hint, .green-200 .text-hint, .green-200.text-disabled, .green-200 .text-disabled {\n  color: rgba(#014737, 0.38) !important;\n}\n\n.green-200.divider, .green-200 .divider {\n  color: rgba(#014737, 0.12) !important;\n}\n\n.text-green-200.text-secondary, .text-green-200 .text-secondary {\n  color: rgba(#BCF0DA, 0.7) !important;\n}\n\n.text-green-200.text-hint, .text-green-200 .text-hint, .text-green-200.text-disabled, .text-green-200 .text-disabled {\n  color: rgba(#BCF0DA, 0.38) !important;\n}\n\n.text-green-200.divider, .text-green-200 .divider {\n  color: rgba(#BCF0DA, 0.12) !important;\n}\n\n.green-300 {\n  background-color: #84E1BC !important;\n  color: #014737 !important;\n}\n\n.green-300.mat-icon, .green-300 .mat-icon {\n  color: #014737 !important;\n}\n\n.green-300.text-secondary, .green-300 .text-secondary {\n  color: rgba(#014737, 0.7) !important;\n}\n\n.green-300.text-hint, .green-300 .text-hint, .green-300.text-disabled, .green-300 .text-disabled {\n  color: rgba(#014737, 0.38) !important;\n}\n\n.green-300.divider, .green-300 .divider {\n  color: rgba(#014737, 0.12) !important;\n}\n\n.text-green-300.text-secondary, .text-green-300 .text-secondary {\n  color: rgba(#84E1BC, 0.7) !important;\n}\n\n.text-green-300.text-hint, .text-green-300 .text-hint, .text-green-300.text-disabled, .text-green-300 .text-disabled {\n  color: rgba(#84E1BC, 0.38) !important;\n}\n\n.text-green-300.divider, .text-green-300 .divider {\n  color: rgba(#84E1BC, 0.12) !important;\n}\n\n.green-400 {\n  background-color: #31C48D !important;\n  color: #014737 !important;\n}\n\n.green-400.mat-icon, .green-400 .mat-icon {\n  color: #014737 !important;\n}\n\n.green-400.text-secondary, .green-400 .text-secondary {\n  color: rgba(#014737, 0.7) !important;\n}\n\n.green-400.text-hint, .green-400 .text-hint, .green-400.text-disabled, .green-400 .text-disabled {\n  color: rgba(#014737, 0.38) !important;\n}\n\n.green-400.divider, .green-400 .divider {\n  color: rgba(#014737, 0.12) !important;\n}\n\n.text-green-400.text-secondary, .text-green-400 .text-secondary {\n  color: rgba(#31C48D, 0.7) !important;\n}\n\n.text-green-400.text-hint, .text-green-400 .text-hint, .text-green-400.text-disabled, .text-green-400 .text-disabled {\n  color: rgba(#31C48D, 0.38) !important;\n}\n\n.text-green-400.divider, .text-green-400 .divider {\n  color: rgba(#31C48D, 0.12) !important;\n}\n\n.green-500 {\n  background-color: #0E9F6E !important;\n  color: #F3FAF7 !important;\n}\n\n.green-500.mat-icon, .green-500 .mat-icon {\n  color: #F3FAF7 !important;\n}\n\n.green-500.text-secondary, .green-500 .text-secondary {\n  color: rgba(#F3FAF7, 0.7) !important;\n}\n\n.green-500.text-hint, .green-500 .text-hint, .green-500.text-disabled, .green-500 .text-disabled {\n  color: rgba(#F3FAF7, 0.38) !important;\n}\n\n.green-500.divider, .green-500 .divider {\n  color: rgba(#F3FAF7, 0.12) !important;\n}\n\n.text-green-500.text-secondary, .text-green-500 .text-secondary {\n  color: rgba(#0E9F6E, 0.7) !important;\n}\n\n.text-green-500.text-hint, .text-green-500 .text-hint, .text-green-500.text-disabled, .text-green-500 .text-disabled {\n  color: rgba(#0E9F6E, 0.38) !important;\n}\n\n.text-green-500.divider, .text-green-500 .divider {\n  color: rgba(#0E9F6E, 0.12) !important;\n}\n\n.green-600 {\n  background-color: #057A55 !important;\n  color: #F3FAF7 !important;\n}\n\n.green-600.mat-icon, .green-600 .mat-icon {\n  color: #F3FAF7 !important;\n}\n\n.green-600.text-secondary, .green-600 .text-secondary {\n  color: rgba(#F3FAF7, 0.7) !important;\n}\n\n.green-600.text-hint, .green-600 .text-hint, .green-600.text-disabled, .green-600 .text-disabled {\n  color: rgba(#F3FAF7, 0.38) !important;\n}\n\n.green-600.divider, .green-600 .divider {\n  color: rgba(#F3FAF7, 0.12) !important;\n}\n\n.text-green-600.text-secondary, .text-green-600 .text-secondary {\n  color: rgba(#057A55, 0.7) !important;\n}\n\n.text-green-600.text-hint, .text-green-600 .text-hint, .text-green-600.text-disabled, .text-green-600 .text-disabled {\n  color: rgba(#057A55, 0.38) !important;\n}\n\n.text-green-600.divider, .text-green-600 .divider {\n  color: rgba(#057A55, 0.12) !important;\n}\n\n.green-700 {\n  background-color: #046C4E !important;\n  color: #F3FAF7 !important;\n}\n\n.green-700.mat-icon, .green-700 .mat-icon {\n  color: #F3FAF7 !important;\n}\n\n.green-700.text-secondary, .green-700 .text-secondary {\n  color: rgba(#F3FAF7, 0.7) !important;\n}\n\n.green-700.text-hint, .green-700 .text-hint, .green-700.text-disabled, .green-700 .text-disabled {\n  color: rgba(#F3FAF7, 0.38) !important;\n}\n\n.green-700.divider, .green-700 .divider {\n  color: rgba(#F3FAF7, 0.12) !important;\n}\n\n.text-green-700.text-secondary, .text-green-700 .text-secondary {\n  color: rgba(#046C4E, 0.7) !important;\n}\n\n.text-green-700.text-hint, .text-green-700 .text-hint, .text-green-700.text-disabled, .text-green-700 .text-disabled {\n  color: rgba(#046C4E, 0.38) !important;\n}\n\n.text-green-700.divider, .text-green-700 .divider {\n  color: rgba(#046C4E, 0.12) !important;\n}\n\n.green-800 {\n  background-color: #03543F !important;\n  color: #F3FAF7 !important;\n}\n\n.green-800.mat-icon, .green-800 .mat-icon {\n  color: #F3FAF7 !important;\n}\n\n.green-800.text-secondary, .green-800 .text-secondary {\n  color: rgba(#F3FAF7, 0.7) !important;\n}\n\n.green-800.text-hint, .green-800 .text-hint, .green-800.text-disabled, .green-800 .text-disabled {\n  color: rgba(#F3FAF7, 0.38) !important;\n}\n\n.green-800.divider, .green-800 .divider {\n  color: rgba(#F3FAF7, 0.12) !important;\n}\n\n.text-green-800.text-secondary, .text-green-800 .text-secondary {\n  color: rgba(#03543F, 0.7) !important;\n}\n\n.text-green-800.text-hint, .text-green-800 .text-hint, .text-green-800.text-disabled, .text-green-800 .text-disabled {\n  color: rgba(#03543F, 0.38) !important;\n}\n\n.text-green-800.divider, .text-green-800 .divider {\n  color: rgba(#03543F, 0.12) !important;\n}\n\n.green-900 {\n  background-color: #014737 !important;\n  color: #F3FAF7 !important;\n}\n\n.green-900.mat-icon, .green-900 .mat-icon {\n  color: #F3FAF7 !important;\n}\n\n.green-900.text-secondary, .green-900 .text-secondary {\n  color: rgba(#F3FAF7, 0.7) !important;\n}\n\n.green-900.text-hint, .green-900 .text-hint, .green-900.text-disabled, .green-900 .text-disabled {\n  color: rgba(#F3FAF7, 0.38) !important;\n}\n\n.green-900.divider, .green-900 .divider {\n  color: rgba(#F3FAF7, 0.12) !important;\n}\n\n.text-green-900.text-secondary, .text-green-900 .text-secondary {\n  color: rgba(#014737, 0.7) !important;\n}\n\n.text-green-900.text-hint, .text-green-900 .text-hint, .text-green-900.text-disabled, .text-green-900 .text-disabled {\n  color: rgba(#014737, 0.38) !important;\n}\n\n.text-green-900.divider, .text-green-900 .divider {\n  color: rgba(#014737, 0.12) !important;\n}\n\n.green {\n  background-color: #0E9F6E !important;\n  color: #F3FAF7 !important;\n}\n\n.green.mat-icon, .green .mat-icon {\n  color: #F3FAF7 !important;\n}\n\n.green.text-secondary, .green .text-secondary {\n  color: rgba(#F3FAF7, 0.7) !important;\n}\n\n.green.text-hint, .green .text-hint, .green.text-disabled, .green .text-disabled {\n  color: rgba(#F3FAF7, 0.38) !important;\n}\n\n.green.divider, .green .divider {\n  color: rgba(#F3FAF7, 0.12) !important;\n}\n\n.text-green.text-secondary, .text-green .text-secondary {\n  color: rgba(#0E9F6E, 0.7) !important;\n}\n\n.text-green.text-hint, .text-green .text-hint, .text-green.text-disabled, .text-green .text-disabled {\n  color: rgba(#0E9F6E, 0.38) !important;\n}\n\n.text-green.divider, .text-green .divider {\n  color: rgba(#0E9F6E, 0.12) !important;\n}\n\n.teal-50 {\n  background-color: #EDFAFA !important;\n  color: #014451 !important;\n}\n\n.teal-50.mat-icon, .teal-50 .mat-icon {\n  color: #014451 !important;\n}\n\n.teal-50.text-secondary, .teal-50 .text-secondary {\n  color: rgba(#014451, 0.7) !important;\n}\n\n.teal-50.text-hint, .teal-50 .text-hint, .teal-50.text-disabled, .teal-50 .text-disabled {\n  color: rgba(#014451, 0.38) !important;\n}\n\n.teal-50.divider, .teal-50 .divider {\n  color: rgba(#014451, 0.12) !important;\n}\n\n.text-teal-50.text-secondary, .text-teal-50 .text-secondary {\n  color: rgba(#EDFAFA, 0.7) !important;\n}\n\n.text-teal-50.text-hint, .text-teal-50 .text-hint, .text-teal-50.text-disabled, .text-teal-50 .text-disabled {\n  color: rgba(#EDFAFA, 0.38) !important;\n}\n\n.text-teal-50.divider, .text-teal-50 .divider {\n  color: rgba(#EDFAFA, 0.12) !important;\n}\n\n.teal-100 {\n  background-color: #D5F5F6 !important;\n  color: #014451 !important;\n}\n\n.teal-100.mat-icon, .teal-100 .mat-icon {\n  color: #014451 !important;\n}\n\n.teal-100.text-secondary, .teal-100 .text-secondary {\n  color: rgba(#014451, 0.7) !important;\n}\n\n.teal-100.text-hint, .teal-100 .text-hint, .teal-100.text-disabled, .teal-100 .text-disabled {\n  color: rgba(#014451, 0.38) !important;\n}\n\n.teal-100.divider, .teal-100 .divider {\n  color: rgba(#014451, 0.12) !important;\n}\n\n.text-teal-100.text-secondary, .text-teal-100 .text-secondary {\n  color: rgba(#D5F5F6, 0.7) !important;\n}\n\n.text-teal-100.text-hint, .text-teal-100 .text-hint, .text-teal-100.text-disabled, .text-teal-100 .text-disabled {\n  color: rgba(#D5F5F6, 0.38) !important;\n}\n\n.text-teal-100.divider, .text-teal-100 .divider {\n  color: rgba(#D5F5F6, 0.12) !important;\n}\n\n.teal-200 {\n  background-color: #AFECEF !important;\n  color: #014451 !important;\n}\n\n.teal-200.mat-icon, .teal-200 .mat-icon {\n  color: #014451 !important;\n}\n\n.teal-200.text-secondary, .teal-200 .text-secondary {\n  color: rgba(#014451, 0.7) !important;\n}\n\n.teal-200.text-hint, .teal-200 .text-hint, .teal-200.text-disabled, .teal-200 .text-disabled {\n  color: rgba(#014451, 0.38) !important;\n}\n\n.teal-200.divider, .teal-200 .divider {\n  color: rgba(#014451, 0.12) !important;\n}\n\n.text-teal-200.text-secondary, .text-teal-200 .text-secondary {\n  color: rgba(#AFECEF, 0.7) !important;\n}\n\n.text-teal-200.text-hint, .text-teal-200 .text-hint, .text-teal-200.text-disabled, .text-teal-200 .text-disabled {\n  color: rgba(#AFECEF, 0.38) !important;\n}\n\n.text-teal-200.divider, .text-teal-200 .divider {\n  color: rgba(#AFECEF, 0.12) !important;\n}\n\n.teal-300 {\n  background-color: #7EDCE2 !important;\n  color: #014451 !important;\n}\n\n.teal-300.mat-icon, .teal-300 .mat-icon {\n  color: #014451 !important;\n}\n\n.teal-300.text-secondary, .teal-300 .text-secondary {\n  color: rgba(#014451, 0.7) !important;\n}\n\n.teal-300.text-hint, .teal-300 .text-hint, .teal-300.text-disabled, .teal-300 .text-disabled {\n  color: rgba(#014451, 0.38) !important;\n}\n\n.teal-300.divider, .teal-300 .divider {\n  color: rgba(#014451, 0.12) !important;\n}\n\n.text-teal-300.text-secondary, .text-teal-300 .text-secondary {\n  color: rgba(#7EDCE2, 0.7) !important;\n}\n\n.text-teal-300.text-hint, .text-teal-300 .text-hint, .text-teal-300.text-disabled, .text-teal-300 .text-disabled {\n  color: rgba(#7EDCE2, 0.38) !important;\n}\n\n.text-teal-300.divider, .text-teal-300 .divider {\n  color: rgba(#7EDCE2, 0.12) !important;\n}\n\n.teal-400 {\n  background-color: #16BDCA !important;\n  color: #014451 !important;\n}\n\n.teal-400.mat-icon, .teal-400 .mat-icon {\n  color: #014451 !important;\n}\n\n.teal-400.text-secondary, .teal-400 .text-secondary {\n  color: rgba(#014451, 0.7) !important;\n}\n\n.teal-400.text-hint, .teal-400 .text-hint, .teal-400.text-disabled, .teal-400 .text-disabled {\n  color: rgba(#014451, 0.38) !important;\n}\n\n.teal-400.divider, .teal-400 .divider {\n  color: rgba(#014451, 0.12) !important;\n}\n\n.text-teal-400.text-secondary, .text-teal-400 .text-secondary {\n  color: rgba(#16BDCA, 0.7) !important;\n}\n\n.text-teal-400.text-hint, .text-teal-400 .text-hint, .text-teal-400.text-disabled, .text-teal-400 .text-disabled {\n  color: rgba(#16BDCA, 0.38) !important;\n}\n\n.text-teal-400.divider, .text-teal-400 .divider {\n  color: rgba(#16BDCA, 0.12) !important;\n}\n\n.teal-500 {\n  background-color: #0694A2 !important;\n  color: #EDFAFA !important;\n}\n\n.teal-500.mat-icon, .teal-500 .mat-icon {\n  color: #EDFAFA !important;\n}\n\n.teal-500.text-secondary, .teal-500 .text-secondary {\n  color: rgba(#EDFAFA, 0.7) !important;\n}\n\n.teal-500.text-hint, .teal-500 .text-hint, .teal-500.text-disabled, .teal-500 .text-disabled {\n  color: rgba(#EDFAFA, 0.38) !important;\n}\n\n.teal-500.divider, .teal-500 .divider {\n  color: rgba(#EDFAFA, 0.12) !important;\n}\n\n.text-teal-500.text-secondary, .text-teal-500 .text-secondary {\n  color: rgba(#0694A2, 0.7) !important;\n}\n\n.text-teal-500.text-hint, .text-teal-500 .text-hint, .text-teal-500.text-disabled, .text-teal-500 .text-disabled {\n  color: rgba(#0694A2, 0.38) !important;\n}\n\n.text-teal-500.divider, .text-teal-500 .divider {\n  color: rgba(#0694A2, 0.12) !important;\n}\n\n.teal-600 {\n  background-color: #047481 !important;\n  color: #EDFAFA !important;\n}\n\n.teal-600.mat-icon, .teal-600 .mat-icon {\n  color: #EDFAFA !important;\n}\n\n.teal-600.text-secondary, .teal-600 .text-secondary {\n  color: rgba(#EDFAFA, 0.7) !important;\n}\n\n.teal-600.text-hint, .teal-600 .text-hint, .teal-600.text-disabled, .teal-600 .text-disabled {\n  color: rgba(#EDFAFA, 0.38) !important;\n}\n\n.teal-600.divider, .teal-600 .divider {\n  color: rgba(#EDFAFA, 0.12) !important;\n}\n\n.text-teal-600.text-secondary, .text-teal-600 .text-secondary {\n  color: rgba(#047481, 0.7) !important;\n}\n\n.text-teal-600.text-hint, .text-teal-600 .text-hint, .text-teal-600.text-disabled, .text-teal-600 .text-disabled {\n  color: rgba(#047481, 0.38) !important;\n}\n\n.text-teal-600.divider, .text-teal-600 .divider {\n  color: rgba(#047481, 0.12) !important;\n}\n\n.teal-700 {\n  background-color: #036672 !important;\n  color: #EDFAFA !important;\n}\n\n.teal-700.mat-icon, .teal-700 .mat-icon {\n  color: #EDFAFA !important;\n}\n\n.teal-700.text-secondary, .teal-700 .text-secondary {\n  color: rgba(#EDFAFA, 0.7) !important;\n}\n\n.teal-700.text-hint, .teal-700 .text-hint, .teal-700.text-disabled, .teal-700 .text-disabled {\n  color: rgba(#EDFAFA, 0.38) !important;\n}\n\n.teal-700.divider, .teal-700 .divider {\n  color: rgba(#EDFAFA, 0.12) !important;\n}\n\n.text-teal-700.text-secondary, .text-teal-700 .text-secondary {\n  color: rgba(#036672, 0.7) !important;\n}\n\n.text-teal-700.text-hint, .text-teal-700 .text-hint, .text-teal-700.text-disabled, .text-teal-700 .text-disabled {\n  color: rgba(#036672, 0.38) !important;\n}\n\n.text-teal-700.divider, .text-teal-700 .divider {\n  color: rgba(#036672, 0.12) !important;\n}\n\n.teal-800 {\n  background-color: #05505C !important;\n  color: #EDFAFA !important;\n}\n\n.teal-800.mat-icon, .teal-800 .mat-icon {\n  color: #EDFAFA !important;\n}\n\n.teal-800.text-secondary, .teal-800 .text-secondary {\n  color: rgba(#EDFAFA, 0.7) !important;\n}\n\n.teal-800.text-hint, .teal-800 .text-hint, .teal-800.text-disabled, .teal-800 .text-disabled {\n  color: rgba(#EDFAFA, 0.38) !important;\n}\n\n.teal-800.divider, .teal-800 .divider {\n  color: rgba(#EDFAFA, 0.12) !important;\n}\n\n.text-teal-800.text-secondary, .text-teal-800 .text-secondary {\n  color: rgba(#05505C, 0.7) !important;\n}\n\n.text-teal-800.text-hint, .text-teal-800 .text-hint, .text-teal-800.text-disabled, .text-teal-800 .text-disabled {\n  color: rgba(#05505C, 0.38) !important;\n}\n\n.text-teal-800.divider, .text-teal-800 .divider {\n  color: rgba(#05505C, 0.12) !important;\n}\n\n.teal-900 {\n  background-color: #014451 !important;\n  color: #EDFAFA !important;\n}\n\n.teal-900.mat-icon, .teal-900 .mat-icon {\n  color: #EDFAFA !important;\n}\n\n.teal-900.text-secondary, .teal-900 .text-secondary {\n  color: rgba(#EDFAFA, 0.7) !important;\n}\n\n.teal-900.text-hint, .teal-900 .text-hint, .teal-900.text-disabled, .teal-900 .text-disabled {\n  color: rgba(#EDFAFA, 0.38) !important;\n}\n\n.teal-900.divider, .teal-900 .divider {\n  color: rgba(#EDFAFA, 0.12) !important;\n}\n\n.text-teal-900.text-secondary, .text-teal-900 .text-secondary {\n  color: rgba(#014451, 0.7) !important;\n}\n\n.text-teal-900.text-hint, .text-teal-900 .text-hint, .text-teal-900.text-disabled, .text-teal-900 .text-disabled {\n  color: rgba(#014451, 0.38) !important;\n}\n\n.text-teal-900.divider, .text-teal-900 .divider {\n  color: rgba(#014451, 0.12) !important;\n}\n\n.teal {\n  background-color: #0694A2 !important;\n  color: #EDFAFA !important;\n}\n\n.teal.mat-icon, .teal .mat-icon {\n  color: #EDFAFA !important;\n}\n\n.teal.text-secondary, .teal .text-secondary {\n  color: rgba(#EDFAFA, 0.7) !important;\n}\n\n.teal.text-hint, .teal .text-hint, .teal.text-disabled, .teal .text-disabled {\n  color: rgba(#EDFAFA, 0.38) !important;\n}\n\n.teal.divider, .teal .divider {\n  color: rgba(#EDFAFA, 0.12) !important;\n}\n\n.text-teal.text-secondary, .text-teal .text-secondary {\n  color: rgba(#0694A2, 0.7) !important;\n}\n\n.text-teal.text-hint, .text-teal .text-hint, .text-teal.text-disabled, .text-teal .text-disabled {\n  color: rgba(#0694A2, 0.38) !important;\n}\n\n.text-teal.divider, .text-teal .divider {\n  color: rgba(#0694A2, 0.12) !important;\n}\n\n.blue-50 {\n  background-color: #EBF5FF !important;\n  color: #233876 !important;\n}\n\n.blue-50.mat-icon, .blue-50 .mat-icon {\n  color: #233876 !important;\n}\n\n.blue-50.text-secondary, .blue-50 .text-secondary {\n  color: rgba(#233876, 0.7) !important;\n}\n\n.blue-50.text-hint, .blue-50 .text-hint, .blue-50.text-disabled, .blue-50 .text-disabled {\n  color: rgba(#233876, 0.38) !important;\n}\n\n.blue-50.divider, .blue-50 .divider {\n  color: rgba(#233876, 0.12) !important;\n}\n\n.text-blue-50.text-secondary, .text-blue-50 .text-secondary {\n  color: rgba(#EBF5FF, 0.7) !important;\n}\n\n.text-blue-50.text-hint, .text-blue-50 .text-hint, .text-blue-50.text-disabled, .text-blue-50 .text-disabled {\n  color: rgba(#EBF5FF, 0.38) !important;\n}\n\n.text-blue-50.divider, .text-blue-50 .divider {\n  color: rgba(#EBF5FF, 0.12) !important;\n}\n\n.blue-100 {\n  background-color: #E1EFFE !important;\n  color: #233876 !important;\n}\n\n.blue-100.mat-icon, .blue-100 .mat-icon {\n  color: #233876 !important;\n}\n\n.blue-100.text-secondary, .blue-100 .text-secondary {\n  color: rgba(#233876, 0.7) !important;\n}\n\n.blue-100.text-hint, .blue-100 .text-hint, .blue-100.text-disabled, .blue-100 .text-disabled {\n  color: rgba(#233876, 0.38) !important;\n}\n\n.blue-100.divider, .blue-100 .divider {\n  color: rgba(#233876, 0.12) !important;\n}\n\n.text-blue-100.text-secondary, .text-blue-100 .text-secondary {\n  color: rgba(#E1EFFE, 0.7) !important;\n}\n\n.text-blue-100.text-hint, .text-blue-100 .text-hint, .text-blue-100.text-disabled, .text-blue-100 .text-disabled {\n  color: rgba(#E1EFFE, 0.38) !important;\n}\n\n.text-blue-100.divider, .text-blue-100 .divider {\n  color: rgba(#E1EFFE, 0.12) !important;\n}\n\n.blue-200 {\n  background-color: #C3DDFD !important;\n  color: #233876 !important;\n}\n\n.blue-200.mat-icon, .blue-200 .mat-icon {\n  color: #233876 !important;\n}\n\n.blue-200.text-secondary, .blue-200 .text-secondary {\n  color: rgba(#233876, 0.7) !important;\n}\n\n.blue-200.text-hint, .blue-200 .text-hint, .blue-200.text-disabled, .blue-200 .text-disabled {\n  color: rgba(#233876, 0.38) !important;\n}\n\n.blue-200.divider, .blue-200 .divider {\n  color: rgba(#233876, 0.12) !important;\n}\n\n.text-blue-200.text-secondary, .text-blue-200 .text-secondary {\n  color: rgba(#C3DDFD, 0.7) !important;\n}\n\n.text-blue-200.text-hint, .text-blue-200 .text-hint, .text-blue-200.text-disabled, .text-blue-200 .text-disabled {\n  color: rgba(#C3DDFD, 0.38) !important;\n}\n\n.text-blue-200.divider, .text-blue-200 .divider {\n  color: rgba(#C3DDFD, 0.12) !important;\n}\n\n.blue-300 {\n  background-color: #A4CAFE !important;\n  color: #233876 !important;\n}\n\n.blue-300.mat-icon, .blue-300 .mat-icon {\n  color: #233876 !important;\n}\n\n.blue-300.text-secondary, .blue-300 .text-secondary {\n  color: rgba(#233876, 0.7) !important;\n}\n\n.blue-300.text-hint, .blue-300 .text-hint, .blue-300.text-disabled, .blue-300 .text-disabled {\n  color: rgba(#233876, 0.38) !important;\n}\n\n.blue-300.divider, .blue-300 .divider {\n  color: rgba(#233876, 0.12) !important;\n}\n\n.text-blue-300.text-secondary, .text-blue-300 .text-secondary {\n  color: rgba(#A4CAFE, 0.7) !important;\n}\n\n.text-blue-300.text-hint, .text-blue-300 .text-hint, .text-blue-300.text-disabled, .text-blue-300 .text-disabled {\n  color: rgba(#A4CAFE, 0.38) !important;\n}\n\n.text-blue-300.divider, .text-blue-300 .divider {\n  color: rgba(#A4CAFE, 0.12) !important;\n}\n\n.blue-400 {\n  background-color: #76A9FA !important;\n  color: #233876 !important;\n}\n\n.blue-400.mat-icon, .blue-400 .mat-icon {\n  color: #233876 !important;\n}\n\n.blue-400.text-secondary, .blue-400 .text-secondary {\n  color: rgba(#233876, 0.7) !important;\n}\n\n.blue-400.text-hint, .blue-400 .text-hint, .blue-400.text-disabled, .blue-400 .text-disabled {\n  color: rgba(#233876, 0.38) !important;\n}\n\n.blue-400.divider, .blue-400 .divider {\n  color: rgba(#233876, 0.12) !important;\n}\n\n.text-blue-400.text-secondary, .text-blue-400 .text-secondary {\n  color: rgba(#76A9FA, 0.7) !important;\n}\n\n.text-blue-400.text-hint, .text-blue-400 .text-hint, .text-blue-400.text-disabled, .text-blue-400 .text-disabled {\n  color: rgba(#76A9FA, 0.38) !important;\n}\n\n.text-blue-400.divider, .text-blue-400 .divider {\n  color: rgba(#76A9FA, 0.12) !important;\n}\n\n.blue-500 {\n  background-color: #3F83F8 !important;\n  color: #EBF5FF !important;\n}\n\n.blue-500.mat-icon, .blue-500 .mat-icon {\n  color: #EBF5FF !important;\n}\n\n.blue-500.text-secondary, .blue-500 .text-secondary {\n  color: rgba(#EBF5FF, 0.7) !important;\n}\n\n.blue-500.text-hint, .blue-500 .text-hint, .blue-500.text-disabled, .blue-500 .text-disabled {\n  color: rgba(#EBF5FF, 0.38) !important;\n}\n\n.blue-500.divider, .blue-500 .divider {\n  color: rgba(#EBF5FF, 0.12) !important;\n}\n\n.text-blue-500.text-secondary, .text-blue-500 .text-secondary {\n  color: rgba(#3F83F8, 0.7) !important;\n}\n\n.text-blue-500.text-hint, .text-blue-500 .text-hint, .text-blue-500.text-disabled, .text-blue-500 .text-disabled {\n  color: rgba(#3F83F8, 0.38) !important;\n}\n\n.text-blue-500.divider, .text-blue-500 .divider {\n  color: rgba(#3F83F8, 0.12) !important;\n}\n\n.blue-600 {\n  background-color: #1C64F2 !important;\n  color: #EBF5FF !important;\n}\n\n.blue-600.mat-icon, .blue-600 .mat-icon {\n  color: #EBF5FF !important;\n}\n\n.blue-600.text-secondary, .blue-600 .text-secondary {\n  color: rgba(#EBF5FF, 0.7) !important;\n}\n\n.blue-600.text-hint, .blue-600 .text-hint, .blue-600.text-disabled, .blue-600 .text-disabled {\n  color: rgba(#EBF5FF, 0.38) !important;\n}\n\n.blue-600.divider, .blue-600 .divider {\n  color: rgba(#EBF5FF, 0.12) !important;\n}\n\n.text-blue-600.text-secondary, .text-blue-600 .text-secondary {\n  color: rgba(#1C64F2, 0.7) !important;\n}\n\n.text-blue-600.text-hint, .text-blue-600 .text-hint, .text-blue-600.text-disabled, .text-blue-600 .text-disabled {\n  color: rgba(#1C64F2, 0.38) !important;\n}\n\n.text-blue-600.divider, .text-blue-600 .divider {\n  color: rgba(#1C64F2, 0.12) !important;\n}\n\n.blue-700 {\n  background-color: #1A56DB !important;\n  color: #EBF5FF !important;\n}\n\n.blue-700.mat-icon, .blue-700 .mat-icon {\n  color: #EBF5FF !important;\n}\n\n.blue-700.text-secondary, .blue-700 .text-secondary {\n  color: rgba(#EBF5FF, 0.7) !important;\n}\n\n.blue-700.text-hint, .blue-700 .text-hint, .blue-700.text-disabled, .blue-700 .text-disabled {\n  color: rgba(#EBF5FF, 0.38) !important;\n}\n\n.blue-700.divider, .blue-700 .divider {\n  color: rgba(#EBF5FF, 0.12) !important;\n}\n\n.text-blue-700.text-secondary, .text-blue-700 .text-secondary {\n  color: rgba(#1A56DB, 0.7) !important;\n}\n\n.text-blue-700.text-hint, .text-blue-700 .text-hint, .text-blue-700.text-disabled, .text-blue-700 .text-disabled {\n  color: rgba(#1A56DB, 0.38) !important;\n}\n\n.text-blue-700.divider, .text-blue-700 .divider {\n  color: rgba(#1A56DB, 0.12) !important;\n}\n\n.blue-800 {\n  background-color: #1E429F !important;\n  color: #EBF5FF !important;\n}\n\n.blue-800.mat-icon, .blue-800 .mat-icon {\n  color: #EBF5FF !important;\n}\n\n.blue-800.text-secondary, .blue-800 .text-secondary {\n  color: rgba(#EBF5FF, 0.7) !important;\n}\n\n.blue-800.text-hint, .blue-800 .text-hint, .blue-800.text-disabled, .blue-800 .text-disabled {\n  color: rgba(#EBF5FF, 0.38) !important;\n}\n\n.blue-800.divider, .blue-800 .divider {\n  color: rgba(#EBF5FF, 0.12) !important;\n}\n\n.text-blue-800.text-secondary, .text-blue-800 .text-secondary {\n  color: rgba(#1E429F, 0.7) !important;\n}\n\n.text-blue-800.text-hint, .text-blue-800 .text-hint, .text-blue-800.text-disabled, .text-blue-800 .text-disabled {\n  color: rgba(#1E429F, 0.38) !important;\n}\n\n.text-blue-800.divider, .text-blue-800 .divider {\n  color: rgba(#1E429F, 0.12) !important;\n}\n\n.blue-900 {\n  background-color: #233876 !important;\n  color: #EBF5FF !important;\n}\n\n.blue-900.mat-icon, .blue-900 .mat-icon {\n  color: #EBF5FF !important;\n}\n\n.blue-900.text-secondary, .blue-900 .text-secondary {\n  color: rgba(#EBF5FF, 0.7) !important;\n}\n\n.blue-900.text-hint, .blue-900 .text-hint, .blue-900.text-disabled, .blue-900 .text-disabled {\n  color: rgba(#EBF5FF, 0.38) !important;\n}\n\n.blue-900.divider, .blue-900 .divider {\n  color: rgba(#EBF5FF, 0.12) !important;\n}\n\n.text-blue-900.text-secondary, .text-blue-900 .text-secondary {\n  color: rgba(#233876, 0.7) !important;\n}\n\n.text-blue-900.text-hint, .text-blue-900 .text-hint, .text-blue-900.text-disabled, .text-blue-900 .text-disabled {\n  color: rgba(#233876, 0.38) !important;\n}\n\n.text-blue-900.divider, .text-blue-900 .divider {\n  color: rgba(#233876, 0.12) !important;\n}\n\n.blue {\n  background-color: #3F83F8 !important;\n  color: #EBF5FF !important;\n}\n\n.blue.mat-icon, .blue .mat-icon {\n  color: #EBF5FF !important;\n}\n\n.blue.text-secondary, .blue .text-secondary {\n  color: rgba(#EBF5FF, 0.7) !important;\n}\n\n.blue.text-hint, .blue .text-hint, .blue.text-disabled, .blue .text-disabled {\n  color: rgba(#EBF5FF, 0.38) !important;\n}\n\n.blue.divider, .blue .divider {\n  color: rgba(#EBF5FF, 0.12) !important;\n}\n\n.text-blue.text-secondary, .text-blue .text-secondary {\n  color: rgba(#3F83F8, 0.7) !important;\n}\n\n.text-blue.text-hint, .text-blue .text-hint, .text-blue.text-disabled, .text-blue .text-disabled {\n  color: rgba(#3F83F8, 0.38) !important;\n}\n\n.text-blue.divider, .text-blue .divider {\n  color: rgba(#3F83F8, 0.12) !important;\n}\n\n.indigo-50 {\n  background-color: #F0F5FF !important;\n  color: #362F78 !important;\n}\n\n.indigo-50.mat-icon, .indigo-50 .mat-icon {\n  color: #362F78 !important;\n}\n\n.indigo-50.text-secondary, .indigo-50 .text-secondary {\n  color: rgba(#362F78, 0.7) !important;\n}\n\n.indigo-50.text-hint, .indigo-50 .text-hint, .indigo-50.text-disabled, .indigo-50 .text-disabled {\n  color: rgba(#362F78, 0.38) !important;\n}\n\n.indigo-50.divider, .indigo-50 .divider {\n  color: rgba(#362F78, 0.12) !important;\n}\n\n.text-indigo-50.text-secondary, .text-indigo-50 .text-secondary {\n  color: rgba(#F0F5FF, 0.7) !important;\n}\n\n.text-indigo-50.text-hint, .text-indigo-50 .text-hint, .text-indigo-50.text-disabled, .text-indigo-50 .text-disabled {\n  color: rgba(#F0F5FF, 0.38) !important;\n}\n\n.text-indigo-50.divider, .text-indigo-50 .divider {\n  color: rgba(#F0F5FF, 0.12) !important;\n}\n\n.indigo-100 {\n  background-color: #E5EDFF !important;\n  color: #362F78 !important;\n}\n\n.indigo-100.mat-icon, .indigo-100 .mat-icon {\n  color: #362F78 !important;\n}\n\n.indigo-100.text-secondary, .indigo-100 .text-secondary {\n  color: rgba(#362F78, 0.7) !important;\n}\n\n.indigo-100.text-hint, .indigo-100 .text-hint, .indigo-100.text-disabled, .indigo-100 .text-disabled {\n  color: rgba(#362F78, 0.38) !important;\n}\n\n.indigo-100.divider, .indigo-100 .divider {\n  color: rgba(#362F78, 0.12) !important;\n}\n\n.text-indigo-100.text-secondary, .text-indigo-100 .text-secondary {\n  color: rgba(#E5EDFF, 0.7) !important;\n}\n\n.text-indigo-100.text-hint, .text-indigo-100 .text-hint, .text-indigo-100.text-disabled, .text-indigo-100 .text-disabled {\n  color: rgba(#E5EDFF, 0.38) !important;\n}\n\n.text-indigo-100.divider, .text-indigo-100 .divider {\n  color: rgba(#E5EDFF, 0.12) !important;\n}\n\n.indigo-200 {\n  background-color: #CDDBFE !important;\n  color: #362F78 !important;\n}\n\n.indigo-200.mat-icon, .indigo-200 .mat-icon {\n  color: #362F78 !important;\n}\n\n.indigo-200.text-secondary, .indigo-200 .text-secondary {\n  color: rgba(#362F78, 0.7) !important;\n}\n\n.indigo-200.text-hint, .indigo-200 .text-hint, .indigo-200.text-disabled, .indigo-200 .text-disabled {\n  color: rgba(#362F78, 0.38) !important;\n}\n\n.indigo-200.divider, .indigo-200 .divider {\n  color: rgba(#362F78, 0.12) !important;\n}\n\n.text-indigo-200.text-secondary, .text-indigo-200 .text-secondary {\n  color: rgba(#CDDBFE, 0.7) !important;\n}\n\n.text-indigo-200.text-hint, .text-indigo-200 .text-hint, .text-indigo-200.text-disabled, .text-indigo-200 .text-disabled {\n  color: rgba(#CDDBFE, 0.38) !important;\n}\n\n.text-indigo-200.divider, .text-indigo-200 .divider {\n  color: rgba(#CDDBFE, 0.12) !important;\n}\n\n.indigo-300 {\n  background-color: #B4C6FC !important;\n  color: #362F78 !important;\n}\n\n.indigo-300.mat-icon, .indigo-300 .mat-icon {\n  color: #362F78 !important;\n}\n\n.indigo-300.text-secondary, .indigo-300 .text-secondary {\n  color: rgba(#362F78, 0.7) !important;\n}\n\n.indigo-300.text-hint, .indigo-300 .text-hint, .indigo-300.text-disabled, .indigo-300 .text-disabled {\n  color: rgba(#362F78, 0.38) !important;\n}\n\n.indigo-300.divider, .indigo-300 .divider {\n  color: rgba(#362F78, 0.12) !important;\n}\n\n.text-indigo-300.text-secondary, .text-indigo-300 .text-secondary {\n  color: rgba(#B4C6FC, 0.7) !important;\n}\n\n.text-indigo-300.text-hint, .text-indigo-300 .text-hint, .text-indigo-300.text-disabled, .text-indigo-300 .text-disabled {\n  color: rgba(#B4C6FC, 0.38) !important;\n}\n\n.text-indigo-300.divider, .text-indigo-300 .divider {\n  color: rgba(#B4C6FC, 0.12) !important;\n}\n\n.indigo-400 {\n  background-color: #8DA2FB !important;\n  color: #362F78 !important;\n}\n\n.indigo-400.mat-icon, .indigo-400 .mat-icon {\n  color: #362F78 !important;\n}\n\n.indigo-400.text-secondary, .indigo-400 .text-secondary {\n  color: rgba(#362F78, 0.7) !important;\n}\n\n.indigo-400.text-hint, .indigo-400 .text-hint, .indigo-400.text-disabled, .indigo-400 .text-disabled {\n  color: rgba(#362F78, 0.38) !important;\n}\n\n.indigo-400.divider, .indigo-400 .divider {\n  color: rgba(#362F78, 0.12) !important;\n}\n\n.text-indigo-400.text-secondary, .text-indigo-400 .text-secondary {\n  color: rgba(#8DA2FB, 0.7) !important;\n}\n\n.text-indigo-400.text-hint, .text-indigo-400 .text-hint, .text-indigo-400.text-disabled, .text-indigo-400 .text-disabled {\n  color: rgba(#8DA2FB, 0.38) !important;\n}\n\n.text-indigo-400.divider, .text-indigo-400 .divider {\n  color: rgba(#8DA2FB, 0.12) !important;\n}\n\n.indigo-500 {\n  background-color: #6875F5 !important;\n  color: #F0F5FF !important;\n}\n\n.indigo-500.mat-icon, .indigo-500 .mat-icon {\n  color: #F0F5FF !important;\n}\n\n.indigo-500.text-secondary, .indigo-500 .text-secondary {\n  color: rgba(#F0F5FF, 0.7) !important;\n}\n\n.indigo-500.text-hint, .indigo-500 .text-hint, .indigo-500.text-disabled, .indigo-500 .text-disabled {\n  color: rgba(#F0F5FF, 0.38) !important;\n}\n\n.indigo-500.divider, .indigo-500 .divider {\n  color: rgba(#F0F5FF, 0.12) !important;\n}\n\n.text-indigo-500.text-secondary, .text-indigo-500 .text-secondary {\n  color: rgba(#6875F5, 0.7) !important;\n}\n\n.text-indigo-500.text-hint, .text-indigo-500 .text-hint, .text-indigo-500.text-disabled, .text-indigo-500 .text-disabled {\n  color: rgba(#6875F5, 0.38) !important;\n}\n\n.text-indigo-500.divider, .text-indigo-500 .divider {\n  color: rgba(#6875F5, 0.12) !important;\n}\n\n.indigo-600 {\n  background-color: #5850EC !important;\n  color: #F0F5FF !important;\n}\n\n.indigo-600.mat-icon, .indigo-600 .mat-icon {\n  color: #F0F5FF !important;\n}\n\n.indigo-600.text-secondary, .indigo-600 .text-secondary {\n  color: rgba(#F0F5FF, 0.7) !important;\n}\n\n.indigo-600.text-hint, .indigo-600 .text-hint, .indigo-600.text-disabled, .indigo-600 .text-disabled {\n  color: rgba(#F0F5FF, 0.38) !important;\n}\n\n.indigo-600.divider, .indigo-600 .divider {\n  color: rgba(#F0F5FF, 0.12) !important;\n}\n\n.text-indigo-600.text-secondary, .text-indigo-600 .text-secondary {\n  color: rgba(#5850EC, 0.7) !important;\n}\n\n.text-indigo-600.text-hint, .text-indigo-600 .text-hint, .text-indigo-600.text-disabled, .text-indigo-600 .text-disabled {\n  color: rgba(#5850EC, 0.38) !important;\n}\n\n.text-indigo-600.divider, .text-indigo-600 .divider {\n  color: rgba(#5850EC, 0.12) !important;\n}\n\n.indigo-700 {\n  background-color: #5145CD !important;\n  color: #F0F5FF !important;\n}\n\n.indigo-700.mat-icon, .indigo-700 .mat-icon {\n  color: #F0F5FF !important;\n}\n\n.indigo-700.text-secondary, .indigo-700 .text-secondary {\n  color: rgba(#F0F5FF, 0.7) !important;\n}\n\n.indigo-700.text-hint, .indigo-700 .text-hint, .indigo-700.text-disabled, .indigo-700 .text-disabled {\n  color: rgba(#F0F5FF, 0.38) !important;\n}\n\n.indigo-700.divider, .indigo-700 .divider {\n  color: rgba(#F0F5FF, 0.12) !important;\n}\n\n.text-indigo-700.text-secondary, .text-indigo-700 .text-secondary {\n  color: rgba(#5145CD, 0.7) !important;\n}\n\n.text-indigo-700.text-hint, .text-indigo-700 .text-hint, .text-indigo-700.text-disabled, .text-indigo-700 .text-disabled {\n  color: rgba(#5145CD, 0.38) !important;\n}\n\n.text-indigo-700.divider, .text-indigo-700 .divider {\n  color: rgba(#5145CD, 0.12) !important;\n}\n\n.indigo-800 {\n  background-color: #42389D !important;\n  color: #F0F5FF !important;\n}\n\n.indigo-800.mat-icon, .indigo-800 .mat-icon {\n  color: #F0F5FF !important;\n}\n\n.indigo-800.text-secondary, .indigo-800 .text-secondary {\n  color: rgba(#F0F5FF, 0.7) !important;\n}\n\n.indigo-800.text-hint, .indigo-800 .text-hint, .indigo-800.text-disabled, .indigo-800 .text-disabled {\n  color: rgba(#F0F5FF, 0.38) !important;\n}\n\n.indigo-800.divider, .indigo-800 .divider {\n  color: rgba(#F0F5FF, 0.12) !important;\n}\n\n.text-indigo-800.text-secondary, .text-indigo-800 .text-secondary {\n  color: rgba(#42389D, 0.7) !important;\n}\n\n.text-indigo-800.text-hint, .text-indigo-800 .text-hint, .text-indigo-800.text-disabled, .text-indigo-800 .text-disabled {\n  color: rgba(#42389D, 0.38) !important;\n}\n\n.text-indigo-800.divider, .text-indigo-800 .divider {\n  color: rgba(#42389D, 0.12) !important;\n}\n\n.indigo-900 {\n  background-color: #362F78 !important;\n  color: #F0F5FF !important;\n}\n\n.indigo-900.mat-icon, .indigo-900 .mat-icon {\n  color: #F0F5FF !important;\n}\n\n.indigo-900.text-secondary, .indigo-900 .text-secondary {\n  color: rgba(#F0F5FF, 0.7) !important;\n}\n\n.indigo-900.text-hint, .indigo-900 .text-hint, .indigo-900.text-disabled, .indigo-900 .text-disabled {\n  color: rgba(#F0F5FF, 0.38) !important;\n}\n\n.indigo-900.divider, .indigo-900 .divider {\n  color: rgba(#F0F5FF, 0.12) !important;\n}\n\n.text-indigo-900.text-secondary, .text-indigo-900 .text-secondary {\n  color: rgba(#362F78, 0.7) !important;\n}\n\n.text-indigo-900.text-hint, .text-indigo-900 .text-hint, .text-indigo-900.text-disabled, .text-indigo-900 .text-disabled {\n  color: rgba(#362F78, 0.38) !important;\n}\n\n.text-indigo-900.divider, .text-indigo-900 .divider {\n  color: rgba(#362F78, 0.12) !important;\n}\n\n.indigo {\n  background-color: #6875F5 !important;\n  color: #F0F5FF !important;\n}\n\n.indigo.mat-icon, .indigo .mat-icon {\n  color: #F0F5FF !important;\n}\n\n.indigo.text-secondary, .indigo .text-secondary {\n  color: rgba(#F0F5FF, 0.7) !important;\n}\n\n.indigo.text-hint, .indigo .text-hint, .indigo.text-disabled, .indigo .text-disabled {\n  color: rgba(#F0F5FF, 0.38) !important;\n}\n\n.indigo.divider, .indigo .divider {\n  color: rgba(#F0F5FF, 0.12) !important;\n}\n\n.text-indigo.text-secondary, .text-indigo .text-secondary {\n  color: rgba(#6875F5, 0.7) !important;\n}\n\n.text-indigo.text-hint, .text-indigo .text-hint, .text-indigo.text-disabled, .text-indigo .text-disabled {\n  color: rgba(#6875F5, 0.38) !important;\n}\n\n.text-indigo.divider, .text-indigo .divider {\n  color: rgba(#6875F5, 0.12) !important;\n}\n\n.purple-50 {\n  background-color: #F6F5FF !important;\n  color: #4A1D96 !important;\n}\n\n.purple-50.mat-icon, .purple-50 .mat-icon {\n  color: #4A1D96 !important;\n}\n\n.purple-50.text-secondary, .purple-50 .text-secondary {\n  color: rgba(#4A1D96, 0.7) !important;\n}\n\n.purple-50.text-hint, .purple-50 .text-hint, .purple-50.text-disabled, .purple-50 .text-disabled {\n  color: rgba(#4A1D96, 0.38) !important;\n}\n\n.purple-50.divider, .purple-50 .divider {\n  color: rgba(#4A1D96, 0.12) !important;\n}\n\n.text-purple-50.text-secondary, .text-purple-50 .text-secondary {\n  color: rgba(#F6F5FF, 0.7) !important;\n}\n\n.text-purple-50.text-hint, .text-purple-50 .text-hint, .text-purple-50.text-disabled, .text-purple-50 .text-disabled {\n  color: rgba(#F6F5FF, 0.38) !important;\n}\n\n.text-purple-50.divider, .text-purple-50 .divider {\n  color: rgba(#F6F5FF, 0.12) !important;\n}\n\n.purple-100 {\n  background-color: #EDEBFE !important;\n  color: #4A1D96 !important;\n}\n\n.purple-100.mat-icon, .purple-100 .mat-icon {\n  color: #4A1D96 !important;\n}\n\n.purple-100.text-secondary, .purple-100 .text-secondary {\n  color: rgba(#4A1D96, 0.7) !important;\n}\n\n.purple-100.text-hint, .purple-100 .text-hint, .purple-100.text-disabled, .purple-100 .text-disabled {\n  color: rgba(#4A1D96, 0.38) !important;\n}\n\n.purple-100.divider, .purple-100 .divider {\n  color: rgba(#4A1D96, 0.12) !important;\n}\n\n.text-purple-100.text-secondary, .text-purple-100 .text-secondary {\n  color: rgba(#EDEBFE, 0.7) !important;\n}\n\n.text-purple-100.text-hint, .text-purple-100 .text-hint, .text-purple-100.text-disabled, .text-purple-100 .text-disabled {\n  color: rgba(#EDEBFE, 0.38) !important;\n}\n\n.text-purple-100.divider, .text-purple-100 .divider {\n  color: rgba(#EDEBFE, 0.12) !important;\n}\n\n.purple-200 {\n  background-color: #DCD7FE !important;\n  color: #4A1D96 !important;\n}\n\n.purple-200.mat-icon, .purple-200 .mat-icon {\n  color: #4A1D96 !important;\n}\n\n.purple-200.text-secondary, .purple-200 .text-secondary {\n  color: rgba(#4A1D96, 0.7) !important;\n}\n\n.purple-200.text-hint, .purple-200 .text-hint, .purple-200.text-disabled, .purple-200 .text-disabled {\n  color: rgba(#4A1D96, 0.38) !important;\n}\n\n.purple-200.divider, .purple-200 .divider {\n  color: rgba(#4A1D96, 0.12) !important;\n}\n\n.text-purple-200.text-secondary, .text-purple-200 .text-secondary {\n  color: rgba(#DCD7FE, 0.7) !important;\n}\n\n.text-purple-200.text-hint, .text-purple-200 .text-hint, .text-purple-200.text-disabled, .text-purple-200 .text-disabled {\n  color: rgba(#DCD7FE, 0.38) !important;\n}\n\n.text-purple-200.divider, .text-purple-200 .divider {\n  color: rgba(#DCD7FE, 0.12) !important;\n}\n\n.purple-300 {\n  background-color: #CABFFD !important;\n  color: #4A1D96 !important;\n}\n\n.purple-300.mat-icon, .purple-300 .mat-icon {\n  color: #4A1D96 !important;\n}\n\n.purple-300.text-secondary, .purple-300 .text-secondary {\n  color: rgba(#4A1D96, 0.7) !important;\n}\n\n.purple-300.text-hint, .purple-300 .text-hint, .purple-300.text-disabled, .purple-300 .text-disabled {\n  color: rgba(#4A1D96, 0.38) !important;\n}\n\n.purple-300.divider, .purple-300 .divider {\n  color: rgba(#4A1D96, 0.12) !important;\n}\n\n.text-purple-300.text-secondary, .text-purple-300 .text-secondary {\n  color: rgba(#CABFFD, 0.7) !important;\n}\n\n.text-purple-300.text-hint, .text-purple-300 .text-hint, .text-purple-300.text-disabled, .text-purple-300 .text-disabled {\n  color: rgba(#CABFFD, 0.38) !important;\n}\n\n.text-purple-300.divider, .text-purple-300 .divider {\n  color: rgba(#CABFFD, 0.12) !important;\n}\n\n.purple-400 {\n  background-color: #AC94FA !important;\n  color: #4A1D96 !important;\n}\n\n.purple-400.mat-icon, .purple-400 .mat-icon {\n  color: #4A1D96 !important;\n}\n\n.purple-400.text-secondary, .purple-400 .text-secondary {\n  color: rgba(#4A1D96, 0.7) !important;\n}\n\n.purple-400.text-hint, .purple-400 .text-hint, .purple-400.text-disabled, .purple-400 .text-disabled {\n  color: rgba(#4A1D96, 0.38) !important;\n}\n\n.purple-400.divider, .purple-400 .divider {\n  color: rgba(#4A1D96, 0.12) !important;\n}\n\n.text-purple-400.text-secondary, .text-purple-400 .text-secondary {\n  color: rgba(#AC94FA, 0.7) !important;\n}\n\n.text-purple-400.text-hint, .text-purple-400 .text-hint, .text-purple-400.text-disabled, .text-purple-400 .text-disabled {\n  color: rgba(#AC94FA, 0.38) !important;\n}\n\n.text-purple-400.divider, .text-purple-400 .divider {\n  color: rgba(#AC94FA, 0.12) !important;\n}\n\n.purple-500 {\n  background-color: #9061F9 !important;\n  color: #F6F5FF !important;\n}\n\n.purple-500.mat-icon, .purple-500 .mat-icon {\n  color: #F6F5FF !important;\n}\n\n.purple-500.text-secondary, .purple-500 .text-secondary {\n  color: rgba(#F6F5FF, 0.7) !important;\n}\n\n.purple-500.text-hint, .purple-500 .text-hint, .purple-500.text-disabled, .purple-500 .text-disabled {\n  color: rgba(#F6F5FF, 0.38) !important;\n}\n\n.purple-500.divider, .purple-500 .divider {\n  color: rgba(#F6F5FF, 0.12) !important;\n}\n\n.text-purple-500.text-secondary, .text-purple-500 .text-secondary {\n  color: rgba(#9061F9, 0.7) !important;\n}\n\n.text-purple-500.text-hint, .text-purple-500 .text-hint, .text-purple-500.text-disabled, .text-purple-500 .text-disabled {\n  color: rgba(#9061F9, 0.38) !important;\n}\n\n.text-purple-500.divider, .text-purple-500 .divider {\n  color: rgba(#9061F9, 0.12) !important;\n}\n\n.purple-600 {\n  background-color: #7E3AF2 !important;\n  color: #F6F5FF !important;\n}\n\n.purple-600.mat-icon, .purple-600 .mat-icon {\n  color: #F6F5FF !important;\n}\n\n.purple-600.text-secondary, .purple-600 .text-secondary {\n  color: rgba(#F6F5FF, 0.7) !important;\n}\n\n.purple-600.text-hint, .purple-600 .text-hint, .purple-600.text-disabled, .purple-600 .text-disabled {\n  color: rgba(#F6F5FF, 0.38) !important;\n}\n\n.purple-600.divider, .purple-600 .divider {\n  color: rgba(#F6F5FF, 0.12) !important;\n}\n\n.text-purple-600.text-secondary, .text-purple-600 .text-secondary {\n  color: rgba(#7E3AF2, 0.7) !important;\n}\n\n.text-purple-600.text-hint, .text-purple-600 .text-hint, .text-purple-600.text-disabled, .text-purple-600 .text-disabled {\n  color: rgba(#7E3AF2, 0.38) !important;\n}\n\n.text-purple-600.divider, .text-purple-600 .divider {\n  color: rgba(#7E3AF2, 0.12) !important;\n}\n\n.purple-700 {\n  background-color: #6C2BD9 !important;\n  color: #F6F5FF !important;\n}\n\n.purple-700.mat-icon, .purple-700 .mat-icon {\n  color: #F6F5FF !important;\n}\n\n.purple-700.text-secondary, .purple-700 .text-secondary {\n  color: rgba(#F6F5FF, 0.7) !important;\n}\n\n.purple-700.text-hint, .purple-700 .text-hint, .purple-700.text-disabled, .purple-700 .text-disabled {\n  color: rgba(#F6F5FF, 0.38) !important;\n}\n\n.purple-700.divider, .purple-700 .divider {\n  color: rgba(#F6F5FF, 0.12) !important;\n}\n\n.text-purple-700.text-secondary, .text-purple-700 .text-secondary {\n  color: rgba(#6C2BD9, 0.7) !important;\n}\n\n.text-purple-700.text-hint, .text-purple-700 .text-hint, .text-purple-700.text-disabled, .text-purple-700 .text-disabled {\n  color: rgba(#6C2BD9, 0.38) !important;\n}\n\n.text-purple-700.divider, .text-purple-700 .divider {\n  color: rgba(#6C2BD9, 0.12) !important;\n}\n\n.purple-800 {\n  background-color: #5521B5 !important;\n  color: #F6F5FF !important;\n}\n\n.purple-800.mat-icon, .purple-800 .mat-icon {\n  color: #F6F5FF !important;\n}\n\n.purple-800.text-secondary, .purple-800 .text-secondary {\n  color: rgba(#F6F5FF, 0.7) !important;\n}\n\n.purple-800.text-hint, .purple-800 .text-hint, .purple-800.text-disabled, .purple-800 .text-disabled {\n  color: rgba(#F6F5FF, 0.38) !important;\n}\n\n.purple-800.divider, .purple-800 .divider {\n  color: rgba(#F6F5FF, 0.12) !important;\n}\n\n.text-purple-800.text-secondary, .text-purple-800 .text-secondary {\n  color: rgba(#5521B5, 0.7) !important;\n}\n\n.text-purple-800.text-hint, .text-purple-800 .text-hint, .text-purple-800.text-disabled, .text-purple-800 .text-disabled {\n  color: rgba(#5521B5, 0.38) !important;\n}\n\n.text-purple-800.divider, .text-purple-800 .divider {\n  color: rgba(#5521B5, 0.12) !important;\n}\n\n.purple-900 {\n  background-color: #4A1D96 !important;\n  color: #F6F5FF !important;\n}\n\n.purple-900.mat-icon, .purple-900 .mat-icon {\n  color: #F6F5FF !important;\n}\n\n.purple-900.text-secondary, .purple-900 .text-secondary {\n  color: rgba(#F6F5FF, 0.7) !important;\n}\n\n.purple-900.text-hint, .purple-900 .text-hint, .purple-900.text-disabled, .purple-900 .text-disabled {\n  color: rgba(#F6F5FF, 0.38) !important;\n}\n\n.purple-900.divider, .purple-900 .divider {\n  color: rgba(#F6F5FF, 0.12) !important;\n}\n\n.text-purple-900.text-secondary, .text-purple-900 .text-secondary {\n  color: rgba(#4A1D96, 0.7) !important;\n}\n\n.text-purple-900.text-hint, .text-purple-900 .text-hint, .text-purple-900.text-disabled, .text-purple-900 .text-disabled {\n  color: rgba(#4A1D96, 0.38) !important;\n}\n\n.text-purple-900.divider, .text-purple-900 .divider {\n  color: rgba(#4A1D96, 0.12) !important;\n}\n\n.purple {\n  background-color: #9061F9 !important;\n  color: #F6F5FF !important;\n}\n\n.purple.mat-icon, .purple .mat-icon {\n  color: #F6F5FF !important;\n}\n\n.purple.text-secondary, .purple .text-secondary {\n  color: rgba(#F6F5FF, 0.7) !important;\n}\n\n.purple.text-hint, .purple .text-hint, .purple.text-disabled, .purple .text-disabled {\n  color: rgba(#F6F5FF, 0.38) !important;\n}\n\n.purple.divider, .purple .divider {\n  color: rgba(#F6F5FF, 0.12) !important;\n}\n\n.text-purple.text-secondary, .text-purple .text-secondary {\n  color: rgba(#9061F9, 0.7) !important;\n}\n\n.text-purple.text-hint, .text-purple .text-hint, .text-purple.text-disabled, .text-purple .text-disabled {\n  color: rgba(#9061F9, 0.38) !important;\n}\n\n.text-purple.divider, .text-purple .divider {\n  color: rgba(#9061F9, 0.12) !important;\n}\n\n.pink-50 {\n  background-color: #FDF2F8 !important;\n  color: #751A3D !important;\n}\n\n.pink-50.mat-icon, .pink-50 .mat-icon {\n  color: #751A3D !important;\n}\n\n.pink-50.text-secondary, .pink-50 .text-secondary {\n  color: rgba(#751A3D, 0.7) !important;\n}\n\n.pink-50.text-hint, .pink-50 .text-hint, .pink-50.text-disabled, .pink-50 .text-disabled {\n  color: rgba(#751A3D, 0.38) !important;\n}\n\n.pink-50.divider, .pink-50 .divider {\n  color: rgba(#751A3D, 0.12) !important;\n}\n\n.text-pink-50.text-secondary, .text-pink-50 .text-secondary {\n  color: rgba(#FDF2F8, 0.7) !important;\n}\n\n.text-pink-50.text-hint, .text-pink-50 .text-hint, .text-pink-50.text-disabled, .text-pink-50 .text-disabled {\n  color: rgba(#FDF2F8, 0.38) !important;\n}\n\n.text-pink-50.divider, .text-pink-50 .divider {\n  color: rgba(#FDF2F8, 0.12) !important;\n}\n\n.pink-100 {\n  background-color: #FCE8F3 !important;\n  color: #751A3D !important;\n}\n\n.pink-100.mat-icon, .pink-100 .mat-icon {\n  color: #751A3D !important;\n}\n\n.pink-100.text-secondary, .pink-100 .text-secondary {\n  color: rgba(#751A3D, 0.7) !important;\n}\n\n.pink-100.text-hint, .pink-100 .text-hint, .pink-100.text-disabled, .pink-100 .text-disabled {\n  color: rgba(#751A3D, 0.38) !important;\n}\n\n.pink-100.divider, .pink-100 .divider {\n  color: rgba(#751A3D, 0.12) !important;\n}\n\n.text-pink-100.text-secondary, .text-pink-100 .text-secondary {\n  color: rgba(#FCE8F3, 0.7) !important;\n}\n\n.text-pink-100.text-hint, .text-pink-100 .text-hint, .text-pink-100.text-disabled, .text-pink-100 .text-disabled {\n  color: rgba(#FCE8F3, 0.38) !important;\n}\n\n.text-pink-100.divider, .text-pink-100 .divider {\n  color: rgba(#FCE8F3, 0.12) !important;\n}\n\n.pink-200 {\n  background-color: #FAD1E8 !important;\n  color: #751A3D !important;\n}\n\n.pink-200.mat-icon, .pink-200 .mat-icon {\n  color: #751A3D !important;\n}\n\n.pink-200.text-secondary, .pink-200 .text-secondary {\n  color: rgba(#751A3D, 0.7) !important;\n}\n\n.pink-200.text-hint, .pink-200 .text-hint, .pink-200.text-disabled, .pink-200 .text-disabled {\n  color: rgba(#751A3D, 0.38) !important;\n}\n\n.pink-200.divider, .pink-200 .divider {\n  color: rgba(#751A3D, 0.12) !important;\n}\n\n.text-pink-200.text-secondary, .text-pink-200 .text-secondary {\n  color: rgba(#FAD1E8, 0.7) !important;\n}\n\n.text-pink-200.text-hint, .text-pink-200 .text-hint, .text-pink-200.text-disabled, .text-pink-200 .text-disabled {\n  color: rgba(#FAD1E8, 0.38) !important;\n}\n\n.text-pink-200.divider, .text-pink-200 .divider {\n  color: rgba(#FAD1E8, 0.12) !important;\n}\n\n.pink-300 {\n  background-color: #F8B4D9 !important;\n  color: #751A3D !important;\n}\n\n.pink-300.mat-icon, .pink-300 .mat-icon {\n  color: #751A3D !important;\n}\n\n.pink-300.text-secondary, .pink-300 .text-secondary {\n  color: rgba(#751A3D, 0.7) !important;\n}\n\n.pink-300.text-hint, .pink-300 .text-hint, .pink-300.text-disabled, .pink-300 .text-disabled {\n  color: rgba(#751A3D, 0.38) !important;\n}\n\n.pink-300.divider, .pink-300 .divider {\n  color: rgba(#751A3D, 0.12) !important;\n}\n\n.text-pink-300.text-secondary, .text-pink-300 .text-secondary {\n  color: rgba(#F8B4D9, 0.7) !important;\n}\n\n.text-pink-300.text-hint, .text-pink-300 .text-hint, .text-pink-300.text-disabled, .text-pink-300 .text-disabled {\n  color: rgba(#F8B4D9, 0.38) !important;\n}\n\n.text-pink-300.divider, .text-pink-300 .divider {\n  color: rgba(#F8B4D9, 0.12) !important;\n}\n\n.pink-400 {\n  background-color: #F17EB8 !important;\n  color: #751A3D !important;\n}\n\n.pink-400.mat-icon, .pink-400 .mat-icon {\n  color: #751A3D !important;\n}\n\n.pink-400.text-secondary, .pink-400 .text-secondary {\n  color: rgba(#751A3D, 0.7) !important;\n}\n\n.pink-400.text-hint, .pink-400 .text-hint, .pink-400.text-disabled, .pink-400 .text-disabled {\n  color: rgba(#751A3D, 0.38) !important;\n}\n\n.pink-400.divider, .pink-400 .divider {\n  color: rgba(#751A3D, 0.12) !important;\n}\n\n.text-pink-400.text-secondary, .text-pink-400 .text-secondary {\n  color: rgba(#F17EB8, 0.7) !important;\n}\n\n.text-pink-400.text-hint, .text-pink-400 .text-hint, .text-pink-400.text-disabled, .text-pink-400 .text-disabled {\n  color: rgba(#F17EB8, 0.38) !important;\n}\n\n.text-pink-400.divider, .text-pink-400 .divider {\n  color: rgba(#F17EB8, 0.12) !important;\n}\n\n.pink-500 {\n  background-color: #E74694 !important;\n  color: #FDF2F8 !important;\n}\n\n.pink-500.mat-icon, .pink-500 .mat-icon {\n  color: #FDF2F8 !important;\n}\n\n.pink-500.text-secondary, .pink-500 .text-secondary {\n  color: rgba(#FDF2F8, 0.7) !important;\n}\n\n.pink-500.text-hint, .pink-500 .text-hint, .pink-500.text-disabled, .pink-500 .text-disabled {\n  color: rgba(#FDF2F8, 0.38) !important;\n}\n\n.pink-500.divider, .pink-500 .divider {\n  color: rgba(#FDF2F8, 0.12) !important;\n}\n\n.text-pink-500.text-secondary, .text-pink-500 .text-secondary {\n  color: rgba(#E74694, 0.7) !important;\n}\n\n.text-pink-500.text-hint, .text-pink-500 .text-hint, .text-pink-500.text-disabled, .text-pink-500 .text-disabled {\n  color: rgba(#E74694, 0.38) !important;\n}\n\n.text-pink-500.divider, .text-pink-500 .divider {\n  color: rgba(#E74694, 0.12) !important;\n}\n\n.pink-600 {\n  background-color: #D61F69 !important;\n  color: #FDF2F8 !important;\n}\n\n.pink-600.mat-icon, .pink-600 .mat-icon {\n  color: #FDF2F8 !important;\n}\n\n.pink-600.text-secondary, .pink-600 .text-secondary {\n  color: rgba(#FDF2F8, 0.7) !important;\n}\n\n.pink-600.text-hint, .pink-600 .text-hint, .pink-600.text-disabled, .pink-600 .text-disabled {\n  color: rgba(#FDF2F8, 0.38) !important;\n}\n\n.pink-600.divider, .pink-600 .divider {\n  color: rgba(#FDF2F8, 0.12) !important;\n}\n\n.text-pink-600.text-secondary, .text-pink-600 .text-secondary {\n  color: rgba(#D61F69, 0.7) !important;\n}\n\n.text-pink-600.text-hint, .text-pink-600 .text-hint, .text-pink-600.text-disabled, .text-pink-600 .text-disabled {\n  color: rgba(#D61F69, 0.38) !important;\n}\n\n.text-pink-600.divider, .text-pink-600 .divider {\n  color: rgba(#D61F69, 0.12) !important;\n}\n\n.pink-700 {\n  background-color: #BF125D !important;\n  color: #FDF2F8 !important;\n}\n\n.pink-700.mat-icon, .pink-700 .mat-icon {\n  color: #FDF2F8 !important;\n}\n\n.pink-700.text-secondary, .pink-700 .text-secondary {\n  color: rgba(#FDF2F8, 0.7) !important;\n}\n\n.pink-700.text-hint, .pink-700 .text-hint, .pink-700.text-disabled, .pink-700 .text-disabled {\n  color: rgba(#FDF2F8, 0.38) !important;\n}\n\n.pink-700.divider, .pink-700 .divider {\n  color: rgba(#FDF2F8, 0.12) !important;\n}\n\n.text-pink-700.text-secondary, .text-pink-700 .text-secondary {\n  color: rgba(#BF125D, 0.7) !important;\n}\n\n.text-pink-700.text-hint, .text-pink-700 .text-hint, .text-pink-700.text-disabled, .text-pink-700 .text-disabled {\n  color: rgba(#BF125D, 0.38) !important;\n}\n\n.text-pink-700.divider, .text-pink-700 .divider {\n  color: rgba(#BF125D, 0.12) !important;\n}\n\n.pink-800 {\n  background-color: #99154B !important;\n  color: #FDF2F8 !important;\n}\n\n.pink-800.mat-icon, .pink-800 .mat-icon {\n  color: #FDF2F8 !important;\n}\n\n.pink-800.text-secondary, .pink-800 .text-secondary {\n  color: rgba(#FDF2F8, 0.7) !important;\n}\n\n.pink-800.text-hint, .pink-800 .text-hint, .pink-800.text-disabled, .pink-800 .text-disabled {\n  color: rgba(#FDF2F8, 0.38) !important;\n}\n\n.pink-800.divider, .pink-800 .divider {\n  color: rgba(#FDF2F8, 0.12) !important;\n}\n\n.text-pink-800.text-secondary, .text-pink-800 .text-secondary {\n  color: rgba(#99154B, 0.7) !important;\n}\n\n.text-pink-800.text-hint, .text-pink-800 .text-hint, .text-pink-800.text-disabled, .text-pink-800 .text-disabled {\n  color: rgba(#99154B, 0.38) !important;\n}\n\n.text-pink-800.divider, .text-pink-800 .divider {\n  color: rgba(#99154B, 0.12) !important;\n}\n\n.pink-900 {\n  background-color: #751A3D !important;\n  color: #FDF2F8 !important;\n}\n\n.pink-900.mat-icon, .pink-900 .mat-icon {\n  color: #FDF2F8 !important;\n}\n\n.pink-900.text-secondary, .pink-900 .text-secondary {\n  color: rgba(#FDF2F8, 0.7) !important;\n}\n\n.pink-900.text-hint, .pink-900 .text-hint, .pink-900.text-disabled, .pink-900 .text-disabled {\n  color: rgba(#FDF2F8, 0.38) !important;\n}\n\n.pink-900.divider, .pink-900 .divider {\n  color: rgba(#FDF2F8, 0.12) !important;\n}\n\n.text-pink-900.text-secondary, .text-pink-900 .text-secondary {\n  color: rgba(#751A3D, 0.7) !important;\n}\n\n.text-pink-900.text-hint, .text-pink-900 .text-hint, .text-pink-900.text-disabled, .text-pink-900 .text-disabled {\n  color: rgba(#751A3D, 0.38) !important;\n}\n\n.text-pink-900.divider, .text-pink-900 .divider {\n  color: rgba(#751A3D, 0.12) !important;\n}\n\n.pink {\n  background-color: #E74694 !important;\n  color: #FDF2F8 !important;\n}\n\n.pink.mat-icon, .pink .mat-icon {\n  color: #FDF2F8 !important;\n}\n\n.pink.text-secondary, .pink .text-secondary {\n  color: rgba(#FDF2F8, 0.7) !important;\n}\n\n.pink.text-hint, .pink .text-hint, .pink.text-disabled, .pink .text-disabled {\n  color: rgba(#FDF2F8, 0.38) !important;\n}\n\n.pink.divider, .pink .divider {\n  color: rgba(#FDF2F8, 0.12) !important;\n}\n\n.text-pink.text-secondary, .text-pink .text-secondary {\n  color: rgba(#E74694, 0.7) !important;\n}\n\n.text-pink.text-hint, .text-pink .text-hint, .text-pink.text-disabled, .text-pink .text-disabled {\n  color: rgba(#E74694, 0.38) !important;\n}\n\n.text-pink.divider, .text-pink .divider {\n  color: rgba(#E74694, 0.12) !important;\n}\n\n.icon-current .mat-icon {\n  color: currentColor !important;\n}\n\n.icon-transparent .mat-icon {\n  color: transparent !important;\n}\n\n.icon-white .mat-icon {\n  color: #FFFFFF !important;\n}\n\n.icon-black .mat-icon {\n  color: #000000 !important;\n}\n\n.icon-gray-50 .mat-icon {\n  color: #F9FAFB !important;\n}\n\n.icon-gray-100 .mat-icon {\n  color: #F4F5F7 !important;\n}\n\n.icon-gray-200 .mat-icon {\n  color: #E5E7EB !important;\n}\n\n.icon-gray-300 .mat-icon {\n  color: #D2D6DC !important;\n}\n\n.icon-gray-400 .mat-icon {\n  color: #9FA6B2 !important;\n}\n\n.icon-gray-500 .mat-icon {\n  color: #6B7280 !important;\n}\n\n.icon-gray-600 .mat-icon {\n  color: #4B5563 !important;\n}\n\n.icon-gray-700 .mat-icon {\n  color: #374151 !important;\n}\n\n.icon-gray-800 .mat-icon {\n  color: #252F3F !important;\n}\n\n.icon-gray-900 .mat-icon {\n  color: #161E2E !important;\n}\n\n.icon-gray .mat-icon {\n  color: #6B7280 !important;\n}\n\n.icon-cool-gray-50 .mat-icon {\n  color: #FBFDFE !important;\n}\n\n.icon-cool-gray-100 .mat-icon {\n  color: #F1F5F9 !important;\n}\n\n.icon-cool-gray-200 .mat-icon {\n  color: #E2E8F0 !important;\n}\n\n.icon-cool-gray-300 .mat-icon {\n  color: #CFD8E3 !important;\n}\n\n.icon-cool-gray-400 .mat-icon {\n  color: #97A6BA !important;\n}\n\n.icon-cool-gray-500 .mat-icon {\n  color: #64748B !important;\n}\n\n.icon-cool-gray-600 .mat-icon {\n  color: #475569 !important;\n}\n\n.icon-cool-gray-700 .mat-icon {\n  color: #364152 !important;\n}\n\n.icon-cool-gray-800 .mat-icon {\n  color: #27303F !important;\n}\n\n.icon-cool-gray-900 .mat-icon {\n  color: #1A202E !important;\n}\n\n.icon-cool-gray .mat-icon {\n  color: #64748B !important;\n}\n\n.icon-red-50 .mat-icon {\n  color: #FDF2F2 !important;\n}\n\n.icon-red-100 .mat-icon {\n  color: #FDE8E8 !important;\n}\n\n.icon-red-200 .mat-icon {\n  color: #FBD5D5 !important;\n}\n\n.icon-red-300 .mat-icon {\n  color: #F8B4B4 !important;\n}\n\n.icon-red-400 .mat-icon {\n  color: #F98080 !important;\n}\n\n.icon-red-500 .mat-icon {\n  color: #F05252 !important;\n}\n\n.icon-red-600 .mat-icon {\n  color: #E02424 !important;\n}\n\n.icon-red-700 .mat-icon {\n  color: #C81E1E !important;\n}\n\n.icon-red-800 .mat-icon {\n  color: #9B1C1C !important;\n}\n\n.icon-red-900 .mat-icon {\n  color: #771D1D !important;\n}\n\n.icon-red .mat-icon {\n  color: #F05252 !important;\n}\n\n.icon-orange-50 .mat-icon {\n  color: #FFF8F1 !important;\n}\n\n.icon-orange-100 .mat-icon {\n  color: #FEECDC !important;\n}\n\n.icon-orange-200 .mat-icon {\n  color: #FCD9BD !important;\n}\n\n.icon-orange-300 .mat-icon {\n  color: #FDBA8C !important;\n}\n\n.icon-orange-400 .mat-icon {\n  color: #FF8A4C !important;\n}\n\n.icon-orange-500 .mat-icon {\n  color: #FF5A1F !important;\n}\n\n.icon-orange-600 .mat-icon {\n  color: #D03801 !important;\n}\n\n.icon-orange-700 .mat-icon {\n  color: #B43403 !important;\n}\n\n.icon-orange-800 .mat-icon {\n  color: #8A2C0D !important;\n}\n\n.icon-orange-900 .mat-icon {\n  color: #771D1D !important;\n}\n\n.icon-orange .mat-icon {\n  color: #FF5A1F !important;\n}\n\n.icon-yellow-50 .mat-icon {\n  color: #FDFDEA !important;\n}\n\n.icon-yellow-100 .mat-icon {\n  color: #FDF6B2 !important;\n}\n\n.icon-yellow-200 .mat-icon {\n  color: #FCE96A !important;\n}\n\n.icon-yellow-300 .mat-icon {\n  color: #FACA15 !important;\n}\n\n.icon-yellow-400 .mat-icon {\n  color: #E3A008 !important;\n}\n\n.icon-yellow-500 .mat-icon {\n  color: #C27803 !important;\n}\n\n.icon-yellow-600 .mat-icon {\n  color: #9F580A !important;\n}\n\n.icon-yellow-700 .mat-icon {\n  color: #8E4B10 !important;\n}\n\n.icon-yellow-800 .mat-icon {\n  color: #723B13 !important;\n}\n\n.icon-yellow-900 .mat-icon {\n  color: #633112 !important;\n}\n\n.icon-yellow .mat-icon {\n  color: #C27803 !important;\n}\n\n.icon-green-50 .mat-icon {\n  color: #F3FAF7 !important;\n}\n\n.icon-green-100 .mat-icon {\n  color: #DEF7EC !important;\n}\n\n.icon-green-200 .mat-icon {\n  color: #BCF0DA !important;\n}\n\n.icon-green-300 .mat-icon {\n  color: #84E1BC !important;\n}\n\n.icon-green-400 .mat-icon {\n  color: #31C48D !important;\n}\n\n.icon-green-500 .mat-icon {\n  color: #0E9F6E !important;\n}\n\n.icon-green-600 .mat-icon {\n  color: #057A55 !important;\n}\n\n.icon-green-700 .mat-icon {\n  color: #046C4E !important;\n}\n\n.icon-green-800 .mat-icon {\n  color: #03543F !important;\n}\n\n.icon-green-900 .mat-icon {\n  color: #014737 !important;\n}\n\n.icon-green .mat-icon {\n  color: #0E9F6E !important;\n}\n\n.icon-teal-50 .mat-icon {\n  color: #EDFAFA !important;\n}\n\n.icon-teal-100 .mat-icon {\n  color: #D5F5F6 !important;\n}\n\n.icon-teal-200 .mat-icon {\n  color: #AFECEF !important;\n}\n\n.icon-teal-300 .mat-icon {\n  color: #7EDCE2 !important;\n}\n\n.icon-teal-400 .mat-icon {\n  color: #16BDCA !important;\n}\n\n.icon-teal-500 .mat-icon {\n  color: #0694A2 !important;\n}\n\n.icon-teal-600 .mat-icon {\n  color: #047481 !important;\n}\n\n.icon-teal-700 .mat-icon {\n  color: #036672 !important;\n}\n\n.icon-teal-800 .mat-icon {\n  color: #05505C !important;\n}\n\n.icon-teal-900 .mat-icon {\n  color: #014451 !important;\n}\n\n.icon-teal .mat-icon {\n  color: #0694A2 !important;\n}\n\n.icon-blue-50 .mat-icon {\n  color: #EBF5FF !important;\n}\n\n.icon-blue-100 .mat-icon {\n  color: #E1EFFE !important;\n}\n\n.icon-blue-200 .mat-icon {\n  color: #C3DDFD !important;\n}\n\n.icon-blue-300 .mat-icon {\n  color: #A4CAFE !important;\n}\n\n.icon-blue-400 .mat-icon {\n  color: #76A9FA !important;\n}\n\n.icon-blue-500 .mat-icon {\n  color: #3F83F8 !important;\n}\n\n.icon-blue-600 .mat-icon {\n  color: #1C64F2 !important;\n}\n\n.icon-blue-700 .mat-icon {\n  color: #1A56DB !important;\n}\n\n.icon-blue-800 .mat-icon {\n  color: #1E429F !important;\n}\n\n.icon-blue-900 .mat-icon {\n  color: #233876 !important;\n}\n\n.icon-blue .mat-icon {\n  color: #3F83F8 !important;\n}\n\n.icon-indigo-50 .mat-icon {\n  color: #F0F5FF !important;\n}\n\n.icon-indigo-100 .mat-icon {\n  color: #E5EDFF !important;\n}\n\n.icon-indigo-200 .mat-icon {\n  color: #CDDBFE !important;\n}\n\n.icon-indigo-300 .mat-icon {\n  color: #B4C6FC !important;\n}\n\n.icon-indigo-400 .mat-icon {\n  color: #8DA2FB !important;\n}\n\n.icon-indigo-500 .mat-icon {\n  color: #6875F5 !important;\n}\n\n.icon-indigo-600 .mat-icon {\n  color: #5850EC !important;\n}\n\n.icon-indigo-700 .mat-icon {\n  color: #5145CD !important;\n}\n\n.icon-indigo-800 .mat-icon {\n  color: #42389D !important;\n}\n\n.icon-indigo-900 .mat-icon {\n  color: #362F78 !important;\n}\n\n.icon-indigo .mat-icon {\n  color: #6875F5 !important;\n}\n\n.icon-purple-50 .mat-icon {\n  color: #F6F5FF !important;\n}\n\n.icon-purple-100 .mat-icon {\n  color: #EDEBFE !important;\n}\n\n.icon-purple-200 .mat-icon {\n  color: #DCD7FE !important;\n}\n\n.icon-purple-300 .mat-icon {\n  color: #CABFFD !important;\n}\n\n.icon-purple-400 .mat-icon {\n  color: #AC94FA !important;\n}\n\n.icon-purple-500 .mat-icon {\n  color: #9061F9 !important;\n}\n\n.icon-purple-600 .mat-icon {\n  color: #7E3AF2 !important;\n}\n\n.icon-purple-700 .mat-icon {\n  color: #6C2BD9 !important;\n}\n\n.icon-purple-800 .mat-icon {\n  color: #5521B5 !important;\n}\n\n.icon-purple-900 .mat-icon {\n  color: #4A1D96 !important;\n}\n\n.icon-purple .mat-icon {\n  color: #9061F9 !important;\n}\n\n.icon-pink-50 .mat-icon {\n  color: #FDF2F8 !important;\n}\n\n.icon-pink-100 .mat-icon {\n  color: #FCE8F3 !important;\n}\n\n.icon-pink-200 .mat-icon {\n  color: #FAD1E8 !important;\n}\n\n.icon-pink-300 .mat-icon {\n  color: #F8B4D9 !important;\n}\n\n.icon-pink-400 .mat-icon {\n  color: #F17EB8 !important;\n}\n\n.icon-pink-500 .mat-icon {\n  color: #E74694 !important;\n}\n\n.icon-pink-600 .mat-icon {\n  color: #D61F69 !important;\n}\n\n.icon-pink-700 .mat-icon {\n  color: #BF125D !important;\n}\n\n.icon-pink-800 .mat-icon {\n  color: #99154B !important;\n}\n\n.icon-pink-900 .mat-icon {\n  color: #751A3D !important;\n}\n\n.icon-pink .mat-icon {\n  color: #E74694 !important;\n}\n\n.icon-size-12 {\n  width: 12px !important;\n  height: 12px !important;\n  min-width: 12px !important;\n  min-height: 12px !important;\n  font-size: 12px !important;\n  line-height: 12px !important;\n}\n\n.icon-size-12 svg {\n  width: 12px !important;\n  height: 12px !important;\n}\n\n.icon-size-14 {\n  width: 14px !important;\n  height: 14px !important;\n  min-width: 14px !important;\n  min-height: 14px !important;\n  font-size: 14px !important;\n  line-height: 14px !important;\n}\n\n.icon-size-14 svg {\n  width: 14px !important;\n  height: 14px !important;\n}\n\n.icon-size-16 {\n  width: 16px !important;\n  height: 16px !important;\n  min-width: 16px !important;\n  min-height: 16px !important;\n  font-size: 16px !important;\n  line-height: 16px !important;\n}\n\n.icon-size-16 svg {\n  width: 16px !important;\n  height: 16px !important;\n}\n\n.icon-size-18 {\n  width: 18px !important;\n  height: 18px !important;\n  min-width: 18px !important;\n  min-height: 18px !important;\n  font-size: 18px !important;\n  line-height: 18px !important;\n}\n\n.icon-size-18 svg {\n  width: 18px !important;\n  height: 18px !important;\n}\n\n.icon-size-20 {\n  width: 20px !important;\n  height: 20px !important;\n  min-width: 20px !important;\n  min-height: 20px !important;\n  font-size: 20px !important;\n  line-height: 20px !important;\n}\n\n.icon-size-20 svg {\n  width: 20px !important;\n  height: 20px !important;\n}\n\n.icon-size-24 {\n  width: 24px !important;\n  height: 24px !important;\n  min-width: 24px !important;\n  min-height: 24px !important;\n  font-size: 24px !important;\n  line-height: 24px !important;\n}\n\n.icon-size-24 svg {\n  width: 24px !important;\n  height: 24px !important;\n}\n\n.icon-size-32 {\n  width: 32px !important;\n  height: 32px !important;\n  min-width: 32px !important;\n  min-height: 32px !important;\n  font-size: 32px !important;\n  line-height: 32px !important;\n}\n\n.icon-size-32 svg {\n  width: 32px !important;\n  height: 32px !important;\n}\n\n.icon-size-40 {\n  width: 40px !important;\n  height: 40px !important;\n  min-width: 40px !important;\n  min-height: 40px !important;\n  font-size: 40px !important;\n  line-height: 40px !important;\n}\n\n.icon-size-40 svg {\n  width: 40px !important;\n  height: 40px !important;\n}\n\n.icon-size-48 {\n  width: 48px !important;\n  height: 48px !important;\n  min-width: 48px !important;\n  min-height: 48px !important;\n  font-size: 48px !important;\n  line-height: 48px !important;\n}\n\n.icon-size-48 svg {\n  width: 48px !important;\n  height: 48px !important;\n}\n\n.icon-size-56 {\n  width: 56px !important;\n  height: 56px !important;\n  min-width: 56px !important;\n  min-height: 56px !important;\n  font-size: 56px !important;\n  line-height: 56px !important;\n}\n\n.icon-size-56 svg {\n  width: 56px !important;\n  height: 56px !important;\n}\n\n.icon-size-64 {\n  width: 64px !important;\n  height: 64px !important;\n  min-width: 64px !important;\n  min-height: 64px !important;\n  font-size: 64px !important;\n  line-height: 64px !important;\n}\n\n.icon-size-64 svg {\n  width: 64px !important;\n  height: 64px !important;\n}\n\n.icon-size-72 {\n  width: 72px !important;\n  height: 72px !important;\n  min-width: 72px !important;\n  min-height: 72px !important;\n  font-size: 72px !important;\n  line-height: 72px !important;\n}\n\n.icon-size-72 svg {\n  width: 72px !important;\n  height: 72px !important;\n}\n\n.icon-size-80 {\n  width: 80px !important;\n  height: 80px !important;\n  min-width: 80px !important;\n  min-height: 80px !important;\n  font-size: 80px !important;\n  line-height: 80px !important;\n}\n\n.icon-size-80 svg {\n  width: 80px !important;\n  height: 80px !important;\n}\n\n.icon-size-88 {\n  width: 88px !important;\n  height: 88px !important;\n  min-width: 88px !important;\n  min-height: 88px !important;\n  font-size: 88px !important;\n  line-height: 88px !important;\n}\n\n.icon-size-88 svg {\n  width: 88px !important;\n  height: 88px !important;\n}\n\n.icon-size-96 {\n  width: 96px !important;\n  height: 96px !important;\n  min-width: 96px !important;\n  min-height: 96px !important;\n  font-size: 96px !important;\n  line-height: 96px !important;\n}\n\n.icon-size-96 svg {\n  width: 96px !important;\n  height: 96px !important;\n}\n\n.mirror {\n  transform: scale(-1, 1) !important;\n}\n\n.mirror-vertical {\n  transform: scale(1, -1) !important;\n}\n\n/* ----------------------------------------------------------------------------------------------------- */\n\n/* Use custom @variant directives here to build them.\n/* ----------------------------------------------------------------------------------------------------- */\n\n/* ----------------------------------------------------------------------------------------------------- */\n\n/*  Use this directive to control where Tailwind injects the responsive variations of each utility.\n/*  If omitted, Tailwind will append these classes to the very end of your stylesheet by default.\n/* ----------------------------------------------------------------------------------------------------- */\n\n@media (min-width: 0) and (max-width: 599px) {\n  .xs\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .xs\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xs\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .xs\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .xs\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .xs\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xs\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .xs\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xs\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .xs\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xs\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .xs\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xs\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .xs\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xs\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .xs\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .xs\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .xs\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .xs\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .xs\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .xs\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .xs\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .xs\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .xs\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .xs\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .xs\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .xs\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .xs\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .xs\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .xs\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .xs\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .xs\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .xs\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .xs\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .xs\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .xs\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .xs\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .xs\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .xs\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .xs\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .xs\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .xs\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .xs\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .xs\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .xs\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .xs\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .xs\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .xs\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .xs\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .xs\\:bg-center {\n    background-position: center !important;\n  }\n\n  .xs\\:bg-left {\n    background-position: left !important;\n  }\n\n  .xs\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .xs\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .xs\\:bg-right {\n    background-position: right !important;\n  }\n\n  .xs\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .xs\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .xs\\:bg-top {\n    background-position: top !important;\n  }\n\n  .xs\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .xs\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .xs\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .xs\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .xs\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .xs\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .xs\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .xs\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .xs\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .xs\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .xs\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .xs\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .xs\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .xs\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .xs\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .xs\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .xs\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .xs\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .xs\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .xs\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .xs\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .xs\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .xs\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .xs\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .xs\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .xs\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .xs\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .xs\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .xs\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .xs\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .xs\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .xs\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .xs\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .xs\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .xs\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .xs\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .xs\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .xs\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .xs\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .xs\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .xs\\:border-double {\n    border-style: double !important;\n  }\n\n  .xs\\:border-none {\n    border-style: none !important;\n  }\n\n  .xs\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .xs\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .xs\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .xs\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .xs\\:border {\n    border-width: 1px !important;\n  }\n\n  .xs\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .xs\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .xs\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .xs\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .xs\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .xs\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .xs\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .xs\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .xs\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .xs\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .xs\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .xs\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .xs\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .xs\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .xs\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .xs\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .xs\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .xs\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .xs\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .xs\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .xs\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .xs\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .xs\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .xs\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .xs\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .xs\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .xs\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .xs\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .xs\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .xs\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .xs\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .xs\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .xs\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .xs\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .xs\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .xs\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .xs\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .xs\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .xs\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .xs\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .xs\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .xs\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .xs\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .xs\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .xs\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .xs\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .xs\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .xs\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .xs\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .xs\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .xs\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .xs\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .xs\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .xs\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .xs\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .xs\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .xs\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .xs\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .xs\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .xs\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .xs\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .xs\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .xs\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .xs\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .xs\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .xs\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .xs\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .xs\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .xs\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .xs\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .xs\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .xs\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .xs\\:block {\n    display: block !important;\n  }\n\n  .xs\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .xs\\:inline {\n    display: inline !important;\n  }\n\n  .xs\\:flex {\n    display: flex !important;\n  }\n\n  .xs\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .xs\\:table {\n    display: table !important;\n  }\n\n  .xs\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .xs\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .xs\\:table-column {\n    display: table-column !important;\n  }\n\n  .xs\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .xs\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .xs\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .xs\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .xs\\:table-row {\n    display: table-row !important;\n  }\n\n  .xs\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .xs\\:grid {\n    display: grid !important;\n  }\n\n  .xs\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .xs\\:hidden {\n    display: none !important;\n  }\n\n  .xs\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .xs\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .xs\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .xs\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .xs\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .xs\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .xs\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .xs\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .xs\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .xs\\:items-center {\n    align-items: center !important;\n  }\n\n  .xs\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .xs\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .xs\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .xs\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .xs\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .xs\\:self-center {\n    align-self: center !important;\n  }\n\n  .xs\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .xs\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .xs\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .xs\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .xs\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .xs\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .xs\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .xs\\:content-center {\n    align-content: center !important;\n  }\n\n  .xs\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .xs\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .xs\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .xs\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .xs\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .xs\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .xs\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .xs\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .xs\\:flex-none {\n    flex: none !important;\n  }\n\n  .xs\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .xs\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .xs\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .xs\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .xs\\:order-1 {\n    order: 1 !important;\n  }\n\n  .xs\\:order-2 {\n    order: 2 !important;\n  }\n\n  .xs\\:order-3 {\n    order: 3 !important;\n  }\n\n  .xs\\:order-4 {\n    order: 4 !important;\n  }\n\n  .xs\\:order-5 {\n    order: 5 !important;\n  }\n\n  .xs\\:order-6 {\n    order: 6 !important;\n  }\n\n  .xs\\:order-7 {\n    order: 7 !important;\n  }\n\n  .xs\\:order-8 {\n    order: 8 !important;\n  }\n\n  .xs\\:order-9 {\n    order: 9 !important;\n  }\n\n  .xs\\:order-10 {\n    order: 10 !important;\n  }\n\n  .xs\\:order-11 {\n    order: 11 !important;\n  }\n\n  .xs\\:order-12 {\n    order: 12 !important;\n  }\n\n  .xs\\:order-first {\n    order: -9999 !important;\n  }\n\n  .xs\\:order-last {\n    order: 9999 !important;\n  }\n\n  .xs\\:order-none {\n    order: 0 !important;\n  }\n\n  .xs\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .xs\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .xs\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .xs\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .xs\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .xs\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .xs\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .xs\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .xs\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .xs\\:h-0 {\n    height: 0 !important;\n  }\n\n  .xs\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .xs\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .xs\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .xs\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .xs\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .xs\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .xs\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .xs\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .xs\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .xs\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .xs\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .xs\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .xs\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .xs\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .xs\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .xs\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .xs\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .xs\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .xs\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .xs\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .xs\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .xs\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .xs\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .xs\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .xs\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .xs\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .xs\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .xs\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .xs\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .xs\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .xs\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .xs\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .xs\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .xs\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .xs\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .xs\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .xs\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .xs\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .xs\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .xs\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .xs\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .xs\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .xs\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .xs\\:h-auto {\n    height: auto !important;\n  }\n\n  .xs\\:h-px {\n    height: 1px !important;\n  }\n\n  .xs\\:h-2px {\n    height: 2px !important;\n  }\n\n  .xs\\:h-full {\n    height: 100% !important;\n  }\n\n  .xs\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .xs\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .xs\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .xs\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .xs\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .xs\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .xs\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .xs\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .xs\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .xs\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .xs\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .xs\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .xs\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .xs\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .xs\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .xs\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .xs\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .xs\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .xs\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .xs\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .xs\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .xs\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .xs\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .xs\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .xs\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .xs\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .xs\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .xs\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .xs\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .xs\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .xs\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .xs\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .xs\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .xs\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .xs\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .xs\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .xs\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .xs\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .xs\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .xs\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .xs\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .xs\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .xs\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .xs\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .xs\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .xs\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .xs\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .xs\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .xs\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .xs\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .xs\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .xs\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .xs\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .xs\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .xs\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .xs\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .xs\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .xs\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .xs\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .xs\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .xs\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .xs\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .xs\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .xs\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .xs\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .xs\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .xs\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .xs\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .xs\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .xs\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .xs\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .xs\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .xs\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .xs\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .xs\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .xs\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .xs\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .xs\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .xs\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .xs\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .xs\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .xs\\:m-auto {\n    margin: auto !important;\n  }\n\n  .xs\\:m-px {\n    margin: 1px !important;\n  }\n\n  .xs\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .xs\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .xs\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .xs\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .xs\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .xs\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .xs\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .xs\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .xs\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .xs\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .xs\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .xs\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .xs\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .xs\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .xs\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .xs\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .xs\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .xs\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .xs\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .xs\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .xs\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .xs\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .xs\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .xs\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .xs\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .xs\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .xs\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .xs\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .xs\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .xs\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .xs\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .xs\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .xs\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .xs\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .xs\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .xs\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .xs\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .xs\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .xs\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .xs\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .xs\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .xs\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .xs\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .xs\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .xs\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .xs\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .xs\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .xs\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .xs\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .xs\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .xs\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .xs\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .xs\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .xs\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .xs\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .xs\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .xs\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .xs\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .xs\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .xs\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .xs\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .xs\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .xs\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .xs\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .xs\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .xs\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .xs\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .xs\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .xs\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .xs\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .xs\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .xs\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .xs\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .xs\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .xs\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .xs\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .xs\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .xs\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .xs\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .xs\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .xs\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .xs\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .xs\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .xs\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .xs\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .xs\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .xs\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .xs\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .xs\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .xs\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .xs\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .xs\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .xs\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .xs\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .xs\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .xs\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .xs\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .xs\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .xs\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .xs\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .xs\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .xs\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .xs\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .xs\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .xs\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .xs\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .xs\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .xs\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .xs\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .xs\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .xs\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .xs\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .xs\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .xs\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .xs\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .xs\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .xs\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .xs\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .xs\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .xs\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .xs\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .xs\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .xs\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .xs\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .xs\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .xs\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .xs\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .xs\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .xs\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .xs\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .xs\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .xs\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .xs\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .xs\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .xs\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .xs\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .xs\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .xs\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .xs\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .xs\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .xs\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .xs\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .xs\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .xs\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .xs\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .xs\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .xs\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .xs\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .xs\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .xs\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .xs\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .xs\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .xs\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .xs\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .xs\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .xs\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .xs\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .xs\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .xs\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .xs\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .xs\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .xs\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .xs\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .xs\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .xs\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .xs\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .xs\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .xs\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .xs\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .xs\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .xs\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .xs\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .xs\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .xs\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .xs\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .xs\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .xs\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .xs\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .xs\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .xs\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .xs\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .xs\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .xs\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .xs\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .xs\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .xs\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .xs\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .xs\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .xs\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .xs\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .xs\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .xs\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .xs\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .xs\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .xs\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .xs\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .xs\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .xs\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .xs\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .xs\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .xs\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .xs\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .xs\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .xs\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .xs\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .xs\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .xs\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .xs\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .xs\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .xs\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .xs\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .xs\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .xs\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .xs\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .xs\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .xs\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .xs\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .xs\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .xs\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .xs\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .xs\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .xs\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .xs\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .xs\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .xs\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .xs\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .xs\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .xs\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .xs\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .xs\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .xs\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .xs\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .xs\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .xs\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .xs\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .xs\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .xs\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .xs\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .xs\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .xs\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .xs\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .xs\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .xs\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .xs\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .xs\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .xs\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .xs\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .xs\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .xs\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .xs\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .xs\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .xs\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .xs\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .xs\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .xs\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .xs\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .xs\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .xs\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .xs\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .xs\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .xs\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .xs\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .xs\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .xs\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .xs\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .xs\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .xs\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .xs\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .xs\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .xs\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .xs\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .xs\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .xs\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .xs\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .xs\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .xs\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .xs\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .xs\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .xs\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .xs\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .xs\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .xs\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .xs\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .xs\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .xs\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .xs\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .xs\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .xs\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .xs\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .xs\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .xs\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .xs\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .xs\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .xs\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .xs\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .xs\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .xs\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .xs\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .xs\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .xs\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .xs\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .xs\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .xs\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .xs\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .xs\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .xs\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .xs\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .xs\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .xs\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .xs\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .xs\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .xs\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .xs\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .xs\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .xs\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .xs\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .xs\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .xs\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .xs\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .xs\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .xs\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .xs\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .xs\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .xs\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .xs\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .xs\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .xs\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .xs\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .xs\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .xs\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .xs\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .xs\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .xs\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .xs\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .xs\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .xs\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .xs\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .xs\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .xs\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .xs\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .xs\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .xs\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .xs\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .xs\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .xs\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .xs\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .xs\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .xs\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .xs\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .xs\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .xs\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .xs\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .xs\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .xs\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .xs\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .xs\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .xs\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .xs\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .xs\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .xs\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .xs\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .xs\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .xs\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .xs\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .xs\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .xs\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .xs\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .xs\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .xs\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .xs\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .xs\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .xs\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .xs\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .xs\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .xs\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .xs\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .xs\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .xs\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .xs\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .xs\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .xs\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .xs\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .xs\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .xs\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .xs\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .xs\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .xs\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .xs\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .xs\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .xs\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .xs\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .xs\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .xs\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .xs\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .xs\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .xs\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .xs\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .xs\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .xs\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .xs\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .xs\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .xs\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .xs\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .xs\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .xs\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .xs\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .xs\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .xs\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .xs\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .xs\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .xs\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .xs\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .xs\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .xs\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .xs\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .xs\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .xs\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .xs\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .xs\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .xs\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .xs\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .xs\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .xs\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .xs\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .xs\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .xs\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .xs\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .xs\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .xs\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .xs\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .xs\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .xs\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .xs\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .xs\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .xs\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .xs\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .xs\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .xs\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .xs\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .xs\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .xs\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .xs\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .xs\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .xs\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .xs\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .xs\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .xs\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .xs\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .xs\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .xs\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .xs\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .xs\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .xs\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .xs\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .xs\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .xs\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .xs\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .xs\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .xs\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .xs\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .xs\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .xs\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .xs\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .xs\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .xs\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .xs\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .xs\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .xs\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .xs\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .xs\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .xs\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .xs\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .xs\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .xs\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .xs\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .xs\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .xs\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .xs\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .xs\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .xs\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .xs\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .xs\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .xs\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .xs\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .xs\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .xs\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .xs\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .xs\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .xs\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .xs\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .xs\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .xs\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .xs\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .xs\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .xs\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .xs\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .xs\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .xs\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .xs\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .xs\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .xs\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .xs\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .xs\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .xs\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .xs\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .xs\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .xs\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .xs\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .xs\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .xs\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .xs\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .xs\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .xs\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .xs\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .xs\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .xs\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .xs\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .xs\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .xs\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .xs\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .xs\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .xs\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .xs\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .xs\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .xs\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .xs\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .xs\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .xs\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .xs\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .xs\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .xs\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .xs\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .xs\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .xs\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .xs\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .xs\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .xs\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .xs\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .xs\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .xs\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .xs\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .xs\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .xs\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .xs\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .xs\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .xs\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .xs\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .xs\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .xs\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .xs\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .xs\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .xs\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .xs\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .xs\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .xs\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .xs\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .xs\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .xs\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .xs\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .xs\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .xs\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .xs\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .xs\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .xs\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .xs\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .xs\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .xs\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .xs\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .xs\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .xs\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .xs\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .xs\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .xs\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .xs\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .xs\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .xs\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .xs\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .xs\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .xs\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .xs\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .xs\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .xs\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .xs\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .xs\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .xs\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .xs\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .xs\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .xs\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .xs\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .xs\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .xs\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .xs\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .xs\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .xs\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .xs\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .xs\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .xs\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .xs\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .xs\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .xs\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .xs\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .xs\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .xs\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .xs\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .xs\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .xs\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .xs\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .xs\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .xs\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .xs\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .xs\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .xs\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .xs\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .xs\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .xs\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .xs\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .xs\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .xs\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .xs\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .xs\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .xs\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .xs\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .xs\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .xs\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .xs\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .xs\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .xs\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .xs\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .xs\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .xs\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .xs\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .xs\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .xs\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .xs\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .xs\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .xs\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .xs\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .xs\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .xs\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .xs\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .xs\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .xs\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .xs\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .xs\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .xs\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .xs\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .xs\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .xs\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .xs\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .xs\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .xs\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .xs\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .xs\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .xs\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .xs\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .xs\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .xs\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .xs\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .xs\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .xs\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .xs\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .xs\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .xs\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .xs\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .xs\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .xs\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .xs\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .xs\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .xs\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .xs\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .xs\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .xs\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .xs\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .xs\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .xs\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .xs\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .xs\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .xs\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .xs\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .xs\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .xs\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .xs\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .xs\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .xs\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .xs\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .xs\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .xs\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .xs\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .xs\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .xs\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .xs\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .xs\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .xs\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .xs\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .xs\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .xs\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .xs\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .xs\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .xs\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .xs\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .xs\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .xs\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .xs\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .xs\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .xs\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .xs\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .xs\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .xs\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .xs\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .xs\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .xs\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .xs\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .xs\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .xs\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .xs\\:p-px {\n    padding: 1px !important;\n  }\n\n  .xs\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .xs\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .xs\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .xs\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .xs\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .xs\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .xs\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .xs\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .xs\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .xs\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .xs\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .xs\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .xs\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .xs\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .xs\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .xs\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .xs\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .xs\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .xs\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .xs\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .xs\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .xs\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .xs\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .xs\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .xs\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .xs\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .xs\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .xs\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .xs\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .xs\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .xs\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .xs\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .xs\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .xs\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .xs\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .xs\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .xs\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .xs\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .xs\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .xs\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .xs\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .xs\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .xs\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .xs\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .xs\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .xs\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .xs\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .xs\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .xs\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .xs\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .xs\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .xs\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .xs\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .xs\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .xs\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .xs\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .xs\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .xs\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .xs\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .xs\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .xs\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .xs\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .xs\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .xs\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .xs\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .xs\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .xs\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .xs\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .xs\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .xs\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .xs\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .xs\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .xs\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .xs\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .xs\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .xs\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .xs\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .xs\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .xs\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .xs\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .xs\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .xs\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .xs\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .xs\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .xs\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .xs\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .xs\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .xs\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .xs\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .xs\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .xs\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .xs\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .xs\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .xs\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .xs\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .xs\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .xs\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .xs\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .xs\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .xs\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .xs\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .xs\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .xs\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .xs\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .xs\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .xs\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .xs\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .xs\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .xs\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .xs\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .xs\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .xs\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .xs\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .xs\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .xs\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .xs\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .xs\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .xs\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .xs\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .xs\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .xs\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .xs\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .xs\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .xs\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .xs\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .xs\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .xs\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .xs\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .xs\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .xs\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .xs\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .xs\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .xs\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .xs\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .xs\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .xs\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .xs\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .xs\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .xs\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .xs\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .xs\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .xs\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .xs\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .xs\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .xs\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .xs\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .xs\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .xs\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .xs\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .xs\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .xs\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .xs\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .xs\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .xs\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .xs\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .xs\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .xs\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .xs\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .xs\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .xs\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .xs\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .xs\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .xs\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .xs\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xs\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .xs\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .xs\\:static {\n    position: static !important;\n  }\n\n  .xs\\:fixed {\n    position: fixed !important;\n  }\n\n  .xs\\:absolute {\n    position: absolute !important;\n  }\n\n  .xs\\:relative {\n    position: relative !important;\n  }\n\n  .xs\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .xs\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .xs\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .xs\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .xs\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .xs\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .xs\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .xs\\:top-0 {\n    top: 0 !important;\n  }\n\n  .xs\\:right-0 {\n    right: 0 !important;\n  }\n\n  .xs\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .xs\\:left-0 {\n    left: 0 !important;\n  }\n\n  .xs\\:top-auto {\n    top: auto !important;\n  }\n\n  .xs\\:right-auto {\n    right: auto !important;\n  }\n\n  .xs\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .xs\\:left-auto {\n    left: auto !important;\n  }\n\n  .xs\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .xs\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .xs\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .xs\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .xs\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .xs\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .xs\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .xs\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .xs\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .xs\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .xs\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xs\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .xs\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .xs\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xs\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .xs\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .xs\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .xs\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .xs\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .xs\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .xs\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .xs\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .xs\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .xs\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .xs\\:text-left {\n    text-align: left !important;\n  }\n\n  .xs\\:text-center {\n    text-align: center !important;\n  }\n\n  .xs\\:text-right {\n    text-align: right !important;\n  }\n\n  .xs\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .xs\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .xs\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .xs\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .xs\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .xs\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .xs\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .xs\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .xs\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .xs\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .xs\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .xs\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .xs\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .xs\\:italic {\n    font-style: italic !important;\n  }\n\n  .xs\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .xs\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .xs\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .xs\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .xs\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .xs\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .xs\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .xs\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .xs\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .xs\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .xs\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .xs\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .xs\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .xs\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .xs\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .xs\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .xs\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .xs\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .xs\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .xs\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .xs\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .xs\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .xs\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .xs\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .xs\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .xs\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .xs\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .xs\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .xs\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .xs\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .xs\\:visible {\n    visibility: visible !important;\n  }\n\n  .xs\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .xs\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .xs\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .xs\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .xs\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .xs\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .xs\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .xs\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .xs\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .xs\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .xs\\:w-0 {\n    width: 0 !important;\n  }\n\n  .xs\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .xs\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .xs\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .xs\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .xs\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .xs\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .xs\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .xs\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .xs\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .xs\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .xs\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .xs\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .xs\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .xs\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .xs\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .xs\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .xs\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .xs\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .xs\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .xs\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .xs\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .xs\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .xs\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .xs\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .xs\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .xs\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .xs\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .xs\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .xs\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .xs\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .xs\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .xs\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .xs\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .xs\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .xs\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .xs\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .xs\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .xs\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .xs\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .xs\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .xs\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .xs\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .xs\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .xs\\:w-auto {\n    width: auto !important;\n  }\n\n  .xs\\:w-px {\n    width: 1px !important;\n  }\n\n  .xs\\:w-2px {\n    width: 2px !important;\n  }\n\n  .xs\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .xs\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .xs\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .xs\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .xs\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .xs\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .xs\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .xs\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .xs\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .xs\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .xs\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .xs\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .xs\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .xs\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .xs\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .xs\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .xs\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .xs\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .xs\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .xs\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .xs\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .xs\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .xs\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .xs\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .xs\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .xs\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .xs\\:w-full {\n    width: 100% !important;\n  }\n\n  .xs\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .xs\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .xs\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .xs\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .xs\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .xs\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .xs\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .xs\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .xs\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .xs\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .xs\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .xs\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .xs\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .xs\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .xs\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .xs\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .xs\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .xs\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .xs\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .xs\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .xs\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .xs\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .xs\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .xs\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .xs\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .xs\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .xs\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .xs\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .xs\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .xs\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .xs\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .xs\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .xs\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .xs\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .xs\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .xs\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .xs\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .xs\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .xs\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .xs\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .xs\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .xs\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .xs\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .xs\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .xs\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .xs\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .xs\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .xs\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .xs\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .xs\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .xs\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .xs\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .xs\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .xs\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .xs\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .xs\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .xs\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .xs\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .xs\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .xs\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .xs\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .xs\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .xs\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .xs\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .xs\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .xs\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .xs\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .xs\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .xs\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .xs\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .xs\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .xs\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .xs\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .xs\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .xs\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .xs\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .xs\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .xs\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .xs\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .xs\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .xs\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .xs\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .xs\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .xs\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .xs\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .xs\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .xs\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .xs\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .xs\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .xs\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .xs\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .xs\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .xs\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .xs\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .xs\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .xs\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .xs\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .xs\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .xs\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .xs\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .xs\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .xs\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .xs\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .xs\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .xs\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .xs\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .xs\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .xs\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .xs\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .xs\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .xs\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .xs\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .xs\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .xs\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .xs\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .xs\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .xs\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .xs\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .xs\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .xs\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .xs\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .xs\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .xs\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .xs\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .xs\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .xs\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .xs\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .xs\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .xs\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .xs\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .xs\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .xs\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .xs\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .xs\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .xs\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .xs\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .xs\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .xs\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .xs\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .xs\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .xs\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .xs\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .xs\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .xs\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .xs\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .xs\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .xs\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .xs\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .xs\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .xs\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .xs\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .xs\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .xs\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .xs\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .xs\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .xs\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .xs\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .xs\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .xs\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .xs\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .xs\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .xs\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .xs\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .xs\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .xs\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .xs\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .xs\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .xs\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .xs\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .xs\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .xs\\:transform-none {\n    transform: none !important;\n  }\n\n  .xs\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .xs\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .xs\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .xs\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .xs\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .xs\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .xs\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .xs\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .xs\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .xs\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .xs\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .xs\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .xs\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .xs\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .xs\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .xs\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .xs\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .xs\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .xs\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .xs\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .xs\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .xs\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .xs\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .xs\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .xs\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .xs\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .xs\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .xs\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .xs\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .xs\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .xs\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .xs\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .xs\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .xs\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .xs\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .xs\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .xs\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .xs\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .xs\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (min-width: 600px) and (max-width: 959px) {\n  .sm\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .sm\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .sm\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .sm\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .sm\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .sm\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .sm\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .sm\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .sm\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .sm\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .sm\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .sm\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .sm\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .sm\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .sm\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .sm\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .sm\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .sm\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .sm\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .sm\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .sm\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .sm\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .sm\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .sm\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .sm\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .sm\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .sm\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .sm\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .sm\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .sm\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .sm\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .sm\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .sm\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .sm\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .sm\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .sm\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .sm\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .sm\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .sm\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .sm\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .sm\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .sm\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .sm\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .sm\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .sm\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .sm\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .sm\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .sm\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .sm\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .sm\\:bg-center {\n    background-position: center !important;\n  }\n\n  .sm\\:bg-left {\n    background-position: left !important;\n  }\n\n  .sm\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .sm\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .sm\\:bg-right {\n    background-position: right !important;\n  }\n\n  .sm\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .sm\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .sm\\:bg-top {\n    background-position: top !important;\n  }\n\n  .sm\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .sm\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .sm\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .sm\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .sm\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .sm\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .sm\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .sm\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .sm\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .sm\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .sm\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .sm\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .sm\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .sm\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .sm\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .sm\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .sm\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .sm\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .sm\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .sm\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .sm\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .sm\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .sm\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .sm\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .sm\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .sm\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .sm\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .sm\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .sm\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .sm\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .sm\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .sm\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .sm\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .sm\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .sm\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .sm\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .sm\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .sm\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .sm\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .sm\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .sm\\:border-double {\n    border-style: double !important;\n  }\n\n  .sm\\:border-none {\n    border-style: none !important;\n  }\n\n  .sm\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .sm\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .sm\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .sm\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .sm\\:border {\n    border-width: 1px !important;\n  }\n\n  .sm\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .sm\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .sm\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .sm\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .sm\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .sm\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .sm\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .sm\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .sm\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .sm\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .sm\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .sm\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .sm\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .sm\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .sm\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .sm\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .sm\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .sm\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .sm\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .sm\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .sm\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .sm\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .sm\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .sm\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .sm\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .sm\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .sm\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .sm\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .sm\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .sm\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .sm\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .sm\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .sm\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .sm\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .sm\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .sm\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .sm\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .sm\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .sm\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .sm\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .sm\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .sm\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .sm\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .sm\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .sm\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .sm\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .sm\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .sm\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .sm\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .sm\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .sm\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .sm\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .sm\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .sm\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .sm\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .sm\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .sm\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .sm\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .sm\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .sm\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .sm\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .sm\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .sm\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .sm\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .sm\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .sm\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .sm\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .sm\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .sm\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .sm\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .sm\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .sm\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .sm\\:block {\n    display: block !important;\n  }\n\n  .sm\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .sm\\:inline {\n    display: inline !important;\n  }\n\n  .sm\\:flex {\n    display: flex !important;\n  }\n\n  .sm\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .sm\\:table {\n    display: table !important;\n  }\n\n  .sm\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .sm\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .sm\\:table-column {\n    display: table-column !important;\n  }\n\n  .sm\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .sm\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .sm\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .sm\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .sm\\:table-row {\n    display: table-row !important;\n  }\n\n  .sm\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .sm\\:grid {\n    display: grid !important;\n  }\n\n  .sm\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .sm\\:hidden {\n    display: none !important;\n  }\n\n  .sm\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .sm\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .sm\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .sm\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .sm\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .sm\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .sm\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .sm\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .sm\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .sm\\:items-center {\n    align-items: center !important;\n  }\n\n  .sm\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .sm\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .sm\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .sm\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .sm\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .sm\\:self-center {\n    align-self: center !important;\n  }\n\n  .sm\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .sm\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .sm\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .sm\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .sm\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .sm\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .sm\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .sm\\:content-center {\n    align-content: center !important;\n  }\n\n  .sm\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .sm\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .sm\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .sm\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .sm\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .sm\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .sm\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .sm\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .sm\\:flex-none {\n    flex: none !important;\n  }\n\n  .sm\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .sm\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .sm\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .sm\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .sm\\:order-1 {\n    order: 1 !important;\n  }\n\n  .sm\\:order-2 {\n    order: 2 !important;\n  }\n\n  .sm\\:order-3 {\n    order: 3 !important;\n  }\n\n  .sm\\:order-4 {\n    order: 4 !important;\n  }\n\n  .sm\\:order-5 {\n    order: 5 !important;\n  }\n\n  .sm\\:order-6 {\n    order: 6 !important;\n  }\n\n  .sm\\:order-7 {\n    order: 7 !important;\n  }\n\n  .sm\\:order-8 {\n    order: 8 !important;\n  }\n\n  .sm\\:order-9 {\n    order: 9 !important;\n  }\n\n  .sm\\:order-10 {\n    order: 10 !important;\n  }\n\n  .sm\\:order-11 {\n    order: 11 !important;\n  }\n\n  .sm\\:order-12 {\n    order: 12 !important;\n  }\n\n  .sm\\:order-first {\n    order: -9999 !important;\n  }\n\n  .sm\\:order-last {\n    order: 9999 !important;\n  }\n\n  .sm\\:order-none {\n    order: 0 !important;\n  }\n\n  .sm\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .sm\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .sm\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .sm\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .sm\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .sm\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .sm\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .sm\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .sm\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .sm\\:h-0 {\n    height: 0 !important;\n  }\n\n  .sm\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .sm\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .sm\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .sm\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .sm\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .sm\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .sm\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .sm\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .sm\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .sm\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .sm\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .sm\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .sm\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .sm\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .sm\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .sm\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .sm\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .sm\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .sm\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .sm\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .sm\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .sm\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .sm\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .sm\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .sm\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .sm\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .sm\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .sm\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .sm\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .sm\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .sm\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .sm\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .sm\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .sm\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .sm\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .sm\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .sm\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .sm\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .sm\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .sm\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .sm\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .sm\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .sm\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .sm\\:h-auto {\n    height: auto !important;\n  }\n\n  .sm\\:h-px {\n    height: 1px !important;\n  }\n\n  .sm\\:h-2px {\n    height: 2px !important;\n  }\n\n  .sm\\:h-full {\n    height: 100% !important;\n  }\n\n  .sm\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .sm\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .sm\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .sm\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .sm\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .sm\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .sm\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .sm\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .sm\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .sm\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .sm\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .sm\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .sm\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .sm\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .sm\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .sm\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .sm\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .sm\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .sm\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .sm\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .sm\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .sm\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .sm\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .sm\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .sm\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .sm\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .sm\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .sm\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .sm\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .sm\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .sm\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .sm\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .sm\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .sm\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .sm\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .sm\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .sm\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .sm\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .sm\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .sm\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .sm\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .sm\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .sm\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .sm\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .sm\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .sm\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .sm\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .sm\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .sm\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .sm\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .sm\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .sm\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .sm\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .sm\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .sm\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .sm\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .sm\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .sm\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .sm\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .sm\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .sm\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .sm\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .sm\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .sm\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .sm\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .sm\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .sm\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .sm\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .sm\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .sm\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .sm\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .sm\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .sm\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .sm\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .sm\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .sm\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .sm\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .sm\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .sm\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .sm\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .sm\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .sm\\:m-auto {\n    margin: auto !important;\n  }\n\n  .sm\\:m-px {\n    margin: 1px !important;\n  }\n\n  .sm\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .sm\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .sm\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .sm\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .sm\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .sm\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .sm\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .sm\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .sm\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .sm\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .sm\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .sm\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .sm\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .sm\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .sm\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .sm\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .sm\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .sm\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .sm\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .sm\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .sm\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .sm\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .sm\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .sm\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .sm\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .sm\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .sm\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .sm\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .sm\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .sm\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .sm\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .sm\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .sm\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .sm\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .sm\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .sm\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .sm\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .sm\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .sm\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .sm\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .sm\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .sm\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .sm\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .sm\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .sm\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .sm\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .sm\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .sm\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .sm\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .sm\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .sm\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .sm\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .sm\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .sm\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .sm\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .sm\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .sm\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .sm\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .sm\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .sm\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .sm\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .sm\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .sm\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .sm\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .sm\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .sm\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .sm\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .sm\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .sm\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .sm\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .sm\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .sm\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .sm\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .sm\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .sm\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .sm\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .sm\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .sm\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .sm\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .sm\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .sm\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .sm\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .sm\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .sm\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .sm\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .sm\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .sm\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .sm\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .sm\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .sm\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .sm\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .sm\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .sm\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .sm\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .sm\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .sm\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .sm\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .sm\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .sm\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .sm\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .sm\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .sm\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .sm\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .sm\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .sm\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .sm\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .sm\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .sm\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .sm\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .sm\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .sm\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .sm\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .sm\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .sm\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .sm\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .sm\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .sm\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .sm\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .sm\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .sm\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .sm\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .sm\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .sm\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .sm\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .sm\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .sm\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .sm\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .sm\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .sm\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .sm\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .sm\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .sm\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .sm\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .sm\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .sm\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .sm\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .sm\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .sm\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .sm\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .sm\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .sm\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .sm\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .sm\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .sm\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .sm\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .sm\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .sm\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .sm\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .sm\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .sm\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .sm\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .sm\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .sm\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .sm\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .sm\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .sm\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .sm\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .sm\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .sm\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .sm\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .sm\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .sm\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .sm\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .sm\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .sm\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .sm\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .sm\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .sm\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .sm\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .sm\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .sm\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .sm\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .sm\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .sm\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .sm\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .sm\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .sm\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .sm\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .sm\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .sm\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .sm\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .sm\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .sm\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .sm\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .sm\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .sm\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .sm\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .sm\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .sm\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .sm\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .sm\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .sm\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .sm\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .sm\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .sm\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .sm\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .sm\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .sm\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .sm\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .sm\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .sm\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .sm\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .sm\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .sm\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .sm\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .sm\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .sm\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .sm\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .sm\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .sm\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .sm\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .sm\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .sm\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .sm\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .sm\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .sm\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .sm\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .sm\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .sm\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .sm\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .sm\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .sm\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .sm\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .sm\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .sm\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .sm\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .sm\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .sm\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .sm\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .sm\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .sm\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .sm\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .sm\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .sm\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .sm\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .sm\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .sm\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .sm\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .sm\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .sm\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .sm\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .sm\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .sm\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .sm\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .sm\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .sm\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .sm\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .sm\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .sm\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .sm\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .sm\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .sm\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .sm\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .sm\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .sm\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .sm\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .sm\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .sm\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .sm\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .sm\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .sm\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .sm\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .sm\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .sm\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .sm\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .sm\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .sm\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .sm\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .sm\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .sm\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .sm\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .sm\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .sm\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .sm\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .sm\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .sm\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .sm\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .sm\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .sm\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .sm\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .sm\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .sm\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .sm\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .sm\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .sm\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .sm\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .sm\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .sm\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .sm\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .sm\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .sm\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .sm\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .sm\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .sm\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .sm\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .sm\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .sm\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .sm\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .sm\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .sm\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .sm\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .sm\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .sm\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .sm\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .sm\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .sm\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .sm\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .sm\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .sm\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .sm\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .sm\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .sm\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .sm\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .sm\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .sm\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .sm\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .sm\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .sm\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .sm\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .sm\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .sm\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .sm\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .sm\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .sm\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .sm\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .sm\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .sm\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .sm\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .sm\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .sm\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .sm\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .sm\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .sm\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .sm\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .sm\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .sm\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .sm\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .sm\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .sm\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .sm\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .sm\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .sm\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .sm\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .sm\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .sm\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .sm\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .sm\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .sm\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .sm\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .sm\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .sm\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .sm\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .sm\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .sm\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .sm\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .sm\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .sm\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .sm\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .sm\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .sm\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .sm\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .sm\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .sm\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .sm\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .sm\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .sm\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .sm\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .sm\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .sm\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .sm\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .sm\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .sm\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .sm\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .sm\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .sm\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .sm\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .sm\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .sm\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .sm\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .sm\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .sm\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .sm\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .sm\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .sm\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .sm\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .sm\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .sm\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .sm\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .sm\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .sm\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .sm\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .sm\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .sm\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .sm\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .sm\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .sm\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .sm\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .sm\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .sm\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .sm\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .sm\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .sm\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .sm\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .sm\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .sm\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .sm\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .sm\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .sm\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .sm\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .sm\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .sm\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .sm\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .sm\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .sm\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .sm\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .sm\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .sm\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .sm\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .sm\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .sm\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .sm\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .sm\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .sm\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .sm\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .sm\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .sm\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .sm\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .sm\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .sm\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .sm\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .sm\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .sm\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .sm\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .sm\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .sm\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .sm\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .sm\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .sm\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .sm\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .sm\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .sm\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .sm\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .sm\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .sm\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .sm\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .sm\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .sm\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .sm\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .sm\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .sm\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .sm\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .sm\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .sm\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .sm\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .sm\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .sm\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .sm\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .sm\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .sm\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .sm\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .sm\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .sm\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .sm\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .sm\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .sm\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .sm\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .sm\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .sm\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .sm\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .sm\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .sm\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .sm\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .sm\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .sm\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .sm\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .sm\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .sm\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .sm\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .sm\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .sm\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .sm\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .sm\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .sm\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .sm\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .sm\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .sm\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .sm\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .sm\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .sm\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .sm\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .sm\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .sm\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .sm\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .sm\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .sm\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .sm\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .sm\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .sm\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .sm\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .sm\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .sm\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .sm\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .sm\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .sm\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .sm\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .sm\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .sm\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .sm\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .sm\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .sm\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .sm\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .sm\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .sm\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .sm\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .sm\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .sm\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .sm\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .sm\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .sm\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .sm\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .sm\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .sm\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .sm\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .sm\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .sm\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .sm\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .sm\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .sm\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .sm\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .sm\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .sm\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .sm\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .sm\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .sm\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .sm\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .sm\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .sm\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .sm\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .sm\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .sm\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .sm\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .sm\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .sm\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .sm\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .sm\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .sm\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .sm\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .sm\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .sm\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .sm\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .sm\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .sm\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .sm\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .sm\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .sm\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .sm\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .sm\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .sm\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .sm\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .sm\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .sm\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .sm\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .sm\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .sm\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .sm\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .sm\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .sm\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .sm\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .sm\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .sm\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .sm\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .sm\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .sm\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .sm\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .sm\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .sm\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .sm\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .sm\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .sm\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .sm\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .sm\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .sm\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .sm\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .sm\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .sm\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .sm\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .sm\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .sm\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .sm\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .sm\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .sm\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .sm\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .sm\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .sm\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .sm\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .sm\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .sm\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .sm\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .sm\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .sm\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .sm\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .sm\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .sm\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .sm\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .sm\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .sm\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .sm\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .sm\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .sm\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .sm\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .sm\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .sm\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .sm\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .sm\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .sm\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .sm\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .sm\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .sm\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .sm\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .sm\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .sm\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .sm\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .sm\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .sm\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .sm\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .sm\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .sm\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .sm\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .sm\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .sm\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .sm\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .sm\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .sm\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .sm\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .sm\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .sm\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .sm\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .sm\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .sm\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .sm\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .sm\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .sm\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .sm\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .sm\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .sm\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .sm\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .sm\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .sm\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .sm\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .sm\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .sm\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .sm\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .sm\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .sm\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .sm\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .sm\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .sm\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .sm\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .sm\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .sm\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .sm\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .sm\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .sm\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .sm\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .sm\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .sm\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .sm\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .sm\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .sm\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .sm\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .sm\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .sm\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .sm\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .sm\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .sm\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .sm\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .sm\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .sm\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .sm\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .sm\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .sm\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .sm\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .sm\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .sm\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .sm\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .sm\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .sm\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .sm\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .sm\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .sm\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .sm\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .sm\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .sm\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .sm\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .sm\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .sm\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .sm\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .sm\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .sm\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .sm\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .sm\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .sm\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .sm\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .sm\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .sm\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .sm\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .sm\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .sm\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .sm\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .sm\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .sm\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .sm\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .sm\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .sm\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .sm\\:p-px {\n    padding: 1px !important;\n  }\n\n  .sm\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .sm\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .sm\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .sm\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .sm\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .sm\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .sm\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .sm\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .sm\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .sm\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .sm\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .sm\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .sm\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .sm\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .sm\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .sm\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .sm\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .sm\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .sm\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .sm\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .sm\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .sm\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .sm\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .sm\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .sm\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .sm\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .sm\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .sm\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .sm\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .sm\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .sm\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .sm\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .sm\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .sm\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .sm\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .sm\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .sm\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .sm\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .sm\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .sm\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .sm\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .sm\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .sm\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .sm\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .sm\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .sm\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .sm\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .sm\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .sm\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .sm\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .sm\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .sm\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .sm\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .sm\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .sm\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .sm\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .sm\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .sm\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .sm\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .sm\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .sm\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .sm\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .sm\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .sm\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .sm\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .sm\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .sm\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .sm\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .sm\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .sm\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .sm\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .sm\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .sm\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .sm\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .sm\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .sm\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .sm\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .sm\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .sm\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .sm\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .sm\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .sm\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .sm\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .sm\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .sm\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .sm\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .sm\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .sm\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .sm\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .sm\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .sm\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .sm\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .sm\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .sm\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .sm\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .sm\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .sm\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .sm\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .sm\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .sm\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .sm\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .sm\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .sm\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .sm\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .sm\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .sm\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .sm\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .sm\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .sm\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .sm\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .sm\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .sm\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .sm\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .sm\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .sm\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .sm\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .sm\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .sm\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .sm\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .sm\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .sm\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .sm\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .sm\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .sm\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .sm\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .sm\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .sm\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .sm\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .sm\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .sm\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .sm\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .sm\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .sm\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .sm\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .sm\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .sm\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .sm\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .sm\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .sm\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .sm\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .sm\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .sm\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .sm\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .sm\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .sm\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .sm\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .sm\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .sm\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .sm\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .sm\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .sm\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .sm\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .sm\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .sm\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .sm\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .sm\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .sm\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .sm\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .sm\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .sm\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .sm\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .sm\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .sm\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .sm\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .sm\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .sm\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .sm\\:static {\n    position: static !important;\n  }\n\n  .sm\\:fixed {\n    position: fixed !important;\n  }\n\n  .sm\\:absolute {\n    position: absolute !important;\n  }\n\n  .sm\\:relative {\n    position: relative !important;\n  }\n\n  .sm\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .sm\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .sm\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .sm\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .sm\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .sm\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .sm\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .sm\\:top-0 {\n    top: 0 !important;\n  }\n\n  .sm\\:right-0 {\n    right: 0 !important;\n  }\n\n  .sm\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .sm\\:left-0 {\n    left: 0 !important;\n  }\n\n  .sm\\:top-auto {\n    top: auto !important;\n  }\n\n  .sm\\:right-auto {\n    right: auto !important;\n  }\n\n  .sm\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .sm\\:left-auto {\n    left: auto !important;\n  }\n\n  .sm\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .sm\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .sm\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .sm\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .sm\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .sm\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .sm\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .sm\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .sm\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .sm\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .sm\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .sm\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .sm\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .sm\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .sm\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .sm\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .sm\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .sm\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .sm\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .sm\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .sm\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .sm\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .sm\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .sm\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .sm\\:text-left {\n    text-align: left !important;\n  }\n\n  .sm\\:text-center {\n    text-align: center !important;\n  }\n\n  .sm\\:text-right {\n    text-align: right !important;\n  }\n\n  .sm\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .sm\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .sm\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .sm\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .sm\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .sm\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .sm\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .sm\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .sm\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .sm\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .sm\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .sm\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .sm\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .sm\\:italic {\n    font-style: italic !important;\n  }\n\n  .sm\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .sm\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .sm\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .sm\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .sm\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .sm\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .sm\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .sm\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .sm\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .sm\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .sm\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .sm\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .sm\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .sm\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .sm\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .sm\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .sm\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .sm\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .sm\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .sm\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .sm\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .sm\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .sm\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .sm\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .sm\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .sm\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .sm\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .sm\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .sm\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .sm\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .sm\\:visible {\n    visibility: visible !important;\n  }\n\n  .sm\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .sm\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .sm\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .sm\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .sm\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .sm\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .sm\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .sm\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .sm\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .sm\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .sm\\:w-0 {\n    width: 0 !important;\n  }\n\n  .sm\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .sm\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .sm\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .sm\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .sm\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .sm\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .sm\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .sm\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .sm\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .sm\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .sm\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .sm\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .sm\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .sm\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .sm\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .sm\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .sm\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .sm\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .sm\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .sm\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .sm\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .sm\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .sm\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .sm\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .sm\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .sm\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .sm\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .sm\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .sm\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .sm\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .sm\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .sm\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .sm\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .sm\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .sm\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .sm\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .sm\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .sm\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .sm\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .sm\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .sm\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .sm\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .sm\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .sm\\:w-auto {\n    width: auto !important;\n  }\n\n  .sm\\:w-px {\n    width: 1px !important;\n  }\n\n  .sm\\:w-2px {\n    width: 2px !important;\n  }\n\n  .sm\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .sm\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .sm\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .sm\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .sm\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .sm\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .sm\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .sm\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .sm\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .sm\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .sm\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .sm\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .sm\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .sm\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .sm\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .sm\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .sm\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .sm\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .sm\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .sm\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .sm\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .sm\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .sm\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .sm\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .sm\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .sm\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .sm\\:w-full {\n    width: 100% !important;\n  }\n\n  .sm\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .sm\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .sm\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .sm\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .sm\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .sm\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .sm\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .sm\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .sm\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .sm\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .sm\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .sm\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .sm\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .sm\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .sm\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .sm\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .sm\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .sm\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .sm\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .sm\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .sm\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .sm\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .sm\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .sm\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .sm\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .sm\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .sm\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .sm\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .sm\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .sm\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .sm\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .sm\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .sm\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .sm\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .sm\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .sm\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .sm\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .sm\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .sm\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .sm\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .sm\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .sm\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .sm\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .sm\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .sm\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .sm\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .sm\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .sm\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .sm\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .sm\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .sm\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .sm\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .sm\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .sm\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .sm\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .sm\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .sm\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .sm\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .sm\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .sm\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .sm\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .sm\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .sm\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .sm\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .sm\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .sm\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .sm\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .sm\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .sm\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .sm\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .sm\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .sm\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .sm\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .sm\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .sm\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .sm\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .sm\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .sm\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .sm\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .sm\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .sm\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .sm\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .sm\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .sm\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .sm\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .sm\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .sm\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .sm\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .sm\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .sm\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .sm\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .sm\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .sm\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .sm\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .sm\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .sm\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .sm\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .sm\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .sm\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .sm\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .sm\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .sm\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .sm\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .sm\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .sm\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .sm\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .sm\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .sm\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .sm\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .sm\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .sm\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .sm\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .sm\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .sm\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .sm\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .sm\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .sm\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .sm\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .sm\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .sm\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .sm\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .sm\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .sm\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .sm\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .sm\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .sm\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .sm\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .sm\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .sm\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .sm\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .sm\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .sm\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .sm\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .sm\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .sm\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .sm\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .sm\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .sm\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .sm\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .sm\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .sm\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .sm\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .sm\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .sm\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .sm\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .sm\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .sm\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .sm\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .sm\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .sm\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .sm\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .sm\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .sm\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .sm\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .sm\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .sm\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .sm\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .sm\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .sm\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .sm\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .sm\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .sm\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .sm\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .sm\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .sm\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .sm\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .sm\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .sm\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .sm\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .sm\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .sm\\:transform-none {\n    transform: none !important;\n  }\n\n  .sm\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .sm\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .sm\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .sm\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .sm\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .sm\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .sm\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .sm\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .sm\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .sm\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .sm\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .sm\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .sm\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .sm\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .sm\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .sm\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .sm\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .sm\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .sm\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .sm\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .sm\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .sm\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .sm\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .sm\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .sm\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .sm\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .sm\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .sm\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .sm\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .sm\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .sm\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .sm\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .sm\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .sm\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .sm\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .sm\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .sm\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .sm\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .sm\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (min-width: 960px) and (max-width: 1279px) {\n  .md\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .md\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .md\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .md\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .md\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .md\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .md\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .md\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .md\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .md\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .md\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .md\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .md\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .md\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .md\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .md\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .md\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .md\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .md\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .md\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .md\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .md\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .md\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .md\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .md\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .md\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .md\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .md\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .md\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .md\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .md\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .md\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .md\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .md\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .md\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .md\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .md\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .md\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .md\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .md\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .md\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .md\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .md\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .md\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .md\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .md\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .md\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .md\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .md\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .md\\:bg-center {\n    background-position: center !important;\n  }\n\n  .md\\:bg-left {\n    background-position: left !important;\n  }\n\n  .md\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .md\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .md\\:bg-right {\n    background-position: right !important;\n  }\n\n  .md\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .md\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .md\\:bg-top {\n    background-position: top !important;\n  }\n\n  .md\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .md\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .md\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .md\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .md\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .md\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .md\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .md\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .md\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .md\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .md\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .md\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .md\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .md\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .md\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .md\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .md\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .md\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .md\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .md\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .md\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .md\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .md\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .md\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .md\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .md\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .md\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .md\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .md\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .md\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .md\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .md\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .md\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .md\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .md\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .md\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .md\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .md\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .md\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .md\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .md\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .md\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .md\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .md\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .md\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .md\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .md\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .md\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .md\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .md\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .md\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .md\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .md\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .md\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .md\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .md\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .md\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .md\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .md\\:border-double {\n    border-style: double !important;\n  }\n\n  .md\\:border-none {\n    border-style: none !important;\n  }\n\n  .md\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .md\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .md\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .md\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .md\\:border {\n    border-width: 1px !important;\n  }\n\n  .md\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .md\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .md\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .md\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .md\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .md\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .md\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .md\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .md\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .md\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .md\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .md\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .md\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .md\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .md\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .md\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .md\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .md\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .md\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .md\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .md\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .md\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .md\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .md\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .md\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .md\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .md\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .md\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .md\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .md\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .md\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .md\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .md\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .md\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .md\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .md\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .md\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .md\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .md\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .md\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .md\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .md\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .md\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .md\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .md\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .md\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .md\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .md\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .md\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .md\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .md\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .md\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .md\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .md\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .md\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .md\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .md\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .md\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .md\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .md\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .md\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .md\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .md\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .md\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .md\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .md\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .md\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .md\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .md\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .md\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .md\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .md\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .md\\:block {\n    display: block !important;\n  }\n\n  .md\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .md\\:inline {\n    display: inline !important;\n  }\n\n  .md\\:flex {\n    display: flex !important;\n  }\n\n  .md\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .md\\:table {\n    display: table !important;\n  }\n\n  .md\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .md\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .md\\:table-column {\n    display: table-column !important;\n  }\n\n  .md\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .md\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .md\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .md\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .md\\:table-row {\n    display: table-row !important;\n  }\n\n  .md\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .md\\:grid {\n    display: grid !important;\n  }\n\n  .md\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .md\\:hidden {\n    display: none !important;\n  }\n\n  .md\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .md\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .md\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .md\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .md\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .md\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .md\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .md\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .md\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .md\\:items-center {\n    align-items: center !important;\n  }\n\n  .md\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .md\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .md\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .md\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .md\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .md\\:self-center {\n    align-self: center !important;\n  }\n\n  .md\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .md\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .md\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .md\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .md\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .md\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .md\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .md\\:content-center {\n    align-content: center !important;\n  }\n\n  .md\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .md\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .md\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .md\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .md\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .md\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .md\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .md\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .md\\:flex-none {\n    flex: none !important;\n  }\n\n  .md\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .md\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .md\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .md\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .md\\:order-1 {\n    order: 1 !important;\n  }\n\n  .md\\:order-2 {\n    order: 2 !important;\n  }\n\n  .md\\:order-3 {\n    order: 3 !important;\n  }\n\n  .md\\:order-4 {\n    order: 4 !important;\n  }\n\n  .md\\:order-5 {\n    order: 5 !important;\n  }\n\n  .md\\:order-6 {\n    order: 6 !important;\n  }\n\n  .md\\:order-7 {\n    order: 7 !important;\n  }\n\n  .md\\:order-8 {\n    order: 8 !important;\n  }\n\n  .md\\:order-9 {\n    order: 9 !important;\n  }\n\n  .md\\:order-10 {\n    order: 10 !important;\n  }\n\n  .md\\:order-11 {\n    order: 11 !important;\n  }\n\n  .md\\:order-12 {\n    order: 12 !important;\n  }\n\n  .md\\:order-first {\n    order: -9999 !important;\n  }\n\n  .md\\:order-last {\n    order: 9999 !important;\n  }\n\n  .md\\:order-none {\n    order: 0 !important;\n  }\n\n  .md\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .md\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .md\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .md\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .md\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .md\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .md\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .md\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .md\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .md\\:h-0 {\n    height: 0 !important;\n  }\n\n  .md\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .md\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .md\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .md\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .md\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .md\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .md\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .md\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .md\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .md\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .md\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .md\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .md\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .md\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .md\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .md\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .md\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .md\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .md\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .md\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .md\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .md\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .md\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .md\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .md\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .md\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .md\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .md\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .md\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .md\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .md\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .md\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .md\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .md\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .md\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .md\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .md\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .md\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .md\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .md\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .md\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .md\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .md\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .md\\:h-auto {\n    height: auto !important;\n  }\n\n  .md\\:h-px {\n    height: 1px !important;\n  }\n\n  .md\\:h-2px {\n    height: 2px !important;\n  }\n\n  .md\\:h-full {\n    height: 100% !important;\n  }\n\n  .md\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .md\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .md\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .md\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .md\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .md\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .md\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .md\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .md\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .md\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .md\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .md\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .md\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .md\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .md\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .md\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .md\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .md\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .md\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .md\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .md\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .md\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .md\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .md\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .md\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .md\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .md\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .md\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .md\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .md\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .md\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .md\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .md\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .md\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .md\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .md\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .md\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .md\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .md\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .md\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .md\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .md\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .md\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .md\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .md\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .md\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .md\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .md\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .md\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .md\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .md\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .md\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .md\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .md\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .md\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .md\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .md\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .md\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .md\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .md\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .md\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .md\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .md\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .md\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .md\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .md\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .md\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .md\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .md\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .md\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .md\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .md\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .md\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .md\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .md\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .md\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .md\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .md\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .md\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .md\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .md\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .md\\:m-auto {\n    margin: auto !important;\n  }\n\n  .md\\:m-px {\n    margin: 1px !important;\n  }\n\n  .md\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .md\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .md\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .md\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .md\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .md\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .md\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .md\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .md\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .md\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .md\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .md\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .md\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .md\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .md\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .md\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .md\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .md\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .md\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .md\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .md\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .md\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .md\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .md\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .md\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .md\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .md\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .md\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .md\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .md\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .md\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .md\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .md\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .md\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .md\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .md\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .md\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .md\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .md\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .md\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .md\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .md\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .md\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .md\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .md\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .md\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .md\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .md\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .md\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .md\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .md\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .md\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .md\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .md\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .md\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .md\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .md\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .md\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .md\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .md\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .md\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .md\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .md\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .md\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .md\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .md\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .md\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .md\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .md\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .md\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .md\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .md\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .md\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .md\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .md\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .md\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .md\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .md\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .md\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .md\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .md\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .md\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .md\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .md\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .md\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .md\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .md\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .md\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .md\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .md\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .md\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .md\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .md\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .md\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .md\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .md\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .md\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .md\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .md\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .md\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .md\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .md\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .md\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .md\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .md\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .md\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .md\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .md\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .md\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .md\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .md\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .md\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .md\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .md\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .md\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .md\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .md\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .md\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .md\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .md\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .md\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .md\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .md\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .md\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .md\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .md\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .md\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .md\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .md\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .md\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .md\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .md\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .md\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .md\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .md\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .md\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .md\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .md\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .md\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .md\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .md\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .md\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .md\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .md\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .md\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .md\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .md\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .md\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .md\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .md\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .md\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .md\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .md\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .md\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .md\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .md\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .md\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .md\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .md\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .md\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .md\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .md\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .md\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .md\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .md\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .md\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .md\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .md\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .md\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .md\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .md\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .md\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .md\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .md\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .md\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .md\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .md\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .md\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .md\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .md\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .md\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .md\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .md\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .md\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .md\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .md\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .md\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .md\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .md\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .md\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .md\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .md\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .md\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .md\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .md\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .md\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .md\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .md\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .md\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .md\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .md\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .md\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .md\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .md\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .md\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .md\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .md\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .md\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .md\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .md\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .md\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .md\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .md\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .md\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .md\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .md\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .md\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .md\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .md\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .md\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .md\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .md\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .md\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .md\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .md\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .md\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .md\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .md\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .md\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .md\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .md\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .md\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .md\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .md\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .md\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .md\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .md\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .md\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .md\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .md\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .md\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .md\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .md\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .md\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .md\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .md\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .md\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .md\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .md\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .md\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .md\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .md\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .md\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .md\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .md\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .md\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .md\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .md\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .md\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .md\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .md\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .md\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .md\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .md\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .md\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .md\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .md\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .md\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .md\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .md\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .md\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .md\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .md\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .md\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .md\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .md\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .md\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .md\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .md\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .md\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .md\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .md\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .md\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .md\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .md\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .md\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .md\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .md\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .md\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .md\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .md\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .md\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .md\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .md\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .md\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .md\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .md\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .md\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .md\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .md\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .md\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .md\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .md\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .md\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .md\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .md\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .md\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .md\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .md\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .md\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .md\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .md\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .md\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .md\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .md\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .md\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .md\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .md\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .md\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .md\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .md\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .md\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .md\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .md\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .md\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .md\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .md\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .md\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .md\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .md\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .md\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .md\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .md\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .md\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .md\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .md\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .md\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .md\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .md\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .md\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .md\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .md\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .md\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .md\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .md\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .md\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .md\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .md\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .md\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .md\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .md\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .md\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .md\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .md\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .md\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .md\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .md\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .md\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .md\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .md\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .md\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .md\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .md\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .md\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .md\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .md\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .md\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .md\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .md\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .md\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .md\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .md\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .md\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .md\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .md\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .md\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .md\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .md\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .md\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .md\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .md\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .md\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .md\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .md\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .md\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .md\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .md\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .md\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .md\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .md\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .md\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .md\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .md\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .md\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .md\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .md\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .md\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .md\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .md\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .md\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .md\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .md\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .md\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .md\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .md\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .md\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .md\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .md\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .md\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .md\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .md\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .md\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .md\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .md\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .md\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .md\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .md\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .md\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .md\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .md\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .md\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .md\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .md\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .md\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .md\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .md\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .md\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .md\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .md\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .md\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .md\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .md\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .md\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .md\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .md\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .md\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .md\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .md\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .md\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .md\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .md\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .md\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .md\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .md\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .md\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .md\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .md\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .md\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .md\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .md\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .md\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .md\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .md\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .md\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .md\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .md\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .md\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .md\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .md\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .md\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .md\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .md\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .md\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .md\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .md\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .md\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .md\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .md\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .md\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .md\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .md\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .md\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .md\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .md\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .md\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .md\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .md\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .md\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .md\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .md\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .md\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .md\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .md\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .md\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .md\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .md\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .md\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .md\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .md\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .md\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .md\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .md\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .md\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .md\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .md\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .md\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .md\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .md\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .md\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .md\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .md\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .md\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .md\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .md\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .md\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .md\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .md\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .md\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .md\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .md\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .md\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .md\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .md\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .md\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .md\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .md\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .md\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .md\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .md\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .md\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .md\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .md\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .md\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .md\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .md\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .md\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .md\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .md\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .md\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .md\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .md\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .md\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .md\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .md\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .md\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .md\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .md\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .md\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .md\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .md\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .md\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .md\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .md\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .md\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .md\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .md\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .md\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .md\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .md\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .md\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .md\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .md\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .md\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .md\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .md\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .md\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .md\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .md\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .md\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .md\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .md\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .md\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .md\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .md\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .md\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .md\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .md\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .md\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .md\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .md\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .md\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .md\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .md\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .md\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .md\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .md\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .md\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .md\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .md\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .md\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .md\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .md\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .md\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .md\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .md\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .md\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .md\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .md\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .md\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .md\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .md\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .md\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .md\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .md\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .md\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .md\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .md\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .md\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .md\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .md\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .md\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .md\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .md\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .md\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .md\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .md\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .md\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .md\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .md\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .md\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .md\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .md\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .md\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .md\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .md\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .md\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .md\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .md\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .md\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .md\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .md\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .md\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .md\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .md\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .md\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .md\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .md\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .md\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .md\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .md\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .md\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .md\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .md\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .md\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .md\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .md\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .md\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .md\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .md\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .md\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .md\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .md\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .md\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .md\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .md\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .md\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .md\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .md\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .md\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .md\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .md\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .md\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .md\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .md\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .md\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .md\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .md\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .md\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .md\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .md\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .md\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .md\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .md\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .md\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .md\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .md\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .md\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .md\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .md\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .md\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .md\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .md\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .md\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .md\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .md\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .md\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .md\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .md\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .md\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .md\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .md\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .md\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .md\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .md\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .md\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .md\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .md\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .md\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .md\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .md\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .md\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .md\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .md\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .md\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .md\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .md\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .md\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .md\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .md\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .md\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .md\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .md\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .md\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .md\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .md\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .md\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .md\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .md\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .md\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .md\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .md\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .md\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .md\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .md\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .md\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .md\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .md\\:p-px {\n    padding: 1px !important;\n  }\n\n  .md\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .md\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .md\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .md\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .md\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .md\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .md\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .md\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .md\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .md\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .md\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .md\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .md\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .md\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .md\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .md\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .md\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .md\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .md\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .md\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .md\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .md\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .md\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .md\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .md\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .md\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .md\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .md\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .md\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .md\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .md\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .md\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .md\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .md\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .md\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .md\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .md\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .md\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .md\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .md\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .md\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .md\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .md\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .md\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .md\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .md\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .md\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .md\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .md\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .md\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .md\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .md\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .md\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .md\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .md\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .md\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .md\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .md\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .md\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .md\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .md\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .md\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .md\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .md\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .md\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .md\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .md\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .md\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .md\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .md\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .md\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .md\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .md\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .md\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .md\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .md\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .md\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .md\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .md\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .md\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .md\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .md\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .md\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .md\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .md\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .md\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .md\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .md\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .md\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .md\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .md\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .md\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .md\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .md\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .md\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .md\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .md\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .md\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .md\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .md\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .md\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .md\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .md\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .md\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .md\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .md\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .md\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .md\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .md\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .md\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .md\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .md\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .md\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .md\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .md\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .md\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .md\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .md\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .md\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .md\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .md\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .md\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .md\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .md\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .md\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .md\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .md\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .md\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .md\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .md\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .md\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .md\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .md\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .md\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .md\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .md\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .md\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .md\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .md\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .md\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .md\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .md\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .md\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .md\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .md\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .md\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .md\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .md\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .md\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .md\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .md\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .md\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .md\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .md\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .md\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .md\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .md\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .md\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .md\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .md\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .md\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .md\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .md\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .md\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .md\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .md\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .md\\:static {\n    position: static !important;\n  }\n\n  .md\\:fixed {\n    position: fixed !important;\n  }\n\n  .md\\:absolute {\n    position: absolute !important;\n  }\n\n  .md\\:relative {\n    position: relative !important;\n  }\n\n  .md\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .md\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .md\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .md\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .md\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .md\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .md\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .md\\:top-0 {\n    top: 0 !important;\n  }\n\n  .md\\:right-0 {\n    right: 0 !important;\n  }\n\n  .md\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .md\\:left-0 {\n    left: 0 !important;\n  }\n\n  .md\\:top-auto {\n    top: auto !important;\n  }\n\n  .md\\:right-auto {\n    right: auto !important;\n  }\n\n  .md\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .md\\:left-auto {\n    left: auto !important;\n  }\n\n  .md\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .md\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .md\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .md\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .md\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .md\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .md\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .md\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .md\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .md\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .md\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .md\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .md\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .md\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .md\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .md\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .md\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .md\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .md\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .md\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .md\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .md\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .md\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .md\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .md\\:text-left {\n    text-align: left !important;\n  }\n\n  .md\\:text-center {\n    text-align: center !important;\n  }\n\n  .md\\:text-right {\n    text-align: right !important;\n  }\n\n  .md\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .md\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .md\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .md\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .md\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .md\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .md\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .md\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .md\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .md\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .md\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .md\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .md\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .md\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .md\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .md\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .md\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .md\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .md\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .md\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .md\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .md\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .md\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .md\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .md\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .md\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .md\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .md\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .md\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .md\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .md\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .md\\:italic {\n    font-style: italic !important;\n  }\n\n  .md\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .md\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .md\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .md\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .md\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .md\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .md\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .md\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .md\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .md\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .md\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .md\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .md\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .md\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .md\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .md\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .md\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .md\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .md\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .md\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .md\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .md\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .md\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .md\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .md\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .md\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .md\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .md\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .md\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .md\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .md\\:visible {\n    visibility: visible !important;\n  }\n\n  .md\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .md\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .md\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .md\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .md\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .md\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .md\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .md\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .md\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .md\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .md\\:w-0 {\n    width: 0 !important;\n  }\n\n  .md\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .md\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .md\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .md\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .md\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .md\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .md\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .md\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .md\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .md\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .md\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .md\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .md\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .md\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .md\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .md\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .md\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .md\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .md\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .md\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .md\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .md\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .md\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .md\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .md\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .md\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .md\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .md\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .md\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .md\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .md\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .md\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .md\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .md\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .md\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .md\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .md\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .md\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .md\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .md\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .md\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .md\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .md\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .md\\:w-auto {\n    width: auto !important;\n  }\n\n  .md\\:w-px {\n    width: 1px !important;\n  }\n\n  .md\\:w-2px {\n    width: 2px !important;\n  }\n\n  .md\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .md\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .md\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .md\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .md\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .md\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .md\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .md\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .md\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .md\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .md\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .md\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .md\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .md\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .md\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .md\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .md\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .md\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .md\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .md\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .md\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .md\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .md\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .md\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .md\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .md\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .md\\:w-full {\n    width: 100% !important;\n  }\n\n  .md\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .md\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .md\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .md\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .md\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .md\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .md\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .md\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .md\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .md\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .md\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .md\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .md\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .md\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .md\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .md\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .md\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .md\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .md\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .md\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .md\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .md\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .md\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .md\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .md\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .md\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .md\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .md\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .md\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .md\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .md\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .md\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .md\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .md\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .md\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .md\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .md\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .md\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .md\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .md\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .md\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .md\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .md\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .md\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .md\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .md\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .md\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .md\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .md\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .md\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .md\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .md\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .md\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .md\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .md\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .md\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .md\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .md\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .md\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .md\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .md\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .md\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .md\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .md\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .md\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .md\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .md\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .md\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .md\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .md\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .md\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .md\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .md\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .md\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .md\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .md\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .md\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .md\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .md\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .md\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .md\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .md\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .md\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .md\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .md\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .md\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .md\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .md\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .md\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .md\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .md\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .md\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .md\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .md\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .md\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .md\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .md\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .md\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .md\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .md\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .md\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .md\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .md\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .md\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .md\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .md\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .md\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .md\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .md\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .md\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .md\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .md\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .md\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .md\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .md\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .md\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .md\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .md\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .md\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .md\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .md\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .md\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .md\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .md\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .md\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .md\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .md\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .md\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .md\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .md\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .md\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .md\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .md\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .md\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .md\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .md\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .md\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .md\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .md\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .md\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .md\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .md\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .md\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .md\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .md\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .md\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .md\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .md\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .md\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .md\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .md\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .md\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .md\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .md\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .md\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .md\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .md\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .md\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .md\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .md\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .md\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .md\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .md\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .md\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .md\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .md\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .md\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .md\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .md\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .md\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .md\\:transform-none {\n    transform: none !important;\n  }\n\n  .md\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .md\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .md\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .md\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .md\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .md\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .md\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .md\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .md\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .md\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .md\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .md\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .md\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .md\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .md\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .md\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .md\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .md\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .md\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .md\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .md\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .md\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .md\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .md\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .md\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .md\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .md\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .md\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .md\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .md\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .md\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .md\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .md\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .md\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .md\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .md\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .md\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .md\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .md\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (min-width: 1280px) and (max-width: 1439px) {\n  .lg\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .lg\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lg\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .lg\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .lg\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .lg\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lg\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .lg\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lg\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .lg\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lg\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .lg\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lg\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .lg\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lg\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .lg\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .lg\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .lg\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .lg\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lg\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .lg\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .lg\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .lg\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .lg\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .lg\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .lg\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .lg\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .lg\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .lg\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .lg\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lg\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lg\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lg\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lg\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .lg\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .lg\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .lg\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .lg\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .lg\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lg\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lg\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lg\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lg\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lg\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lg\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lg\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lg\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lg\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .lg\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .lg\\:bg-center {\n    background-position: center !important;\n  }\n\n  .lg\\:bg-left {\n    background-position: left !important;\n  }\n\n  .lg\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .lg\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .lg\\:bg-right {\n    background-position: right !important;\n  }\n\n  .lg\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .lg\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .lg\\:bg-top {\n    background-position: top !important;\n  }\n\n  .lg\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .lg\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .lg\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .lg\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .lg\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .lg\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .lg\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .lg\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .lg\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .lg\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .lg\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .lg\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .lg\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lg\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lg\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lg\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lg\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lg\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lg\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lg\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lg\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lg\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .lg\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .lg\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .lg\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lg\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lg\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lg\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .lg\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .lg\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lg\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lg\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lg\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lg\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lg\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lg\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lg\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lg\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .lg\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .lg\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .lg\\:border-double {\n    border-style: double !important;\n  }\n\n  .lg\\:border-none {\n    border-style: none !important;\n  }\n\n  .lg\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .lg\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .lg\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .lg\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .lg\\:border {\n    border-width: 1px !important;\n  }\n\n  .lg\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .lg\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .lg\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .lg\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .lg\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .lg\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .lg\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .lg\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .lg\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .lg\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .lg\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .lg\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .lg\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .lg\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .lg\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .lg\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .lg\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .lg\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .lg\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .lg\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .lg\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .lg\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .lg\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .lg\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .lg\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .lg\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .lg\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .lg\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lg\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .lg\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .lg\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .lg\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lg\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .lg\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .lg\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .lg\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lg\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .lg\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .lg\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .lg\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lg\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .lg\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .lg\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .lg\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lg\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .lg\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .lg\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .lg\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .lg\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .lg\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .lg\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .lg\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .lg\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lg\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .lg\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .lg\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .lg\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lg\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .lg\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .lg\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .lg\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lg\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .lg\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .lg\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .lg\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lg\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .lg\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .lg\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .lg\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lg\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .lg\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .lg\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .lg\\:block {\n    display: block !important;\n  }\n\n  .lg\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .lg\\:inline {\n    display: inline !important;\n  }\n\n  .lg\\:flex {\n    display: flex !important;\n  }\n\n  .lg\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .lg\\:table {\n    display: table !important;\n  }\n\n  .lg\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .lg\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .lg\\:table-column {\n    display: table-column !important;\n  }\n\n  .lg\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .lg\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .lg\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .lg\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .lg\\:table-row {\n    display: table-row !important;\n  }\n\n  .lg\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .lg\\:grid {\n    display: grid !important;\n  }\n\n  .lg\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .lg\\:hidden {\n    display: none !important;\n  }\n\n  .lg\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .lg\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .lg\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .lg\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .lg\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .lg\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .lg\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .lg\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .lg\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .lg\\:items-center {\n    align-items: center !important;\n  }\n\n  .lg\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .lg\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .lg\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .lg\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .lg\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .lg\\:self-center {\n    align-self: center !important;\n  }\n\n  .lg\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .lg\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .lg\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .lg\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .lg\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .lg\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .lg\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .lg\\:content-center {\n    align-content: center !important;\n  }\n\n  .lg\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .lg\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .lg\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .lg\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .lg\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .lg\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .lg\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .lg\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .lg\\:flex-none {\n    flex: none !important;\n  }\n\n  .lg\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .lg\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .lg\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .lg\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .lg\\:order-1 {\n    order: 1 !important;\n  }\n\n  .lg\\:order-2 {\n    order: 2 !important;\n  }\n\n  .lg\\:order-3 {\n    order: 3 !important;\n  }\n\n  .lg\\:order-4 {\n    order: 4 !important;\n  }\n\n  .lg\\:order-5 {\n    order: 5 !important;\n  }\n\n  .lg\\:order-6 {\n    order: 6 !important;\n  }\n\n  .lg\\:order-7 {\n    order: 7 !important;\n  }\n\n  .lg\\:order-8 {\n    order: 8 !important;\n  }\n\n  .lg\\:order-9 {\n    order: 9 !important;\n  }\n\n  .lg\\:order-10 {\n    order: 10 !important;\n  }\n\n  .lg\\:order-11 {\n    order: 11 !important;\n  }\n\n  .lg\\:order-12 {\n    order: 12 !important;\n  }\n\n  .lg\\:order-first {\n    order: -9999 !important;\n  }\n\n  .lg\\:order-last {\n    order: 9999 !important;\n  }\n\n  .lg\\:order-none {\n    order: 0 !important;\n  }\n\n  .lg\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .lg\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .lg\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .lg\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .lg\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .lg\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .lg\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .lg\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .lg\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .lg\\:h-0 {\n    height: 0 !important;\n  }\n\n  .lg\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .lg\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .lg\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .lg\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .lg\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .lg\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .lg\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .lg\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .lg\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .lg\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .lg\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .lg\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .lg\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .lg\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .lg\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .lg\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .lg\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .lg\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .lg\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .lg\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .lg\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .lg\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .lg\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .lg\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .lg\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .lg\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .lg\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .lg\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .lg\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .lg\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .lg\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .lg\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .lg\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .lg\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .lg\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .lg\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .lg\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .lg\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .lg\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .lg\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .lg\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .lg\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .lg\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .lg\\:h-auto {\n    height: auto !important;\n  }\n\n  .lg\\:h-px {\n    height: 1px !important;\n  }\n\n  .lg\\:h-2px {\n    height: 2px !important;\n  }\n\n  .lg\\:h-full {\n    height: 100% !important;\n  }\n\n  .lg\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .lg\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .lg\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .lg\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .lg\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .lg\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .lg\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .lg\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .lg\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .lg\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .lg\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .lg\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .lg\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .lg\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .lg\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .lg\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .lg\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .lg\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .lg\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .lg\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .lg\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .lg\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .lg\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .lg\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .lg\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .lg\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .lg\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .lg\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .lg\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .lg\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .lg\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .lg\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .lg\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .lg\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .lg\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .lg\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .lg\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .lg\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .lg\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .lg\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .lg\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .lg\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .lg\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .lg\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .lg\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .lg\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .lg\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .lg\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .lg\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .lg\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .lg\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .lg\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .lg\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .lg\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .lg\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .lg\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .lg\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .lg\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .lg\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .lg\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .lg\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .lg\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .lg\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .lg\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .lg\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .lg\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .lg\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .lg\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .lg\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .lg\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .lg\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .lg\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .lg\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .lg\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .lg\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .lg\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .lg\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .lg\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .lg\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .lg\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .lg\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .lg\\:m-auto {\n    margin: auto !important;\n  }\n\n  .lg\\:m-px {\n    margin: 1px !important;\n  }\n\n  .lg\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .lg\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .lg\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .lg\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .lg\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .lg\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .lg\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .lg\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .lg\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .lg\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .lg\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .lg\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .lg\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .lg\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .lg\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .lg\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .lg\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .lg\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .lg\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .lg\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .lg\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .lg\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .lg\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .lg\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .lg\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .lg\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .lg\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .lg\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .lg\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .lg\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lg\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .lg\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lg\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .lg\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lg\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .lg\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .lg\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .lg\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lg\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .lg\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lg\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .lg\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .lg\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .lg\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lg\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .lg\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .lg\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .lg\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lg\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .lg\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .lg\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .lg\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lg\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .lg\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .lg\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .lg\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lg\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .lg\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .lg\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .lg\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lg\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .lg\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .lg\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .lg\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lg\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .lg\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .lg\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .lg\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .lg\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .lg\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .lg\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .lg\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .lg\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .lg\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .lg\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .lg\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .lg\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .lg\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .lg\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .lg\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .lg\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .lg\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .lg\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .lg\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lg\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .lg\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lg\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .lg\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lg\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .lg\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .lg\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .lg\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lg\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .lg\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lg\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .lg\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .lg\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .lg\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lg\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .lg\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .lg\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .lg\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lg\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .lg\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .lg\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .lg\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lg\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .lg\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .lg\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .lg\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lg\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .lg\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .lg\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .lg\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lg\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .lg\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .lg\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .lg\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lg\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .lg\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .lg\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .lg\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .lg\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .lg\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .lg\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .lg\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .lg\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .lg\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .lg\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .lg\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .lg\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .lg\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .lg\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .lg\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .lg\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .lg\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .lg\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .lg\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .lg\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .lg\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .lg\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .lg\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lg\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .lg\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .lg\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .lg\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lg\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .lg\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .lg\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .lg\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lg\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .lg\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .lg\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .lg\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .lg\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .lg\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .lg\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .lg\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lg\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .lg\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .lg\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .lg\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lg\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .lg\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .lg\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .lg\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .lg\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .lg\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .lg\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .lg\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lg\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .lg\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .lg\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .lg\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .lg\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .lg\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .lg\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .lg\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lg\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .lg\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .lg\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .lg\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .lg\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .lg\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .lg\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .lg\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lg\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .lg\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .lg\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .lg\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .lg\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .lg\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .lg\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .lg\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lg\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .lg\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .lg\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .lg\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .lg\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .lg\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .lg\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .lg\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lg\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .lg\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .lg\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .lg\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .lg\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .lg\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .lg\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .lg\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lg\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .lg\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .lg\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .lg\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .lg\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .lg\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .lg\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .lg\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .lg\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .lg\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .lg\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .lg\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .lg\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .lg\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .lg\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .lg\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .lg\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .lg\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .lg\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .lg\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .lg\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .lg\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .lg\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .lg\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .lg\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .lg\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .lg\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .lg\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .lg\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .lg\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .lg\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .lg\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .lg\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .lg\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .lg\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .lg\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .lg\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .lg\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .lg\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .lg\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lg\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .lg\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .lg\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .lg\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lg\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .lg\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .lg\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .lg\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lg\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .lg\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .lg\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .lg\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .lg\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .lg\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .lg\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .lg\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lg\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .lg\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .lg\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .lg\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lg\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .lg\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .lg\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .lg\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .lg\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .lg\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .lg\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .lg\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lg\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .lg\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .lg\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .lg\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .lg\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .lg\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .lg\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .lg\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lg\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .lg\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .lg\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .lg\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .lg\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .lg\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .lg\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .lg\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lg\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .lg\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .lg\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .lg\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .lg\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .lg\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .lg\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .lg\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lg\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .lg\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .lg\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .lg\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .lg\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .lg\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .lg\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .lg\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lg\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .lg\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .lg\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .lg\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .lg\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .lg\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .lg\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .lg\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lg\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .lg\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .lg\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .lg\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .lg\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .lg\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .lg\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .lg\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .lg\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .lg\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .lg\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .lg\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .lg\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .lg\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .lg\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .lg\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .lg\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .lg\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .lg\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .lg\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .lg\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .lg\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .lg\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .lg\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .lg\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .lg\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .lg\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .lg\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .lg\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .lg\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .lg\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .lg\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .lg\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .lg\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .lg\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .lg\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .lg\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .lg\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .lg\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .lg\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .lg\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .lg\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .lg\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .lg\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .lg\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .lg\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .lg\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .lg\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .lg\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .lg\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .lg\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .lg\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .lg\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .lg\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .lg\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .lg\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .lg\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .lg\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .lg\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .lg\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .lg\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .lg\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .lg\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .lg\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .lg\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .lg\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .lg\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .lg\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .lg\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .lg\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .lg\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .lg\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .lg\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .lg\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .lg\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .lg\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .lg\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .lg\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .lg\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .lg\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .lg\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .lg\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .lg\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .lg\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .lg\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .lg\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .lg\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .lg\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .lg\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .lg\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .lg\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .lg\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .lg\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .lg\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .lg\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .lg\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .lg\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .lg\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .lg\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .lg\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .lg\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .lg\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .lg\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .lg\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .lg\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .lg\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .lg\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .lg\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .lg\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .lg\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .lg\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .lg\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .lg\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .lg\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .lg\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .lg\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .lg\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .lg\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .lg\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .lg\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .lg\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .lg\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .lg\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .lg\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .lg\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .lg\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .lg\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .lg\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .lg\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .lg\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .lg\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .lg\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .lg\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .lg\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .lg\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .lg\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .lg\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .lg\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .lg\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .lg\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .lg\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .lg\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .lg\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .lg\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .lg\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .lg\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .lg\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .lg\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .lg\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .lg\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .lg\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .lg\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .lg\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .lg\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .lg\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .lg\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .lg\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .lg\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .lg\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .lg\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .lg\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .lg\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .lg\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .lg\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .lg\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .lg\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .lg\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .lg\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .lg\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .lg\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .lg\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .lg\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .lg\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .lg\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .lg\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .lg\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .lg\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .lg\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .lg\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .lg\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .lg\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .lg\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .lg\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .lg\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .lg\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .lg\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .lg\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .lg\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .lg\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .lg\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .lg\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .lg\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .lg\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .lg\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .lg\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .lg\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .lg\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .lg\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .lg\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .lg\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .lg\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .lg\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .lg\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .lg\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .lg\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .lg\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .lg\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .lg\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .lg\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .lg\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .lg\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .lg\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .lg\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .lg\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .lg\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .lg\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .lg\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .lg\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .lg\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .lg\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .lg\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .lg\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .lg\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .lg\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .lg\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .lg\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .lg\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .lg\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .lg\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .lg\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .lg\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .lg\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .lg\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .lg\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .lg\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .lg\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .lg\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .lg\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .lg\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .lg\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .lg\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .lg\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .lg\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .lg\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .lg\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .lg\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .lg\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .lg\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .lg\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .lg\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .lg\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .lg\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .lg\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .lg\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .lg\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .lg\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .lg\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .lg\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .lg\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .lg\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .lg\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .lg\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .lg\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .lg\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .lg\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .lg\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .lg\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .lg\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .lg\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .lg\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .lg\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .lg\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .lg\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .lg\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .lg\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .lg\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .lg\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .lg\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .lg\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .lg\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .lg\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .lg\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .lg\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .lg\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .lg\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .lg\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .lg\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .lg\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .lg\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .lg\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .lg\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .lg\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .lg\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .lg\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .lg\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .lg\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .lg\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .lg\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .lg\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .lg\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .lg\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .lg\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .lg\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .lg\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .lg\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .lg\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .lg\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .lg\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .lg\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .lg\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .lg\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .lg\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .lg\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .lg\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .lg\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .lg\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .lg\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .lg\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .lg\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .lg\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .lg\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .lg\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .lg\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .lg\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .lg\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .lg\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .lg\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .lg\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .lg\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .lg\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .lg\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .lg\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .lg\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .lg\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .lg\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .lg\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .lg\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .lg\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .lg\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .lg\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .lg\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .lg\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .lg\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .lg\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .lg\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .lg\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .lg\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .lg\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .lg\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .lg\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .lg\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .lg\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .lg\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .lg\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .lg\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .lg\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .lg\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .lg\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .lg\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .lg\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .lg\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .lg\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .lg\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .lg\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .lg\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .lg\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .lg\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .lg\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .lg\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .lg\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .lg\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .lg\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .lg\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .lg\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .lg\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .lg\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .lg\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .lg\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .lg\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .lg\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .lg\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .lg\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .lg\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .lg\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .lg\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .lg\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .lg\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .lg\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .lg\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .lg\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .lg\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .lg\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .lg\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .lg\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .lg\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .lg\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .lg\\:p-px {\n    padding: 1px !important;\n  }\n\n  .lg\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .lg\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .lg\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .lg\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lg\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .lg\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lg\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .lg\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lg\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .lg\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .lg\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .lg\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lg\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .lg\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lg\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .lg\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .lg\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .lg\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lg\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .lg\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .lg\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .lg\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lg\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .lg\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .lg\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .lg\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lg\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .lg\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .lg\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .lg\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lg\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .lg\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .lg\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .lg\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lg\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .lg\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .lg\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .lg\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lg\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .lg\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .lg\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .lg\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .lg\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .lg\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .lg\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .lg\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .lg\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .lg\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .lg\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .lg\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .lg\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .lg\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .lg\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .lg\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .lg\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .lg\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .lg\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .lg\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .lg\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .lg\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .lg\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .lg\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lg\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .lg\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .lg\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .lg\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lg\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .lg\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .lg\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .lg\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lg\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .lg\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .lg\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .lg\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .lg\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .lg\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .lg\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .lg\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lg\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .lg\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .lg\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .lg\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lg\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .lg\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .lg\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .lg\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .lg\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .lg\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .lg\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .lg\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lg\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .lg\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .lg\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .lg\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .lg\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .lg\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .lg\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .lg\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lg\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .lg\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .lg\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .lg\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .lg\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .lg\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .lg\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .lg\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lg\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .lg\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .lg\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .lg\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .lg\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .lg\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .lg\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .lg\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lg\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .lg\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .lg\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .lg\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .lg\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .lg\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .lg\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .lg\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lg\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .lg\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .lg\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .lg\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .lg\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .lg\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .lg\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .lg\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lg\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .lg\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .lg\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .lg\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .lg\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .lg\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .lg\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .lg\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .lg\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .lg\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .lg\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .lg\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .lg\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .lg\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .lg\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .lg\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .lg\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .lg\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .lg\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .lg\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .lg\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .lg\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .lg\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .lg\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .lg\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .lg\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .lg\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .lg\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .lg\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .lg\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .lg\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .lg\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .lg\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .lg\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lg\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .lg\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .lg\\:static {\n    position: static !important;\n  }\n\n  .lg\\:fixed {\n    position: fixed !important;\n  }\n\n  .lg\\:absolute {\n    position: absolute !important;\n  }\n\n  .lg\\:relative {\n    position: relative !important;\n  }\n\n  .lg\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .lg\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .lg\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .lg\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .lg\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .lg\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .lg\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .lg\\:top-0 {\n    top: 0 !important;\n  }\n\n  .lg\\:right-0 {\n    right: 0 !important;\n  }\n\n  .lg\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .lg\\:left-0 {\n    left: 0 !important;\n  }\n\n  .lg\\:top-auto {\n    top: auto !important;\n  }\n\n  .lg\\:right-auto {\n    right: auto !important;\n  }\n\n  .lg\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .lg\\:left-auto {\n    left: auto !important;\n  }\n\n  .lg\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lg\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lg\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lg\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .lg\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lg\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lg\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lg\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lg\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .lg\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lg\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lg\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lg\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lg\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lg\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lg\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .lg\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lg\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .lg\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .lg\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .lg\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .lg\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .lg\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .lg\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .lg\\:text-left {\n    text-align: left !important;\n  }\n\n  .lg\\:text-center {\n    text-align: center !important;\n  }\n\n  .lg\\:text-right {\n    text-align: right !important;\n  }\n\n  .lg\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .lg\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .lg\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lg\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lg\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lg\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lg\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lg\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lg\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lg\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lg\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lg\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lg\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .lg\\:italic {\n    font-style: italic !important;\n  }\n\n  .lg\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .lg\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .lg\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .lg\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .lg\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .lg\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .lg\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .lg\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .lg\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .lg\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .lg\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .lg\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .lg\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .lg\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .lg\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .lg\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .lg\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .lg\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .lg\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .lg\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .lg\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .lg\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .lg\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .lg\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .lg\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .lg\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .lg\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .lg\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .lg\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .lg\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .lg\\:visible {\n    visibility: visible !important;\n  }\n\n  .lg\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .lg\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .lg\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .lg\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .lg\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .lg\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .lg\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .lg\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .lg\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .lg\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .lg\\:w-0 {\n    width: 0 !important;\n  }\n\n  .lg\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .lg\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .lg\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .lg\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .lg\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .lg\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .lg\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .lg\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .lg\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .lg\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .lg\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .lg\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .lg\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .lg\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .lg\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .lg\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .lg\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .lg\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .lg\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .lg\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .lg\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .lg\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .lg\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .lg\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .lg\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .lg\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .lg\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .lg\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .lg\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .lg\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .lg\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .lg\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .lg\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .lg\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .lg\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .lg\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .lg\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .lg\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .lg\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .lg\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .lg\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .lg\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .lg\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .lg\\:w-auto {\n    width: auto !important;\n  }\n\n  .lg\\:w-px {\n    width: 1px !important;\n  }\n\n  .lg\\:w-2px {\n    width: 2px !important;\n  }\n\n  .lg\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .lg\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .lg\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .lg\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .lg\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .lg\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .lg\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .lg\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .lg\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .lg\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .lg\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .lg\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .lg\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .lg\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .lg\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .lg\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .lg\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .lg\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .lg\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .lg\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .lg\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .lg\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .lg\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .lg\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .lg\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .lg\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .lg\\:w-full {\n    width: 100% !important;\n  }\n\n  .lg\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .lg\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .lg\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .lg\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .lg\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .lg\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .lg\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .lg\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .lg\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .lg\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .lg\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .lg\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .lg\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .lg\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .lg\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .lg\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .lg\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .lg\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .lg\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .lg\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .lg\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .lg\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .lg\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .lg\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .lg\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .lg\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .lg\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .lg\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .lg\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .lg\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .lg\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .lg\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .lg\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .lg\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .lg\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .lg\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .lg\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .lg\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .lg\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .lg\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .lg\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .lg\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .lg\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .lg\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .lg\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .lg\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .lg\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .lg\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .lg\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .lg\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .lg\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .lg\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .lg\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .lg\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .lg\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .lg\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .lg\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .lg\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .lg\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .lg\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .lg\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .lg\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .lg\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .lg\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .lg\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .lg\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .lg\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .lg\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .lg\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .lg\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .lg\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .lg\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .lg\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .lg\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .lg\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .lg\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .lg\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .lg\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .lg\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .lg\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .lg\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .lg\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .lg\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .lg\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .lg\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .lg\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .lg\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .lg\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .lg\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .lg\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .lg\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .lg\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .lg\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .lg\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .lg\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .lg\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .lg\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .lg\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .lg\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .lg\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .lg\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .lg\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .lg\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .lg\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .lg\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .lg\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .lg\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .lg\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .lg\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .lg\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .lg\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .lg\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .lg\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .lg\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .lg\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .lg\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .lg\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .lg\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .lg\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .lg\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .lg\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .lg\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .lg\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .lg\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .lg\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .lg\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .lg\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .lg\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .lg\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .lg\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .lg\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .lg\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .lg\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .lg\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .lg\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .lg\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .lg\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .lg\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .lg\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .lg\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .lg\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .lg\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .lg\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .lg\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .lg\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lg\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .lg\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .lg\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .lg\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .lg\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .lg\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .lg\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .lg\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .lg\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .lg\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .lg\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .lg\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .lg\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .lg\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .lg\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .lg\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .lg\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .lg\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .lg\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .lg\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .lg\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .lg\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .lg\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .lg\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .lg\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .lg\\:transform-none {\n    transform: none !important;\n  }\n\n  .lg\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .lg\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .lg\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .lg\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .lg\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .lg\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .lg\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .lg\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .lg\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .lg\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .lg\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .lg\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .lg\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .lg\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .lg\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .lg\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .lg\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .lg\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .lg\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .lg\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .lg\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .lg\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .lg\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .lg\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .lg\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .lg\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .lg\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .lg\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .lg\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .lg\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .lg\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .lg\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .lg\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .lg\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .lg\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .lg\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .lg\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .lg\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .lg\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (min-width: 1440px) {\n  .xl\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .xl\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .xl\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .xl\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .xl\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .xl\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xl\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .xl\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xl\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .xl\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xl\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .xl\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xl\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .xl\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .xl\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .xl\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .xl\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .xl\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .xl\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .xl\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .xl\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .xl\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .xl\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .xl\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .xl\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .xl\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .xl\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .xl\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .xl\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .xl\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .xl\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .xl\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .xl\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .xl\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .xl\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .xl\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .xl\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .xl\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .xl\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .xl\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .xl\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .xl\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .xl\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .xl\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .xl\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .xl\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .xl\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .xl\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .xl\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .xl\\:bg-center {\n    background-position: center !important;\n  }\n\n  .xl\\:bg-left {\n    background-position: left !important;\n  }\n\n  .xl\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .xl\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .xl\\:bg-right {\n    background-position: right !important;\n  }\n\n  .xl\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .xl\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .xl\\:bg-top {\n    background-position: top !important;\n  }\n\n  .xl\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .xl\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .xl\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .xl\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .xl\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .xl\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .xl\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .xl\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .xl\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .xl\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .xl\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .xl\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .xl\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .xl\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .xl\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .xl\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .xl\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .xl\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .xl\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .xl\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .xl\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .xl\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .xl\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .xl\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .xl\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .xl\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .xl\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .xl\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .xl\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .xl\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .xl\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .xl\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .xl\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .xl\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .xl\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .xl\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .xl\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .xl\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .xl\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .xl\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .xl\\:border-double {\n    border-style: double !important;\n  }\n\n  .xl\\:border-none {\n    border-style: none !important;\n  }\n\n  .xl\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .xl\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .xl\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .xl\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .xl\\:border {\n    border-width: 1px !important;\n  }\n\n  .xl\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .xl\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .xl\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .xl\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .xl\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .xl\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .xl\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .xl\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .xl\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .xl\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .xl\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .xl\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .xl\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .xl\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .xl\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .xl\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .xl\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .xl\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .xl\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .xl\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .xl\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .xl\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .xl\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .xl\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .xl\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .xl\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .xl\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .xl\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .xl\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .xl\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .xl\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .xl\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .xl\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .xl\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .xl\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .xl\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .xl\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .xl\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .xl\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .xl\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .xl\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .xl\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .xl\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .xl\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .xl\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .xl\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .xl\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .xl\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .xl\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .xl\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .xl\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .xl\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .xl\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .xl\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .xl\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .xl\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .xl\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .xl\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .xl\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .xl\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .xl\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .xl\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .xl\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .xl\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .xl\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .xl\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .xl\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .xl\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .xl\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .xl\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .xl\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .xl\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .xl\\:block {\n    display: block !important;\n  }\n\n  .xl\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .xl\\:inline {\n    display: inline !important;\n  }\n\n  .xl\\:flex {\n    display: flex !important;\n  }\n\n  .xl\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .xl\\:table {\n    display: table !important;\n  }\n\n  .xl\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .xl\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .xl\\:table-column {\n    display: table-column !important;\n  }\n\n  .xl\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .xl\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .xl\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .xl\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .xl\\:table-row {\n    display: table-row !important;\n  }\n\n  .xl\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .xl\\:grid {\n    display: grid !important;\n  }\n\n  .xl\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .xl\\:hidden {\n    display: none !important;\n  }\n\n  .xl\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .xl\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .xl\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .xl\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .xl\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .xl\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .xl\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .xl\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .xl\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .xl\\:items-center {\n    align-items: center !important;\n  }\n\n  .xl\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .xl\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .xl\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .xl\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .xl\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .xl\\:self-center {\n    align-self: center !important;\n  }\n\n  .xl\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .xl\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .xl\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .xl\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .xl\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .xl\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .xl\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .xl\\:content-center {\n    align-content: center !important;\n  }\n\n  .xl\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .xl\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .xl\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .xl\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .xl\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .xl\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .xl\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .xl\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .xl\\:flex-none {\n    flex: none !important;\n  }\n\n  .xl\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .xl\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .xl\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .xl\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .xl\\:order-1 {\n    order: 1 !important;\n  }\n\n  .xl\\:order-2 {\n    order: 2 !important;\n  }\n\n  .xl\\:order-3 {\n    order: 3 !important;\n  }\n\n  .xl\\:order-4 {\n    order: 4 !important;\n  }\n\n  .xl\\:order-5 {\n    order: 5 !important;\n  }\n\n  .xl\\:order-6 {\n    order: 6 !important;\n  }\n\n  .xl\\:order-7 {\n    order: 7 !important;\n  }\n\n  .xl\\:order-8 {\n    order: 8 !important;\n  }\n\n  .xl\\:order-9 {\n    order: 9 !important;\n  }\n\n  .xl\\:order-10 {\n    order: 10 !important;\n  }\n\n  .xl\\:order-11 {\n    order: 11 !important;\n  }\n\n  .xl\\:order-12 {\n    order: 12 !important;\n  }\n\n  .xl\\:order-first {\n    order: -9999 !important;\n  }\n\n  .xl\\:order-last {\n    order: 9999 !important;\n  }\n\n  .xl\\:order-none {\n    order: 0 !important;\n  }\n\n  .xl\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .xl\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .xl\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .xl\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .xl\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .xl\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .xl\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .xl\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .xl\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .xl\\:h-0 {\n    height: 0 !important;\n  }\n\n  .xl\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .xl\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .xl\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .xl\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .xl\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .xl\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .xl\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .xl\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .xl\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .xl\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .xl\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .xl\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .xl\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .xl\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .xl\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .xl\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .xl\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .xl\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .xl\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .xl\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .xl\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .xl\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .xl\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .xl\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .xl\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .xl\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .xl\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .xl\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .xl\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .xl\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .xl\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .xl\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .xl\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .xl\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .xl\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .xl\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .xl\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .xl\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .xl\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .xl\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .xl\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .xl\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .xl\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .xl\\:h-auto {\n    height: auto !important;\n  }\n\n  .xl\\:h-px {\n    height: 1px !important;\n  }\n\n  .xl\\:h-2px {\n    height: 2px !important;\n  }\n\n  .xl\\:h-full {\n    height: 100% !important;\n  }\n\n  .xl\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .xl\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .xl\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .xl\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .xl\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .xl\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .xl\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .xl\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .xl\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .xl\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .xl\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .xl\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .xl\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .xl\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .xl\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .xl\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .xl\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .xl\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .xl\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .xl\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .xl\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .xl\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .xl\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .xl\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .xl\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .xl\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .xl\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .xl\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .xl\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .xl\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .xl\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .xl\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .xl\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .xl\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .xl\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .xl\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .xl\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .xl\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .xl\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .xl\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .xl\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .xl\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .xl\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .xl\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .xl\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .xl\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .xl\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .xl\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .xl\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .xl\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .xl\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .xl\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .xl\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .xl\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .xl\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .xl\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .xl\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .xl\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .xl\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .xl\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .xl\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .xl\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .xl\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .xl\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .xl\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .xl\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .xl\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .xl\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .xl\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .xl\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .xl\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .xl\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .xl\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .xl\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .xl\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .xl\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .xl\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .xl\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .xl\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .xl\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .xl\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .xl\\:m-auto {\n    margin: auto !important;\n  }\n\n  .xl\\:m-px {\n    margin: 1px !important;\n  }\n\n  .xl\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .xl\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .xl\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .xl\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .xl\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .xl\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .xl\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .xl\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .xl\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .xl\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .xl\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .xl\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .xl\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .xl\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .xl\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .xl\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .xl\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .xl\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .xl\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .xl\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .xl\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .xl\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .xl\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .xl\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .xl\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .xl\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .xl\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .xl\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .xl\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .xl\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .xl\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .xl\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .xl\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .xl\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .xl\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .xl\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .xl\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .xl\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .xl\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .xl\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .xl\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .xl\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .xl\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .xl\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .xl\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .xl\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .xl\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .xl\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .xl\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .xl\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .xl\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .xl\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .xl\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .xl\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .xl\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .xl\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .xl\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .xl\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .xl\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .xl\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .xl\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .xl\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .xl\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .xl\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .xl\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .xl\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .xl\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .xl\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .xl\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .xl\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .xl\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .xl\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .xl\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .xl\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .xl\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .xl\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .xl\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .xl\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .xl\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .xl\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .xl\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .xl\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .xl\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .xl\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .xl\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .xl\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .xl\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .xl\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .xl\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .xl\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .xl\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .xl\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .xl\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .xl\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .xl\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .xl\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .xl\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .xl\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .xl\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .xl\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .xl\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .xl\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .xl\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .xl\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .xl\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .xl\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .xl\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .xl\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .xl\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .xl\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .xl\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .xl\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .xl\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .xl\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .xl\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .xl\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .xl\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .xl\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .xl\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .xl\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .xl\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .xl\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .xl\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .xl\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .xl\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .xl\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .xl\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .xl\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .xl\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .xl\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .xl\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .xl\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .xl\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .xl\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .xl\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .xl\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .xl\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .xl\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .xl\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .xl\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .xl\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .xl\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .xl\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .xl\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .xl\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .xl\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .xl\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .xl\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .xl\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .xl\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .xl\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .xl\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .xl\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .xl\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .xl\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .xl\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .xl\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .xl\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .xl\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .xl\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .xl\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .xl\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .xl\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .xl\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .xl\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .xl\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .xl\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .xl\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .xl\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .xl\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .xl\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .xl\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .xl\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .xl\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .xl\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .xl\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .xl\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .xl\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .xl\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .xl\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .xl\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .xl\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .xl\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .xl\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .xl\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .xl\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .xl\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .xl\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .xl\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .xl\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .xl\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .xl\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .xl\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .xl\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .xl\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .xl\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .xl\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .xl\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .xl\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .xl\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .xl\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .xl\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .xl\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .xl\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .xl\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .xl\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .xl\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .xl\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .xl\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .xl\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .xl\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .xl\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .xl\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .xl\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .xl\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .xl\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .xl\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .xl\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .xl\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .xl\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .xl\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .xl\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .xl\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .xl\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .xl\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .xl\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .xl\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .xl\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .xl\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .xl\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .xl\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .xl\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .xl\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .xl\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .xl\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .xl\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .xl\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .xl\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .xl\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .xl\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .xl\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .xl\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .xl\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .xl\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .xl\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .xl\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .xl\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .xl\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .xl\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .xl\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .xl\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .xl\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .xl\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .xl\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .xl\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .xl\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .xl\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .xl\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .xl\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .xl\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .xl\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .xl\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .xl\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .xl\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .xl\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .xl\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .xl\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .xl\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .xl\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .xl\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .xl\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .xl\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .xl\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .xl\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .xl\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .xl\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .xl\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .xl\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .xl\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .xl\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .xl\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .xl\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .xl\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .xl\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .xl\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .xl\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .xl\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .xl\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .xl\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .xl\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .xl\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .xl\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .xl\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .xl\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .xl\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .xl\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .xl\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .xl\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .xl\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .xl\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .xl\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .xl\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .xl\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .xl\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .xl\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .xl\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .xl\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .xl\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .xl\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .xl\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .xl\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .xl\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .xl\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .xl\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .xl\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .xl\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .xl\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .xl\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .xl\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .xl\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .xl\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .xl\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .xl\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .xl\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .xl\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .xl\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .xl\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .xl\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .xl\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .xl\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .xl\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .xl\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .xl\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .xl\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .xl\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .xl\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .xl\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .xl\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .xl\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .xl\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .xl\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .xl\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .xl\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .xl\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .xl\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .xl\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .xl\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .xl\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .xl\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .xl\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .xl\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .xl\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .xl\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .xl\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .xl\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .xl\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .xl\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .xl\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .xl\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .xl\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .xl\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .xl\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .xl\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .xl\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .xl\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .xl\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .xl\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .xl\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .xl\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .xl\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .xl\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .xl\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .xl\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .xl\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .xl\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .xl\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .xl\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .xl\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .xl\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .xl\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .xl\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .xl\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .xl\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .xl\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .xl\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .xl\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .xl\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .xl\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .xl\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .xl\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .xl\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .xl\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .xl\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .xl\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .xl\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .xl\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .xl\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .xl\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .xl\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .xl\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .xl\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .xl\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .xl\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .xl\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .xl\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .xl\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .xl\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .xl\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .xl\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .xl\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .xl\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .xl\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .xl\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .xl\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .xl\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .xl\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .xl\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .xl\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .xl\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .xl\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .xl\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .xl\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .xl\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .xl\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .xl\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .xl\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .xl\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .xl\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .xl\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .xl\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .xl\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .xl\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .xl\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .xl\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .xl\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .xl\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .xl\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .xl\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .xl\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .xl\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .xl\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .xl\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .xl\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .xl\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .xl\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .xl\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .xl\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .xl\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .xl\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .xl\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .xl\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .xl\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .xl\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .xl\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .xl\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .xl\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .xl\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .xl\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .xl\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .xl\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .xl\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .xl\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .xl\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .xl\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .xl\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .xl\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .xl\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .xl\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .xl\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .xl\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .xl\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .xl\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .xl\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .xl\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .xl\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .xl\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .xl\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .xl\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .xl\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .xl\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .xl\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .xl\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .xl\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .xl\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .xl\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .xl\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .xl\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .xl\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .xl\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .xl\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .xl\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .xl\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .xl\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .xl\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .xl\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .xl\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .xl\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .xl\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .xl\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .xl\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .xl\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .xl\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .xl\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .xl\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .xl\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .xl\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .xl\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .xl\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .xl\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .xl\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .xl\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .xl\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .xl\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .xl\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .xl\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .xl\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .xl\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .xl\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .xl\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .xl\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .xl\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .xl\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .xl\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .xl\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .xl\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .xl\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .xl\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .xl\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .xl\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .xl\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .xl\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .xl\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .xl\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .xl\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .xl\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .xl\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .xl\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .xl\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .xl\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .xl\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .xl\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .xl\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .xl\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .xl\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .xl\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .xl\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .xl\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .xl\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .xl\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .xl\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .xl\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .xl\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .xl\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .xl\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .xl\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .xl\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .xl\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .xl\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .xl\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .xl\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .xl\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .xl\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .xl\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .xl\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .xl\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .xl\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .xl\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .xl\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .xl\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .xl\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .xl\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .xl\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .xl\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .xl\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .xl\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .xl\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .xl\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .xl\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .xl\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .xl\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .xl\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .xl\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .xl\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .xl\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .xl\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .xl\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .xl\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .xl\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .xl\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .xl\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .xl\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .xl\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .xl\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .xl\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .xl\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .xl\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .xl\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .xl\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .xl\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .xl\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .xl\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .xl\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .xl\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .xl\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .xl\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .xl\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .xl\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .xl\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .xl\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .xl\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .xl\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .xl\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .xl\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .xl\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .xl\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .xl\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .xl\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .xl\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .xl\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .xl\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .xl\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .xl\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .xl\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .xl\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .xl\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .xl\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .xl\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .xl\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .xl\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .xl\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .xl\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .xl\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .xl\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .xl\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .xl\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .xl\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .xl\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .xl\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .xl\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .xl\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .xl\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .xl\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .xl\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .xl\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .xl\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .xl\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .xl\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .xl\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .xl\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .xl\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .xl\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .xl\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .xl\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .xl\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .xl\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .xl\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .xl\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .xl\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .xl\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .xl\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .xl\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .xl\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .xl\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .xl\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .xl\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .xl\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .xl\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .xl\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .xl\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .xl\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .xl\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .xl\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .xl\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .xl\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .xl\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .xl\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .xl\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .xl\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .xl\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .xl\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .xl\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .xl\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .xl\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .xl\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .xl\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .xl\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .xl\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .xl\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .xl\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .xl\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .xl\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .xl\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .xl\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .xl\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .xl\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .xl\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .xl\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .xl\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .xl\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .xl\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .xl\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .xl\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .xl\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .xl\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .xl\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .xl\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .xl\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .xl\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .xl\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .xl\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .xl\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .xl\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .xl\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .xl\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .xl\\:p-px {\n    padding: 1px !important;\n  }\n\n  .xl\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .xl\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .xl\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .xl\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .xl\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .xl\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .xl\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .xl\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .xl\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .xl\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .xl\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .xl\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .xl\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .xl\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .xl\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .xl\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .xl\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .xl\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .xl\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .xl\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .xl\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .xl\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .xl\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .xl\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .xl\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .xl\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .xl\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .xl\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .xl\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .xl\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .xl\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .xl\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .xl\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .xl\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .xl\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .xl\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .xl\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .xl\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .xl\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .xl\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .xl\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .xl\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .xl\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .xl\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .xl\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .xl\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .xl\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .xl\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .xl\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .xl\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .xl\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .xl\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .xl\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .xl\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .xl\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .xl\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .xl\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .xl\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .xl\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .xl\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .xl\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .xl\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .xl\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .xl\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .xl\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .xl\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .xl\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .xl\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .xl\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .xl\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .xl\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .xl\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .xl\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .xl\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .xl\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .xl\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .xl\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .xl\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .xl\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .xl\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .xl\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .xl\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .xl\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .xl\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .xl\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .xl\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .xl\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .xl\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .xl\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .xl\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .xl\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .xl\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .xl\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .xl\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .xl\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .xl\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .xl\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .xl\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .xl\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .xl\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .xl\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .xl\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .xl\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .xl\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .xl\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .xl\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .xl\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .xl\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .xl\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .xl\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .xl\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .xl\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .xl\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .xl\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .xl\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .xl\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .xl\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .xl\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .xl\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .xl\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .xl\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .xl\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .xl\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .xl\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .xl\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .xl\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .xl\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .xl\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .xl\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .xl\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .xl\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .xl\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .xl\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .xl\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .xl\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .xl\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .xl\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .xl\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .xl\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .xl\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .xl\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .xl\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .xl\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .xl\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .xl\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .xl\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .xl\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .xl\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .xl\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .xl\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .xl\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .xl\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .xl\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .xl\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .xl\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .xl\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .xl\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .xl\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .xl\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .xl\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .xl\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .xl\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .xl\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .xl\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .xl\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .xl\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .xl\\:static {\n    position: static !important;\n  }\n\n  .xl\\:fixed {\n    position: fixed !important;\n  }\n\n  .xl\\:absolute {\n    position: absolute !important;\n  }\n\n  .xl\\:relative {\n    position: relative !important;\n  }\n\n  .xl\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .xl\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .xl\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .xl\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .xl\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .xl\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .xl\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .xl\\:top-0 {\n    top: 0 !important;\n  }\n\n  .xl\\:right-0 {\n    right: 0 !important;\n  }\n\n  .xl\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .xl\\:left-0 {\n    left: 0 !important;\n  }\n\n  .xl\\:top-auto {\n    top: auto !important;\n  }\n\n  .xl\\:right-auto {\n    right: auto !important;\n  }\n\n  .xl\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .xl\\:left-auto {\n    left: auto !important;\n  }\n\n  .xl\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .xl\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .xl\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .xl\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .xl\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .xl\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .xl\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .xl\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .xl\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .xl\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .xl\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .xl\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .xl\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .xl\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .xl\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .xl\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .xl\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .xl\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .xl\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .xl\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .xl\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .xl\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .xl\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .xl\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .xl\\:text-left {\n    text-align: left !important;\n  }\n\n  .xl\\:text-center {\n    text-align: center !important;\n  }\n\n  .xl\\:text-right {\n    text-align: right !important;\n  }\n\n  .xl\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .xl\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .xl\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .xl\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .xl\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .xl\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .xl\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .xl\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .xl\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .xl\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .xl\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .xl\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .xl\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .xl\\:italic {\n    font-style: italic !important;\n  }\n\n  .xl\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .xl\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .xl\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .xl\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .xl\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .xl\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .xl\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .xl\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .xl\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .xl\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .xl\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .xl\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .xl\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .xl\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .xl\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .xl\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .xl\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .xl\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .xl\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .xl\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .xl\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .xl\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .xl\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .xl\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .xl\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .xl\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .xl\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .xl\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .xl\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .xl\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .xl\\:visible {\n    visibility: visible !important;\n  }\n\n  .xl\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .xl\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .xl\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .xl\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .xl\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .xl\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .xl\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .xl\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .xl\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .xl\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .xl\\:w-0 {\n    width: 0 !important;\n  }\n\n  .xl\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .xl\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .xl\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .xl\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .xl\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .xl\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .xl\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .xl\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .xl\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .xl\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .xl\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .xl\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .xl\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .xl\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .xl\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .xl\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .xl\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .xl\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .xl\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .xl\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .xl\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .xl\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .xl\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .xl\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .xl\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .xl\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .xl\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .xl\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .xl\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .xl\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .xl\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .xl\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .xl\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .xl\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .xl\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .xl\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .xl\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .xl\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .xl\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .xl\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .xl\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .xl\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .xl\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .xl\\:w-auto {\n    width: auto !important;\n  }\n\n  .xl\\:w-px {\n    width: 1px !important;\n  }\n\n  .xl\\:w-2px {\n    width: 2px !important;\n  }\n\n  .xl\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .xl\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .xl\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .xl\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .xl\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .xl\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .xl\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .xl\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .xl\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .xl\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .xl\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .xl\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .xl\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .xl\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .xl\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .xl\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .xl\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .xl\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .xl\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .xl\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .xl\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .xl\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .xl\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .xl\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .xl\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .xl\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .xl\\:w-full {\n    width: 100% !important;\n  }\n\n  .xl\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .xl\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .xl\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .xl\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .xl\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .xl\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .xl\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .xl\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .xl\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .xl\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .xl\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .xl\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .xl\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .xl\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .xl\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .xl\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .xl\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .xl\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .xl\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .xl\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .xl\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .xl\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .xl\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .xl\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .xl\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .xl\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .xl\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .xl\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .xl\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .xl\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .xl\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .xl\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .xl\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .xl\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .xl\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .xl\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .xl\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .xl\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .xl\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .xl\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .xl\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .xl\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .xl\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .xl\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .xl\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .xl\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .xl\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .xl\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .xl\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .xl\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .xl\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .xl\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .xl\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .xl\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .xl\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .xl\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .xl\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .xl\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .xl\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .xl\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .xl\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .xl\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .xl\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .xl\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .xl\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .xl\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .xl\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .xl\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .xl\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .xl\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .xl\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .xl\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .xl\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .xl\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .xl\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .xl\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .xl\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .xl\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .xl\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .xl\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .xl\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .xl\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .xl\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .xl\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .xl\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .xl\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .xl\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .xl\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .xl\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .xl\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .xl\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .xl\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .xl\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .xl\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .xl\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .xl\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .xl\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .xl\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .xl\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .xl\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .xl\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .xl\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .xl\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .xl\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .xl\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .xl\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .xl\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .xl\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .xl\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .xl\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .xl\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .xl\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .xl\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .xl\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .xl\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .xl\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .xl\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .xl\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .xl\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .xl\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .xl\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .xl\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .xl\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .xl\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .xl\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .xl\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .xl\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .xl\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .xl\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .xl\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .xl\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .xl\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .xl\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .xl\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .xl\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .xl\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .xl\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .xl\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .xl\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .xl\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .xl\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .xl\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .xl\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .xl\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .xl\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .xl\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .xl\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .xl\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .xl\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .xl\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .xl\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .xl\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .xl\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .xl\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .xl\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .xl\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .xl\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .xl\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .xl\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .xl\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .xl\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .xl\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .xl\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .xl\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .xl\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .xl\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .xl\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .xl\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .xl\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .xl\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .xl\\:transform-none {\n    transform: none !important;\n  }\n\n  .xl\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .xl\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .xl\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .xl\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .xl\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .xl\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .xl\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .xl\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .xl\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .xl\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .xl\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .xl\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .xl\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .xl\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .xl\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .xl\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .xl\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .xl\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .xl\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .xl\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .xl\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .xl\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .xl\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .xl\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .xl\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .xl\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .xl\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .xl\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .xl\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .xl\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .xl\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .xl\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .xl\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .xl\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .xl\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .xl\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .xl\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .xl\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .xl\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (max-width: 959px) {\n  .lt-md\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-md\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-md\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .lt-md\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .lt-md\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-md\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-md\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-md\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-md\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-md\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-md\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-md\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-md\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-md\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-md\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .lt-md\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .lt-md\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .lt-md\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .lt-md\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lt-md\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .lt-md\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .lt-md\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lt-md\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lt-md\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lt-md\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lt-md\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .lt-md\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .lt-md\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .lt-md\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .lt-md\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-md\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-md\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .lt-md\\:bg-center {\n    background-position: center !important;\n  }\n\n  .lt-md\\:bg-left {\n    background-position: left !important;\n  }\n\n  .lt-md\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .lt-md\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .lt-md\\:bg-right {\n    background-position: right !important;\n  }\n\n  .lt-md\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .lt-md\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .lt-md\\:bg-top {\n    background-position: top !important;\n  }\n\n  .lt-md\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .lt-md\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .lt-md\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .lt-md\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .lt-md\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .lt-md\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .lt-md\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .lt-md\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .lt-md\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .lt-md\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .lt-md\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .lt-md\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-md\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-md\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-md\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-md\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-md\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-md\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-md\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lt-md\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-md\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .lt-md\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .lt-md\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .lt-md\\:border-double {\n    border-style: double !important;\n  }\n\n  .lt-md\\:border-none {\n    border-style: none !important;\n  }\n\n  .lt-md\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .lt-md\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .lt-md\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .lt-md\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .lt-md\\:border {\n    border-width: 1px !important;\n  }\n\n  .lt-md\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .lt-md\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .lt-md\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-md\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .lt-md\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .lt-md\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .lt-md\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-md\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .lt-md\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .lt-md\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .lt-md\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-md\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .lt-md\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .lt-md\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .lt-md\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-md\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .lt-md\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .lt-md\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .lt-md\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-md\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .lt-md\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .lt-md\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .lt-md\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .lt-md\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .lt-md\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .lt-md\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .lt-md\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .lt-md\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-md\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .lt-md\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .lt-md\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .lt-md\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-md\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .lt-md\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .lt-md\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .lt-md\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-md\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .lt-md\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .lt-md\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .lt-md\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-md\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .lt-md\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .lt-md\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .lt-md\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-md\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .lt-md\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .lt-md\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .lt-md\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .lt-md\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .lt-md\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .lt-md\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .lt-md\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .lt-md\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-md\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .lt-md\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .lt-md\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .lt-md\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-md\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .lt-md\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .lt-md\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .lt-md\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-md\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .lt-md\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .lt-md\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .lt-md\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-md\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .lt-md\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .lt-md\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .lt-md\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-md\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .lt-md\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .lt-md\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .lt-md\\:block {\n    display: block !important;\n  }\n\n  .lt-md\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .lt-md\\:inline {\n    display: inline !important;\n  }\n\n  .lt-md\\:flex {\n    display: flex !important;\n  }\n\n  .lt-md\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .lt-md\\:table {\n    display: table !important;\n  }\n\n  .lt-md\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .lt-md\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .lt-md\\:table-column {\n    display: table-column !important;\n  }\n\n  .lt-md\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .lt-md\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .lt-md\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .lt-md\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .lt-md\\:table-row {\n    display: table-row !important;\n  }\n\n  .lt-md\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .lt-md\\:grid {\n    display: grid !important;\n  }\n\n  .lt-md\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .lt-md\\:hidden {\n    display: none !important;\n  }\n\n  .lt-md\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .lt-md\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .lt-md\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .lt-md\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .lt-md\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .lt-md\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .lt-md\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .lt-md\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .lt-md\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .lt-md\\:items-center {\n    align-items: center !important;\n  }\n\n  .lt-md\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .lt-md\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .lt-md\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .lt-md\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .lt-md\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .lt-md\\:self-center {\n    align-self: center !important;\n  }\n\n  .lt-md\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .lt-md\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .lt-md\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .lt-md\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .lt-md\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .lt-md\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .lt-md\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .lt-md\\:content-center {\n    align-content: center !important;\n  }\n\n  .lt-md\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .lt-md\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .lt-md\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .lt-md\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .lt-md\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .lt-md\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .lt-md\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .lt-md\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .lt-md\\:flex-none {\n    flex: none !important;\n  }\n\n  .lt-md\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .lt-md\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .lt-md\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .lt-md\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .lt-md\\:order-1 {\n    order: 1 !important;\n  }\n\n  .lt-md\\:order-2 {\n    order: 2 !important;\n  }\n\n  .lt-md\\:order-3 {\n    order: 3 !important;\n  }\n\n  .lt-md\\:order-4 {\n    order: 4 !important;\n  }\n\n  .lt-md\\:order-5 {\n    order: 5 !important;\n  }\n\n  .lt-md\\:order-6 {\n    order: 6 !important;\n  }\n\n  .lt-md\\:order-7 {\n    order: 7 !important;\n  }\n\n  .lt-md\\:order-8 {\n    order: 8 !important;\n  }\n\n  .lt-md\\:order-9 {\n    order: 9 !important;\n  }\n\n  .lt-md\\:order-10 {\n    order: 10 !important;\n  }\n\n  .lt-md\\:order-11 {\n    order: 11 !important;\n  }\n\n  .lt-md\\:order-12 {\n    order: 12 !important;\n  }\n\n  .lt-md\\:order-first {\n    order: -9999 !important;\n  }\n\n  .lt-md\\:order-last {\n    order: 9999 !important;\n  }\n\n  .lt-md\\:order-none {\n    order: 0 !important;\n  }\n\n  .lt-md\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .lt-md\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .lt-md\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .lt-md\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .lt-md\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .lt-md\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .lt-md\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .lt-md\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .lt-md\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .lt-md\\:h-0 {\n    height: 0 !important;\n  }\n\n  .lt-md\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .lt-md\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .lt-md\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .lt-md\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .lt-md\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .lt-md\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .lt-md\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .lt-md\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .lt-md\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .lt-md\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .lt-md\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .lt-md\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .lt-md\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .lt-md\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .lt-md\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .lt-md\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .lt-md\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .lt-md\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .lt-md\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .lt-md\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .lt-md\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .lt-md\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .lt-md\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .lt-md\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .lt-md\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .lt-md\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .lt-md\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .lt-md\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .lt-md\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .lt-md\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .lt-md\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .lt-md\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .lt-md\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .lt-md\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .lt-md\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .lt-md\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .lt-md\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .lt-md\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .lt-md\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .lt-md\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .lt-md\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .lt-md\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .lt-md\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .lt-md\\:h-auto {\n    height: auto !important;\n  }\n\n  .lt-md\\:h-px {\n    height: 1px !important;\n  }\n\n  .lt-md\\:h-2px {\n    height: 2px !important;\n  }\n\n  .lt-md\\:h-full {\n    height: 100% !important;\n  }\n\n  .lt-md\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .lt-md\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .lt-md\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .lt-md\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .lt-md\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .lt-md\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .lt-md\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .lt-md\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .lt-md\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .lt-md\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .lt-md\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .lt-md\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .lt-md\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .lt-md\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .lt-md\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .lt-md\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .lt-md\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .lt-md\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .lt-md\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .lt-md\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .lt-md\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .lt-md\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .lt-md\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .lt-md\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .lt-md\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .lt-md\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .lt-md\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .lt-md\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .lt-md\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .lt-md\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .lt-md\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .lt-md\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .lt-md\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .lt-md\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .lt-md\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .lt-md\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .lt-md\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .lt-md\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .lt-md\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .lt-md\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .lt-md\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .lt-md\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .lt-md\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .lt-md\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .lt-md\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .lt-md\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .lt-md\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .lt-md\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .lt-md\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .lt-md\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .lt-md\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .lt-md\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .lt-md\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .lt-md\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .lt-md\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .lt-md\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .lt-md\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .lt-md\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .lt-md\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .lt-md\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .lt-md\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .lt-md\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .lt-md\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .lt-md\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .lt-md\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .lt-md\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .lt-md\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .lt-md\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .lt-md\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .lt-md\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .lt-md\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .lt-md\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .lt-md\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .lt-md\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .lt-md\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .lt-md\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .lt-md\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .lt-md\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .lt-md\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .lt-md\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .lt-md\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .lt-md\\:m-auto {\n    margin: auto !important;\n  }\n\n  .lt-md\\:m-px {\n    margin: 1px !important;\n  }\n\n  .lt-md\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .lt-md\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .lt-md\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .lt-md\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .lt-md\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .lt-md\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .lt-md\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .lt-md\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .lt-md\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .lt-md\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .lt-md\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .lt-md\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .lt-md\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .lt-md\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .lt-md\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .lt-md\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .lt-md\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .lt-md\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .lt-md\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .lt-md\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .lt-md\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .lt-md\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .lt-md\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .lt-md\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .lt-md\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .lt-md\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .lt-md\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .lt-md\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .lt-md\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .lt-md\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lt-md\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .lt-md\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lt-md\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .lt-md\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lt-md\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .lt-md\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .lt-md\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .lt-md\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lt-md\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .lt-md\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lt-md\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .lt-md\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .lt-md\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .lt-md\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lt-md\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .lt-md\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .lt-md\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .lt-md\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lt-md\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .lt-md\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .lt-md\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .lt-md\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lt-md\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .lt-md\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .lt-md\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .lt-md\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lt-md\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .lt-md\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .lt-md\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .lt-md\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lt-md\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .lt-md\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .lt-md\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .lt-md\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lt-md\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .lt-md\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .lt-md\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .lt-md\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .lt-md\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .lt-md\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .lt-md\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .lt-md\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .lt-md\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .lt-md\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .lt-md\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .lt-md\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .lt-md\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .lt-md\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .lt-md\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .lt-md\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .lt-md\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .lt-md\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .lt-md\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .lt-md\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lt-md\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .lt-md\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lt-md\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .lt-md\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lt-md\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .lt-md\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .lt-md\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .lt-md\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lt-md\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .lt-md\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lt-md\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .lt-md\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .lt-md\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .lt-md\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lt-md\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .lt-md\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .lt-md\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .lt-md\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lt-md\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .lt-md\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .lt-md\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .lt-md\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lt-md\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .lt-md\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .lt-md\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .lt-md\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lt-md\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .lt-md\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .lt-md\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .lt-md\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lt-md\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .lt-md\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .lt-md\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .lt-md\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lt-md\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .lt-md\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .lt-md\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .lt-md\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .lt-md\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .lt-md\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .lt-md\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .lt-md\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .lt-md\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .lt-md\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .lt-md\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .lt-md\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .lt-md\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .lt-md\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .lt-md\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .lt-md\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .lt-md\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .lt-md\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .lt-md\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .lt-md\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .lt-md\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .lt-md\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .lt-md\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .lt-md\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lt-md\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .lt-md\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .lt-md\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .lt-md\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lt-md\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .lt-md\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .lt-md\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .lt-md\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lt-md\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .lt-md\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .lt-md\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .lt-md\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .lt-md\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .lt-md\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .lt-md\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .lt-md\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lt-md\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .lt-md\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .lt-md\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .lt-md\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lt-md\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .lt-md\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .lt-md\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .lt-md\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .lt-md\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .lt-md\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .lt-md\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .lt-md\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lt-md\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .lt-md\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .lt-md\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .lt-md\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .lt-md\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .lt-md\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .lt-md\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .lt-md\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lt-md\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .lt-md\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .lt-md\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .lt-md\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .lt-md\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .lt-md\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .lt-md\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .lt-md\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lt-md\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .lt-md\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .lt-md\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .lt-md\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .lt-md\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .lt-md\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .lt-md\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .lt-md\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lt-md\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .lt-md\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .lt-md\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .lt-md\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .lt-md\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .lt-md\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .lt-md\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .lt-md\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lt-md\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .lt-md\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .lt-md\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .lt-md\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .lt-md\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .lt-md\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .lt-md\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .lt-md\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lt-md\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .lt-md\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .lt-md\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .lt-md\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .lt-md\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .lt-md\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .lt-md\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .lt-md\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .lt-md\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .lt-md\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .lt-md\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .lt-md\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .lt-md\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .lt-md\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .lt-md\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .lt-md\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .lt-md\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .lt-md\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .lt-md\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .lt-md\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .lt-md\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .lt-md\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .lt-md\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .lt-md\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .lt-md\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .lt-md\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .lt-md\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .lt-md\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .lt-md\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .lt-md\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .lt-md\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .lt-md\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .lt-md\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .lt-md\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .lt-md\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .lt-md\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .lt-md\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .lt-md\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .lt-md\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .lt-md\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lt-md\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .lt-md\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .lt-md\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .lt-md\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lt-md\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .lt-md\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .lt-md\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .lt-md\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lt-md\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .lt-md\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .lt-md\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .lt-md\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .lt-md\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .lt-md\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .lt-md\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .lt-md\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lt-md\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .lt-md\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .lt-md\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .lt-md\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lt-md\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .lt-md\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .lt-md\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .lt-md\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .lt-md\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .lt-md\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .lt-md\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .lt-md\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lt-md\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .lt-md\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .lt-md\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .lt-md\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .lt-md\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .lt-md\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .lt-md\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .lt-md\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lt-md\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .lt-md\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .lt-md\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .lt-md\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .lt-md\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .lt-md\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .lt-md\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .lt-md\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lt-md\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .lt-md\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .lt-md\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .lt-md\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .lt-md\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .lt-md\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .lt-md\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .lt-md\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lt-md\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .lt-md\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .lt-md\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .lt-md\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .lt-md\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .lt-md\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .lt-md\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .lt-md\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lt-md\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .lt-md\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .lt-md\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .lt-md\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .lt-md\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .lt-md\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .lt-md\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .lt-md\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lt-md\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .lt-md\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .lt-md\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .lt-md\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .lt-md\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .lt-md\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .lt-md\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .lt-md\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .lt-md\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .lt-md\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .lt-md\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .lt-md\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .lt-md\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .lt-md\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .lt-md\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .lt-md\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .lt-md\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .lt-md\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .lt-md\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .lt-md\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .lt-md\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .lt-md\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .lt-md\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .lt-md\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .lt-md\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .lt-md\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .lt-md\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .lt-md\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .lt-md\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .lt-md\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .lt-md\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .lt-md\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .lt-md\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .lt-md\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .lt-md\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .lt-md\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .lt-md\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .lt-md\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .lt-md\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .lt-md\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .lt-md\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .lt-md\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .lt-md\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .lt-md\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .lt-md\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .lt-md\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .lt-md\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .lt-md\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .lt-md\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .lt-md\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .lt-md\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .lt-md\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .lt-md\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .lt-md\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .lt-md\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .lt-md\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .lt-md\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .lt-md\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .lt-md\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .lt-md\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .lt-md\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .lt-md\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .lt-md\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .lt-md\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .lt-md\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .lt-md\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .lt-md\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .lt-md\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .lt-md\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .lt-md\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .lt-md\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .lt-md\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .lt-md\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .lt-md\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .lt-md\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .lt-md\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .lt-md\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .lt-md\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .lt-md\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .lt-md\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .lt-md\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .lt-md\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .lt-md\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .lt-md\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .lt-md\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .lt-md\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .lt-md\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .lt-md\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .lt-md\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .lt-md\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .lt-md\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .lt-md\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .lt-md\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .lt-md\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .lt-md\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .lt-md\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .lt-md\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .lt-md\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .lt-md\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .lt-md\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .lt-md\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .lt-md\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .lt-md\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .lt-md\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .lt-md\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .lt-md\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .lt-md\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .lt-md\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .lt-md\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .lt-md\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .lt-md\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .lt-md\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .lt-md\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .lt-md\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .lt-md\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .lt-md\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .lt-md\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .lt-md\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .lt-md\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .lt-md\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .lt-md\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .lt-md\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .lt-md\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .lt-md\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .lt-md\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .lt-md\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .lt-md\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .lt-md\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .lt-md\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .lt-md\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .lt-md\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .lt-md\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .lt-md\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .lt-md\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .lt-md\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .lt-md\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .lt-md\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .lt-md\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .lt-md\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .lt-md\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .lt-md\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .lt-md\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .lt-md\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .lt-md\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .lt-md\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .lt-md\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .lt-md\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .lt-md\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .lt-md\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .lt-md\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .lt-md\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .lt-md\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .lt-md\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .lt-md\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .lt-md\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .lt-md\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .lt-md\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .lt-md\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .lt-md\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .lt-md\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .lt-md\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .lt-md\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .lt-md\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .lt-md\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .lt-md\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .lt-md\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .lt-md\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .lt-md\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .lt-md\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .lt-md\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .lt-md\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .lt-md\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .lt-md\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .lt-md\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .lt-md\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .lt-md\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .lt-md\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .lt-md\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .lt-md\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .lt-md\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .lt-md\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .lt-md\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .lt-md\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .lt-md\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .lt-md\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .lt-md\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .lt-md\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .lt-md\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .lt-md\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .lt-md\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .lt-md\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .lt-md\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .lt-md\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .lt-md\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .lt-md\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .lt-md\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .lt-md\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .lt-md\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .lt-md\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .lt-md\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .lt-md\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .lt-md\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .lt-md\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .lt-md\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .lt-md\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .lt-md\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .lt-md\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .lt-md\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .lt-md\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .lt-md\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .lt-md\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .lt-md\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .lt-md\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .lt-md\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .lt-md\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .lt-md\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .lt-md\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .lt-md\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .lt-md\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .lt-md\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .lt-md\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .lt-md\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .lt-md\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .lt-md\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .lt-md\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .lt-md\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .lt-md\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .lt-md\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .lt-md\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .lt-md\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .lt-md\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .lt-md\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .lt-md\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .lt-md\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .lt-md\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .lt-md\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .lt-md\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .lt-md\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .lt-md\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .lt-md\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .lt-md\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .lt-md\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .lt-md\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .lt-md\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .lt-md\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .lt-md\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .lt-md\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .lt-md\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .lt-md\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .lt-md\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .lt-md\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .lt-md\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .lt-md\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .lt-md\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .lt-md\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .lt-md\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .lt-md\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .lt-md\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .lt-md\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .lt-md\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .lt-md\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .lt-md\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .lt-md\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .lt-md\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .lt-md\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .lt-md\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .lt-md\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .lt-md\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .lt-md\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .lt-md\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .lt-md\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .lt-md\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .lt-md\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .lt-md\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .lt-md\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .lt-md\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .lt-md\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .lt-md\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .lt-md\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .lt-md\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .lt-md\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .lt-md\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .lt-md\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .lt-md\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .lt-md\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .lt-md\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .lt-md\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .lt-md\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .lt-md\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .lt-md\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .lt-md\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .lt-md\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .lt-md\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .lt-md\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .lt-md\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .lt-md\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .lt-md\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .lt-md\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .lt-md\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .lt-md\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .lt-md\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .lt-md\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .lt-md\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .lt-md\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .lt-md\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .lt-md\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .lt-md\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .lt-md\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .lt-md\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .lt-md\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .lt-md\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .lt-md\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .lt-md\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .lt-md\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .lt-md\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .lt-md\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .lt-md\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .lt-md\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .lt-md\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .lt-md\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .lt-md\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .lt-md\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .lt-md\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .lt-md\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .lt-md\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .lt-md\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .lt-md\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .lt-md\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .lt-md\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .lt-md\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .lt-md\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .lt-md\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .lt-md\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .lt-md\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .lt-md\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .lt-md\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .lt-md\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .lt-md\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .lt-md\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .lt-md\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .lt-md\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .lt-md\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .lt-md\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .lt-md\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .lt-md\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .lt-md\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .lt-md\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .lt-md\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .lt-md\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .lt-md\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .lt-md\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .lt-md\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .lt-md\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .lt-md\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .lt-md\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .lt-md\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .lt-md\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .lt-md\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .lt-md\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .lt-md\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .lt-md\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .lt-md\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .lt-md\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .lt-md\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .lt-md\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .lt-md\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .lt-md\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .lt-md\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .lt-md\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .lt-md\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .lt-md\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .lt-md\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .lt-md\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .lt-md\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .lt-md\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .lt-md\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .lt-md\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .lt-md\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .lt-md\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .lt-md\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .lt-md\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .lt-md\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .lt-md\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .lt-md\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .lt-md\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .lt-md\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .lt-md\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .lt-md\\:p-px {\n    padding: 1px !important;\n  }\n\n  .lt-md\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .lt-md\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .lt-md\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .lt-md\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lt-md\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .lt-md\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lt-md\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .lt-md\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lt-md\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .lt-md\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .lt-md\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .lt-md\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lt-md\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .lt-md\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lt-md\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .lt-md\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .lt-md\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .lt-md\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lt-md\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .lt-md\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .lt-md\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .lt-md\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lt-md\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .lt-md\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .lt-md\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .lt-md\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lt-md\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .lt-md\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .lt-md\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .lt-md\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lt-md\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .lt-md\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .lt-md\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .lt-md\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lt-md\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .lt-md\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .lt-md\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .lt-md\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lt-md\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .lt-md\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .lt-md\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .lt-md\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .lt-md\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .lt-md\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .lt-md\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .lt-md\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .lt-md\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .lt-md\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .lt-md\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .lt-md\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .lt-md\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .lt-md\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .lt-md\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .lt-md\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .lt-md\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .lt-md\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .lt-md\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .lt-md\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .lt-md\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .lt-md\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .lt-md\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .lt-md\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lt-md\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .lt-md\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .lt-md\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .lt-md\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lt-md\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .lt-md\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .lt-md\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .lt-md\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lt-md\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .lt-md\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .lt-md\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .lt-md\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .lt-md\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .lt-md\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .lt-md\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .lt-md\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lt-md\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .lt-md\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .lt-md\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .lt-md\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lt-md\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .lt-md\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .lt-md\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .lt-md\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .lt-md\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .lt-md\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .lt-md\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .lt-md\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lt-md\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .lt-md\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .lt-md\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .lt-md\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .lt-md\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .lt-md\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .lt-md\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .lt-md\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lt-md\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .lt-md\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .lt-md\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .lt-md\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .lt-md\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .lt-md\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .lt-md\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .lt-md\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lt-md\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .lt-md\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .lt-md\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .lt-md\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .lt-md\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .lt-md\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .lt-md\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .lt-md\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lt-md\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .lt-md\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .lt-md\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .lt-md\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .lt-md\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .lt-md\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .lt-md\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .lt-md\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lt-md\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .lt-md\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .lt-md\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .lt-md\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .lt-md\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .lt-md\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .lt-md\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .lt-md\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lt-md\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .lt-md\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .lt-md\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .lt-md\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .lt-md\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .lt-md\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .lt-md\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .lt-md\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .lt-md\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .lt-md\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .lt-md\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .lt-md\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .lt-md\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .lt-md\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .lt-md\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .lt-md\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .lt-md\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .lt-md\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .lt-md\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .lt-md\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .lt-md\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .lt-md\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .lt-md\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .lt-md\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .lt-md\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .lt-md\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .lt-md\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .lt-md\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .lt-md\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .lt-md\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .lt-md\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .lt-md\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .lt-md\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .lt-md\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-md\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .lt-md\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .lt-md\\:static {\n    position: static !important;\n  }\n\n  .lt-md\\:fixed {\n    position: fixed !important;\n  }\n\n  .lt-md\\:absolute {\n    position: absolute !important;\n  }\n\n  .lt-md\\:relative {\n    position: relative !important;\n  }\n\n  .lt-md\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .lt-md\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .lt-md\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .lt-md\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .lt-md\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .lt-md\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .lt-md\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .lt-md\\:top-0 {\n    top: 0 !important;\n  }\n\n  .lt-md\\:right-0 {\n    right: 0 !important;\n  }\n\n  .lt-md\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .lt-md\\:left-0 {\n    left: 0 !important;\n  }\n\n  .lt-md\\:top-auto {\n    top: auto !important;\n  }\n\n  .lt-md\\:right-auto {\n    right: auto !important;\n  }\n\n  .lt-md\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .lt-md\\:left-auto {\n    left: auto !important;\n  }\n\n  .lt-md\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-md\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-md\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-md\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .lt-md\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-md\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-md\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .lt-md\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-md\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-md\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .lt-md\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-md\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .lt-md\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .lt-md\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .lt-md\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .lt-md\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .lt-md\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .lt-md\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .lt-md\\:text-left {\n    text-align: left !important;\n  }\n\n  .lt-md\\:text-center {\n    text-align: center !important;\n  }\n\n  .lt-md\\:text-right {\n    text-align: right !important;\n  }\n\n  .lt-md\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .lt-md\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-md\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-md\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-md\\:italic {\n    font-style: italic !important;\n  }\n\n  .lt-md\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .lt-md\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .lt-md\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .lt-md\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .lt-md\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .lt-md\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .lt-md\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .lt-md\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .lt-md\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .lt-md\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .lt-md\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .lt-md\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .lt-md\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .lt-md\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .lt-md\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .lt-md\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .lt-md\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .lt-md\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .lt-md\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .lt-md\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .lt-md\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .lt-md\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .lt-md\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .lt-md\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .lt-md\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .lt-md\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .lt-md\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .lt-md\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .lt-md\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .lt-md\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .lt-md\\:visible {\n    visibility: visible !important;\n  }\n\n  .lt-md\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .lt-md\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .lt-md\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .lt-md\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .lt-md\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .lt-md\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .lt-md\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .lt-md\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .lt-md\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .lt-md\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .lt-md\\:w-0 {\n    width: 0 !important;\n  }\n\n  .lt-md\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .lt-md\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .lt-md\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .lt-md\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .lt-md\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .lt-md\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .lt-md\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .lt-md\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .lt-md\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .lt-md\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .lt-md\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .lt-md\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .lt-md\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .lt-md\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .lt-md\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .lt-md\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .lt-md\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .lt-md\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .lt-md\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .lt-md\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .lt-md\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .lt-md\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .lt-md\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .lt-md\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .lt-md\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .lt-md\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .lt-md\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .lt-md\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .lt-md\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .lt-md\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .lt-md\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .lt-md\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .lt-md\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .lt-md\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .lt-md\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .lt-md\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .lt-md\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .lt-md\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .lt-md\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .lt-md\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .lt-md\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .lt-md\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .lt-md\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .lt-md\\:w-auto {\n    width: auto !important;\n  }\n\n  .lt-md\\:w-px {\n    width: 1px !important;\n  }\n\n  .lt-md\\:w-2px {\n    width: 2px !important;\n  }\n\n  .lt-md\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .lt-md\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .lt-md\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .lt-md\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .lt-md\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .lt-md\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .lt-md\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .lt-md\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .lt-md\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .lt-md\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .lt-md\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .lt-md\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .lt-md\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .lt-md\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .lt-md\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .lt-md\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .lt-md\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .lt-md\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .lt-md\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .lt-md\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .lt-md\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .lt-md\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .lt-md\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .lt-md\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .lt-md\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .lt-md\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .lt-md\\:w-full {\n    width: 100% !important;\n  }\n\n  .lt-md\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .lt-md\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .lt-md\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .lt-md\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .lt-md\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .lt-md\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .lt-md\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .lt-md\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .lt-md\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .lt-md\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .lt-md\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .lt-md\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .lt-md\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .lt-md\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .lt-md\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .lt-md\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .lt-md\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .lt-md\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .lt-md\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .lt-md\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .lt-md\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .lt-md\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .lt-md\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .lt-md\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .lt-md\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .lt-md\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .lt-md\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .lt-md\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .lt-md\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .lt-md\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .lt-md\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .lt-md\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .lt-md\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .lt-md\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .lt-md\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .lt-md\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .lt-md\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .lt-md\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .lt-md\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .lt-md\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .lt-md\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .lt-md\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .lt-md\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .lt-md\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .lt-md\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .lt-md\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .lt-md\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .lt-md\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .lt-md\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .lt-md\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .lt-md\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .lt-md\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .lt-md\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .lt-md\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .lt-md\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .lt-md\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .lt-md\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .lt-md\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .lt-md\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .lt-md\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .lt-md\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .lt-md\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .lt-md\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .lt-md\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .lt-md\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .lt-md\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .lt-md\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .lt-md\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .lt-md\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .lt-md\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .lt-md\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .lt-md\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .lt-md\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .lt-md\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .lt-md\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .lt-md\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .lt-md\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .lt-md\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .lt-md\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .lt-md\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .lt-md\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .lt-md\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .lt-md\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .lt-md\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .lt-md\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .lt-md\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .lt-md\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .lt-md\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .lt-md\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .lt-md\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .lt-md\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .lt-md\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .lt-md\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .lt-md\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .lt-md\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .lt-md\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .lt-md\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .lt-md\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .lt-md\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .lt-md\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .lt-md\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .lt-md\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .lt-md\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .lt-md\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .lt-md\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .lt-md\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .lt-md\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .lt-md\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .lt-md\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .lt-md\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .lt-md\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .lt-md\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .lt-md\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .lt-md\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .lt-md\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .lt-md\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .lt-md\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .lt-md\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .lt-md\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .lt-md\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .lt-md\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .lt-md\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .lt-md\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .lt-md\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .lt-md\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .lt-md\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .lt-md\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .lt-md\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .lt-md\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .lt-md\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .lt-md\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .lt-md\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .lt-md\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .lt-md\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .lt-md\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .lt-md\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .lt-md\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .lt-md\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .lt-md\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .lt-md\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .lt-md\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .lt-md\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .lt-md\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .lt-md\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .lt-md\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lt-md\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .lt-md\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .lt-md\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .lt-md\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .lt-md\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .lt-md\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .lt-md\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .lt-md\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .lt-md\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .lt-md\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .lt-md\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .lt-md\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .lt-md\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .lt-md\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .lt-md\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .lt-md\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .lt-md\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .lt-md\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .lt-md\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .lt-md\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .lt-md\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .lt-md\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .lt-md\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .lt-md\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .lt-md\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .lt-md\\:transform-none {\n    transform: none !important;\n  }\n\n  .lt-md\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .lt-md\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .lt-md\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .lt-md\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .lt-md\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .lt-md\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .lt-md\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .lt-md\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .lt-md\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .lt-md\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .lt-md\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .lt-md\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .lt-md\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .lt-md\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .lt-md\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .lt-md\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .lt-md\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .lt-md\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .lt-md\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .lt-md\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .lt-md\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .lt-md\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .lt-md\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .lt-md\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .lt-md\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .lt-md\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .lt-md\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .lt-md\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .lt-md\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .lt-md\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .lt-md\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .lt-md\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .lt-md\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .lt-md\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .lt-md\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .lt-md\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .lt-md\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .lt-md\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .lt-md\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (max-width: 1279px) {\n  .lt-lg\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-lg\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-lg\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .lt-lg\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .lt-lg\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-lg\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-lg\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-lg\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-lg\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-lg\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-lg\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-lg\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-lg\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-lg\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-lg\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .lt-lg\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .lt-lg\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .lt-lg\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .lt-lg\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lt-lg\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .lt-lg\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .lt-lg\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lt-lg\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lt-lg\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lt-lg\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .lt-lg\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .lt-lg\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .lt-lg\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .lt-lg\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-lg\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-lg\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .lt-lg\\:bg-center {\n    background-position: center !important;\n  }\n\n  .lt-lg\\:bg-left {\n    background-position: left !important;\n  }\n\n  .lt-lg\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .lt-lg\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .lt-lg\\:bg-right {\n    background-position: right !important;\n  }\n\n  .lt-lg\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .lt-lg\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .lt-lg\\:bg-top {\n    background-position: top !important;\n  }\n\n  .lt-lg\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .lt-lg\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .lt-lg\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .lt-lg\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .lt-lg\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .lt-lg\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .lt-lg\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .lt-lg\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .lt-lg\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .lt-lg\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .lt-lg\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .lt-lg\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-lg\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-lg\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-lg\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-lg\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-lg\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-lg\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-lg\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lt-lg\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-lg\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .lt-lg\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .lt-lg\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .lt-lg\\:border-double {\n    border-style: double !important;\n  }\n\n  .lt-lg\\:border-none {\n    border-style: none !important;\n  }\n\n  .lt-lg\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .lt-lg\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .lt-lg\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .lt-lg\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .lt-lg\\:border {\n    border-width: 1px !important;\n  }\n\n  .lt-lg\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .lt-lg\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .lt-lg\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-lg\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .lt-lg\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .lt-lg\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .lt-lg\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-lg\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .lt-lg\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .lt-lg\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .lt-lg\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-lg\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .lt-lg\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .lt-lg\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .lt-lg\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-lg\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .lt-lg\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .lt-lg\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .lt-lg\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-lg\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .lt-lg\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .lt-lg\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .lt-lg\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .lt-lg\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .lt-lg\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .lt-lg\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .lt-lg\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .lt-lg\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-lg\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .lt-lg\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .lt-lg\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .lt-lg\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-lg\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .lt-lg\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .lt-lg\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .lt-lg\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-lg\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .lt-lg\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .lt-lg\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .lt-lg\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-lg\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .lt-lg\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .lt-lg\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .lt-lg\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-lg\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .lt-lg\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .lt-lg\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .lt-lg\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .lt-lg\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .lt-lg\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .lt-lg\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .lt-lg\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .lt-lg\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-lg\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .lt-lg\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .lt-lg\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .lt-lg\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-lg\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .lt-lg\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .lt-lg\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .lt-lg\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-lg\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .lt-lg\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .lt-lg\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .lt-lg\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-lg\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .lt-lg\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .lt-lg\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .lt-lg\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-lg\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .lt-lg\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .lt-lg\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .lt-lg\\:block {\n    display: block !important;\n  }\n\n  .lt-lg\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .lt-lg\\:inline {\n    display: inline !important;\n  }\n\n  .lt-lg\\:flex {\n    display: flex !important;\n  }\n\n  .lt-lg\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .lt-lg\\:table {\n    display: table !important;\n  }\n\n  .lt-lg\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .lt-lg\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .lt-lg\\:table-column {\n    display: table-column !important;\n  }\n\n  .lt-lg\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .lt-lg\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .lt-lg\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .lt-lg\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .lt-lg\\:table-row {\n    display: table-row !important;\n  }\n\n  .lt-lg\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .lt-lg\\:grid {\n    display: grid !important;\n  }\n\n  .lt-lg\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .lt-lg\\:hidden {\n    display: none !important;\n  }\n\n  .lt-lg\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .lt-lg\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .lt-lg\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .lt-lg\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .lt-lg\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .lt-lg\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .lt-lg\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .lt-lg\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .lt-lg\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .lt-lg\\:items-center {\n    align-items: center !important;\n  }\n\n  .lt-lg\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .lt-lg\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .lt-lg\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .lt-lg\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .lt-lg\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .lt-lg\\:self-center {\n    align-self: center !important;\n  }\n\n  .lt-lg\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .lt-lg\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .lt-lg\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .lt-lg\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .lt-lg\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .lt-lg\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .lt-lg\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .lt-lg\\:content-center {\n    align-content: center !important;\n  }\n\n  .lt-lg\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .lt-lg\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .lt-lg\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .lt-lg\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .lt-lg\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .lt-lg\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .lt-lg\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .lt-lg\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .lt-lg\\:flex-none {\n    flex: none !important;\n  }\n\n  .lt-lg\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .lt-lg\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .lt-lg\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .lt-lg\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .lt-lg\\:order-1 {\n    order: 1 !important;\n  }\n\n  .lt-lg\\:order-2 {\n    order: 2 !important;\n  }\n\n  .lt-lg\\:order-3 {\n    order: 3 !important;\n  }\n\n  .lt-lg\\:order-4 {\n    order: 4 !important;\n  }\n\n  .lt-lg\\:order-5 {\n    order: 5 !important;\n  }\n\n  .lt-lg\\:order-6 {\n    order: 6 !important;\n  }\n\n  .lt-lg\\:order-7 {\n    order: 7 !important;\n  }\n\n  .lt-lg\\:order-8 {\n    order: 8 !important;\n  }\n\n  .lt-lg\\:order-9 {\n    order: 9 !important;\n  }\n\n  .lt-lg\\:order-10 {\n    order: 10 !important;\n  }\n\n  .lt-lg\\:order-11 {\n    order: 11 !important;\n  }\n\n  .lt-lg\\:order-12 {\n    order: 12 !important;\n  }\n\n  .lt-lg\\:order-first {\n    order: -9999 !important;\n  }\n\n  .lt-lg\\:order-last {\n    order: 9999 !important;\n  }\n\n  .lt-lg\\:order-none {\n    order: 0 !important;\n  }\n\n  .lt-lg\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .lt-lg\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .lt-lg\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .lt-lg\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .lt-lg\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .lt-lg\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .lt-lg\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .lt-lg\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .lt-lg\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .lt-lg\\:h-0 {\n    height: 0 !important;\n  }\n\n  .lt-lg\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .lt-lg\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .lt-lg\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .lt-lg\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .lt-lg\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .lt-lg\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .lt-lg\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .lt-lg\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .lt-lg\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .lt-lg\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .lt-lg\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .lt-lg\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .lt-lg\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .lt-lg\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .lt-lg\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .lt-lg\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .lt-lg\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .lt-lg\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .lt-lg\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .lt-lg\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .lt-lg\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .lt-lg\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .lt-lg\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .lt-lg\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .lt-lg\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .lt-lg\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .lt-lg\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .lt-lg\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .lt-lg\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .lt-lg\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .lt-lg\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .lt-lg\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .lt-lg\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .lt-lg\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .lt-lg\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .lt-lg\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .lt-lg\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .lt-lg\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .lt-lg\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .lt-lg\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .lt-lg\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .lt-lg\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .lt-lg\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .lt-lg\\:h-auto {\n    height: auto !important;\n  }\n\n  .lt-lg\\:h-px {\n    height: 1px !important;\n  }\n\n  .lt-lg\\:h-2px {\n    height: 2px !important;\n  }\n\n  .lt-lg\\:h-full {\n    height: 100% !important;\n  }\n\n  .lt-lg\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .lt-lg\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .lt-lg\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .lt-lg\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .lt-lg\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .lt-lg\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .lt-lg\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .lt-lg\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .lt-lg\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .lt-lg\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .lt-lg\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .lt-lg\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .lt-lg\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .lt-lg\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .lt-lg\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .lt-lg\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .lt-lg\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .lt-lg\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .lt-lg\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .lt-lg\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .lt-lg\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .lt-lg\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .lt-lg\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .lt-lg\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .lt-lg\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .lt-lg\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .lt-lg\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .lt-lg\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .lt-lg\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .lt-lg\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .lt-lg\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .lt-lg\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .lt-lg\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .lt-lg\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .lt-lg\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .lt-lg\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .lt-lg\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .lt-lg\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .lt-lg\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .lt-lg\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .lt-lg\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .lt-lg\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .lt-lg\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .lt-lg\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .lt-lg\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .lt-lg\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .lt-lg\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .lt-lg\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .lt-lg\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .lt-lg\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .lt-lg\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .lt-lg\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .lt-lg\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .lt-lg\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .lt-lg\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .lt-lg\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .lt-lg\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .lt-lg\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .lt-lg\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .lt-lg\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .lt-lg\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .lt-lg\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .lt-lg\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .lt-lg\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .lt-lg\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .lt-lg\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .lt-lg\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .lt-lg\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .lt-lg\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .lt-lg\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .lt-lg\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .lt-lg\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .lt-lg\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .lt-lg\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .lt-lg\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .lt-lg\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .lt-lg\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .lt-lg\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .lt-lg\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .lt-lg\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .lt-lg\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .lt-lg\\:m-auto {\n    margin: auto !important;\n  }\n\n  .lt-lg\\:m-px {\n    margin: 1px !important;\n  }\n\n  .lt-lg\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .lt-lg\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .lt-lg\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .lt-lg\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .lt-lg\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .lt-lg\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .lt-lg\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .lt-lg\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .lt-lg\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .lt-lg\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .lt-lg\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .lt-lg\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .lt-lg\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .lt-lg\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .lt-lg\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .lt-lg\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .lt-lg\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .lt-lg\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .lt-lg\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .lt-lg\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .lt-lg\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .lt-lg\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .lt-lg\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .lt-lg\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .lt-lg\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .lt-lg\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .lt-lg\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .lt-lg\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .lt-lg\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .lt-lg\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lt-lg\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .lt-lg\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lt-lg\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .lt-lg\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lt-lg\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .lt-lg\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .lt-lg\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .lt-lg\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lt-lg\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .lt-lg\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lt-lg\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .lt-lg\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .lt-lg\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .lt-lg\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lt-lg\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .lt-lg\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .lt-lg\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .lt-lg\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lt-lg\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .lt-lg\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .lt-lg\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .lt-lg\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lt-lg\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .lt-lg\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .lt-lg\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .lt-lg\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lt-lg\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .lt-lg\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .lt-lg\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .lt-lg\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lt-lg\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .lt-lg\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .lt-lg\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .lt-lg\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lt-lg\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .lt-lg\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .lt-lg\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .lt-lg\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .lt-lg\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .lt-lg\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .lt-lg\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .lt-lg\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .lt-lg\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .lt-lg\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .lt-lg\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .lt-lg\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .lt-lg\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .lt-lg\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .lt-lg\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .lt-lg\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .lt-lg\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .lt-lg\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .lt-lg\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .lt-lg\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lt-lg\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .lt-lg\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lt-lg\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .lt-lg\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lt-lg\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .lt-lg\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .lt-lg\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .lt-lg\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lt-lg\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .lt-lg\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lt-lg\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .lt-lg\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .lt-lg\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .lt-lg\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lt-lg\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .lt-lg\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .lt-lg\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .lt-lg\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lt-lg\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .lt-lg\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .lt-lg\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .lt-lg\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lt-lg\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .lt-lg\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .lt-lg\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .lt-lg\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lt-lg\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .lt-lg\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .lt-lg\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .lt-lg\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lt-lg\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .lt-lg\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .lt-lg\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .lt-lg\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lt-lg\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .lt-lg\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .lt-lg\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .lt-lg\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .lt-lg\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .lt-lg\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .lt-lg\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .lt-lg\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .lt-lg\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .lt-lg\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .lt-lg\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .lt-lg\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .lt-lg\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .lt-lg\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .lt-lg\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .lt-lg\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .lt-lg\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .lt-lg\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .lt-lg\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .lt-lg\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .lt-lg\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .lt-lg\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .lt-lg\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .lt-lg\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lt-lg\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .lt-lg\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .lt-lg\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .lt-lg\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lt-lg\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .lt-lg\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .lt-lg\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .lt-lg\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lt-lg\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .lt-lg\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .lt-lg\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .lt-lg\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .lt-lg\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .lt-lg\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .lt-lg\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .lt-lg\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lt-lg\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .lt-lg\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .lt-lg\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .lt-lg\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lt-lg\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .lt-lg\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .lt-lg\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .lt-lg\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .lt-lg\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .lt-lg\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .lt-lg\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .lt-lg\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lt-lg\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .lt-lg\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .lt-lg\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .lt-lg\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .lt-lg\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .lt-lg\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .lt-lg\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .lt-lg\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lt-lg\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .lt-lg\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .lt-lg\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .lt-lg\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .lt-lg\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .lt-lg\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .lt-lg\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .lt-lg\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lt-lg\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .lt-lg\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .lt-lg\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .lt-lg\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .lt-lg\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .lt-lg\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .lt-lg\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .lt-lg\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lt-lg\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .lt-lg\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .lt-lg\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .lt-lg\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .lt-lg\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .lt-lg\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .lt-lg\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .lt-lg\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lt-lg\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .lt-lg\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .lt-lg\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .lt-lg\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .lt-lg\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .lt-lg\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .lt-lg\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .lt-lg\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lt-lg\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .lt-lg\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .lt-lg\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .lt-lg\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .lt-lg\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .lt-lg\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .lt-lg\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .lt-lg\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .lt-lg\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .lt-lg\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .lt-lg\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .lt-lg\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .lt-lg\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .lt-lg\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .lt-lg\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .lt-lg\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .lt-lg\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .lt-lg\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .lt-lg\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .lt-lg\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .lt-lg\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .lt-lg\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .lt-lg\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .lt-lg\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .lt-lg\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .lt-lg\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .lt-lg\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .lt-lg\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .lt-lg\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .lt-lg\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .lt-lg\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .lt-lg\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .lt-lg\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .lt-lg\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .lt-lg\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .lt-lg\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .lt-lg\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .lt-lg\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .lt-lg\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .lt-lg\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lt-lg\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .lt-lg\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .lt-lg\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .lt-lg\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lt-lg\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .lt-lg\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .lt-lg\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .lt-lg\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lt-lg\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .lt-lg\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .lt-lg\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .lt-lg\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .lt-lg\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .lt-lg\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .lt-lg\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .lt-lg\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lt-lg\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .lt-lg\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .lt-lg\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .lt-lg\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lt-lg\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .lt-lg\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .lt-lg\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .lt-lg\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .lt-lg\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .lt-lg\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .lt-lg\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .lt-lg\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lt-lg\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .lt-lg\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .lt-lg\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .lt-lg\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .lt-lg\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .lt-lg\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .lt-lg\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .lt-lg\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lt-lg\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .lt-lg\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .lt-lg\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .lt-lg\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .lt-lg\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .lt-lg\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .lt-lg\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .lt-lg\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lt-lg\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .lt-lg\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .lt-lg\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .lt-lg\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .lt-lg\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .lt-lg\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .lt-lg\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .lt-lg\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lt-lg\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .lt-lg\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .lt-lg\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .lt-lg\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .lt-lg\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .lt-lg\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .lt-lg\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .lt-lg\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lt-lg\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .lt-lg\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .lt-lg\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .lt-lg\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .lt-lg\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .lt-lg\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .lt-lg\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .lt-lg\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lt-lg\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .lt-lg\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .lt-lg\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .lt-lg\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .lt-lg\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .lt-lg\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .lt-lg\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .lt-lg\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .lt-lg\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .lt-lg\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .lt-lg\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .lt-lg\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .lt-lg\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .lt-lg\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .lt-lg\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .lt-lg\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .lt-lg\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .lt-lg\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .lt-lg\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .lt-lg\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .lt-lg\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .lt-lg\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .lt-lg\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .lt-lg\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .lt-lg\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .lt-lg\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .lt-lg\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .lt-lg\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .lt-lg\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .lt-lg\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .lt-lg\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .lt-lg\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .lt-lg\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .lt-lg\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .lt-lg\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .lt-lg\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .lt-lg\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .lt-lg\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .lt-lg\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .lt-lg\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .lt-lg\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .lt-lg\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .lt-lg\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .lt-lg\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .lt-lg\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .lt-lg\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .lt-lg\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .lt-lg\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .lt-lg\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .lt-lg\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .lt-lg\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .lt-lg\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .lt-lg\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .lt-lg\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .lt-lg\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .lt-lg\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .lt-lg\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .lt-lg\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .lt-lg\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .lt-lg\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .lt-lg\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .lt-lg\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .lt-lg\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .lt-lg\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .lt-lg\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .lt-lg\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .lt-lg\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .lt-lg\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .lt-lg\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .lt-lg\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .lt-lg\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .lt-lg\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .lt-lg\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .lt-lg\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .lt-lg\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .lt-lg\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .lt-lg\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .lt-lg\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .lt-lg\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .lt-lg\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .lt-lg\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .lt-lg\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .lt-lg\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .lt-lg\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .lt-lg\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .lt-lg\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .lt-lg\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .lt-lg\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .lt-lg\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .lt-lg\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .lt-lg\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .lt-lg\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .lt-lg\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .lt-lg\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .lt-lg\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .lt-lg\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .lt-lg\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .lt-lg\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .lt-lg\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .lt-lg\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .lt-lg\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .lt-lg\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .lt-lg\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .lt-lg\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .lt-lg\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .lt-lg\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .lt-lg\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .lt-lg\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .lt-lg\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .lt-lg\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .lt-lg\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .lt-lg\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .lt-lg\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .lt-lg\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .lt-lg\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .lt-lg\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .lt-lg\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .lt-lg\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .lt-lg\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .lt-lg\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .lt-lg\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .lt-lg\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .lt-lg\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .lt-lg\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .lt-lg\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .lt-lg\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .lt-lg\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .lt-lg\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .lt-lg\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .lt-lg\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .lt-lg\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .lt-lg\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .lt-lg\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .lt-lg\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .lt-lg\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .lt-lg\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .lt-lg\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .lt-lg\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .lt-lg\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .lt-lg\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .lt-lg\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .lt-lg\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .lt-lg\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .lt-lg\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .lt-lg\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .lt-lg\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .lt-lg\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .lt-lg\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .lt-lg\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .lt-lg\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .lt-lg\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .lt-lg\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .lt-lg\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .lt-lg\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .lt-lg\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .lt-lg\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .lt-lg\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .lt-lg\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .lt-lg\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .lt-lg\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .lt-lg\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .lt-lg\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .lt-lg\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .lt-lg\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .lt-lg\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .lt-lg\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .lt-lg\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .lt-lg\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .lt-lg\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .lt-lg\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .lt-lg\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .lt-lg\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .lt-lg\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .lt-lg\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .lt-lg\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .lt-lg\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .lt-lg\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .lt-lg\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .lt-lg\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .lt-lg\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .lt-lg\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .lt-lg\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .lt-lg\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .lt-lg\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .lt-lg\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .lt-lg\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .lt-lg\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .lt-lg\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .lt-lg\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .lt-lg\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .lt-lg\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .lt-lg\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .lt-lg\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .lt-lg\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .lt-lg\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .lt-lg\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .lt-lg\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .lt-lg\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .lt-lg\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .lt-lg\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .lt-lg\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .lt-lg\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .lt-lg\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .lt-lg\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .lt-lg\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .lt-lg\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .lt-lg\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .lt-lg\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .lt-lg\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .lt-lg\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .lt-lg\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .lt-lg\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .lt-lg\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .lt-lg\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .lt-lg\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .lt-lg\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .lt-lg\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .lt-lg\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .lt-lg\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .lt-lg\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .lt-lg\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .lt-lg\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .lt-lg\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .lt-lg\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .lt-lg\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .lt-lg\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .lt-lg\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .lt-lg\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .lt-lg\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .lt-lg\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .lt-lg\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .lt-lg\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .lt-lg\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .lt-lg\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .lt-lg\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .lt-lg\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .lt-lg\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .lt-lg\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .lt-lg\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .lt-lg\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .lt-lg\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .lt-lg\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .lt-lg\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .lt-lg\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .lt-lg\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .lt-lg\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .lt-lg\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .lt-lg\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .lt-lg\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .lt-lg\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .lt-lg\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .lt-lg\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .lt-lg\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .lt-lg\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .lt-lg\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .lt-lg\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .lt-lg\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .lt-lg\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .lt-lg\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .lt-lg\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .lt-lg\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .lt-lg\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .lt-lg\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .lt-lg\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .lt-lg\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .lt-lg\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .lt-lg\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .lt-lg\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .lt-lg\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .lt-lg\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .lt-lg\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .lt-lg\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .lt-lg\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .lt-lg\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .lt-lg\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .lt-lg\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .lt-lg\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .lt-lg\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .lt-lg\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .lt-lg\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .lt-lg\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .lt-lg\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .lt-lg\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .lt-lg\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .lt-lg\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .lt-lg\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .lt-lg\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .lt-lg\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .lt-lg\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .lt-lg\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .lt-lg\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .lt-lg\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .lt-lg\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .lt-lg\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .lt-lg\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .lt-lg\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .lt-lg\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .lt-lg\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .lt-lg\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .lt-lg\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .lt-lg\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .lt-lg\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .lt-lg\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .lt-lg\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .lt-lg\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .lt-lg\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .lt-lg\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .lt-lg\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .lt-lg\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .lt-lg\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .lt-lg\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .lt-lg\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .lt-lg\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .lt-lg\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .lt-lg\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .lt-lg\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .lt-lg\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .lt-lg\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .lt-lg\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .lt-lg\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .lt-lg\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .lt-lg\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .lt-lg\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .lt-lg\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .lt-lg\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .lt-lg\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .lt-lg\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .lt-lg\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .lt-lg\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .lt-lg\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .lt-lg\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .lt-lg\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .lt-lg\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .lt-lg\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .lt-lg\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .lt-lg\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .lt-lg\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .lt-lg\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .lt-lg\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .lt-lg\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .lt-lg\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .lt-lg\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .lt-lg\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .lt-lg\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .lt-lg\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .lt-lg\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .lt-lg\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .lt-lg\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .lt-lg\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .lt-lg\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .lt-lg\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .lt-lg\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .lt-lg\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .lt-lg\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .lt-lg\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .lt-lg\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .lt-lg\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .lt-lg\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .lt-lg\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .lt-lg\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .lt-lg\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .lt-lg\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .lt-lg\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .lt-lg\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .lt-lg\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .lt-lg\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .lt-lg\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .lt-lg\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .lt-lg\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .lt-lg\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .lt-lg\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .lt-lg\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .lt-lg\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .lt-lg\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .lt-lg\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .lt-lg\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .lt-lg\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .lt-lg\\:p-px {\n    padding: 1px !important;\n  }\n\n  .lt-lg\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .lt-lg\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .lt-lg\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .lt-lg\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lt-lg\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .lt-lg\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lt-lg\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .lt-lg\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lt-lg\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .lt-lg\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .lt-lg\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .lt-lg\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lt-lg\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .lt-lg\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lt-lg\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .lt-lg\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .lt-lg\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .lt-lg\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lt-lg\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .lt-lg\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .lt-lg\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .lt-lg\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lt-lg\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .lt-lg\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .lt-lg\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .lt-lg\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lt-lg\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .lt-lg\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .lt-lg\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .lt-lg\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lt-lg\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .lt-lg\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .lt-lg\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .lt-lg\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lt-lg\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .lt-lg\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .lt-lg\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .lt-lg\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lt-lg\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .lt-lg\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .lt-lg\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .lt-lg\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .lt-lg\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .lt-lg\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .lt-lg\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .lt-lg\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .lt-lg\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .lt-lg\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .lt-lg\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .lt-lg\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .lt-lg\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .lt-lg\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .lt-lg\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .lt-lg\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .lt-lg\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .lt-lg\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .lt-lg\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .lt-lg\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .lt-lg\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .lt-lg\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .lt-lg\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .lt-lg\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lt-lg\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .lt-lg\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .lt-lg\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .lt-lg\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lt-lg\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .lt-lg\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .lt-lg\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .lt-lg\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lt-lg\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .lt-lg\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .lt-lg\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .lt-lg\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .lt-lg\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .lt-lg\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .lt-lg\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .lt-lg\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lt-lg\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .lt-lg\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .lt-lg\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .lt-lg\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lt-lg\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .lt-lg\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .lt-lg\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .lt-lg\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .lt-lg\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .lt-lg\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .lt-lg\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .lt-lg\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lt-lg\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .lt-lg\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .lt-lg\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .lt-lg\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .lt-lg\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .lt-lg\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .lt-lg\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .lt-lg\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lt-lg\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .lt-lg\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .lt-lg\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .lt-lg\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .lt-lg\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .lt-lg\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .lt-lg\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .lt-lg\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lt-lg\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .lt-lg\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .lt-lg\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .lt-lg\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .lt-lg\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .lt-lg\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .lt-lg\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .lt-lg\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lt-lg\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .lt-lg\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .lt-lg\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .lt-lg\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .lt-lg\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .lt-lg\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .lt-lg\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .lt-lg\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lt-lg\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .lt-lg\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .lt-lg\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .lt-lg\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .lt-lg\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .lt-lg\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .lt-lg\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .lt-lg\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lt-lg\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .lt-lg\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .lt-lg\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .lt-lg\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .lt-lg\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .lt-lg\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .lt-lg\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .lt-lg\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .lt-lg\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .lt-lg\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .lt-lg\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .lt-lg\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .lt-lg\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .lt-lg\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .lt-lg\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .lt-lg\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .lt-lg\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .lt-lg\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .lt-lg\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .lt-lg\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .lt-lg\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .lt-lg\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .lt-lg\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .lt-lg\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .lt-lg\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .lt-lg\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .lt-lg\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .lt-lg\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .lt-lg\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .lt-lg\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .lt-lg\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .lt-lg\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .lt-lg\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-lg\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .lt-lg\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .lt-lg\\:static {\n    position: static !important;\n  }\n\n  .lt-lg\\:fixed {\n    position: fixed !important;\n  }\n\n  .lt-lg\\:absolute {\n    position: absolute !important;\n  }\n\n  .lt-lg\\:relative {\n    position: relative !important;\n  }\n\n  .lt-lg\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .lt-lg\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .lt-lg\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .lt-lg\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .lt-lg\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .lt-lg\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .lt-lg\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .lt-lg\\:top-0 {\n    top: 0 !important;\n  }\n\n  .lt-lg\\:right-0 {\n    right: 0 !important;\n  }\n\n  .lt-lg\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .lt-lg\\:left-0 {\n    left: 0 !important;\n  }\n\n  .lt-lg\\:top-auto {\n    top: auto !important;\n  }\n\n  .lt-lg\\:right-auto {\n    right: auto !important;\n  }\n\n  .lt-lg\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .lt-lg\\:left-auto {\n    left: auto !important;\n  }\n\n  .lt-lg\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-lg\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-lg\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-lg\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .lt-lg\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .lt-lg\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .lt-lg\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-lg\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .lt-lg\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .lt-lg\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .lt-lg\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .lt-lg\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .lt-lg\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .lt-lg\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .lt-lg\\:text-left {\n    text-align: left !important;\n  }\n\n  .lt-lg\\:text-center {\n    text-align: center !important;\n  }\n\n  .lt-lg\\:text-right {\n    text-align: right !important;\n  }\n\n  .lt-lg\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .lt-lg\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-lg\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-lg\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-lg\\:italic {\n    font-style: italic !important;\n  }\n\n  .lt-lg\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .lt-lg\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .lt-lg\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .lt-lg\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .lt-lg\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .lt-lg\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .lt-lg\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .lt-lg\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .lt-lg\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .lt-lg\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .lt-lg\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .lt-lg\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .lt-lg\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .lt-lg\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .lt-lg\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .lt-lg\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .lt-lg\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .lt-lg\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .lt-lg\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .lt-lg\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .lt-lg\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .lt-lg\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .lt-lg\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .lt-lg\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .lt-lg\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .lt-lg\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .lt-lg\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .lt-lg\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .lt-lg\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .lt-lg\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .lt-lg\\:visible {\n    visibility: visible !important;\n  }\n\n  .lt-lg\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .lt-lg\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .lt-lg\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .lt-lg\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .lt-lg\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .lt-lg\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .lt-lg\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .lt-lg\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .lt-lg\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .lt-lg\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .lt-lg\\:w-0 {\n    width: 0 !important;\n  }\n\n  .lt-lg\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .lt-lg\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .lt-lg\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .lt-lg\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .lt-lg\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .lt-lg\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .lt-lg\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .lt-lg\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .lt-lg\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .lt-lg\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .lt-lg\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .lt-lg\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .lt-lg\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .lt-lg\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .lt-lg\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .lt-lg\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .lt-lg\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .lt-lg\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .lt-lg\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .lt-lg\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .lt-lg\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .lt-lg\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .lt-lg\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .lt-lg\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .lt-lg\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .lt-lg\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .lt-lg\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .lt-lg\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .lt-lg\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .lt-lg\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .lt-lg\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .lt-lg\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .lt-lg\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .lt-lg\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .lt-lg\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .lt-lg\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .lt-lg\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .lt-lg\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .lt-lg\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .lt-lg\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .lt-lg\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .lt-lg\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .lt-lg\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .lt-lg\\:w-auto {\n    width: auto !important;\n  }\n\n  .lt-lg\\:w-px {\n    width: 1px !important;\n  }\n\n  .lt-lg\\:w-2px {\n    width: 2px !important;\n  }\n\n  .lt-lg\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .lt-lg\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .lt-lg\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .lt-lg\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .lt-lg\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .lt-lg\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .lt-lg\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .lt-lg\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .lt-lg\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .lt-lg\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .lt-lg\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .lt-lg\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .lt-lg\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .lt-lg\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .lt-lg\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .lt-lg\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .lt-lg\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .lt-lg\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .lt-lg\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .lt-lg\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .lt-lg\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .lt-lg\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .lt-lg\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .lt-lg\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .lt-lg\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .lt-lg\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .lt-lg\\:w-full {\n    width: 100% !important;\n  }\n\n  .lt-lg\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .lt-lg\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .lt-lg\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .lt-lg\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .lt-lg\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .lt-lg\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .lt-lg\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .lt-lg\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .lt-lg\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .lt-lg\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .lt-lg\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .lt-lg\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .lt-lg\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .lt-lg\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .lt-lg\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .lt-lg\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .lt-lg\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .lt-lg\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .lt-lg\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .lt-lg\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .lt-lg\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .lt-lg\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .lt-lg\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .lt-lg\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .lt-lg\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .lt-lg\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .lt-lg\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .lt-lg\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .lt-lg\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .lt-lg\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .lt-lg\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .lt-lg\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .lt-lg\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .lt-lg\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .lt-lg\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .lt-lg\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .lt-lg\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .lt-lg\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .lt-lg\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .lt-lg\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .lt-lg\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .lt-lg\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .lt-lg\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .lt-lg\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .lt-lg\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .lt-lg\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .lt-lg\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .lt-lg\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .lt-lg\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .lt-lg\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .lt-lg\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .lt-lg\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .lt-lg\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .lt-lg\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .lt-lg\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .lt-lg\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .lt-lg\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .lt-lg\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .lt-lg\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .lt-lg\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .lt-lg\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .lt-lg\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .lt-lg\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .lt-lg\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .lt-lg\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .lt-lg\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .lt-lg\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .lt-lg\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .lt-lg\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .lt-lg\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .lt-lg\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .lt-lg\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .lt-lg\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .lt-lg\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .lt-lg\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .lt-lg\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .lt-lg\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .lt-lg\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .lt-lg\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .lt-lg\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .lt-lg\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .lt-lg\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .lt-lg\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .lt-lg\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .lt-lg\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .lt-lg\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .lt-lg\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .lt-lg\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .lt-lg\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .lt-lg\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .lt-lg\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .lt-lg\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .lt-lg\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .lt-lg\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .lt-lg\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .lt-lg\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .lt-lg\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .lt-lg\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .lt-lg\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .lt-lg\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .lt-lg\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .lt-lg\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .lt-lg\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .lt-lg\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .lt-lg\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .lt-lg\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .lt-lg\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .lt-lg\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .lt-lg\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .lt-lg\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .lt-lg\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .lt-lg\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .lt-lg\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .lt-lg\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .lt-lg\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .lt-lg\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .lt-lg\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .lt-lg\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .lt-lg\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .lt-lg\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .lt-lg\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .lt-lg\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .lt-lg\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .lt-lg\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .lt-lg\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .lt-lg\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .lt-lg\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .lt-lg\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .lt-lg\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .lt-lg\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .lt-lg\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lt-lg\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .lt-lg\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .lt-lg\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .lt-lg\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .lt-lg\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .lt-lg\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .lt-lg\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .lt-lg\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .lt-lg\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .lt-lg\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .lt-lg\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .lt-lg\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .lt-lg\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .lt-lg\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .lt-lg\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .lt-lg\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .lt-lg\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .lt-lg\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .lt-lg\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .lt-lg\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .lt-lg\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .lt-lg\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .lt-lg\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .lt-lg\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .lt-lg\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .lt-lg\\:transform-none {\n    transform: none !important;\n  }\n\n  .lt-lg\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .lt-lg\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .lt-lg\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .lt-lg\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .lt-lg\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .lt-lg\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .lt-lg\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .lt-lg\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .lt-lg\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .lt-lg\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .lt-lg\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .lt-lg\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .lt-lg\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .lt-lg\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .lt-lg\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .lt-lg\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .lt-lg\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .lt-lg\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .lt-lg\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .lt-lg\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .lt-lg\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .lt-lg\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .lt-lg\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .lt-lg\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .lt-lg\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .lt-lg\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .lt-lg\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .lt-lg\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .lt-lg\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .lt-lg\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .lt-lg\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .lt-lg\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .lt-lg\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .lt-lg\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .lt-lg\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .lt-lg\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .lt-lg\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .lt-lg\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .lt-lg\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (max-width: 1439px) {\n  .lt-xl\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .lt-xl\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .lt-xl\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .lt-xl\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .lt-xl\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-xl\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-xl\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-xl\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-xl\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-xl\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-xl\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-xl\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-xl\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .lt-xl\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .lt-xl\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .lt-xl\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .lt-xl\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .lt-xl\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .lt-xl\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .lt-xl\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .lt-xl\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .lt-xl\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lt-xl\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lt-xl\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .lt-xl\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .lt-xl\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .lt-xl\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .lt-xl\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .lt-xl\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-xl\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .lt-xl\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .lt-xl\\:bg-center {\n    background-position: center !important;\n  }\n\n  .lt-xl\\:bg-left {\n    background-position: left !important;\n  }\n\n  .lt-xl\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .lt-xl\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .lt-xl\\:bg-right {\n    background-position: right !important;\n  }\n\n  .lt-xl\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .lt-xl\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .lt-xl\\:bg-top {\n    background-position: top !important;\n  }\n\n  .lt-xl\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .lt-xl\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .lt-xl\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .lt-xl\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .lt-xl\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .lt-xl\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .lt-xl\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .lt-xl\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .lt-xl\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .lt-xl\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .lt-xl\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .lt-xl\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-xl\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .lt-xl\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .lt-xl\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .lt-xl\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .lt-xl\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .lt-xl\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .lt-xl\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .lt-xl\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .lt-xl\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .lt-xl\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .lt-xl\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .lt-xl\\:border-double {\n    border-style: double !important;\n  }\n\n  .lt-xl\\:border-none {\n    border-style: none !important;\n  }\n\n  .lt-xl\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .lt-xl\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .lt-xl\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .lt-xl\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .lt-xl\\:border {\n    border-width: 1px !important;\n  }\n\n  .lt-xl\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .lt-xl\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .lt-xl\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-xl\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .lt-xl\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .lt-xl\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .lt-xl\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-xl\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .lt-xl\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .lt-xl\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .lt-xl\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-xl\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .lt-xl\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .lt-xl\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .lt-xl\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-xl\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .lt-xl\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .lt-xl\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .lt-xl\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-xl\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .lt-xl\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .lt-xl\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .lt-xl\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .lt-xl\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .lt-xl\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .lt-xl\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .lt-xl\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .lt-xl\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-xl\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .lt-xl\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .lt-xl\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .lt-xl\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-xl\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .lt-xl\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .lt-xl\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .lt-xl\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-xl\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .lt-xl\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .lt-xl\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .lt-xl\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-xl\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .lt-xl\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .lt-xl\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .lt-xl\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-xl\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .lt-xl\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .lt-xl\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .lt-xl\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .lt-xl\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .lt-xl\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .lt-xl\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .lt-xl\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .lt-xl\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .lt-xl\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .lt-xl\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .lt-xl\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .lt-xl\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .lt-xl\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .lt-xl\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .lt-xl\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .lt-xl\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .lt-xl\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .lt-xl\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .lt-xl\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .lt-xl\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .lt-xl\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .lt-xl\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .lt-xl\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .lt-xl\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .lt-xl\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .lt-xl\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .lt-xl\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .lt-xl\\:block {\n    display: block !important;\n  }\n\n  .lt-xl\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .lt-xl\\:inline {\n    display: inline !important;\n  }\n\n  .lt-xl\\:flex {\n    display: flex !important;\n  }\n\n  .lt-xl\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .lt-xl\\:table {\n    display: table !important;\n  }\n\n  .lt-xl\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .lt-xl\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .lt-xl\\:table-column {\n    display: table-column !important;\n  }\n\n  .lt-xl\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .lt-xl\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .lt-xl\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .lt-xl\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .lt-xl\\:table-row {\n    display: table-row !important;\n  }\n\n  .lt-xl\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .lt-xl\\:grid {\n    display: grid !important;\n  }\n\n  .lt-xl\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .lt-xl\\:hidden {\n    display: none !important;\n  }\n\n  .lt-xl\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .lt-xl\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .lt-xl\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .lt-xl\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .lt-xl\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .lt-xl\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .lt-xl\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .lt-xl\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .lt-xl\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .lt-xl\\:items-center {\n    align-items: center !important;\n  }\n\n  .lt-xl\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .lt-xl\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .lt-xl\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .lt-xl\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .lt-xl\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .lt-xl\\:self-center {\n    align-self: center !important;\n  }\n\n  .lt-xl\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .lt-xl\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .lt-xl\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .lt-xl\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .lt-xl\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .lt-xl\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .lt-xl\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .lt-xl\\:content-center {\n    align-content: center !important;\n  }\n\n  .lt-xl\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .lt-xl\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .lt-xl\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .lt-xl\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .lt-xl\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .lt-xl\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .lt-xl\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .lt-xl\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .lt-xl\\:flex-none {\n    flex: none !important;\n  }\n\n  .lt-xl\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .lt-xl\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .lt-xl\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .lt-xl\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .lt-xl\\:order-1 {\n    order: 1 !important;\n  }\n\n  .lt-xl\\:order-2 {\n    order: 2 !important;\n  }\n\n  .lt-xl\\:order-3 {\n    order: 3 !important;\n  }\n\n  .lt-xl\\:order-4 {\n    order: 4 !important;\n  }\n\n  .lt-xl\\:order-5 {\n    order: 5 !important;\n  }\n\n  .lt-xl\\:order-6 {\n    order: 6 !important;\n  }\n\n  .lt-xl\\:order-7 {\n    order: 7 !important;\n  }\n\n  .lt-xl\\:order-8 {\n    order: 8 !important;\n  }\n\n  .lt-xl\\:order-9 {\n    order: 9 !important;\n  }\n\n  .lt-xl\\:order-10 {\n    order: 10 !important;\n  }\n\n  .lt-xl\\:order-11 {\n    order: 11 !important;\n  }\n\n  .lt-xl\\:order-12 {\n    order: 12 !important;\n  }\n\n  .lt-xl\\:order-first {\n    order: -9999 !important;\n  }\n\n  .lt-xl\\:order-last {\n    order: 9999 !important;\n  }\n\n  .lt-xl\\:order-none {\n    order: 0 !important;\n  }\n\n  .lt-xl\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .lt-xl\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .lt-xl\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .lt-xl\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .lt-xl\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .lt-xl\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .lt-xl\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .lt-xl\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .lt-xl\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .lt-xl\\:h-0 {\n    height: 0 !important;\n  }\n\n  .lt-xl\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .lt-xl\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .lt-xl\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .lt-xl\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .lt-xl\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .lt-xl\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .lt-xl\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .lt-xl\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .lt-xl\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .lt-xl\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .lt-xl\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .lt-xl\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .lt-xl\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .lt-xl\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .lt-xl\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .lt-xl\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .lt-xl\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .lt-xl\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .lt-xl\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .lt-xl\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .lt-xl\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .lt-xl\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .lt-xl\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .lt-xl\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .lt-xl\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .lt-xl\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .lt-xl\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .lt-xl\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .lt-xl\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .lt-xl\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .lt-xl\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .lt-xl\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .lt-xl\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .lt-xl\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .lt-xl\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .lt-xl\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .lt-xl\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .lt-xl\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .lt-xl\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .lt-xl\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .lt-xl\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .lt-xl\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .lt-xl\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .lt-xl\\:h-auto {\n    height: auto !important;\n  }\n\n  .lt-xl\\:h-px {\n    height: 1px !important;\n  }\n\n  .lt-xl\\:h-2px {\n    height: 2px !important;\n  }\n\n  .lt-xl\\:h-full {\n    height: 100% !important;\n  }\n\n  .lt-xl\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .lt-xl\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .lt-xl\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .lt-xl\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .lt-xl\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .lt-xl\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .lt-xl\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .lt-xl\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .lt-xl\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .lt-xl\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .lt-xl\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .lt-xl\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .lt-xl\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .lt-xl\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .lt-xl\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .lt-xl\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .lt-xl\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .lt-xl\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .lt-xl\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .lt-xl\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .lt-xl\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .lt-xl\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .lt-xl\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .lt-xl\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .lt-xl\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .lt-xl\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .lt-xl\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .lt-xl\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .lt-xl\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .lt-xl\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .lt-xl\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .lt-xl\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .lt-xl\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .lt-xl\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .lt-xl\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .lt-xl\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .lt-xl\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .lt-xl\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .lt-xl\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .lt-xl\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .lt-xl\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .lt-xl\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .lt-xl\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .lt-xl\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .lt-xl\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .lt-xl\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .lt-xl\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .lt-xl\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .lt-xl\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .lt-xl\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .lt-xl\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .lt-xl\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .lt-xl\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .lt-xl\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .lt-xl\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .lt-xl\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .lt-xl\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .lt-xl\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .lt-xl\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .lt-xl\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .lt-xl\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .lt-xl\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .lt-xl\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .lt-xl\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .lt-xl\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .lt-xl\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .lt-xl\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .lt-xl\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .lt-xl\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .lt-xl\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .lt-xl\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .lt-xl\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .lt-xl\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .lt-xl\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .lt-xl\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .lt-xl\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .lt-xl\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .lt-xl\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .lt-xl\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .lt-xl\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .lt-xl\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .lt-xl\\:m-auto {\n    margin: auto !important;\n  }\n\n  .lt-xl\\:m-px {\n    margin: 1px !important;\n  }\n\n  .lt-xl\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .lt-xl\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .lt-xl\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .lt-xl\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .lt-xl\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .lt-xl\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .lt-xl\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .lt-xl\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .lt-xl\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .lt-xl\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .lt-xl\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .lt-xl\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .lt-xl\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .lt-xl\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .lt-xl\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .lt-xl\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .lt-xl\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .lt-xl\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .lt-xl\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .lt-xl\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .lt-xl\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .lt-xl\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .lt-xl\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .lt-xl\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .lt-xl\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .lt-xl\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .lt-xl\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .lt-xl\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .lt-xl\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .lt-xl\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lt-xl\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .lt-xl\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lt-xl\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .lt-xl\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lt-xl\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .lt-xl\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .lt-xl\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .lt-xl\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lt-xl\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .lt-xl\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lt-xl\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .lt-xl\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .lt-xl\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .lt-xl\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lt-xl\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .lt-xl\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .lt-xl\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .lt-xl\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lt-xl\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .lt-xl\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .lt-xl\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .lt-xl\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lt-xl\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .lt-xl\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .lt-xl\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .lt-xl\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lt-xl\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .lt-xl\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .lt-xl\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .lt-xl\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lt-xl\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .lt-xl\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .lt-xl\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .lt-xl\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lt-xl\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .lt-xl\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .lt-xl\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .lt-xl\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .lt-xl\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .lt-xl\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .lt-xl\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .lt-xl\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .lt-xl\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .lt-xl\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .lt-xl\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .lt-xl\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .lt-xl\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .lt-xl\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .lt-xl\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .lt-xl\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .lt-xl\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .lt-xl\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .lt-xl\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .lt-xl\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lt-xl\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .lt-xl\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lt-xl\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .lt-xl\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lt-xl\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .lt-xl\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .lt-xl\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .lt-xl\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lt-xl\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .lt-xl\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lt-xl\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .lt-xl\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .lt-xl\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .lt-xl\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lt-xl\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .lt-xl\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .lt-xl\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .lt-xl\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lt-xl\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .lt-xl\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .lt-xl\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .lt-xl\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lt-xl\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .lt-xl\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .lt-xl\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .lt-xl\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lt-xl\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .lt-xl\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .lt-xl\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .lt-xl\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lt-xl\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .lt-xl\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .lt-xl\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .lt-xl\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lt-xl\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .lt-xl\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .lt-xl\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .lt-xl\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .lt-xl\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .lt-xl\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .lt-xl\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .lt-xl\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .lt-xl\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .lt-xl\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .lt-xl\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .lt-xl\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .lt-xl\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .lt-xl\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .lt-xl\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .lt-xl\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .lt-xl\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .lt-xl\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .lt-xl\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .lt-xl\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .lt-xl\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .lt-xl\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .lt-xl\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .lt-xl\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .lt-xl\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .lt-xl\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .lt-xl\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .lt-xl\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .lt-xl\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .lt-xl\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .lt-xl\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .lt-xl\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .lt-xl\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .lt-xl\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .lt-xl\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .lt-xl\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .lt-xl\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .lt-xl\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .lt-xl\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .lt-xl\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .lt-xl\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .lt-xl\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .lt-xl\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .lt-xl\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .lt-xl\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .lt-xl\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .lt-xl\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .lt-xl\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .lt-xl\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .lt-xl\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .lt-xl\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .lt-xl\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .lt-xl\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .lt-xl\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .lt-xl\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .lt-xl\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .lt-xl\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .lt-xl\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .lt-xl\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .lt-xl\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .lt-xl\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .lt-xl\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .lt-xl\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .lt-xl\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .lt-xl\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .lt-xl\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .lt-xl\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .lt-xl\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .lt-xl\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .lt-xl\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .lt-xl\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .lt-xl\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .lt-xl\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .lt-xl\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .lt-xl\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .lt-xl\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .lt-xl\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .lt-xl\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .lt-xl\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .lt-xl\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .lt-xl\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .lt-xl\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .lt-xl\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .lt-xl\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .lt-xl\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .lt-xl\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .lt-xl\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .lt-xl\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .lt-xl\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .lt-xl\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .lt-xl\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .lt-xl\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .lt-xl\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .lt-xl\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .lt-xl\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .lt-xl\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .lt-xl\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .lt-xl\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .lt-xl\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .lt-xl\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .lt-xl\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .lt-xl\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .lt-xl\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .lt-xl\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .lt-xl\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .lt-xl\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .lt-xl\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .lt-xl\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .lt-xl\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .lt-xl\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .lt-xl\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .lt-xl\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .lt-xl\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .lt-xl\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .lt-xl\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .lt-xl\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .lt-xl\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .lt-xl\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .lt-xl\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .lt-xl\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .lt-xl\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .lt-xl\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .lt-xl\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .lt-xl\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .lt-xl\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .lt-xl\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .lt-xl\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .lt-xl\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .lt-xl\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .lt-xl\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .lt-xl\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .lt-xl\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .lt-xl\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .lt-xl\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .lt-xl\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .lt-xl\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .lt-xl\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .lt-xl\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .lt-xl\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .lt-xl\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .lt-xl\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .lt-xl\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .lt-xl\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .lt-xl\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .lt-xl\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .lt-xl\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .lt-xl\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .lt-xl\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .lt-xl\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .lt-xl\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .lt-xl\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .lt-xl\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .lt-xl\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .lt-xl\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .lt-xl\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .lt-xl\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .lt-xl\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .lt-xl\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .lt-xl\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .lt-xl\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .lt-xl\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .lt-xl\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .lt-xl\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .lt-xl\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .lt-xl\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .lt-xl\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .lt-xl\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .lt-xl\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .lt-xl\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .lt-xl\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .lt-xl\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .lt-xl\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .lt-xl\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .lt-xl\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .lt-xl\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .lt-xl\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .lt-xl\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .lt-xl\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .lt-xl\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .lt-xl\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .lt-xl\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .lt-xl\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .lt-xl\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .lt-xl\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .lt-xl\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .lt-xl\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .lt-xl\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .lt-xl\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .lt-xl\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .lt-xl\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .lt-xl\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .lt-xl\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .lt-xl\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .lt-xl\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .lt-xl\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .lt-xl\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .lt-xl\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .lt-xl\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .lt-xl\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .lt-xl\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .lt-xl\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .lt-xl\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .lt-xl\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .lt-xl\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .lt-xl\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .lt-xl\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .lt-xl\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .lt-xl\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .lt-xl\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .lt-xl\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .lt-xl\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .lt-xl\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .lt-xl\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .lt-xl\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .lt-xl\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .lt-xl\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .lt-xl\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .lt-xl\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .lt-xl\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .lt-xl\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .lt-xl\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .lt-xl\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .lt-xl\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .lt-xl\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .lt-xl\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .lt-xl\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .lt-xl\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .lt-xl\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .lt-xl\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .lt-xl\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .lt-xl\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .lt-xl\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .lt-xl\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .lt-xl\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .lt-xl\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .lt-xl\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .lt-xl\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .lt-xl\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .lt-xl\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .lt-xl\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .lt-xl\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .lt-xl\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .lt-xl\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .lt-xl\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .lt-xl\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .lt-xl\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .lt-xl\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .lt-xl\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .lt-xl\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .lt-xl\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .lt-xl\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .lt-xl\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .lt-xl\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .lt-xl\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .lt-xl\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .lt-xl\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .lt-xl\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .lt-xl\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .lt-xl\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .lt-xl\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .lt-xl\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .lt-xl\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .lt-xl\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .lt-xl\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .lt-xl\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .lt-xl\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .lt-xl\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .lt-xl\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .lt-xl\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .lt-xl\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .lt-xl\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .lt-xl\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .lt-xl\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .lt-xl\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .lt-xl\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .lt-xl\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .lt-xl\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .lt-xl\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .lt-xl\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .lt-xl\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .lt-xl\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .lt-xl\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .lt-xl\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .lt-xl\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .lt-xl\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .lt-xl\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .lt-xl\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .lt-xl\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .lt-xl\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .lt-xl\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .lt-xl\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .lt-xl\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .lt-xl\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .lt-xl\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .lt-xl\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .lt-xl\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .lt-xl\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .lt-xl\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .lt-xl\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .lt-xl\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .lt-xl\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .lt-xl\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .lt-xl\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .lt-xl\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .lt-xl\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .lt-xl\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .lt-xl\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .lt-xl\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .lt-xl\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .lt-xl\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .lt-xl\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .lt-xl\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .lt-xl\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .lt-xl\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .lt-xl\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .lt-xl\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .lt-xl\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .lt-xl\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .lt-xl\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .lt-xl\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .lt-xl\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .lt-xl\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .lt-xl\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .lt-xl\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .lt-xl\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .lt-xl\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .lt-xl\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .lt-xl\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .lt-xl\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .lt-xl\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .lt-xl\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .lt-xl\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .lt-xl\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .lt-xl\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .lt-xl\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .lt-xl\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .lt-xl\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .lt-xl\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .lt-xl\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .lt-xl\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .lt-xl\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .lt-xl\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .lt-xl\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .lt-xl\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .lt-xl\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .lt-xl\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .lt-xl\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .lt-xl\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .lt-xl\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .lt-xl\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .lt-xl\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .lt-xl\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .lt-xl\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .lt-xl\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .lt-xl\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .lt-xl\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .lt-xl\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .lt-xl\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .lt-xl\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .lt-xl\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .lt-xl\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .lt-xl\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .lt-xl\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .lt-xl\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .lt-xl\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .lt-xl\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .lt-xl\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .lt-xl\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .lt-xl\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .lt-xl\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .lt-xl\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .lt-xl\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .lt-xl\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .lt-xl\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .lt-xl\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .lt-xl\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .lt-xl\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .lt-xl\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .lt-xl\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .lt-xl\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .lt-xl\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .lt-xl\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .lt-xl\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .lt-xl\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .lt-xl\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .lt-xl\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .lt-xl\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .lt-xl\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .lt-xl\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .lt-xl\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .lt-xl\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .lt-xl\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .lt-xl\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .lt-xl\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .lt-xl\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .lt-xl\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .lt-xl\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .lt-xl\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .lt-xl\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .lt-xl\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .lt-xl\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .lt-xl\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .lt-xl\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .lt-xl\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .lt-xl\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .lt-xl\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .lt-xl\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .lt-xl\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .lt-xl\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .lt-xl\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .lt-xl\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .lt-xl\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .lt-xl\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .lt-xl\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .lt-xl\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .lt-xl\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .lt-xl\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .lt-xl\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .lt-xl\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .lt-xl\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .lt-xl\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .lt-xl\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .lt-xl\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .lt-xl\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .lt-xl\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .lt-xl\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .lt-xl\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .lt-xl\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .lt-xl\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .lt-xl\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .lt-xl\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .lt-xl\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .lt-xl\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .lt-xl\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .lt-xl\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .lt-xl\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .lt-xl\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .lt-xl\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .lt-xl\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .lt-xl\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .lt-xl\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .lt-xl\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .lt-xl\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .lt-xl\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .lt-xl\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .lt-xl\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .lt-xl\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .lt-xl\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .lt-xl\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .lt-xl\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .lt-xl\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .lt-xl\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .lt-xl\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .lt-xl\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .lt-xl\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .lt-xl\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .lt-xl\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .lt-xl\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .lt-xl\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .lt-xl\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .lt-xl\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .lt-xl\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .lt-xl\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .lt-xl\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .lt-xl\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .lt-xl\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .lt-xl\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .lt-xl\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .lt-xl\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .lt-xl\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .lt-xl\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .lt-xl\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .lt-xl\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .lt-xl\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .lt-xl\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .lt-xl\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .lt-xl\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .lt-xl\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .lt-xl\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .lt-xl\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .lt-xl\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .lt-xl\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .lt-xl\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .lt-xl\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .lt-xl\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .lt-xl\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .lt-xl\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .lt-xl\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .lt-xl\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .lt-xl\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .lt-xl\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .lt-xl\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .lt-xl\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .lt-xl\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .lt-xl\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .lt-xl\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .lt-xl\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .lt-xl\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .lt-xl\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .lt-xl\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .lt-xl\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .lt-xl\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .lt-xl\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .lt-xl\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .lt-xl\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .lt-xl\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .lt-xl\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .lt-xl\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .lt-xl\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .lt-xl\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .lt-xl\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .lt-xl\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .lt-xl\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .lt-xl\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .lt-xl\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .lt-xl\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .lt-xl\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .lt-xl\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .lt-xl\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .lt-xl\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .lt-xl\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .lt-xl\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .lt-xl\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .lt-xl\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .lt-xl\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .lt-xl\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .lt-xl\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .lt-xl\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .lt-xl\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .lt-xl\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .lt-xl\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .lt-xl\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .lt-xl\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .lt-xl\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .lt-xl\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .lt-xl\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .lt-xl\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .lt-xl\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .lt-xl\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .lt-xl\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .lt-xl\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .lt-xl\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .lt-xl\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .lt-xl\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .lt-xl\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .lt-xl\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .lt-xl\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .lt-xl\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .lt-xl\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .lt-xl\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .lt-xl\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .lt-xl\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .lt-xl\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .lt-xl\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .lt-xl\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .lt-xl\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .lt-xl\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .lt-xl\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .lt-xl\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .lt-xl\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .lt-xl\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .lt-xl\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .lt-xl\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .lt-xl\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .lt-xl\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .lt-xl\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .lt-xl\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .lt-xl\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .lt-xl\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .lt-xl\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .lt-xl\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .lt-xl\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .lt-xl\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .lt-xl\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .lt-xl\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .lt-xl\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .lt-xl\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .lt-xl\\:p-px {\n    padding: 1px !important;\n  }\n\n  .lt-xl\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .lt-xl\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .lt-xl\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .lt-xl\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lt-xl\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .lt-xl\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lt-xl\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .lt-xl\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lt-xl\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .lt-xl\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .lt-xl\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .lt-xl\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lt-xl\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .lt-xl\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lt-xl\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .lt-xl\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .lt-xl\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .lt-xl\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lt-xl\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .lt-xl\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .lt-xl\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .lt-xl\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lt-xl\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .lt-xl\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .lt-xl\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .lt-xl\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lt-xl\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .lt-xl\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .lt-xl\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .lt-xl\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lt-xl\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .lt-xl\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .lt-xl\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .lt-xl\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lt-xl\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .lt-xl\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .lt-xl\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .lt-xl\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lt-xl\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .lt-xl\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .lt-xl\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .lt-xl\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .lt-xl\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .lt-xl\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .lt-xl\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .lt-xl\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .lt-xl\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .lt-xl\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .lt-xl\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .lt-xl\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .lt-xl\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .lt-xl\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .lt-xl\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .lt-xl\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .lt-xl\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .lt-xl\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .lt-xl\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .lt-xl\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .lt-xl\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .lt-xl\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .lt-xl\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .lt-xl\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .lt-xl\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .lt-xl\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .lt-xl\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .lt-xl\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .lt-xl\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .lt-xl\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .lt-xl\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .lt-xl\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .lt-xl\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .lt-xl\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .lt-xl\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .lt-xl\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .lt-xl\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .lt-xl\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .lt-xl\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .lt-xl\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .lt-xl\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .lt-xl\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .lt-xl\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .lt-xl\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .lt-xl\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .lt-xl\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .lt-xl\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .lt-xl\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .lt-xl\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .lt-xl\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .lt-xl\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .lt-xl\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .lt-xl\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .lt-xl\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .lt-xl\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .lt-xl\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .lt-xl\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .lt-xl\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .lt-xl\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .lt-xl\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .lt-xl\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .lt-xl\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .lt-xl\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .lt-xl\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .lt-xl\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .lt-xl\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .lt-xl\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .lt-xl\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .lt-xl\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .lt-xl\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .lt-xl\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .lt-xl\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .lt-xl\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .lt-xl\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .lt-xl\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .lt-xl\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .lt-xl\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .lt-xl\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .lt-xl\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .lt-xl\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .lt-xl\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .lt-xl\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .lt-xl\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .lt-xl\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .lt-xl\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .lt-xl\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .lt-xl\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .lt-xl\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .lt-xl\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .lt-xl\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .lt-xl\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .lt-xl\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .lt-xl\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .lt-xl\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .lt-xl\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .lt-xl\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .lt-xl\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .lt-xl\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .lt-xl\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .lt-xl\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .lt-xl\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .lt-xl\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .lt-xl\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .lt-xl\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .lt-xl\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .lt-xl\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .lt-xl\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .lt-xl\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .lt-xl\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .lt-xl\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .lt-xl\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .lt-xl\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .lt-xl\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .lt-xl\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .lt-xl\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .lt-xl\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .lt-xl\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .lt-xl\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .lt-xl\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .lt-xl\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .lt-xl\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .lt-xl\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .lt-xl\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .lt-xl\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .lt-xl\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .lt-xl\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .lt-xl\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .lt-xl\\:static {\n    position: static !important;\n  }\n\n  .lt-xl\\:fixed {\n    position: fixed !important;\n  }\n\n  .lt-xl\\:absolute {\n    position: absolute !important;\n  }\n\n  .lt-xl\\:relative {\n    position: relative !important;\n  }\n\n  .lt-xl\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .lt-xl\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .lt-xl\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .lt-xl\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .lt-xl\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .lt-xl\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .lt-xl\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .lt-xl\\:top-0 {\n    top: 0 !important;\n  }\n\n  .lt-xl\\:right-0 {\n    right: 0 !important;\n  }\n\n  .lt-xl\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .lt-xl\\:left-0 {\n    left: 0 !important;\n  }\n\n  .lt-xl\\:top-auto {\n    top: auto !important;\n  }\n\n  .lt-xl\\:right-auto {\n    right: auto !important;\n  }\n\n  .lt-xl\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .lt-xl\\:left-auto {\n    left: auto !important;\n  }\n\n  .lt-xl\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-xl\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-xl\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-xl\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .lt-xl\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .lt-xl\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .lt-xl\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .lt-xl\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .lt-xl\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .lt-xl\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .lt-xl\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .lt-xl\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .lt-xl\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .lt-xl\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .lt-xl\\:text-left {\n    text-align: left !important;\n  }\n\n  .lt-xl\\:text-center {\n    text-align: center !important;\n  }\n\n  .lt-xl\\:text-right {\n    text-align: right !important;\n  }\n\n  .lt-xl\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .lt-xl\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-xl\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .lt-xl\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .lt-xl\\:italic {\n    font-style: italic !important;\n  }\n\n  .lt-xl\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .lt-xl\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .lt-xl\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .lt-xl\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .lt-xl\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .lt-xl\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .lt-xl\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .lt-xl\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .lt-xl\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .lt-xl\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .lt-xl\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .lt-xl\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .lt-xl\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .lt-xl\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .lt-xl\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .lt-xl\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .lt-xl\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .lt-xl\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .lt-xl\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .lt-xl\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .lt-xl\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .lt-xl\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .lt-xl\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .lt-xl\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .lt-xl\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .lt-xl\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .lt-xl\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .lt-xl\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .lt-xl\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .lt-xl\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .lt-xl\\:visible {\n    visibility: visible !important;\n  }\n\n  .lt-xl\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .lt-xl\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .lt-xl\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .lt-xl\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .lt-xl\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .lt-xl\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .lt-xl\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .lt-xl\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .lt-xl\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .lt-xl\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .lt-xl\\:w-0 {\n    width: 0 !important;\n  }\n\n  .lt-xl\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .lt-xl\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .lt-xl\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .lt-xl\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .lt-xl\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .lt-xl\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .lt-xl\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .lt-xl\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .lt-xl\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .lt-xl\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .lt-xl\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .lt-xl\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .lt-xl\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .lt-xl\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .lt-xl\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .lt-xl\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .lt-xl\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .lt-xl\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .lt-xl\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .lt-xl\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .lt-xl\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .lt-xl\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .lt-xl\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .lt-xl\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .lt-xl\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .lt-xl\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .lt-xl\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .lt-xl\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .lt-xl\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .lt-xl\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .lt-xl\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .lt-xl\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .lt-xl\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .lt-xl\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .lt-xl\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .lt-xl\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .lt-xl\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .lt-xl\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .lt-xl\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .lt-xl\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .lt-xl\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .lt-xl\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .lt-xl\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .lt-xl\\:w-auto {\n    width: auto !important;\n  }\n\n  .lt-xl\\:w-px {\n    width: 1px !important;\n  }\n\n  .lt-xl\\:w-2px {\n    width: 2px !important;\n  }\n\n  .lt-xl\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .lt-xl\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .lt-xl\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .lt-xl\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .lt-xl\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .lt-xl\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .lt-xl\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .lt-xl\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .lt-xl\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .lt-xl\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .lt-xl\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .lt-xl\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .lt-xl\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .lt-xl\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .lt-xl\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .lt-xl\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .lt-xl\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .lt-xl\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .lt-xl\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .lt-xl\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .lt-xl\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .lt-xl\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .lt-xl\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .lt-xl\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .lt-xl\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .lt-xl\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .lt-xl\\:w-full {\n    width: 100% !important;\n  }\n\n  .lt-xl\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .lt-xl\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .lt-xl\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .lt-xl\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .lt-xl\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .lt-xl\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .lt-xl\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .lt-xl\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .lt-xl\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .lt-xl\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .lt-xl\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .lt-xl\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .lt-xl\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .lt-xl\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .lt-xl\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .lt-xl\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .lt-xl\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .lt-xl\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .lt-xl\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .lt-xl\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .lt-xl\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .lt-xl\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .lt-xl\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .lt-xl\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .lt-xl\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .lt-xl\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .lt-xl\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .lt-xl\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .lt-xl\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .lt-xl\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .lt-xl\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .lt-xl\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .lt-xl\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .lt-xl\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .lt-xl\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .lt-xl\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .lt-xl\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .lt-xl\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .lt-xl\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .lt-xl\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .lt-xl\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .lt-xl\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .lt-xl\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .lt-xl\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .lt-xl\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .lt-xl\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .lt-xl\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .lt-xl\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .lt-xl\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .lt-xl\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .lt-xl\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .lt-xl\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .lt-xl\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .lt-xl\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .lt-xl\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .lt-xl\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .lt-xl\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .lt-xl\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .lt-xl\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .lt-xl\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .lt-xl\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .lt-xl\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .lt-xl\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .lt-xl\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .lt-xl\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .lt-xl\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .lt-xl\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .lt-xl\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .lt-xl\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .lt-xl\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .lt-xl\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .lt-xl\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .lt-xl\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .lt-xl\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .lt-xl\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .lt-xl\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .lt-xl\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .lt-xl\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .lt-xl\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .lt-xl\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .lt-xl\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .lt-xl\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .lt-xl\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .lt-xl\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .lt-xl\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .lt-xl\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .lt-xl\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .lt-xl\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .lt-xl\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .lt-xl\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .lt-xl\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .lt-xl\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .lt-xl\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .lt-xl\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .lt-xl\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .lt-xl\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .lt-xl\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .lt-xl\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .lt-xl\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .lt-xl\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .lt-xl\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .lt-xl\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .lt-xl\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .lt-xl\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .lt-xl\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .lt-xl\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .lt-xl\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .lt-xl\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .lt-xl\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .lt-xl\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .lt-xl\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .lt-xl\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .lt-xl\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .lt-xl\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .lt-xl\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .lt-xl\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .lt-xl\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .lt-xl\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .lt-xl\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .lt-xl\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .lt-xl\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .lt-xl\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .lt-xl\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .lt-xl\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .lt-xl\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .lt-xl\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .lt-xl\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .lt-xl\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .lt-xl\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .lt-xl\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .lt-xl\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .lt-xl\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .lt-xl\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .lt-xl\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .lt-xl\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .lt-xl\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .lt-xl\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .lt-xl\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .lt-xl\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .lt-xl\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .lt-xl\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .lt-xl\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .lt-xl\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .lt-xl\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .lt-xl\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .lt-xl\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .lt-xl\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .lt-xl\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .lt-xl\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .lt-xl\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .lt-xl\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .lt-xl\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .lt-xl\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .lt-xl\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .lt-xl\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .lt-xl\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .lt-xl\\:transform-none {\n    transform: none !important;\n  }\n\n  .lt-xl\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .lt-xl\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .lt-xl\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .lt-xl\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .lt-xl\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .lt-xl\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .lt-xl\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .lt-xl\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .lt-xl\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .lt-xl\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .lt-xl\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .lt-xl\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .lt-xl\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .lt-xl\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .lt-xl\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .lt-xl\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .lt-xl\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .lt-xl\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .lt-xl\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .lt-xl\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .lt-xl\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .lt-xl\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .lt-xl\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .lt-xl\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .lt-xl\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .lt-xl\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .lt-xl\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .lt-xl\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .lt-xl\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .lt-xl\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .lt-xl\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .lt-xl\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .lt-xl\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .lt-xl\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .lt-xl\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .lt-xl\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .lt-xl\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .lt-xl\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .lt-xl\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (min-width: 600px) {\n  .gt-xs\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-xs\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-xs\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .gt-xs\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .gt-xs\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-xs\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-xs\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-xs\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-xs\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-xs\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-xs\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-xs\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-xs\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-xs\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-xs\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .gt-xs\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .gt-xs\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .gt-xs\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .gt-xs\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .gt-xs\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .gt-xs\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .gt-xs\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .gt-xs\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .gt-xs\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .gt-xs\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .gt-xs\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .gt-xs\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .gt-xs\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .gt-xs\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-xs\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-xs\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .gt-xs\\:bg-center {\n    background-position: center !important;\n  }\n\n  .gt-xs\\:bg-left {\n    background-position: left !important;\n  }\n\n  .gt-xs\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .gt-xs\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .gt-xs\\:bg-right {\n    background-position: right !important;\n  }\n\n  .gt-xs\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .gt-xs\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .gt-xs\\:bg-top {\n    background-position: top !important;\n  }\n\n  .gt-xs\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .gt-xs\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .gt-xs\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .gt-xs\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .gt-xs\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .gt-xs\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .gt-xs\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .gt-xs\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .gt-xs\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .gt-xs\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .gt-xs\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .gt-xs\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-xs\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-xs\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-xs\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-xs\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-xs\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-xs\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-xs\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .gt-xs\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-xs\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .gt-xs\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .gt-xs\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .gt-xs\\:border-double {\n    border-style: double !important;\n  }\n\n  .gt-xs\\:border-none {\n    border-style: none !important;\n  }\n\n  .gt-xs\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .gt-xs\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .gt-xs\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .gt-xs\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .gt-xs\\:border {\n    border-width: 1px !important;\n  }\n\n  .gt-xs\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .gt-xs\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .gt-xs\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-xs\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .gt-xs\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .gt-xs\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .gt-xs\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-xs\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .gt-xs\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .gt-xs\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .gt-xs\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-xs\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .gt-xs\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .gt-xs\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .gt-xs\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-xs\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .gt-xs\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .gt-xs\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .gt-xs\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-xs\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .gt-xs\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .gt-xs\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .gt-xs\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .gt-xs\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .gt-xs\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .gt-xs\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .gt-xs\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .gt-xs\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-xs\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .gt-xs\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .gt-xs\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .gt-xs\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-xs\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .gt-xs\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .gt-xs\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .gt-xs\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-xs\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .gt-xs\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .gt-xs\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .gt-xs\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-xs\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .gt-xs\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .gt-xs\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .gt-xs\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-xs\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .gt-xs\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .gt-xs\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .gt-xs\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .gt-xs\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .gt-xs\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .gt-xs\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .gt-xs\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .gt-xs\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-xs\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .gt-xs\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .gt-xs\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .gt-xs\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-xs\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .gt-xs\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .gt-xs\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .gt-xs\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-xs\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .gt-xs\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .gt-xs\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .gt-xs\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-xs\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .gt-xs\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .gt-xs\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .gt-xs\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-xs\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .gt-xs\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .gt-xs\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .gt-xs\\:block {\n    display: block !important;\n  }\n\n  .gt-xs\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .gt-xs\\:inline {\n    display: inline !important;\n  }\n\n  .gt-xs\\:flex {\n    display: flex !important;\n  }\n\n  .gt-xs\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .gt-xs\\:table {\n    display: table !important;\n  }\n\n  .gt-xs\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .gt-xs\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .gt-xs\\:table-column {\n    display: table-column !important;\n  }\n\n  .gt-xs\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .gt-xs\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .gt-xs\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .gt-xs\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .gt-xs\\:table-row {\n    display: table-row !important;\n  }\n\n  .gt-xs\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .gt-xs\\:grid {\n    display: grid !important;\n  }\n\n  .gt-xs\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .gt-xs\\:hidden {\n    display: none !important;\n  }\n\n  .gt-xs\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .gt-xs\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .gt-xs\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .gt-xs\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .gt-xs\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .gt-xs\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gt-xs\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .gt-xs\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .gt-xs\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .gt-xs\\:items-center {\n    align-items: center !important;\n  }\n\n  .gt-xs\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .gt-xs\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .gt-xs\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .gt-xs\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .gt-xs\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .gt-xs\\:self-center {\n    align-self: center !important;\n  }\n\n  .gt-xs\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .gt-xs\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .gt-xs\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .gt-xs\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .gt-xs\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .gt-xs\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .gt-xs\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .gt-xs\\:content-center {\n    align-content: center !important;\n  }\n\n  .gt-xs\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .gt-xs\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .gt-xs\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .gt-xs\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .gt-xs\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .gt-xs\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .gt-xs\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .gt-xs\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .gt-xs\\:flex-none {\n    flex: none !important;\n  }\n\n  .gt-xs\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .gt-xs\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .gt-xs\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .gt-xs\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .gt-xs\\:order-1 {\n    order: 1 !important;\n  }\n\n  .gt-xs\\:order-2 {\n    order: 2 !important;\n  }\n\n  .gt-xs\\:order-3 {\n    order: 3 !important;\n  }\n\n  .gt-xs\\:order-4 {\n    order: 4 !important;\n  }\n\n  .gt-xs\\:order-5 {\n    order: 5 !important;\n  }\n\n  .gt-xs\\:order-6 {\n    order: 6 !important;\n  }\n\n  .gt-xs\\:order-7 {\n    order: 7 !important;\n  }\n\n  .gt-xs\\:order-8 {\n    order: 8 !important;\n  }\n\n  .gt-xs\\:order-9 {\n    order: 9 !important;\n  }\n\n  .gt-xs\\:order-10 {\n    order: 10 !important;\n  }\n\n  .gt-xs\\:order-11 {\n    order: 11 !important;\n  }\n\n  .gt-xs\\:order-12 {\n    order: 12 !important;\n  }\n\n  .gt-xs\\:order-first {\n    order: -9999 !important;\n  }\n\n  .gt-xs\\:order-last {\n    order: 9999 !important;\n  }\n\n  .gt-xs\\:order-none {\n    order: 0 !important;\n  }\n\n  .gt-xs\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .gt-xs\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .gt-xs\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .gt-xs\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .gt-xs\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .gt-xs\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .gt-xs\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .gt-xs\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .gt-xs\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .gt-xs\\:h-0 {\n    height: 0 !important;\n  }\n\n  .gt-xs\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .gt-xs\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .gt-xs\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .gt-xs\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .gt-xs\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .gt-xs\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .gt-xs\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .gt-xs\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .gt-xs\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .gt-xs\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .gt-xs\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .gt-xs\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .gt-xs\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .gt-xs\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .gt-xs\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .gt-xs\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .gt-xs\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .gt-xs\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .gt-xs\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .gt-xs\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .gt-xs\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .gt-xs\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .gt-xs\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .gt-xs\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .gt-xs\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .gt-xs\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .gt-xs\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .gt-xs\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .gt-xs\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .gt-xs\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .gt-xs\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .gt-xs\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .gt-xs\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .gt-xs\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .gt-xs\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .gt-xs\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .gt-xs\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .gt-xs\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .gt-xs\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .gt-xs\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .gt-xs\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .gt-xs\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .gt-xs\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .gt-xs\\:h-auto {\n    height: auto !important;\n  }\n\n  .gt-xs\\:h-px {\n    height: 1px !important;\n  }\n\n  .gt-xs\\:h-2px {\n    height: 2px !important;\n  }\n\n  .gt-xs\\:h-full {\n    height: 100% !important;\n  }\n\n  .gt-xs\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .gt-xs\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .gt-xs\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .gt-xs\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .gt-xs\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .gt-xs\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .gt-xs\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .gt-xs\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .gt-xs\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .gt-xs\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .gt-xs\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .gt-xs\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .gt-xs\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .gt-xs\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .gt-xs\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .gt-xs\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .gt-xs\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .gt-xs\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .gt-xs\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .gt-xs\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .gt-xs\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .gt-xs\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .gt-xs\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .gt-xs\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .gt-xs\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .gt-xs\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .gt-xs\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .gt-xs\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .gt-xs\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .gt-xs\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .gt-xs\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .gt-xs\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .gt-xs\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .gt-xs\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .gt-xs\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .gt-xs\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .gt-xs\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .gt-xs\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .gt-xs\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .gt-xs\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .gt-xs\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .gt-xs\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .gt-xs\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .gt-xs\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .gt-xs\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .gt-xs\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .gt-xs\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .gt-xs\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .gt-xs\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .gt-xs\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .gt-xs\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .gt-xs\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .gt-xs\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .gt-xs\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .gt-xs\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .gt-xs\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .gt-xs\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .gt-xs\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .gt-xs\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .gt-xs\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .gt-xs\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .gt-xs\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .gt-xs\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .gt-xs\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .gt-xs\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .gt-xs\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .gt-xs\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .gt-xs\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .gt-xs\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .gt-xs\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .gt-xs\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .gt-xs\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .gt-xs\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .gt-xs\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .gt-xs\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .gt-xs\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .gt-xs\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .gt-xs\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .gt-xs\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .gt-xs\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .gt-xs\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .gt-xs\\:m-auto {\n    margin: auto !important;\n  }\n\n  .gt-xs\\:m-px {\n    margin: 1px !important;\n  }\n\n  .gt-xs\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .gt-xs\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .gt-xs\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .gt-xs\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .gt-xs\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .gt-xs\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .gt-xs\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .gt-xs\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .gt-xs\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .gt-xs\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .gt-xs\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .gt-xs\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .gt-xs\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .gt-xs\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .gt-xs\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .gt-xs\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .gt-xs\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .gt-xs\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .gt-xs\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .gt-xs\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .gt-xs\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .gt-xs\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .gt-xs\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .gt-xs\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .gt-xs\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .gt-xs\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .gt-xs\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .gt-xs\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .gt-xs\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .gt-xs\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .gt-xs\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .gt-xs\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .gt-xs\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .gt-xs\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .gt-xs\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .gt-xs\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .gt-xs\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .gt-xs\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .gt-xs\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .gt-xs\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .gt-xs\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .gt-xs\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .gt-xs\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .gt-xs\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .gt-xs\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .gt-xs\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .gt-xs\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .gt-xs\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .gt-xs\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .gt-xs\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .gt-xs\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .gt-xs\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .gt-xs\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .gt-xs\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .gt-xs\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .gt-xs\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .gt-xs\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .gt-xs\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .gt-xs\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .gt-xs\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .gt-xs\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .gt-xs\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .gt-xs\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .gt-xs\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .gt-xs\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .gt-xs\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .gt-xs\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .gt-xs\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .gt-xs\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .gt-xs\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .gt-xs\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .gt-xs\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .gt-xs\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .gt-xs\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .gt-xs\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .gt-xs\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .gt-xs\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .gt-xs\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .gt-xs\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .gt-xs\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .gt-xs\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .gt-xs\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .gt-xs\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .gt-xs\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .gt-xs\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .gt-xs\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .gt-xs\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .gt-xs\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .gt-xs\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .gt-xs\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .gt-xs\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .gt-xs\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .gt-xs\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .gt-xs\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .gt-xs\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .gt-xs\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .gt-xs\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .gt-xs\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .gt-xs\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .gt-xs\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .gt-xs\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .gt-xs\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .gt-xs\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .gt-xs\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .gt-xs\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .gt-xs\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .gt-xs\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .gt-xs\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .gt-xs\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .gt-xs\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .gt-xs\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .gt-xs\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .gt-xs\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .gt-xs\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .gt-xs\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .gt-xs\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .gt-xs\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .gt-xs\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .gt-xs\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .gt-xs\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .gt-xs\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .gt-xs\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .gt-xs\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .gt-xs\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .gt-xs\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .gt-xs\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .gt-xs\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .gt-xs\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .gt-xs\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .gt-xs\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .gt-xs\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .gt-xs\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .gt-xs\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .gt-xs\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .gt-xs\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .gt-xs\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .gt-xs\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .gt-xs\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .gt-xs\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .gt-xs\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .gt-xs\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .gt-xs\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .gt-xs\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .gt-xs\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .gt-xs\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .gt-xs\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .gt-xs\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .gt-xs\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .gt-xs\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .gt-xs\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .gt-xs\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .gt-xs\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .gt-xs\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .gt-xs\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .gt-xs\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .gt-xs\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .gt-xs\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .gt-xs\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .gt-xs\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .gt-xs\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .gt-xs\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .gt-xs\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .gt-xs\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .gt-xs\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .gt-xs\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .gt-xs\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .gt-xs\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .gt-xs\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .gt-xs\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .gt-xs\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .gt-xs\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .gt-xs\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .gt-xs\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .gt-xs\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .gt-xs\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .gt-xs\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .gt-xs\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .gt-xs\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .gt-xs\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .gt-xs\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .gt-xs\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .gt-xs\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .gt-xs\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .gt-xs\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .gt-xs\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .gt-xs\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .gt-xs\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .gt-xs\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .gt-xs\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .gt-xs\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .gt-xs\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .gt-xs\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .gt-xs\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .gt-xs\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .gt-xs\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .gt-xs\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .gt-xs\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .gt-xs\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .gt-xs\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .gt-xs\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .gt-xs\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .gt-xs\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .gt-xs\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .gt-xs\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .gt-xs\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .gt-xs\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .gt-xs\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .gt-xs\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .gt-xs\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .gt-xs\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .gt-xs\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .gt-xs\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .gt-xs\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .gt-xs\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .gt-xs\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .gt-xs\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .gt-xs\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .gt-xs\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .gt-xs\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .gt-xs\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .gt-xs\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .gt-xs\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .gt-xs\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .gt-xs\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .gt-xs\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .gt-xs\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .gt-xs\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .gt-xs\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .gt-xs\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .gt-xs\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .gt-xs\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .gt-xs\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .gt-xs\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .gt-xs\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .gt-xs\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .gt-xs\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .gt-xs\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .gt-xs\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .gt-xs\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .gt-xs\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .gt-xs\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .gt-xs\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .gt-xs\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .gt-xs\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .gt-xs\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .gt-xs\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .gt-xs\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .gt-xs\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .gt-xs\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .gt-xs\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .gt-xs\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .gt-xs\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .gt-xs\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .gt-xs\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .gt-xs\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .gt-xs\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .gt-xs\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .gt-xs\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .gt-xs\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .gt-xs\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .gt-xs\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .gt-xs\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .gt-xs\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .gt-xs\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .gt-xs\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .gt-xs\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .gt-xs\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .gt-xs\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .gt-xs\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .gt-xs\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .gt-xs\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .gt-xs\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .gt-xs\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .gt-xs\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .gt-xs\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .gt-xs\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .gt-xs\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .gt-xs\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .gt-xs\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .gt-xs\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .gt-xs\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .gt-xs\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .gt-xs\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .gt-xs\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .gt-xs\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .gt-xs\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .gt-xs\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .gt-xs\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .gt-xs\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .gt-xs\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .gt-xs\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .gt-xs\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .gt-xs\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .gt-xs\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .gt-xs\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .gt-xs\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .gt-xs\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .gt-xs\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .gt-xs\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .gt-xs\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .gt-xs\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .gt-xs\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .gt-xs\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .gt-xs\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .gt-xs\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .gt-xs\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .gt-xs\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .gt-xs\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .gt-xs\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .gt-xs\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .gt-xs\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .gt-xs\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .gt-xs\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .gt-xs\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .gt-xs\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .gt-xs\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .gt-xs\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .gt-xs\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .gt-xs\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .gt-xs\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .gt-xs\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .gt-xs\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .gt-xs\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .gt-xs\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .gt-xs\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .gt-xs\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .gt-xs\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .gt-xs\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .gt-xs\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .gt-xs\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .gt-xs\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .gt-xs\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .gt-xs\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .gt-xs\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .gt-xs\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .gt-xs\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .gt-xs\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .gt-xs\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .gt-xs\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .gt-xs\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .gt-xs\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .gt-xs\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .gt-xs\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .gt-xs\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .gt-xs\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .gt-xs\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .gt-xs\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .gt-xs\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .gt-xs\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .gt-xs\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .gt-xs\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .gt-xs\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .gt-xs\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .gt-xs\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .gt-xs\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .gt-xs\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .gt-xs\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .gt-xs\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .gt-xs\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .gt-xs\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .gt-xs\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .gt-xs\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .gt-xs\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .gt-xs\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .gt-xs\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .gt-xs\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .gt-xs\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .gt-xs\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .gt-xs\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .gt-xs\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .gt-xs\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .gt-xs\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .gt-xs\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .gt-xs\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .gt-xs\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .gt-xs\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .gt-xs\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .gt-xs\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .gt-xs\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .gt-xs\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .gt-xs\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .gt-xs\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .gt-xs\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .gt-xs\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .gt-xs\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .gt-xs\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .gt-xs\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .gt-xs\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .gt-xs\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .gt-xs\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .gt-xs\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .gt-xs\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .gt-xs\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .gt-xs\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .gt-xs\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .gt-xs\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .gt-xs\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .gt-xs\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .gt-xs\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .gt-xs\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .gt-xs\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .gt-xs\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .gt-xs\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .gt-xs\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .gt-xs\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .gt-xs\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .gt-xs\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .gt-xs\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .gt-xs\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .gt-xs\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .gt-xs\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .gt-xs\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .gt-xs\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .gt-xs\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .gt-xs\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .gt-xs\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .gt-xs\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .gt-xs\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .gt-xs\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .gt-xs\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .gt-xs\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .gt-xs\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .gt-xs\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .gt-xs\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .gt-xs\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .gt-xs\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .gt-xs\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .gt-xs\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .gt-xs\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .gt-xs\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .gt-xs\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .gt-xs\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .gt-xs\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .gt-xs\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .gt-xs\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .gt-xs\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .gt-xs\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .gt-xs\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .gt-xs\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .gt-xs\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .gt-xs\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .gt-xs\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .gt-xs\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .gt-xs\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .gt-xs\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .gt-xs\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .gt-xs\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .gt-xs\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .gt-xs\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .gt-xs\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .gt-xs\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .gt-xs\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .gt-xs\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .gt-xs\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .gt-xs\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .gt-xs\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .gt-xs\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .gt-xs\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .gt-xs\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .gt-xs\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .gt-xs\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .gt-xs\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .gt-xs\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .gt-xs\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .gt-xs\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .gt-xs\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .gt-xs\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .gt-xs\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .gt-xs\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .gt-xs\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .gt-xs\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .gt-xs\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .gt-xs\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .gt-xs\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .gt-xs\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .gt-xs\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .gt-xs\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .gt-xs\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .gt-xs\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .gt-xs\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .gt-xs\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .gt-xs\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .gt-xs\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .gt-xs\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .gt-xs\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .gt-xs\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .gt-xs\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .gt-xs\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .gt-xs\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .gt-xs\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .gt-xs\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .gt-xs\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .gt-xs\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .gt-xs\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .gt-xs\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .gt-xs\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .gt-xs\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .gt-xs\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .gt-xs\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .gt-xs\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .gt-xs\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .gt-xs\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .gt-xs\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .gt-xs\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .gt-xs\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .gt-xs\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .gt-xs\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .gt-xs\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .gt-xs\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .gt-xs\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .gt-xs\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .gt-xs\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .gt-xs\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .gt-xs\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .gt-xs\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .gt-xs\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .gt-xs\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .gt-xs\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .gt-xs\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .gt-xs\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .gt-xs\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .gt-xs\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .gt-xs\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .gt-xs\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .gt-xs\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .gt-xs\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .gt-xs\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .gt-xs\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .gt-xs\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .gt-xs\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .gt-xs\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .gt-xs\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .gt-xs\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .gt-xs\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .gt-xs\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .gt-xs\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .gt-xs\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .gt-xs\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .gt-xs\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .gt-xs\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .gt-xs\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .gt-xs\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .gt-xs\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .gt-xs\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .gt-xs\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .gt-xs\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .gt-xs\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .gt-xs\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .gt-xs\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .gt-xs\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .gt-xs\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .gt-xs\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .gt-xs\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .gt-xs\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .gt-xs\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .gt-xs\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .gt-xs\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .gt-xs\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .gt-xs\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .gt-xs\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .gt-xs\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .gt-xs\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .gt-xs\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .gt-xs\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .gt-xs\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .gt-xs\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .gt-xs\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .gt-xs\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .gt-xs\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .gt-xs\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .gt-xs\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .gt-xs\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .gt-xs\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .gt-xs\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .gt-xs\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .gt-xs\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .gt-xs\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .gt-xs\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .gt-xs\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .gt-xs\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .gt-xs\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .gt-xs\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .gt-xs\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .gt-xs\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .gt-xs\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .gt-xs\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .gt-xs\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .gt-xs\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .gt-xs\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .gt-xs\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .gt-xs\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .gt-xs\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .gt-xs\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .gt-xs\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .gt-xs\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .gt-xs\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .gt-xs\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .gt-xs\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .gt-xs\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .gt-xs\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .gt-xs\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .gt-xs\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .gt-xs\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .gt-xs\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .gt-xs\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .gt-xs\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .gt-xs\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .gt-xs\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .gt-xs\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .gt-xs\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .gt-xs\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .gt-xs\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .gt-xs\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .gt-xs\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .gt-xs\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .gt-xs\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .gt-xs\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .gt-xs\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .gt-xs\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .gt-xs\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .gt-xs\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .gt-xs\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .gt-xs\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .gt-xs\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .gt-xs\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .gt-xs\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .gt-xs\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .gt-xs\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .gt-xs\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .gt-xs\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .gt-xs\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .gt-xs\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .gt-xs\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .gt-xs\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .gt-xs\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .gt-xs\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .gt-xs\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .gt-xs\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .gt-xs\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .gt-xs\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .gt-xs\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .gt-xs\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .gt-xs\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .gt-xs\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .gt-xs\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .gt-xs\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .gt-xs\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .gt-xs\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .gt-xs\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .gt-xs\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .gt-xs\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .gt-xs\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .gt-xs\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .gt-xs\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .gt-xs\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .gt-xs\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .gt-xs\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .gt-xs\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .gt-xs\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .gt-xs\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .gt-xs\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .gt-xs\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .gt-xs\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .gt-xs\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .gt-xs\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .gt-xs\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .gt-xs\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .gt-xs\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .gt-xs\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .gt-xs\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .gt-xs\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .gt-xs\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .gt-xs\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .gt-xs\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .gt-xs\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .gt-xs\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .gt-xs\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .gt-xs\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .gt-xs\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .gt-xs\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .gt-xs\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .gt-xs\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .gt-xs\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .gt-xs\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .gt-xs\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .gt-xs\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .gt-xs\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .gt-xs\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .gt-xs\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .gt-xs\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .gt-xs\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .gt-xs\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .gt-xs\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .gt-xs\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .gt-xs\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .gt-xs\\:p-px {\n    padding: 1px !important;\n  }\n\n  .gt-xs\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .gt-xs\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .gt-xs\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .gt-xs\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .gt-xs\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .gt-xs\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .gt-xs\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .gt-xs\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .gt-xs\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .gt-xs\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .gt-xs\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .gt-xs\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .gt-xs\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .gt-xs\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .gt-xs\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .gt-xs\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .gt-xs\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .gt-xs\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .gt-xs\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .gt-xs\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .gt-xs\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .gt-xs\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .gt-xs\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .gt-xs\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .gt-xs\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .gt-xs\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .gt-xs\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .gt-xs\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .gt-xs\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .gt-xs\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .gt-xs\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .gt-xs\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .gt-xs\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .gt-xs\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .gt-xs\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .gt-xs\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .gt-xs\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .gt-xs\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .gt-xs\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .gt-xs\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .gt-xs\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .gt-xs\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .gt-xs\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .gt-xs\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .gt-xs\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .gt-xs\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .gt-xs\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .gt-xs\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .gt-xs\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .gt-xs\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .gt-xs\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .gt-xs\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .gt-xs\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .gt-xs\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .gt-xs\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .gt-xs\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .gt-xs\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .gt-xs\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .gt-xs\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .gt-xs\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .gt-xs\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .gt-xs\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .gt-xs\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .gt-xs\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .gt-xs\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .gt-xs\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .gt-xs\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .gt-xs\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .gt-xs\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .gt-xs\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .gt-xs\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .gt-xs\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .gt-xs\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .gt-xs\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .gt-xs\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .gt-xs\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .gt-xs\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .gt-xs\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .gt-xs\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .gt-xs\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .gt-xs\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .gt-xs\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .gt-xs\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .gt-xs\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .gt-xs\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .gt-xs\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .gt-xs\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .gt-xs\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .gt-xs\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .gt-xs\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .gt-xs\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .gt-xs\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .gt-xs\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .gt-xs\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .gt-xs\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .gt-xs\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .gt-xs\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .gt-xs\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .gt-xs\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .gt-xs\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .gt-xs\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .gt-xs\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .gt-xs\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .gt-xs\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .gt-xs\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .gt-xs\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .gt-xs\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .gt-xs\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .gt-xs\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .gt-xs\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .gt-xs\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .gt-xs\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .gt-xs\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .gt-xs\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .gt-xs\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .gt-xs\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .gt-xs\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .gt-xs\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .gt-xs\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .gt-xs\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .gt-xs\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .gt-xs\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .gt-xs\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .gt-xs\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .gt-xs\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .gt-xs\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .gt-xs\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .gt-xs\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .gt-xs\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .gt-xs\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .gt-xs\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .gt-xs\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .gt-xs\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .gt-xs\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .gt-xs\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .gt-xs\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .gt-xs\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .gt-xs\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .gt-xs\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .gt-xs\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .gt-xs\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .gt-xs\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .gt-xs\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .gt-xs\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .gt-xs\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .gt-xs\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .gt-xs\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .gt-xs\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .gt-xs\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .gt-xs\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .gt-xs\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .gt-xs\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .gt-xs\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .gt-xs\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .gt-xs\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .gt-xs\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .gt-xs\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .gt-xs\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .gt-xs\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .gt-xs\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .gt-xs\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .gt-xs\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .gt-xs\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-xs\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .gt-xs\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .gt-xs\\:static {\n    position: static !important;\n  }\n\n  .gt-xs\\:fixed {\n    position: fixed !important;\n  }\n\n  .gt-xs\\:absolute {\n    position: absolute !important;\n  }\n\n  .gt-xs\\:relative {\n    position: relative !important;\n  }\n\n  .gt-xs\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .gt-xs\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .gt-xs\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .gt-xs\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .gt-xs\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .gt-xs\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .gt-xs\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .gt-xs\\:top-0 {\n    top: 0 !important;\n  }\n\n  .gt-xs\\:right-0 {\n    right: 0 !important;\n  }\n\n  .gt-xs\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .gt-xs\\:left-0 {\n    left: 0 !important;\n  }\n\n  .gt-xs\\:top-auto {\n    top: auto !important;\n  }\n\n  .gt-xs\\:right-auto {\n    right: auto !important;\n  }\n\n  .gt-xs\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .gt-xs\\:left-auto {\n    left: auto !important;\n  }\n\n  .gt-xs\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-xs\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-xs\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-xs\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .gt-xs\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .gt-xs\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .gt-xs\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-xs\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .gt-xs\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .gt-xs\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .gt-xs\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .gt-xs\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .gt-xs\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .gt-xs\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .gt-xs\\:text-left {\n    text-align: left !important;\n  }\n\n  .gt-xs\\:text-center {\n    text-align: center !important;\n  }\n\n  .gt-xs\\:text-right {\n    text-align: right !important;\n  }\n\n  .gt-xs\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .gt-xs\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-xs\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-xs\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-xs\\:italic {\n    font-style: italic !important;\n  }\n\n  .gt-xs\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .gt-xs\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .gt-xs\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .gt-xs\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .gt-xs\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .gt-xs\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .gt-xs\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .gt-xs\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .gt-xs\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .gt-xs\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .gt-xs\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .gt-xs\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .gt-xs\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .gt-xs\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .gt-xs\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .gt-xs\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .gt-xs\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .gt-xs\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .gt-xs\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .gt-xs\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .gt-xs\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .gt-xs\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .gt-xs\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .gt-xs\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .gt-xs\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .gt-xs\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .gt-xs\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .gt-xs\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .gt-xs\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .gt-xs\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .gt-xs\\:visible {\n    visibility: visible !important;\n  }\n\n  .gt-xs\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .gt-xs\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .gt-xs\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .gt-xs\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .gt-xs\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .gt-xs\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .gt-xs\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .gt-xs\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .gt-xs\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .gt-xs\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .gt-xs\\:w-0 {\n    width: 0 !important;\n  }\n\n  .gt-xs\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .gt-xs\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .gt-xs\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .gt-xs\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .gt-xs\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .gt-xs\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .gt-xs\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .gt-xs\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .gt-xs\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .gt-xs\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .gt-xs\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .gt-xs\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .gt-xs\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .gt-xs\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .gt-xs\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .gt-xs\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .gt-xs\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .gt-xs\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .gt-xs\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .gt-xs\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .gt-xs\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .gt-xs\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .gt-xs\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .gt-xs\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .gt-xs\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .gt-xs\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .gt-xs\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .gt-xs\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .gt-xs\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .gt-xs\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .gt-xs\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .gt-xs\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .gt-xs\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .gt-xs\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .gt-xs\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .gt-xs\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .gt-xs\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .gt-xs\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .gt-xs\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .gt-xs\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .gt-xs\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .gt-xs\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .gt-xs\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .gt-xs\\:w-auto {\n    width: auto !important;\n  }\n\n  .gt-xs\\:w-px {\n    width: 1px !important;\n  }\n\n  .gt-xs\\:w-2px {\n    width: 2px !important;\n  }\n\n  .gt-xs\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .gt-xs\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .gt-xs\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .gt-xs\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .gt-xs\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .gt-xs\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .gt-xs\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .gt-xs\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .gt-xs\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .gt-xs\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .gt-xs\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .gt-xs\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .gt-xs\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .gt-xs\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .gt-xs\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .gt-xs\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .gt-xs\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .gt-xs\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .gt-xs\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .gt-xs\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .gt-xs\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .gt-xs\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .gt-xs\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .gt-xs\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .gt-xs\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .gt-xs\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .gt-xs\\:w-full {\n    width: 100% !important;\n  }\n\n  .gt-xs\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .gt-xs\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .gt-xs\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .gt-xs\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .gt-xs\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .gt-xs\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .gt-xs\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .gt-xs\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .gt-xs\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .gt-xs\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .gt-xs\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .gt-xs\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .gt-xs\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .gt-xs\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .gt-xs\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .gt-xs\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .gt-xs\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .gt-xs\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .gt-xs\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .gt-xs\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .gt-xs\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .gt-xs\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .gt-xs\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .gt-xs\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .gt-xs\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .gt-xs\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .gt-xs\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .gt-xs\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .gt-xs\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .gt-xs\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .gt-xs\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .gt-xs\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .gt-xs\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .gt-xs\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .gt-xs\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .gt-xs\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .gt-xs\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .gt-xs\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .gt-xs\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .gt-xs\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .gt-xs\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .gt-xs\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .gt-xs\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .gt-xs\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .gt-xs\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .gt-xs\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .gt-xs\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .gt-xs\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .gt-xs\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .gt-xs\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .gt-xs\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .gt-xs\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .gt-xs\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .gt-xs\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .gt-xs\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .gt-xs\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .gt-xs\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .gt-xs\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .gt-xs\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .gt-xs\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .gt-xs\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .gt-xs\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .gt-xs\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .gt-xs\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .gt-xs\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .gt-xs\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .gt-xs\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .gt-xs\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .gt-xs\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .gt-xs\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .gt-xs\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .gt-xs\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .gt-xs\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .gt-xs\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .gt-xs\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .gt-xs\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .gt-xs\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .gt-xs\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .gt-xs\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .gt-xs\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .gt-xs\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .gt-xs\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .gt-xs\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .gt-xs\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .gt-xs\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .gt-xs\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .gt-xs\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .gt-xs\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .gt-xs\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .gt-xs\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .gt-xs\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .gt-xs\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .gt-xs\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .gt-xs\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .gt-xs\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .gt-xs\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .gt-xs\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .gt-xs\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .gt-xs\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .gt-xs\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .gt-xs\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .gt-xs\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .gt-xs\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .gt-xs\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .gt-xs\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .gt-xs\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .gt-xs\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .gt-xs\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .gt-xs\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .gt-xs\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .gt-xs\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .gt-xs\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .gt-xs\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .gt-xs\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .gt-xs\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .gt-xs\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .gt-xs\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .gt-xs\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .gt-xs\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .gt-xs\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .gt-xs\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .gt-xs\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .gt-xs\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .gt-xs\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .gt-xs\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .gt-xs\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .gt-xs\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .gt-xs\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .gt-xs\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .gt-xs\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .gt-xs\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .gt-xs\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .gt-xs\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .gt-xs\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .gt-xs\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .gt-xs\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .gt-xs\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .gt-xs\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .gt-xs\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .gt-xs\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .gt-xs\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .gt-xs\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .gt-xs\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .gt-xs\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .gt-xs\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .gt-xs\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .gt-xs\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .gt-xs\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .gt-xs\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .gt-xs\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .gt-xs\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .gt-xs\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .gt-xs\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .gt-xs\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .gt-xs\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .gt-xs\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .gt-xs\\:transform-none {\n    transform: none !important;\n  }\n\n  .gt-xs\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .gt-xs\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .gt-xs\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .gt-xs\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .gt-xs\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .gt-xs\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .gt-xs\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .gt-xs\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .gt-xs\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .gt-xs\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .gt-xs\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .gt-xs\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .gt-xs\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .gt-xs\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .gt-xs\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .gt-xs\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .gt-xs\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .gt-xs\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .gt-xs\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .gt-xs\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .gt-xs\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .gt-xs\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .gt-xs\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .gt-xs\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .gt-xs\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .gt-xs\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .gt-xs\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .gt-xs\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .gt-xs\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .gt-xs\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .gt-xs\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .gt-xs\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .gt-xs\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .gt-xs\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .gt-xs\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .gt-xs\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .gt-xs\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .gt-xs\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .gt-xs\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (min-width: 960px) {\n  .gt-sm\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-sm\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-sm\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .gt-sm\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .gt-sm\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-sm\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-sm\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-sm\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-sm\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-sm\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-sm\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-sm\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-sm\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-sm\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-sm\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .gt-sm\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .gt-sm\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .gt-sm\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .gt-sm\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .gt-sm\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .gt-sm\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .gt-sm\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .gt-sm\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .gt-sm\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .gt-sm\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .gt-sm\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .gt-sm\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .gt-sm\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .gt-sm\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-sm\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-sm\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .gt-sm\\:bg-center {\n    background-position: center !important;\n  }\n\n  .gt-sm\\:bg-left {\n    background-position: left !important;\n  }\n\n  .gt-sm\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .gt-sm\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .gt-sm\\:bg-right {\n    background-position: right !important;\n  }\n\n  .gt-sm\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .gt-sm\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .gt-sm\\:bg-top {\n    background-position: top !important;\n  }\n\n  .gt-sm\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .gt-sm\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .gt-sm\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .gt-sm\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .gt-sm\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .gt-sm\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .gt-sm\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .gt-sm\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .gt-sm\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .gt-sm\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .gt-sm\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .gt-sm\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-sm\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-sm\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-sm\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-sm\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-sm\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-sm\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-sm\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .gt-sm\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-sm\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .gt-sm\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .gt-sm\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .gt-sm\\:border-double {\n    border-style: double !important;\n  }\n\n  .gt-sm\\:border-none {\n    border-style: none !important;\n  }\n\n  .gt-sm\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .gt-sm\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .gt-sm\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .gt-sm\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .gt-sm\\:border {\n    border-width: 1px !important;\n  }\n\n  .gt-sm\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .gt-sm\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .gt-sm\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-sm\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .gt-sm\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .gt-sm\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .gt-sm\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-sm\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .gt-sm\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .gt-sm\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .gt-sm\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-sm\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .gt-sm\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .gt-sm\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .gt-sm\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-sm\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .gt-sm\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .gt-sm\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .gt-sm\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-sm\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .gt-sm\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .gt-sm\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .gt-sm\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .gt-sm\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .gt-sm\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .gt-sm\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .gt-sm\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .gt-sm\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-sm\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .gt-sm\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .gt-sm\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .gt-sm\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-sm\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .gt-sm\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .gt-sm\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .gt-sm\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-sm\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .gt-sm\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .gt-sm\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .gt-sm\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-sm\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .gt-sm\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .gt-sm\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .gt-sm\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-sm\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .gt-sm\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .gt-sm\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .gt-sm\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .gt-sm\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .gt-sm\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .gt-sm\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .gt-sm\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .gt-sm\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-sm\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .gt-sm\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .gt-sm\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .gt-sm\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-sm\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .gt-sm\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .gt-sm\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .gt-sm\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-sm\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .gt-sm\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .gt-sm\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .gt-sm\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-sm\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .gt-sm\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .gt-sm\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .gt-sm\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-sm\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .gt-sm\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .gt-sm\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .gt-sm\\:block {\n    display: block !important;\n  }\n\n  .gt-sm\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .gt-sm\\:inline {\n    display: inline !important;\n  }\n\n  .gt-sm\\:flex {\n    display: flex !important;\n  }\n\n  .gt-sm\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .gt-sm\\:table {\n    display: table !important;\n  }\n\n  .gt-sm\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .gt-sm\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .gt-sm\\:table-column {\n    display: table-column !important;\n  }\n\n  .gt-sm\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .gt-sm\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .gt-sm\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .gt-sm\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .gt-sm\\:table-row {\n    display: table-row !important;\n  }\n\n  .gt-sm\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .gt-sm\\:grid {\n    display: grid !important;\n  }\n\n  .gt-sm\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .gt-sm\\:hidden {\n    display: none !important;\n  }\n\n  .gt-sm\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .gt-sm\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .gt-sm\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .gt-sm\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .gt-sm\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .gt-sm\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gt-sm\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .gt-sm\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .gt-sm\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .gt-sm\\:items-center {\n    align-items: center !important;\n  }\n\n  .gt-sm\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .gt-sm\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .gt-sm\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .gt-sm\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .gt-sm\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .gt-sm\\:self-center {\n    align-self: center !important;\n  }\n\n  .gt-sm\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .gt-sm\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .gt-sm\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .gt-sm\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .gt-sm\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .gt-sm\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .gt-sm\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .gt-sm\\:content-center {\n    align-content: center !important;\n  }\n\n  .gt-sm\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .gt-sm\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .gt-sm\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .gt-sm\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .gt-sm\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .gt-sm\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .gt-sm\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .gt-sm\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .gt-sm\\:flex-none {\n    flex: none !important;\n  }\n\n  .gt-sm\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .gt-sm\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .gt-sm\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .gt-sm\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .gt-sm\\:order-1 {\n    order: 1 !important;\n  }\n\n  .gt-sm\\:order-2 {\n    order: 2 !important;\n  }\n\n  .gt-sm\\:order-3 {\n    order: 3 !important;\n  }\n\n  .gt-sm\\:order-4 {\n    order: 4 !important;\n  }\n\n  .gt-sm\\:order-5 {\n    order: 5 !important;\n  }\n\n  .gt-sm\\:order-6 {\n    order: 6 !important;\n  }\n\n  .gt-sm\\:order-7 {\n    order: 7 !important;\n  }\n\n  .gt-sm\\:order-8 {\n    order: 8 !important;\n  }\n\n  .gt-sm\\:order-9 {\n    order: 9 !important;\n  }\n\n  .gt-sm\\:order-10 {\n    order: 10 !important;\n  }\n\n  .gt-sm\\:order-11 {\n    order: 11 !important;\n  }\n\n  .gt-sm\\:order-12 {\n    order: 12 !important;\n  }\n\n  .gt-sm\\:order-first {\n    order: -9999 !important;\n  }\n\n  .gt-sm\\:order-last {\n    order: 9999 !important;\n  }\n\n  .gt-sm\\:order-none {\n    order: 0 !important;\n  }\n\n  .gt-sm\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .gt-sm\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .gt-sm\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .gt-sm\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .gt-sm\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .gt-sm\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .gt-sm\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .gt-sm\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .gt-sm\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .gt-sm\\:h-0 {\n    height: 0 !important;\n  }\n\n  .gt-sm\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .gt-sm\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .gt-sm\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .gt-sm\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .gt-sm\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .gt-sm\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .gt-sm\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .gt-sm\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .gt-sm\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .gt-sm\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .gt-sm\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .gt-sm\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .gt-sm\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .gt-sm\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .gt-sm\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .gt-sm\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .gt-sm\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .gt-sm\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .gt-sm\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .gt-sm\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .gt-sm\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .gt-sm\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .gt-sm\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .gt-sm\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .gt-sm\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .gt-sm\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .gt-sm\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .gt-sm\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .gt-sm\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .gt-sm\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .gt-sm\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .gt-sm\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .gt-sm\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .gt-sm\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .gt-sm\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .gt-sm\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .gt-sm\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .gt-sm\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .gt-sm\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .gt-sm\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .gt-sm\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .gt-sm\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .gt-sm\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .gt-sm\\:h-auto {\n    height: auto !important;\n  }\n\n  .gt-sm\\:h-px {\n    height: 1px !important;\n  }\n\n  .gt-sm\\:h-2px {\n    height: 2px !important;\n  }\n\n  .gt-sm\\:h-full {\n    height: 100% !important;\n  }\n\n  .gt-sm\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .gt-sm\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .gt-sm\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .gt-sm\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .gt-sm\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .gt-sm\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .gt-sm\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .gt-sm\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .gt-sm\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .gt-sm\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .gt-sm\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .gt-sm\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .gt-sm\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .gt-sm\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .gt-sm\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .gt-sm\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .gt-sm\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .gt-sm\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .gt-sm\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .gt-sm\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .gt-sm\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .gt-sm\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .gt-sm\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .gt-sm\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .gt-sm\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .gt-sm\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .gt-sm\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .gt-sm\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .gt-sm\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .gt-sm\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .gt-sm\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .gt-sm\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .gt-sm\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .gt-sm\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .gt-sm\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .gt-sm\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .gt-sm\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .gt-sm\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .gt-sm\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .gt-sm\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .gt-sm\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .gt-sm\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .gt-sm\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .gt-sm\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .gt-sm\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .gt-sm\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .gt-sm\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .gt-sm\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .gt-sm\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .gt-sm\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .gt-sm\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .gt-sm\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .gt-sm\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .gt-sm\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .gt-sm\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .gt-sm\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .gt-sm\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .gt-sm\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .gt-sm\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .gt-sm\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .gt-sm\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .gt-sm\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .gt-sm\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .gt-sm\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .gt-sm\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .gt-sm\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .gt-sm\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .gt-sm\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .gt-sm\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .gt-sm\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .gt-sm\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .gt-sm\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .gt-sm\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .gt-sm\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .gt-sm\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .gt-sm\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .gt-sm\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .gt-sm\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .gt-sm\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .gt-sm\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .gt-sm\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .gt-sm\\:m-auto {\n    margin: auto !important;\n  }\n\n  .gt-sm\\:m-px {\n    margin: 1px !important;\n  }\n\n  .gt-sm\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .gt-sm\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .gt-sm\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .gt-sm\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .gt-sm\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .gt-sm\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .gt-sm\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .gt-sm\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .gt-sm\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .gt-sm\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .gt-sm\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .gt-sm\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .gt-sm\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .gt-sm\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .gt-sm\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .gt-sm\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .gt-sm\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .gt-sm\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .gt-sm\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .gt-sm\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .gt-sm\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .gt-sm\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .gt-sm\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .gt-sm\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .gt-sm\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .gt-sm\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .gt-sm\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .gt-sm\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .gt-sm\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .gt-sm\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .gt-sm\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .gt-sm\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .gt-sm\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .gt-sm\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .gt-sm\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .gt-sm\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .gt-sm\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .gt-sm\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .gt-sm\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .gt-sm\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .gt-sm\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .gt-sm\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .gt-sm\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .gt-sm\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .gt-sm\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .gt-sm\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .gt-sm\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .gt-sm\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .gt-sm\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .gt-sm\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .gt-sm\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .gt-sm\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .gt-sm\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .gt-sm\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .gt-sm\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .gt-sm\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .gt-sm\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .gt-sm\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .gt-sm\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .gt-sm\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .gt-sm\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .gt-sm\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .gt-sm\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .gt-sm\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .gt-sm\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .gt-sm\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .gt-sm\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .gt-sm\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .gt-sm\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .gt-sm\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .gt-sm\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .gt-sm\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .gt-sm\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .gt-sm\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .gt-sm\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .gt-sm\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .gt-sm\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .gt-sm\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .gt-sm\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .gt-sm\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .gt-sm\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .gt-sm\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .gt-sm\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .gt-sm\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .gt-sm\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .gt-sm\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .gt-sm\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .gt-sm\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .gt-sm\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .gt-sm\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .gt-sm\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .gt-sm\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .gt-sm\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .gt-sm\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .gt-sm\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .gt-sm\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .gt-sm\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .gt-sm\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .gt-sm\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .gt-sm\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .gt-sm\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .gt-sm\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .gt-sm\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .gt-sm\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .gt-sm\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .gt-sm\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .gt-sm\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .gt-sm\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .gt-sm\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .gt-sm\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .gt-sm\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .gt-sm\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .gt-sm\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .gt-sm\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .gt-sm\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .gt-sm\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .gt-sm\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .gt-sm\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .gt-sm\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .gt-sm\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .gt-sm\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .gt-sm\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .gt-sm\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .gt-sm\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .gt-sm\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .gt-sm\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .gt-sm\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .gt-sm\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .gt-sm\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .gt-sm\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .gt-sm\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .gt-sm\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .gt-sm\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .gt-sm\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .gt-sm\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .gt-sm\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .gt-sm\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .gt-sm\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .gt-sm\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .gt-sm\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .gt-sm\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .gt-sm\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .gt-sm\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .gt-sm\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .gt-sm\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .gt-sm\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .gt-sm\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .gt-sm\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .gt-sm\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .gt-sm\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .gt-sm\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .gt-sm\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .gt-sm\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .gt-sm\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .gt-sm\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .gt-sm\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .gt-sm\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .gt-sm\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .gt-sm\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .gt-sm\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .gt-sm\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .gt-sm\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .gt-sm\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .gt-sm\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .gt-sm\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .gt-sm\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .gt-sm\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .gt-sm\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .gt-sm\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .gt-sm\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .gt-sm\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .gt-sm\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .gt-sm\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .gt-sm\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .gt-sm\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .gt-sm\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .gt-sm\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .gt-sm\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .gt-sm\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .gt-sm\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .gt-sm\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .gt-sm\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .gt-sm\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .gt-sm\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .gt-sm\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .gt-sm\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .gt-sm\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .gt-sm\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .gt-sm\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .gt-sm\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .gt-sm\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .gt-sm\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .gt-sm\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .gt-sm\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .gt-sm\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .gt-sm\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .gt-sm\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .gt-sm\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .gt-sm\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .gt-sm\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .gt-sm\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .gt-sm\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .gt-sm\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .gt-sm\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .gt-sm\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .gt-sm\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .gt-sm\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .gt-sm\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .gt-sm\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .gt-sm\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .gt-sm\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .gt-sm\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .gt-sm\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .gt-sm\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .gt-sm\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .gt-sm\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .gt-sm\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .gt-sm\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .gt-sm\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .gt-sm\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .gt-sm\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .gt-sm\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .gt-sm\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .gt-sm\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .gt-sm\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .gt-sm\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .gt-sm\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .gt-sm\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .gt-sm\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .gt-sm\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .gt-sm\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .gt-sm\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .gt-sm\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .gt-sm\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .gt-sm\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .gt-sm\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .gt-sm\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .gt-sm\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .gt-sm\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .gt-sm\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .gt-sm\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .gt-sm\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .gt-sm\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .gt-sm\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .gt-sm\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .gt-sm\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .gt-sm\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .gt-sm\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .gt-sm\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .gt-sm\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .gt-sm\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .gt-sm\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .gt-sm\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .gt-sm\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .gt-sm\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .gt-sm\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .gt-sm\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .gt-sm\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .gt-sm\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .gt-sm\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .gt-sm\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .gt-sm\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .gt-sm\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .gt-sm\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .gt-sm\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .gt-sm\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .gt-sm\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .gt-sm\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .gt-sm\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .gt-sm\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .gt-sm\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .gt-sm\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .gt-sm\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .gt-sm\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .gt-sm\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .gt-sm\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .gt-sm\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .gt-sm\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .gt-sm\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .gt-sm\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .gt-sm\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .gt-sm\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .gt-sm\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .gt-sm\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .gt-sm\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .gt-sm\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .gt-sm\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .gt-sm\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .gt-sm\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .gt-sm\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .gt-sm\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .gt-sm\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .gt-sm\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .gt-sm\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .gt-sm\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .gt-sm\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .gt-sm\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .gt-sm\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .gt-sm\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .gt-sm\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .gt-sm\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .gt-sm\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .gt-sm\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .gt-sm\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .gt-sm\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .gt-sm\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .gt-sm\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .gt-sm\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .gt-sm\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .gt-sm\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .gt-sm\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .gt-sm\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .gt-sm\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .gt-sm\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .gt-sm\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .gt-sm\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .gt-sm\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .gt-sm\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .gt-sm\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .gt-sm\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .gt-sm\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .gt-sm\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .gt-sm\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .gt-sm\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .gt-sm\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .gt-sm\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .gt-sm\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .gt-sm\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .gt-sm\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .gt-sm\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .gt-sm\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .gt-sm\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .gt-sm\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .gt-sm\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .gt-sm\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .gt-sm\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .gt-sm\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .gt-sm\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .gt-sm\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .gt-sm\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .gt-sm\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .gt-sm\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .gt-sm\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .gt-sm\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .gt-sm\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .gt-sm\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .gt-sm\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .gt-sm\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .gt-sm\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .gt-sm\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .gt-sm\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .gt-sm\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .gt-sm\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .gt-sm\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .gt-sm\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .gt-sm\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .gt-sm\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .gt-sm\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .gt-sm\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .gt-sm\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .gt-sm\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .gt-sm\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .gt-sm\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .gt-sm\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .gt-sm\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .gt-sm\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .gt-sm\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .gt-sm\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .gt-sm\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .gt-sm\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .gt-sm\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .gt-sm\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .gt-sm\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .gt-sm\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .gt-sm\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .gt-sm\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .gt-sm\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .gt-sm\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .gt-sm\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .gt-sm\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .gt-sm\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .gt-sm\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .gt-sm\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .gt-sm\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .gt-sm\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .gt-sm\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .gt-sm\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .gt-sm\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .gt-sm\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .gt-sm\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .gt-sm\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .gt-sm\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .gt-sm\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .gt-sm\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .gt-sm\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .gt-sm\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .gt-sm\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .gt-sm\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .gt-sm\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .gt-sm\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .gt-sm\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .gt-sm\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .gt-sm\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .gt-sm\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .gt-sm\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .gt-sm\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .gt-sm\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .gt-sm\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .gt-sm\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .gt-sm\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .gt-sm\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .gt-sm\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .gt-sm\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .gt-sm\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .gt-sm\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .gt-sm\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .gt-sm\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .gt-sm\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .gt-sm\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .gt-sm\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .gt-sm\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .gt-sm\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .gt-sm\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .gt-sm\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .gt-sm\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .gt-sm\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .gt-sm\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .gt-sm\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .gt-sm\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .gt-sm\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .gt-sm\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .gt-sm\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .gt-sm\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .gt-sm\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .gt-sm\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .gt-sm\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .gt-sm\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .gt-sm\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .gt-sm\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .gt-sm\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .gt-sm\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .gt-sm\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .gt-sm\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .gt-sm\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .gt-sm\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .gt-sm\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .gt-sm\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .gt-sm\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .gt-sm\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .gt-sm\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .gt-sm\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .gt-sm\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .gt-sm\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .gt-sm\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .gt-sm\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .gt-sm\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .gt-sm\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .gt-sm\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .gt-sm\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .gt-sm\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .gt-sm\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .gt-sm\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .gt-sm\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .gt-sm\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .gt-sm\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .gt-sm\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .gt-sm\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .gt-sm\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .gt-sm\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .gt-sm\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .gt-sm\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .gt-sm\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .gt-sm\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .gt-sm\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .gt-sm\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .gt-sm\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .gt-sm\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .gt-sm\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .gt-sm\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .gt-sm\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .gt-sm\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .gt-sm\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .gt-sm\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .gt-sm\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .gt-sm\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .gt-sm\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .gt-sm\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .gt-sm\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .gt-sm\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .gt-sm\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .gt-sm\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .gt-sm\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .gt-sm\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .gt-sm\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .gt-sm\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .gt-sm\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .gt-sm\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .gt-sm\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .gt-sm\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .gt-sm\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .gt-sm\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .gt-sm\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .gt-sm\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .gt-sm\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .gt-sm\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .gt-sm\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .gt-sm\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .gt-sm\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .gt-sm\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .gt-sm\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .gt-sm\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .gt-sm\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .gt-sm\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .gt-sm\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .gt-sm\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .gt-sm\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .gt-sm\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .gt-sm\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .gt-sm\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .gt-sm\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .gt-sm\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .gt-sm\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .gt-sm\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .gt-sm\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .gt-sm\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .gt-sm\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .gt-sm\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .gt-sm\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .gt-sm\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .gt-sm\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .gt-sm\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .gt-sm\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .gt-sm\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .gt-sm\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .gt-sm\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .gt-sm\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .gt-sm\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .gt-sm\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .gt-sm\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .gt-sm\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .gt-sm\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .gt-sm\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .gt-sm\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .gt-sm\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .gt-sm\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .gt-sm\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .gt-sm\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .gt-sm\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .gt-sm\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .gt-sm\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .gt-sm\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .gt-sm\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .gt-sm\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .gt-sm\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .gt-sm\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .gt-sm\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .gt-sm\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .gt-sm\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .gt-sm\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .gt-sm\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .gt-sm\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .gt-sm\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .gt-sm\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .gt-sm\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .gt-sm\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .gt-sm\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .gt-sm\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .gt-sm\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .gt-sm\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .gt-sm\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .gt-sm\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .gt-sm\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .gt-sm\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .gt-sm\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .gt-sm\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .gt-sm\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .gt-sm\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .gt-sm\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .gt-sm\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .gt-sm\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .gt-sm\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .gt-sm\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .gt-sm\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .gt-sm\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .gt-sm\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .gt-sm\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .gt-sm\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .gt-sm\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .gt-sm\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .gt-sm\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .gt-sm\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .gt-sm\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .gt-sm\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .gt-sm\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .gt-sm\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .gt-sm\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .gt-sm\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .gt-sm\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .gt-sm\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .gt-sm\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .gt-sm\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .gt-sm\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .gt-sm\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .gt-sm\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .gt-sm\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .gt-sm\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .gt-sm\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .gt-sm\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .gt-sm\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .gt-sm\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .gt-sm\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .gt-sm\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .gt-sm\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .gt-sm\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .gt-sm\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .gt-sm\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .gt-sm\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .gt-sm\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .gt-sm\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .gt-sm\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .gt-sm\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .gt-sm\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .gt-sm\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .gt-sm\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .gt-sm\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .gt-sm\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .gt-sm\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .gt-sm\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .gt-sm\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .gt-sm\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .gt-sm\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .gt-sm\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .gt-sm\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .gt-sm\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .gt-sm\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .gt-sm\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .gt-sm\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .gt-sm\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .gt-sm\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .gt-sm\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .gt-sm\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .gt-sm\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .gt-sm\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .gt-sm\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .gt-sm\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .gt-sm\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .gt-sm\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .gt-sm\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .gt-sm\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .gt-sm\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .gt-sm\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .gt-sm\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .gt-sm\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .gt-sm\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .gt-sm\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .gt-sm\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .gt-sm\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .gt-sm\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .gt-sm\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .gt-sm\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .gt-sm\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .gt-sm\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .gt-sm\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .gt-sm\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .gt-sm\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .gt-sm\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .gt-sm\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .gt-sm\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .gt-sm\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .gt-sm\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .gt-sm\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .gt-sm\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .gt-sm\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .gt-sm\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .gt-sm\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .gt-sm\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .gt-sm\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .gt-sm\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .gt-sm\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .gt-sm\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .gt-sm\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .gt-sm\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .gt-sm\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .gt-sm\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .gt-sm\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .gt-sm\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .gt-sm\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .gt-sm\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .gt-sm\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .gt-sm\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .gt-sm\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .gt-sm\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .gt-sm\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .gt-sm\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .gt-sm\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .gt-sm\\:p-px {\n    padding: 1px !important;\n  }\n\n  .gt-sm\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .gt-sm\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .gt-sm\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .gt-sm\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .gt-sm\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .gt-sm\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .gt-sm\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .gt-sm\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .gt-sm\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .gt-sm\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .gt-sm\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .gt-sm\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .gt-sm\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .gt-sm\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .gt-sm\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .gt-sm\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .gt-sm\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .gt-sm\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .gt-sm\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .gt-sm\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .gt-sm\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .gt-sm\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .gt-sm\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .gt-sm\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .gt-sm\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .gt-sm\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .gt-sm\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .gt-sm\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .gt-sm\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .gt-sm\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .gt-sm\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .gt-sm\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .gt-sm\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .gt-sm\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .gt-sm\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .gt-sm\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .gt-sm\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .gt-sm\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .gt-sm\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .gt-sm\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .gt-sm\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .gt-sm\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .gt-sm\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .gt-sm\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .gt-sm\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .gt-sm\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .gt-sm\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .gt-sm\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .gt-sm\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .gt-sm\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .gt-sm\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .gt-sm\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .gt-sm\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .gt-sm\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .gt-sm\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .gt-sm\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .gt-sm\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .gt-sm\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .gt-sm\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .gt-sm\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .gt-sm\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .gt-sm\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .gt-sm\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .gt-sm\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .gt-sm\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .gt-sm\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .gt-sm\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .gt-sm\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .gt-sm\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .gt-sm\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .gt-sm\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .gt-sm\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .gt-sm\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .gt-sm\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .gt-sm\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .gt-sm\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .gt-sm\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .gt-sm\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .gt-sm\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .gt-sm\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .gt-sm\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .gt-sm\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .gt-sm\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .gt-sm\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .gt-sm\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .gt-sm\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .gt-sm\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .gt-sm\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .gt-sm\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .gt-sm\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .gt-sm\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .gt-sm\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .gt-sm\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .gt-sm\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .gt-sm\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .gt-sm\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .gt-sm\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .gt-sm\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .gt-sm\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .gt-sm\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .gt-sm\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .gt-sm\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .gt-sm\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .gt-sm\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .gt-sm\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .gt-sm\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .gt-sm\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .gt-sm\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .gt-sm\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .gt-sm\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .gt-sm\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .gt-sm\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .gt-sm\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .gt-sm\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .gt-sm\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .gt-sm\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .gt-sm\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .gt-sm\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .gt-sm\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .gt-sm\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .gt-sm\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .gt-sm\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .gt-sm\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .gt-sm\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .gt-sm\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .gt-sm\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .gt-sm\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .gt-sm\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .gt-sm\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .gt-sm\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .gt-sm\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .gt-sm\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .gt-sm\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .gt-sm\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .gt-sm\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .gt-sm\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .gt-sm\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .gt-sm\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .gt-sm\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .gt-sm\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .gt-sm\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .gt-sm\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .gt-sm\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .gt-sm\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .gt-sm\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .gt-sm\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .gt-sm\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .gt-sm\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .gt-sm\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .gt-sm\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .gt-sm\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .gt-sm\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .gt-sm\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .gt-sm\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .gt-sm\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .gt-sm\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .gt-sm\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .gt-sm\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .gt-sm\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .gt-sm\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .gt-sm\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .gt-sm\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .gt-sm\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-sm\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .gt-sm\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .gt-sm\\:static {\n    position: static !important;\n  }\n\n  .gt-sm\\:fixed {\n    position: fixed !important;\n  }\n\n  .gt-sm\\:absolute {\n    position: absolute !important;\n  }\n\n  .gt-sm\\:relative {\n    position: relative !important;\n  }\n\n  .gt-sm\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .gt-sm\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .gt-sm\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .gt-sm\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .gt-sm\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .gt-sm\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .gt-sm\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .gt-sm\\:top-0 {\n    top: 0 !important;\n  }\n\n  .gt-sm\\:right-0 {\n    right: 0 !important;\n  }\n\n  .gt-sm\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .gt-sm\\:left-0 {\n    left: 0 !important;\n  }\n\n  .gt-sm\\:top-auto {\n    top: auto !important;\n  }\n\n  .gt-sm\\:right-auto {\n    right: auto !important;\n  }\n\n  .gt-sm\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .gt-sm\\:left-auto {\n    left: auto !important;\n  }\n\n  .gt-sm\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-sm\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-sm\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-sm\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .gt-sm\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .gt-sm\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .gt-sm\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-sm\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .gt-sm\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .gt-sm\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .gt-sm\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .gt-sm\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .gt-sm\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .gt-sm\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .gt-sm\\:text-left {\n    text-align: left !important;\n  }\n\n  .gt-sm\\:text-center {\n    text-align: center !important;\n  }\n\n  .gt-sm\\:text-right {\n    text-align: right !important;\n  }\n\n  .gt-sm\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .gt-sm\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-sm\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-sm\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-sm\\:italic {\n    font-style: italic !important;\n  }\n\n  .gt-sm\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .gt-sm\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .gt-sm\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .gt-sm\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .gt-sm\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .gt-sm\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .gt-sm\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .gt-sm\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .gt-sm\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .gt-sm\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .gt-sm\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .gt-sm\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .gt-sm\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .gt-sm\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .gt-sm\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .gt-sm\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .gt-sm\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .gt-sm\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .gt-sm\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .gt-sm\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .gt-sm\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .gt-sm\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .gt-sm\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .gt-sm\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .gt-sm\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .gt-sm\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .gt-sm\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .gt-sm\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .gt-sm\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .gt-sm\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .gt-sm\\:visible {\n    visibility: visible !important;\n  }\n\n  .gt-sm\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .gt-sm\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .gt-sm\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .gt-sm\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .gt-sm\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .gt-sm\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .gt-sm\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .gt-sm\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .gt-sm\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .gt-sm\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .gt-sm\\:w-0 {\n    width: 0 !important;\n  }\n\n  .gt-sm\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .gt-sm\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .gt-sm\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .gt-sm\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .gt-sm\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .gt-sm\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .gt-sm\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .gt-sm\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .gt-sm\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .gt-sm\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .gt-sm\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .gt-sm\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .gt-sm\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .gt-sm\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .gt-sm\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .gt-sm\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .gt-sm\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .gt-sm\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .gt-sm\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .gt-sm\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .gt-sm\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .gt-sm\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .gt-sm\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .gt-sm\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .gt-sm\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .gt-sm\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .gt-sm\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .gt-sm\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .gt-sm\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .gt-sm\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .gt-sm\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .gt-sm\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .gt-sm\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .gt-sm\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .gt-sm\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .gt-sm\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .gt-sm\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .gt-sm\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .gt-sm\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .gt-sm\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .gt-sm\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .gt-sm\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .gt-sm\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .gt-sm\\:w-auto {\n    width: auto !important;\n  }\n\n  .gt-sm\\:w-px {\n    width: 1px !important;\n  }\n\n  .gt-sm\\:w-2px {\n    width: 2px !important;\n  }\n\n  .gt-sm\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .gt-sm\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .gt-sm\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .gt-sm\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .gt-sm\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .gt-sm\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .gt-sm\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .gt-sm\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .gt-sm\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .gt-sm\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .gt-sm\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .gt-sm\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .gt-sm\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .gt-sm\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .gt-sm\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .gt-sm\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .gt-sm\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .gt-sm\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .gt-sm\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .gt-sm\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .gt-sm\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .gt-sm\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .gt-sm\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .gt-sm\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .gt-sm\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .gt-sm\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .gt-sm\\:w-full {\n    width: 100% !important;\n  }\n\n  .gt-sm\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .gt-sm\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .gt-sm\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .gt-sm\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .gt-sm\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .gt-sm\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .gt-sm\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .gt-sm\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .gt-sm\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .gt-sm\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .gt-sm\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .gt-sm\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .gt-sm\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .gt-sm\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .gt-sm\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .gt-sm\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .gt-sm\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .gt-sm\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .gt-sm\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .gt-sm\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .gt-sm\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .gt-sm\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .gt-sm\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .gt-sm\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .gt-sm\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .gt-sm\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .gt-sm\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .gt-sm\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .gt-sm\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .gt-sm\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .gt-sm\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .gt-sm\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .gt-sm\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .gt-sm\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .gt-sm\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .gt-sm\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .gt-sm\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .gt-sm\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .gt-sm\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .gt-sm\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .gt-sm\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .gt-sm\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .gt-sm\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .gt-sm\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .gt-sm\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .gt-sm\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .gt-sm\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .gt-sm\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .gt-sm\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .gt-sm\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .gt-sm\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .gt-sm\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .gt-sm\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .gt-sm\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .gt-sm\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .gt-sm\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .gt-sm\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .gt-sm\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .gt-sm\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .gt-sm\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .gt-sm\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .gt-sm\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .gt-sm\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .gt-sm\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .gt-sm\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .gt-sm\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .gt-sm\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .gt-sm\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .gt-sm\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .gt-sm\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .gt-sm\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .gt-sm\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .gt-sm\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .gt-sm\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .gt-sm\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .gt-sm\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .gt-sm\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .gt-sm\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .gt-sm\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .gt-sm\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .gt-sm\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .gt-sm\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .gt-sm\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .gt-sm\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .gt-sm\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .gt-sm\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .gt-sm\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .gt-sm\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .gt-sm\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .gt-sm\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .gt-sm\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .gt-sm\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .gt-sm\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .gt-sm\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .gt-sm\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .gt-sm\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .gt-sm\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .gt-sm\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .gt-sm\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .gt-sm\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .gt-sm\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .gt-sm\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .gt-sm\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .gt-sm\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .gt-sm\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .gt-sm\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .gt-sm\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .gt-sm\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .gt-sm\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .gt-sm\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .gt-sm\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .gt-sm\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .gt-sm\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .gt-sm\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .gt-sm\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .gt-sm\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .gt-sm\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .gt-sm\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .gt-sm\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .gt-sm\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .gt-sm\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .gt-sm\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .gt-sm\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .gt-sm\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .gt-sm\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .gt-sm\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .gt-sm\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .gt-sm\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .gt-sm\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .gt-sm\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .gt-sm\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .gt-sm\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .gt-sm\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .gt-sm\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .gt-sm\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .gt-sm\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .gt-sm\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .gt-sm\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .gt-sm\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .gt-sm\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .gt-sm\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .gt-sm\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .gt-sm\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .gt-sm\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .gt-sm\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .gt-sm\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .gt-sm\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .gt-sm\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .gt-sm\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .gt-sm\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .gt-sm\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .gt-sm\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .gt-sm\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .gt-sm\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .gt-sm\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .gt-sm\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .gt-sm\\:transform-none {\n    transform: none !important;\n  }\n\n  .gt-sm\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .gt-sm\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .gt-sm\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .gt-sm\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .gt-sm\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .gt-sm\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .gt-sm\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .gt-sm\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .gt-sm\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .gt-sm\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .gt-sm\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .gt-sm\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .gt-sm\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .gt-sm\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .gt-sm\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .gt-sm\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .gt-sm\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .gt-sm\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .gt-sm\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .gt-sm\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .gt-sm\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .gt-sm\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .gt-sm\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .gt-sm\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .gt-sm\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .gt-sm\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .gt-sm\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .gt-sm\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .gt-sm\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .gt-sm\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .gt-sm\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .gt-sm\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .gt-sm\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .gt-sm\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .gt-sm\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .gt-sm\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .gt-sm\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .gt-sm\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .gt-sm\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n\n@media (min-width: 1280px) {\n  .gt-md\\:space-y-0 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-0 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0px * var(--space-x-reverse)) !important;\n    margin-left: calc(0px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(8rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(9rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(10rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(12rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(14rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(16rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(1px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(1px * var(--space-x-reverse)) !important;\n    margin-left: calc(1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(2px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(2px * var(--space-x-reverse)) !important;\n    margin-left: calc(2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-1 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-1 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-2 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-2 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-3 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-0.75rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-0.75rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-3 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-0.75rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-0.75rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-4 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-4 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-5 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.25rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.25rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-5 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.25rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.25rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-6 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-6 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-1.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-8 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-8 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-10 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-10 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-2.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-12 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-12 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-14 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-3.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-3.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-14 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-3.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-3.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-16 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-16 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-18 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-4.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-4.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-18 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-4.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-4.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-20 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-20 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-22 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-5.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-5.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-22 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-5.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-5.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-24 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-24 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-26 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-6.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-6.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-26 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-6.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-6.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-28 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-28 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-30 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-7.5rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-7.5rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-30 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-7.5rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-7.5rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-32 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-8rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-8rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-32 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-8rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-8rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-36 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-9rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-9rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-36 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-9rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-9rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-40 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-10rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-10rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-40 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-10rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-10rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-48 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-12rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-12rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-48 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-12rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-12rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-56 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-14rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-14rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-56 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-14rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-14rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-64 > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-16rem * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-16rem * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-64 > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-16rem * var(--space-x-reverse)) !important;\n    margin-left: calc(-16rem * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-1px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-1px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-1px * var(--space-x-reverse)) !important;\n    margin-left: calc(-1px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:-space-y-2px > :not(template) ~ :not(template) {\n    --space-y-reverse: 0 !important;\n    margin-top: calc(-2px * calc(1 - var(--space-y-reverse))) !important;\n    margin-bottom: calc(-2px * var(--space-y-reverse)) !important;\n  }\n\n  .gt-md\\:-space-x-2px > :not(template) ~ :not(template) {\n    --space-x-reverse: 0 !important;\n    margin-right: calc(-2px * var(--space-x-reverse)) !important;\n    margin-left: calc(-2px * calc(1 - var(--space-x-reverse))) !important;\n  }\n\n  .gt-md\\:space-y-reverse > :not(template) ~ :not(template) {\n    --space-y-reverse: 1 !important;\n  }\n\n  .gt-md\\:space-x-reverse > :not(template) ~ :not(template) {\n    --space-x-reverse: 1 !important;\n  }\n\n  .gt-md\\:divide-y-0 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(0px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(0px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-md\\:divide-x-0 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(0px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(0px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-md\\:divide-y-2 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(2px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(2px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-md\\:divide-x-2 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(2px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(2px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-md\\:divide-y-4 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(4px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(4px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-md\\:divide-x-4 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(4px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(4px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-md\\:divide-y-8 > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(8px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(8px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-md\\:divide-x-8 > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(8px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(8px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-md\\:divide-y > :not(template) ~ :not(template) {\n    --divide-y-reverse: 0 !important;\n    border-top-width: calc(1px * calc(1 - var(--divide-y-reverse))) !important;\n    border-bottom-width: calc(1px * var(--divide-y-reverse)) !important;\n  }\n\n  .gt-md\\:divide-x > :not(template) ~ :not(template) {\n    --divide-x-reverse: 0 !important;\n    border-right-width: calc(1px * var(--divide-x-reverse)) !important;\n    border-left-width: calc(1px * calc(1 - var(--divide-x-reverse))) !important;\n  }\n\n  .gt-md\\:divide-y-reverse > :not(template) ~ :not(template) {\n    --divide-y-reverse: 1 !important;\n  }\n\n  .gt-md\\:divide-x-reverse > :not(template) ~ :not(template) {\n    --divide-x-reverse: 1 !important;\n  }\n\n  .gt-md\\:divide-current > :not(template) ~ :not(template) {\n    border-color: currentColor !important;\n  }\n\n  .gt-md\\:divide-transparent > :not(template) ~ :not(template) {\n    border-color: transparent !important;\n  }\n\n  .gt-md\\:divide-white > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFFFFF !important;\n    border-color: rgba(255, 255, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-black > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #000000 !important;\n    border-color: rgba(0, 0, 0, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F9FAFB !important;\n    border-color: rgba(249, 250, 251, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F4F5F7 !important;\n    border-color: rgba(244, 245, 247, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5E7EB !important;\n    border-color: rgba(229, 231, 235, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D2D6DC !important;\n    border-color: rgba(210, 214, 220, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9FA6B2 !important;\n    border-color: rgba(159, 166, 178, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4B5563 !important;\n    border-color: rgba(75, 85, 99, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #374151 !important;\n    border-color: rgba(55, 65, 81, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #252F3F !important;\n    border-color: rgba(37, 47, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #161E2E !important;\n    border-color: rgba(22, 30, 46, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6B7280 !important;\n    border-color: rgba(107, 114, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBFDFE !important;\n    border-color: rgba(251, 253, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F1F5F9 !important;\n    border-color: rgba(241, 245, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E2E8F0 !important;\n    border-color: rgba(226, 232, 240, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CFD8E3 !important;\n    border-color: rgba(207, 216, 227, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #97A6BA !important;\n    border-color: rgba(151, 166, 186, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #475569 !important;\n    border-color: rgba(71, 85, 105, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #364152 !important;\n    border-color: rgba(54, 65, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #27303F !important;\n    border-color: rgba(39, 48, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A202E !important;\n    border-color: rgba(26, 32, 46, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-cool-gray > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #64748B !important;\n    border-color: rgba(100, 116, 139, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F2 !important;\n    border-color: rgba(253, 242, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDE8E8 !important;\n    border-color: rgba(253, 232, 232, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FBD5D5 !important;\n    border-color: rgba(251, 213, 213, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4B4 !important;\n    border-color: rgba(248, 180, 180, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F98080 !important;\n    border-color: rgba(249, 128, 128, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E02424 !important;\n    border-color: rgba(224, 36, 36, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C81E1E !important;\n    border-color: rgba(200, 30, 30, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9B1C1C !important;\n    border-color: rgba(155, 28, 28, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-red > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F05252 !important;\n    border-color: rgba(240, 82, 82, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FFF8F1 !important;\n    border-color: rgba(255, 248, 241, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FEECDC !important;\n    border-color: rgba(254, 236, 220, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCD9BD !important;\n    border-color: rgba(252, 217, 189, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDBA8C !important;\n    border-color: rgba(253, 186, 140, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF8A4C !important;\n    border-color: rgba(255, 138, 76, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D03801 !important;\n    border-color: rgba(208, 56, 1, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B43403 !important;\n    border-color: rgba(180, 52, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8A2C0D !important;\n    border-color: rgba(138, 44, 13, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #771D1D !important;\n    border-color: rgba(119, 29, 29, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-orange > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FF5A1F !important;\n    border-color: rgba(255, 90, 31, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDFDEA !important;\n    border-color: rgba(253, 253, 234, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF6B2 !important;\n    border-color: rgba(253, 246, 178, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE96A !important;\n    border-color: rgba(252, 233, 106, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FACA15 !important;\n    border-color: rgba(250, 202, 21, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E3A008 !important;\n    border-color: rgba(227, 160, 8, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9F580A !important;\n    border-color: rgba(159, 88, 10, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8E4B10 !important;\n    border-color: rgba(142, 75, 16, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #723B13 !important;\n    border-color: rgba(114, 59, 19, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #633112 !important;\n    border-color: rgba(99, 49, 18, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-yellow > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C27803 !important;\n    border-color: rgba(194, 120, 3, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F3FAF7 !important;\n    border-color: rgba(243, 250, 247, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DEF7EC !important;\n    border-color: rgba(222, 247, 236, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BCF0DA !important;\n    border-color: rgba(188, 240, 218, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #84E1BC !important;\n    border-color: rgba(132, 225, 188, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #31C48D !important;\n    border-color: rgba(49, 196, 141, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #057A55 !important;\n    border-color: rgba(5, 122, 85, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #046C4E !important;\n    border-color: rgba(4, 108, 78, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #03543F !important;\n    border-color: rgba(3, 84, 63, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014737 !important;\n    border-color: rgba(1, 71, 55, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-green > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0E9F6E !important;\n    border-color: rgba(14, 159, 110, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDFAFA !important;\n    border-color: rgba(237, 250, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D5F5F6 !important;\n    border-color: rgba(213, 245, 246, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AFECEF !important;\n    border-color: rgba(175, 236, 239, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7EDCE2 !important;\n    border-color: rgba(126, 220, 226, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #16BDCA !important;\n    border-color: rgba(22, 189, 202, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #047481 !important;\n    border-color: rgba(4, 116, 129, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #036672 !important;\n    border-color: rgba(3, 102, 114, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #05505C !important;\n    border-color: rgba(5, 80, 92, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #014451 !important;\n    border-color: rgba(1, 68, 81, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-teal > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #0694A2 !important;\n    border-color: rgba(6, 148, 162, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EBF5FF !important;\n    border-color: rgba(235, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E1EFFE !important;\n    border-color: rgba(225, 239, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #C3DDFD !important;\n    border-color: rgba(195, 221, 253, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #A4CAFE !important;\n    border-color: rgba(164, 202, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #76A9FA !important;\n    border-color: rgba(118, 169, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1C64F2 !important;\n    border-color: rgba(28, 100, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1A56DB !important;\n    border-color: rgba(26, 86, 219, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #1E429F !important;\n    border-color: rgba(30, 66, 159, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #233876 !important;\n    border-color: rgba(35, 56, 118, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-blue > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #3F83F8 !important;\n    border-color: rgba(63, 131, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F0F5FF !important;\n    border-color: rgba(240, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E5EDFF !important;\n    border-color: rgba(229, 237, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CDDBFE !important;\n    border-color: rgba(205, 219, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #B4C6FC !important;\n    border-color: rgba(180, 198, 252, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #8DA2FB !important;\n    border-color: rgba(141, 162, 251, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5850EC !important;\n    border-color: rgba(88, 80, 236, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5145CD !important;\n    border-color: rgba(81, 69, 205, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #42389D !important;\n    border-color: rgba(66, 56, 157, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #362F78 !important;\n    border-color: rgba(54, 47, 120, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-indigo > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6875F5 !important;\n    border-color: rgba(104, 117, 245, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F6F5FF !important;\n    border-color: rgba(246, 245, 255, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #EDEBFE !important;\n    border-color: rgba(237, 235, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #DCD7FE !important;\n    border-color: rgba(220, 215, 254, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #CABFFD !important;\n    border-color: rgba(202, 191, 253, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #AC94FA !important;\n    border-color: rgba(172, 148, 250, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #7E3AF2 !important;\n    border-color: rgba(126, 58, 242, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #6C2BD9 !important;\n    border-color: rgba(108, 43, 217, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #5521B5 !important;\n    border-color: rgba(85, 33, 181, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #4A1D96 !important;\n    border-color: rgba(74, 29, 150, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-purple > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #9061F9 !important;\n    border-color: rgba(144, 97, 249, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FDF2F8 !important;\n    border-color: rgba(253, 242, 248, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FCE8F3 !important;\n    border-color: rgba(252, 232, 243, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-200 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #FAD1E8 !important;\n    border-color: rgba(250, 209, 232, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-300 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F8B4D9 !important;\n    border-color: rgba(248, 180, 217, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-400 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #F17EB8 !important;\n    border-color: rgba(241, 126, 184, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-500 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-600 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #D61F69 !important;\n    border-color: rgba(214, 31, 105, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-700 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #BF125D !important;\n    border-color: rgba(191, 18, 93, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-800 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #99154B !important;\n    border-color: rgba(153, 21, 75, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink-900 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #751A3D !important;\n    border-color: rgba(117, 26, 61, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-pink > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n    border-color: #E74694 !important;\n    border-color: rgba(231, 70, 148, var(--divide-opacity)) !important;\n  }\n\n  .gt-md\\:divide-opacity-0 > :not(template) ~ :not(template) {\n    --divide-opacity: 0 !important;\n  }\n\n  .gt-md\\:divide-opacity-12 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:divide-opacity-25 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:divide-opacity-38 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:divide-opacity-50 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:divide-opacity-54 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:divide-opacity-70 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:divide-opacity-75 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:divide-opacity-84 > :not(template) ~ :not(template) {\n    --divide-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:divide-opacity-100 > :not(template) ~ :not(template) {\n    --divide-opacity: 1 !important;\n  }\n\n  .gt-md\\:sr-only {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .gt-md\\:not-sr-only {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .gt-md\\:focus\\:sr-only:focus {\n    position: absolute !important;\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border-width: 0 !important;\n  }\n\n  .gt-md\\:focus\\:not-sr-only:focus {\n    position: static !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    overflow: visible !important;\n    clip: auto !important;\n    white-space: normal !important;\n  }\n\n  .gt-md\\:appearance-none {\n    -webkit-appearance: none !important;\n       -moz-appearance: none !important;\n            appearance: none !important;\n  }\n\n  .gt-md\\:bg-fixed {\n    background-attachment: fixed !important;\n  }\n\n  .gt-md\\:bg-local {\n    background-attachment: local !important;\n  }\n\n  .gt-md\\:bg-scroll {\n    background-attachment: scroll !important;\n  }\n\n  .gt-md\\:bg-opacity-0 {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-md\\:bg-opacity-12 {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:bg-opacity-25 {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:bg-opacity-38 {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:bg-opacity-50 {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:bg-opacity-54 {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:bg-opacity-70 {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:bg-opacity-75 {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:bg-opacity-84 {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:bg-opacity-100 {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-0:hover {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-12:hover {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-25:hover {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-38:hover {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-50:hover {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-54:hover {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-70:hover {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-75:hover {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-84:hover {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:hover\\:bg-opacity-100:hover {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-0:focus {\n    --bg-opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-12:focus {\n    --bg-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-25:focus {\n    --bg-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-38:focus {\n    --bg-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-50:focus {\n    --bg-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-54:focus {\n    --bg-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-70:focus {\n    --bg-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-75:focus {\n    --bg-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-84:focus {\n    --bg-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:bg-opacity-100:focus {\n    --bg-opacity: 1 !important;\n  }\n\n  .gt-md\\:bg-bottom {\n    background-position: bottom !important;\n  }\n\n  .gt-md\\:bg-center {\n    background-position: center !important;\n  }\n\n  .gt-md\\:bg-left {\n    background-position: left !important;\n  }\n\n  .gt-md\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n\n  .gt-md\\:bg-left-top {\n    background-position: left top !important;\n  }\n\n  .gt-md\\:bg-right {\n    background-position: right !important;\n  }\n\n  .gt-md\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n\n  .gt-md\\:bg-right-top {\n    background-position: right top !important;\n  }\n\n  .gt-md\\:bg-top {\n    background-position: top !important;\n  }\n\n  .gt-md\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n\n  .gt-md\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n\n  .gt-md\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n\n  .gt-md\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n\n  .gt-md\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n\n  .gt-md\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n\n  .gt-md\\:bg-auto {\n    background-size: auto !important;\n  }\n\n  .gt-md\\:bg-cover {\n    background-size: cover !important;\n  }\n\n  .gt-md\\:bg-contain {\n    background-size: contain !important;\n  }\n\n  .gt-md\\:border-collapse {\n    border-collapse: collapse !important;\n  }\n\n  .gt-md\\:border-separate {\n    border-collapse: separate !important;\n  }\n\n  .gt-md\\:border-opacity-0 {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-md\\:border-opacity-12 {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:border-opacity-25 {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:border-opacity-38 {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:border-opacity-50 {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:border-opacity-54 {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:border-opacity-70 {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:border-opacity-75 {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:border-opacity-84 {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:border-opacity-100 {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-0:hover {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-12:hover {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-25:hover {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-38:hover {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-50:hover {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-54:hover {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-70:hover {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-75:hover {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-84:hover {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:hover\\:border-opacity-100:hover {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-0:focus {\n    --border-opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-12:focus {\n    --border-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-25:focus {\n    --border-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-38:focus {\n    --border-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-50:focus {\n    --border-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-54:focus {\n    --border-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-70:focus {\n    --border-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-75:focus {\n    --border-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-84:focus {\n    --border-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:border-opacity-100:focus {\n    --border-opacity: 1 !important;\n  }\n\n  .gt-md\\:rounded-none {\n    border-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-sm {\n    border-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded {\n    border-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-md {\n    border-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-lg {\n    border-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-full {\n    border-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-t-none {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-r-none {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-b-none {\n    border-bottom-right-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-l-none {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-t-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-r-sm {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-b-sm {\n    border-bottom-right-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-l-sm {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-t {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-r {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-b {\n    border-bottom-right-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-l {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-t-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-r-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-b-md {\n    border-bottom-right-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-l-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-t-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-r-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-b-lg {\n    border-bottom-right-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-l-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-t-full {\n    border-top-left-radius: 9999px !important;\n    border-top-right-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-r-full {\n    border-top-right-radius: 9999px !important;\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-b-full {\n    border-bottom-right-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-l-full {\n    border-top-left-radius: 9999px !important;\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-tl-none {\n    border-top-left-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-tr-none {\n    border-top-right-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-br-none {\n    border-bottom-right-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-bl-none {\n    border-bottom-left-radius: 0 !important;\n  }\n\n  .gt-md\\:rounded-tl-sm {\n    border-top-left-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-tr-sm {\n    border-top-right-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-br-sm {\n    border-bottom-right-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-bl-sm {\n    border-bottom-left-radius: 0.125rem !important;\n  }\n\n  .gt-md\\:rounded-tl {\n    border-top-left-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-tr {\n    border-top-right-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-br {\n    border-bottom-right-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-bl {\n    border-bottom-left-radius: 0.25rem !important;\n  }\n\n  .gt-md\\:rounded-tl-md {\n    border-top-left-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-tr-md {\n    border-top-right-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-br-md {\n    border-bottom-right-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-bl-md {\n    border-bottom-left-radius: 0.375rem !important;\n  }\n\n  .gt-md\\:rounded-tl-lg {\n    border-top-left-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-tr-lg {\n    border-top-right-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-br-lg {\n    border-bottom-right-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-bl-lg {\n    border-bottom-left-radius: 0.5rem !important;\n  }\n\n  .gt-md\\:rounded-tl-full {\n    border-top-left-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-tr-full {\n    border-top-right-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-br-full {\n    border-bottom-right-radius: 9999px !important;\n  }\n\n  .gt-md\\:rounded-bl-full {\n    border-bottom-left-radius: 9999px !important;\n  }\n\n  .gt-md\\:border-solid {\n    border-style: solid !important;\n  }\n\n  .gt-md\\:border-dashed {\n    border-style: dashed !important;\n  }\n\n  .gt-md\\:border-dotted {\n    border-style: dotted !important;\n  }\n\n  .gt-md\\:border-double {\n    border-style: double !important;\n  }\n\n  .gt-md\\:border-none {\n    border-style: none !important;\n  }\n\n  .gt-md\\:border-0 {\n    border-width: 0 !important;\n  }\n\n  .gt-md\\:border-2 {\n    border-width: 2px !important;\n  }\n\n  .gt-md\\:border-4 {\n    border-width: 4px !important;\n  }\n\n  .gt-md\\:border-8 {\n    border-width: 8px !important;\n  }\n\n  .gt-md\\:border {\n    border-width: 1px !important;\n  }\n\n  .gt-md\\:border-t-0 {\n    border-top-width: 0 !important;\n  }\n\n  .gt-md\\:border-r-0 {\n    border-right-width: 0 !important;\n  }\n\n  .gt-md\\:border-b-0 {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-md\\:border-l-0 {\n    border-left-width: 0 !important;\n  }\n\n  .gt-md\\:border-t-2 {\n    border-top-width: 2px !important;\n  }\n\n  .gt-md\\:border-r-2 {\n    border-right-width: 2px !important;\n  }\n\n  .gt-md\\:border-b-2 {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-md\\:border-l-2 {\n    border-left-width: 2px !important;\n  }\n\n  .gt-md\\:border-t-4 {\n    border-top-width: 4px !important;\n  }\n\n  .gt-md\\:border-r-4 {\n    border-right-width: 4px !important;\n  }\n\n  .gt-md\\:border-b-4 {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-md\\:border-l-4 {\n    border-left-width: 4px !important;\n  }\n\n  .gt-md\\:border-t-8 {\n    border-top-width: 8px !important;\n  }\n\n  .gt-md\\:border-r-8 {\n    border-right-width: 8px !important;\n  }\n\n  .gt-md\\:border-b-8 {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-md\\:border-l-8 {\n    border-left-width: 8px !important;\n  }\n\n  .gt-md\\:border-t {\n    border-top-width: 1px !important;\n  }\n\n  .gt-md\\:border-r {\n    border-right-width: 1px !important;\n  }\n\n  .gt-md\\:border-b {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-md\\:border-l {\n    border-left-width: 1px !important;\n  }\n\n  .gt-md\\:first\\:border-0:first-child {\n    border-width: 0 !important;\n  }\n\n  .gt-md\\:first\\:border-2:first-child {\n    border-width: 2px !important;\n  }\n\n  .gt-md\\:first\\:border-4:first-child {\n    border-width: 4px !important;\n  }\n\n  .gt-md\\:first\\:border-8:first-child {\n    border-width: 8px !important;\n  }\n\n  .gt-md\\:first\\:border:first-child {\n    border-width: 1px !important;\n  }\n\n  .gt-md\\:first\\:border-t-0:first-child {\n    border-top-width: 0 !important;\n  }\n\n  .gt-md\\:first\\:border-r-0:first-child {\n    border-right-width: 0 !important;\n  }\n\n  .gt-md\\:first\\:border-b-0:first-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-md\\:first\\:border-l-0:first-child {\n    border-left-width: 0 !important;\n  }\n\n  .gt-md\\:first\\:border-t-2:first-child {\n    border-top-width: 2px !important;\n  }\n\n  .gt-md\\:first\\:border-r-2:first-child {\n    border-right-width: 2px !important;\n  }\n\n  .gt-md\\:first\\:border-b-2:first-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-md\\:first\\:border-l-2:first-child {\n    border-left-width: 2px !important;\n  }\n\n  .gt-md\\:first\\:border-t-4:first-child {\n    border-top-width: 4px !important;\n  }\n\n  .gt-md\\:first\\:border-r-4:first-child {\n    border-right-width: 4px !important;\n  }\n\n  .gt-md\\:first\\:border-b-4:first-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-md\\:first\\:border-l-4:first-child {\n    border-left-width: 4px !important;\n  }\n\n  .gt-md\\:first\\:border-t-8:first-child {\n    border-top-width: 8px !important;\n  }\n\n  .gt-md\\:first\\:border-r-8:first-child {\n    border-right-width: 8px !important;\n  }\n\n  .gt-md\\:first\\:border-b-8:first-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-md\\:first\\:border-l-8:first-child {\n    border-left-width: 8px !important;\n  }\n\n  .gt-md\\:first\\:border-t:first-child {\n    border-top-width: 1px !important;\n  }\n\n  .gt-md\\:first\\:border-r:first-child {\n    border-right-width: 1px !important;\n  }\n\n  .gt-md\\:first\\:border-b:first-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-md\\:first\\:border-l:first-child {\n    border-left-width: 1px !important;\n  }\n\n  .gt-md\\:last\\:border-0:last-child {\n    border-width: 0 !important;\n  }\n\n  .gt-md\\:last\\:border-2:last-child {\n    border-width: 2px !important;\n  }\n\n  .gt-md\\:last\\:border-4:last-child {\n    border-width: 4px !important;\n  }\n\n  .gt-md\\:last\\:border-8:last-child {\n    border-width: 8px !important;\n  }\n\n  .gt-md\\:last\\:border:last-child {\n    border-width: 1px !important;\n  }\n\n  .gt-md\\:last\\:border-t-0:last-child {\n    border-top-width: 0 !important;\n  }\n\n  .gt-md\\:last\\:border-r-0:last-child {\n    border-right-width: 0 !important;\n  }\n\n  .gt-md\\:last\\:border-b-0:last-child {\n    border-bottom-width: 0 !important;\n  }\n\n  .gt-md\\:last\\:border-l-0:last-child {\n    border-left-width: 0 !important;\n  }\n\n  .gt-md\\:last\\:border-t-2:last-child {\n    border-top-width: 2px !important;\n  }\n\n  .gt-md\\:last\\:border-r-2:last-child {\n    border-right-width: 2px !important;\n  }\n\n  .gt-md\\:last\\:border-b-2:last-child {\n    border-bottom-width: 2px !important;\n  }\n\n  .gt-md\\:last\\:border-l-2:last-child {\n    border-left-width: 2px !important;\n  }\n\n  .gt-md\\:last\\:border-t-4:last-child {\n    border-top-width: 4px !important;\n  }\n\n  .gt-md\\:last\\:border-r-4:last-child {\n    border-right-width: 4px !important;\n  }\n\n  .gt-md\\:last\\:border-b-4:last-child {\n    border-bottom-width: 4px !important;\n  }\n\n  .gt-md\\:last\\:border-l-4:last-child {\n    border-left-width: 4px !important;\n  }\n\n  .gt-md\\:last\\:border-t-8:last-child {\n    border-top-width: 8px !important;\n  }\n\n  .gt-md\\:last\\:border-r-8:last-child {\n    border-right-width: 8px !important;\n  }\n\n  .gt-md\\:last\\:border-b-8:last-child {\n    border-bottom-width: 8px !important;\n  }\n\n  .gt-md\\:last\\:border-l-8:last-child {\n    border-left-width: 8px !important;\n  }\n\n  .gt-md\\:last\\:border-t:last-child {\n    border-top-width: 1px !important;\n  }\n\n  .gt-md\\:last\\:border-r:last-child {\n    border-right-width: 1px !important;\n  }\n\n  .gt-md\\:last\\:border-b:last-child {\n    border-bottom-width: 1px !important;\n  }\n\n  .gt-md\\:last\\:border-l:last-child {\n    border-left-width: 1px !important;\n  }\n\n  .gt-md\\:box-border {\n    box-sizing: border-box !important;\n  }\n\n  .gt-md\\:box-content {\n    box-sizing: content-box !important;\n  }\n\n  .gt-md\\:block {\n    display: block !important;\n  }\n\n  .gt-md\\:inline-block {\n    display: inline-block !important;\n  }\n\n  .gt-md\\:inline {\n    display: inline !important;\n  }\n\n  .gt-md\\:flex {\n    display: flex !important;\n  }\n\n  .gt-md\\:inline-flex {\n    display: inline-flex !important;\n  }\n\n  .gt-md\\:table {\n    display: table !important;\n  }\n\n  .gt-md\\:table-caption {\n    display: table-caption !important;\n  }\n\n  .gt-md\\:table-cell {\n    display: table-cell !important;\n  }\n\n  .gt-md\\:table-column {\n    display: table-column !important;\n  }\n\n  .gt-md\\:table-column-group {\n    display: table-column-group !important;\n  }\n\n  .gt-md\\:table-footer-group {\n    display: table-footer-group !important;\n  }\n\n  .gt-md\\:table-header-group {\n    display: table-header-group !important;\n  }\n\n  .gt-md\\:table-row-group {\n    display: table-row-group !important;\n  }\n\n  .gt-md\\:table-row {\n    display: table-row !important;\n  }\n\n  .gt-md\\:flow-root {\n    display: flow-root !important;\n  }\n\n  .gt-md\\:grid {\n    display: grid !important;\n  }\n\n  .gt-md\\:inline-grid {\n    display: inline-grid !important;\n  }\n\n  .gt-md\\:hidden {\n    display: none !important;\n  }\n\n  .gt-md\\:flex-row {\n    flex-direction: row !important;\n  }\n\n  .gt-md\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .gt-md\\:flex-col {\n    flex-direction: column !important;\n  }\n\n  .gt-md\\:flex-col-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .gt-md\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .gt-md\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gt-md\\:flex-no-wrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .gt-md\\:items-start {\n    align-items: flex-start !important;\n  }\n\n  .gt-md\\:items-end {\n    align-items: flex-end !important;\n  }\n\n  .gt-md\\:items-center {\n    align-items: center !important;\n  }\n\n  .gt-md\\:items-baseline {\n    align-items: baseline !important;\n  }\n\n  .gt-md\\:items-stretch {\n    align-items: stretch !important;\n  }\n\n  .gt-md\\:self-auto {\n    align-self: auto !important;\n  }\n\n  .gt-md\\:self-start {\n    align-self: flex-start !important;\n  }\n\n  .gt-md\\:self-end {\n    align-self: flex-end !important;\n  }\n\n  .gt-md\\:self-center {\n    align-self: center !important;\n  }\n\n  .gt-md\\:self-stretch {\n    align-self: stretch !important;\n  }\n\n  .gt-md\\:justify-start {\n    justify-content: flex-start !important;\n  }\n\n  .gt-md\\:justify-end {\n    justify-content: flex-end !important;\n  }\n\n  .gt-md\\:justify-center {\n    justify-content: center !important;\n  }\n\n  .gt-md\\:justify-between {\n    justify-content: space-between !important;\n  }\n\n  .gt-md\\:justify-around {\n    justify-content: space-around !important;\n  }\n\n  .gt-md\\:justify-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .gt-md\\:content-center {\n    align-content: center !important;\n  }\n\n  .gt-md\\:content-start {\n    align-content: flex-start !important;\n  }\n\n  .gt-md\\:content-end {\n    align-content: flex-end !important;\n  }\n\n  .gt-md\\:content-between {\n    align-content: space-between !important;\n  }\n\n  .gt-md\\:content-around {\n    align-content: space-around !important;\n  }\n\n  .gt-md\\:flex-0 {\n    flex: 0 0 auto !important;\n  }\n\n  .gt-md\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n\n  .gt-md\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n\n  .gt-md\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n\n  .gt-md\\:flex-none {\n    flex: none !important;\n  }\n\n  .gt-md\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .gt-md\\:flex-grow {\n    flex-grow: 1 !important;\n  }\n\n  .gt-md\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .gt-md\\:flex-shrink {\n    flex-shrink: 1 !important;\n  }\n\n  .gt-md\\:order-1 {\n    order: 1 !important;\n  }\n\n  .gt-md\\:order-2 {\n    order: 2 !important;\n  }\n\n  .gt-md\\:order-3 {\n    order: 3 !important;\n  }\n\n  .gt-md\\:order-4 {\n    order: 4 !important;\n  }\n\n  .gt-md\\:order-5 {\n    order: 5 !important;\n  }\n\n  .gt-md\\:order-6 {\n    order: 6 !important;\n  }\n\n  .gt-md\\:order-7 {\n    order: 7 !important;\n  }\n\n  .gt-md\\:order-8 {\n    order: 8 !important;\n  }\n\n  .gt-md\\:order-9 {\n    order: 9 !important;\n  }\n\n  .gt-md\\:order-10 {\n    order: 10 !important;\n  }\n\n  .gt-md\\:order-11 {\n    order: 11 !important;\n  }\n\n  .gt-md\\:order-12 {\n    order: 12 !important;\n  }\n\n  .gt-md\\:order-first {\n    order: -9999 !important;\n  }\n\n  .gt-md\\:order-last {\n    order: 9999 !important;\n  }\n\n  .gt-md\\:order-none {\n    order: 0 !important;\n  }\n\n  .gt-md\\:font-hairline {\n    font-weight: 100 !important;\n  }\n\n  .gt-md\\:font-thin {\n    font-weight: 200 !important;\n  }\n\n  .gt-md\\:font-light {\n    font-weight: 300 !important;\n  }\n\n  .gt-md\\:font-normal {\n    font-weight: 400 !important;\n  }\n\n  .gt-md\\:font-medium {\n    font-weight: 500 !important;\n  }\n\n  .gt-md\\:font-semibold {\n    font-weight: 600 !important;\n  }\n\n  .gt-md\\:font-bold {\n    font-weight: 700 !important;\n  }\n\n  .gt-md\\:font-extrabold {\n    font-weight: 800 !important;\n  }\n\n  .gt-md\\:font-black {\n    font-weight: 900 !important;\n  }\n\n  .gt-md\\:h-0 {\n    height: 0 !important;\n  }\n\n  .gt-md\\:h-1 {\n    height: 0.25rem !important;\n  }\n\n  .gt-md\\:h-2 {\n    height: 0.5rem !important;\n  }\n\n  .gt-md\\:h-3 {\n    height: 0.75rem !important;\n  }\n\n  .gt-md\\:h-4 {\n    height: 1rem !important;\n  }\n\n  .gt-md\\:h-5 {\n    height: 1.25rem !important;\n  }\n\n  .gt-md\\:h-6 {\n    height: 1.5rem !important;\n  }\n\n  .gt-md\\:h-8 {\n    height: 2rem !important;\n  }\n\n  .gt-md\\:h-10 {\n    height: 2.5rem !important;\n  }\n\n  .gt-md\\:h-12 {\n    height: 3rem !important;\n  }\n\n  .gt-md\\:h-14 {\n    height: 3.5rem !important;\n  }\n\n  .gt-md\\:h-16 {\n    height: 4rem !important;\n  }\n\n  .gt-md\\:h-18 {\n    height: 4.5rem !important;\n  }\n\n  .gt-md\\:h-20 {\n    height: 5rem !important;\n  }\n\n  .gt-md\\:h-22 {\n    height: 5.5rem !important;\n  }\n\n  .gt-md\\:h-24 {\n    height: 6rem !important;\n  }\n\n  .gt-md\\:h-26 {\n    height: 6.5rem !important;\n  }\n\n  .gt-md\\:h-28 {\n    height: 7rem !important;\n  }\n\n  .gt-md\\:h-30 {\n    height: 7.5rem !important;\n  }\n\n  .gt-md\\:h-32 {\n    height: 8rem !important;\n  }\n\n  .gt-md\\:h-36 {\n    height: 9rem !important;\n  }\n\n  .gt-md\\:h-40 {\n    height: 10rem !important;\n  }\n\n  .gt-md\\:h-48 {\n    height: 12rem !important;\n  }\n\n  .gt-md\\:h-50 {\n    height: 12.5rem !important;\n  }\n\n  .gt-md\\:h-56 {\n    height: 14rem !important;\n  }\n\n  .gt-md\\:h-60 {\n    height: 15rem !important;\n  }\n\n  .gt-md\\:h-64 {\n    height: 16rem !important;\n  }\n\n  .gt-md\\:h-80 {\n    height: 20rem !important;\n  }\n\n  .gt-md\\:h-90 {\n    height: 24rem !important;\n  }\n\n  .gt-md\\:h-100 {\n    height: 25rem !important;\n  }\n\n  .gt-md\\:h-120 {\n    height: 30rem !important;\n  }\n\n  .gt-md\\:h-128 {\n    height: 32rem !important;\n  }\n\n  .gt-md\\:h-140 {\n    height: 35rem !important;\n  }\n\n  .gt-md\\:h-160 {\n    height: 40rem !important;\n  }\n\n  .gt-md\\:h-180 {\n    height: 45rem !important;\n  }\n\n  .gt-md\\:h-192 {\n    height: 48rem !important;\n  }\n\n  .gt-md\\:h-200 {\n    height: 50rem !important;\n  }\n\n  .gt-md\\:h-240 {\n    height: 60rem !important;\n  }\n\n  .gt-md\\:h-256 {\n    height: 64rem !important;\n  }\n\n  .gt-md\\:h-280 {\n    height: 70rem !important;\n  }\n\n  .gt-md\\:h-320 {\n    height: 80rem !important;\n  }\n\n  .gt-md\\:h-360 {\n    height: 90rem !important;\n  }\n\n  .gt-md\\:h-400 {\n    height: 100rem !important;\n  }\n\n  .gt-md\\:h-480 {\n    height: 120rem !important;\n  }\n\n  .gt-md\\:h-auto {\n    height: auto !important;\n  }\n\n  .gt-md\\:h-px {\n    height: 1px !important;\n  }\n\n  .gt-md\\:h-2px {\n    height: 2px !important;\n  }\n\n  .gt-md\\:h-full {\n    height: 100% !important;\n  }\n\n  .gt-md\\:h-screen {\n    height: 100vh !important;\n  }\n\n  .gt-md\\:h-1\\/2 {\n    height: 50% !important;\n  }\n\n  .gt-md\\:h-1\\/3 {\n    height: 33.33333% !important;\n  }\n\n  .gt-md\\:h-2\\/3 {\n    height: 66.66667% !important;\n  }\n\n  .gt-md\\:h-1\\/4 {\n    height: 25% !important;\n  }\n\n  .gt-md\\:h-2\\/4 {\n    height: 50% !important;\n  }\n\n  .gt-md\\:h-3\\/4 {\n    height: 75% !important;\n  }\n\n  .gt-md\\:h-1\\/5 {\n    height: 20% !important;\n  }\n\n  .gt-md\\:h-2\\/5 {\n    height: 40% !important;\n  }\n\n  .gt-md\\:h-3\\/5 {\n    height: 60% !important;\n  }\n\n  .gt-md\\:h-4\\/5 {\n    height: 80% !important;\n  }\n\n  .gt-md\\:h-1\\/12 {\n    height: 8.33333% !important;\n  }\n\n  .gt-md\\:h-2\\/12 {\n    height: 16.66667% !important;\n  }\n\n  .gt-md\\:h-3\\/12 {\n    height: 25% !important;\n  }\n\n  .gt-md\\:h-4\\/12 {\n    height: 33.33333% !important;\n  }\n\n  .gt-md\\:h-5\\/12 {\n    height: 41.66667% !important;\n  }\n\n  .gt-md\\:h-6\\/12 {\n    height: 50% !important;\n  }\n\n  .gt-md\\:h-7\\/12 {\n    height: 58.33333% !important;\n  }\n\n  .gt-md\\:h-8\\/12 {\n    height: 66.66667% !important;\n  }\n\n  .gt-md\\:h-9\\/12 {\n    height: 75% !important;\n  }\n\n  .gt-md\\:h-10\\/12 {\n    height: 83.33333% !important;\n  }\n\n  .gt-md\\:h-11\\/12 {\n    height: 91.66667% !important;\n  }\n\n  .gt-md\\:text-xs {\n    font-size: 0.625rem !important;\n  }\n\n  .gt-md\\:text-sm {\n    font-size: 0.75rem !important;\n  }\n\n  .gt-md\\:text-md {\n    font-size: 0.8125rem !important;\n  }\n\n  .gt-md\\:text-base {\n    font-size: 0.875rem !important;\n  }\n\n  .gt-md\\:text-lg {\n    font-size: 1rem !important;\n  }\n\n  .gt-md\\:text-xl {\n    font-size: 1.125rem !important;\n  }\n\n  .gt-md\\:text-2xl {\n    font-size: 1.25rem !important;\n  }\n\n  .gt-md\\:text-3xl {\n    font-size: 1.5rem !important;\n  }\n\n  .gt-md\\:text-4xl {\n    font-size: 2rem !important;\n  }\n\n  .gt-md\\:text-5xl {\n    font-size: 2.25rem !important;\n  }\n\n  .gt-md\\:text-6xl {\n    font-size: 2.5rem !important;\n  }\n\n  .gt-md\\:text-7xl {\n    font-size: 3rem !important;\n  }\n\n  .gt-md\\:text-8xl {\n    font-size: 4rem !important;\n  }\n\n  .gt-md\\:text-9xl {\n    font-size: 6rem !important;\n  }\n\n  .gt-md\\:text-10xl {\n    font-size: 8rem !important;\n  }\n\n  .gt-md\\:leading-3 {\n    line-height: .75rem !important;\n  }\n\n  .gt-md\\:leading-4 {\n    line-height: 1rem !important;\n  }\n\n  .gt-md\\:leading-5 {\n    line-height: 1.25rem !important;\n  }\n\n  .gt-md\\:leading-6 {\n    line-height: 1.5rem !important;\n  }\n\n  .gt-md\\:leading-7 {\n    line-height: 1.75rem !important;\n  }\n\n  .gt-md\\:leading-8 {\n    line-height: 2rem !important;\n  }\n\n  .gt-md\\:leading-9 {\n    line-height: 2.25rem !important;\n  }\n\n  .gt-md\\:leading-10 {\n    line-height: 2.5rem !important;\n  }\n\n  .gt-md\\:leading-none {\n    line-height: 1 !important;\n  }\n\n  .gt-md\\:leading-tight {\n    line-height: 1.25 !important;\n  }\n\n  .gt-md\\:leading-snug {\n    line-height: 1.375 !important;\n  }\n\n  .gt-md\\:leading-normal {\n    line-height: 1.5 !important;\n  }\n\n  .gt-md\\:leading-relaxed {\n    line-height: 1.625 !important;\n  }\n\n  .gt-md\\:leading-loose {\n    line-height: 2 !important;\n  }\n\n  .gt-md\\:list-inside {\n    list-style-position: inside !important;\n  }\n\n  .gt-md\\:list-outside {\n    list-style-position: outside !important;\n  }\n\n  .gt-md\\:list-none {\n    list-style-type: none !important;\n  }\n\n  .gt-md\\:list-disc {\n    list-style-type: disc !important;\n  }\n\n  .gt-md\\:list-decimal {\n    list-style-type: decimal !important;\n  }\n\n  .gt-md\\:m-0 {\n    margin: 0 !important;\n  }\n\n  .gt-md\\:m-1 {\n    margin: 0.25rem !important;\n  }\n\n  .gt-md\\:m-2 {\n    margin: 0.5rem !important;\n  }\n\n  .gt-md\\:m-3 {\n    margin: 0.75rem !important;\n  }\n\n  .gt-md\\:m-4 {\n    margin: 1rem !important;\n  }\n\n  .gt-md\\:m-5 {\n    margin: 1.25rem !important;\n  }\n\n  .gt-md\\:m-6 {\n    margin: 1.5rem !important;\n  }\n\n  .gt-md\\:m-8 {\n    margin: 2rem !important;\n  }\n\n  .gt-md\\:m-10 {\n    margin: 2.5rem !important;\n  }\n\n  .gt-md\\:m-12 {\n    margin: 3rem !important;\n  }\n\n  .gt-md\\:m-14 {\n    margin: 3.5rem !important;\n  }\n\n  .gt-md\\:m-16 {\n    margin: 4rem !important;\n  }\n\n  .gt-md\\:m-18 {\n    margin: 4.5rem !important;\n  }\n\n  .gt-md\\:m-20 {\n    margin: 5rem !important;\n  }\n\n  .gt-md\\:m-22 {\n    margin: 5.5rem !important;\n  }\n\n  .gt-md\\:m-24 {\n    margin: 6rem !important;\n  }\n\n  .gt-md\\:m-26 {\n    margin: 6.5rem !important;\n  }\n\n  .gt-md\\:m-28 {\n    margin: 7rem !important;\n  }\n\n  .gt-md\\:m-30 {\n    margin: 7.5rem !important;\n  }\n\n  .gt-md\\:m-32 {\n    margin: 8rem !important;\n  }\n\n  .gt-md\\:m-36 {\n    margin: 9rem !important;\n  }\n\n  .gt-md\\:m-40 {\n    margin: 10rem !important;\n  }\n\n  .gt-md\\:m-48 {\n    margin: 12rem !important;\n  }\n\n  .gt-md\\:m-56 {\n    margin: 14rem !important;\n  }\n\n  .gt-md\\:m-64 {\n    margin: 16rem !important;\n  }\n\n  .gt-md\\:m-auto {\n    margin: auto !important;\n  }\n\n  .gt-md\\:m-px {\n    margin: 1px !important;\n  }\n\n  .gt-md\\:m-2px {\n    margin: 2px !important;\n  }\n\n  .gt-md\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n\n  .gt-md\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n\n  .gt-md\\:-m-3 {\n    margin: -0.75rem !important;\n  }\n\n  .gt-md\\:-m-4 {\n    margin: -1rem !important;\n  }\n\n  .gt-md\\:-m-5 {\n    margin: -1.25rem !important;\n  }\n\n  .gt-md\\:-m-6 {\n    margin: -1.5rem !important;\n  }\n\n  .gt-md\\:-m-8 {\n    margin: -2rem !important;\n  }\n\n  .gt-md\\:-m-10 {\n    margin: -2.5rem !important;\n  }\n\n  .gt-md\\:-m-12 {\n    margin: -3rem !important;\n  }\n\n  .gt-md\\:-m-14 {\n    margin: -3.5rem !important;\n  }\n\n  .gt-md\\:-m-16 {\n    margin: -4rem !important;\n  }\n\n  .gt-md\\:-m-18 {\n    margin: -4.5rem !important;\n  }\n\n  .gt-md\\:-m-20 {\n    margin: -5rem !important;\n  }\n\n  .gt-md\\:-m-22 {\n    margin: -5.5rem !important;\n  }\n\n  .gt-md\\:-m-24 {\n    margin: -6rem !important;\n  }\n\n  .gt-md\\:-m-26 {\n    margin: -6.5rem !important;\n  }\n\n  .gt-md\\:-m-28 {\n    margin: -7rem !important;\n  }\n\n  .gt-md\\:-m-30 {\n    margin: -7.5rem !important;\n  }\n\n  .gt-md\\:-m-32 {\n    margin: -8rem !important;\n  }\n\n  .gt-md\\:-m-36 {\n    margin: -9rem !important;\n  }\n\n  .gt-md\\:-m-40 {\n    margin: -10rem !important;\n  }\n\n  .gt-md\\:-m-48 {\n    margin: -12rem !important;\n  }\n\n  .gt-md\\:-m-56 {\n    margin: -14rem !important;\n  }\n\n  .gt-md\\:-m-64 {\n    margin: -16rem !important;\n  }\n\n  .gt-md\\:-m-px {\n    margin: -1px !important;\n  }\n\n  .gt-md\\:-m-2px {\n    margin: -2px !important;\n  }\n\n  .gt-md\\:my-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .gt-md\\:mx-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .gt-md\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .gt-md\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .gt-md\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .gt-md\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .gt-md\\:my-3 {\n    margin-top: 0.75rem !important;\n    margin-bottom: 0.75rem !important;\n  }\n\n  .gt-md\\:mx-3 {\n    margin-left: 0.75rem !important;\n    margin-right: 0.75rem !important;\n  }\n\n  .gt-md\\:my-4 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .gt-md\\:mx-4 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .gt-md\\:my-5 {\n    margin-top: 1.25rem !important;\n    margin-bottom: 1.25rem !important;\n  }\n\n  .gt-md\\:mx-5 {\n    margin-left: 1.25rem !important;\n    margin-right: 1.25rem !important;\n  }\n\n  .gt-md\\:my-6 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .gt-md\\:mx-6 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .gt-md\\:my-8 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n\n  .gt-md\\:mx-8 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n\n  .gt-md\\:my-10 {\n    margin-top: 2.5rem !important;\n    margin-bottom: 2.5rem !important;\n  }\n\n  .gt-md\\:mx-10 {\n    margin-left: 2.5rem !important;\n    margin-right: 2.5rem !important;\n  }\n\n  .gt-md\\:my-12 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .gt-md\\:mx-12 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .gt-md\\:my-14 {\n    margin-top: 3.5rem !important;\n    margin-bottom: 3.5rem !important;\n  }\n\n  .gt-md\\:mx-14 {\n    margin-left: 3.5rem !important;\n    margin-right: 3.5rem !important;\n  }\n\n  .gt-md\\:my-16 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n\n  .gt-md\\:mx-16 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n\n  .gt-md\\:my-18 {\n    margin-top: 4.5rem !important;\n    margin-bottom: 4.5rem !important;\n  }\n\n  .gt-md\\:mx-18 {\n    margin-left: 4.5rem !important;\n    margin-right: 4.5rem !important;\n  }\n\n  .gt-md\\:my-20 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n\n  .gt-md\\:mx-20 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n\n  .gt-md\\:my-22 {\n    margin-top: 5.5rem !important;\n    margin-bottom: 5.5rem !important;\n  }\n\n  .gt-md\\:mx-22 {\n    margin-left: 5.5rem !important;\n    margin-right: 5.5rem !important;\n  }\n\n  .gt-md\\:my-24 {\n    margin-top: 6rem !important;\n    margin-bottom: 6rem !important;\n  }\n\n  .gt-md\\:mx-24 {\n    margin-left: 6rem !important;\n    margin-right: 6rem !important;\n  }\n\n  .gt-md\\:my-26 {\n    margin-top: 6.5rem !important;\n    margin-bottom: 6.5rem !important;\n  }\n\n  .gt-md\\:mx-26 {\n    margin-left: 6.5rem !important;\n    margin-right: 6.5rem !important;\n  }\n\n  .gt-md\\:my-28 {\n    margin-top: 7rem !important;\n    margin-bottom: 7rem !important;\n  }\n\n  .gt-md\\:mx-28 {\n    margin-left: 7rem !important;\n    margin-right: 7rem !important;\n  }\n\n  .gt-md\\:my-30 {\n    margin-top: 7.5rem !important;\n    margin-bottom: 7.5rem !important;\n  }\n\n  .gt-md\\:mx-30 {\n    margin-left: 7.5rem !important;\n    margin-right: 7.5rem !important;\n  }\n\n  .gt-md\\:my-32 {\n    margin-top: 8rem !important;\n    margin-bottom: 8rem !important;\n  }\n\n  .gt-md\\:mx-32 {\n    margin-left: 8rem !important;\n    margin-right: 8rem !important;\n  }\n\n  .gt-md\\:my-36 {\n    margin-top: 9rem !important;\n    margin-bottom: 9rem !important;\n  }\n\n  .gt-md\\:mx-36 {\n    margin-left: 9rem !important;\n    margin-right: 9rem !important;\n  }\n\n  .gt-md\\:my-40 {\n    margin-top: 10rem !important;\n    margin-bottom: 10rem !important;\n  }\n\n  .gt-md\\:mx-40 {\n    margin-left: 10rem !important;\n    margin-right: 10rem !important;\n  }\n\n  .gt-md\\:my-48 {\n    margin-top: 12rem !important;\n    margin-bottom: 12rem !important;\n  }\n\n  .gt-md\\:mx-48 {\n    margin-left: 12rem !important;\n    margin-right: 12rem !important;\n  }\n\n  .gt-md\\:my-56 {\n    margin-top: 14rem !important;\n    margin-bottom: 14rem !important;\n  }\n\n  .gt-md\\:mx-56 {\n    margin-left: 14rem !important;\n    margin-right: 14rem !important;\n  }\n\n  .gt-md\\:my-64 {\n    margin-top: 16rem !important;\n    margin-bottom: 16rem !important;\n  }\n\n  .gt-md\\:mx-64 {\n    margin-left: 16rem !important;\n    margin-right: 16rem !important;\n  }\n\n  .gt-md\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .gt-md\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .gt-md\\:my-px {\n    margin-top: 1px !important;\n    margin-bottom: 1px !important;\n  }\n\n  .gt-md\\:mx-px {\n    margin-left: 1px !important;\n    margin-right: 1px !important;\n  }\n\n  .gt-md\\:my-2px {\n    margin-top: 2px !important;\n    margin-bottom: 2px !important;\n  }\n\n  .gt-md\\:mx-2px {\n    margin-left: 2px !important;\n    margin-right: 2px !important;\n  }\n\n  .gt-md\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n\n  .gt-md\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n\n  .gt-md\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n\n  .gt-md\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n\n  .gt-md\\:-my-3 {\n    margin-top: -0.75rem !important;\n    margin-bottom: -0.75rem !important;\n  }\n\n  .gt-md\\:-mx-3 {\n    margin-left: -0.75rem !important;\n    margin-right: -0.75rem !important;\n  }\n\n  .gt-md\\:-my-4 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n\n  .gt-md\\:-mx-4 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n\n  .gt-md\\:-my-5 {\n    margin-top: -1.25rem !important;\n    margin-bottom: -1.25rem !important;\n  }\n\n  .gt-md\\:-mx-5 {\n    margin-left: -1.25rem !important;\n    margin-right: -1.25rem !important;\n  }\n\n  .gt-md\\:-my-6 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n\n  .gt-md\\:-mx-6 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n\n  .gt-md\\:-my-8 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n\n  .gt-md\\:-mx-8 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n\n  .gt-md\\:-my-10 {\n    margin-top: -2.5rem !important;\n    margin-bottom: -2.5rem !important;\n  }\n\n  .gt-md\\:-mx-10 {\n    margin-left: -2.5rem !important;\n    margin-right: -2.5rem !important;\n  }\n\n  .gt-md\\:-my-12 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n\n  .gt-md\\:-mx-12 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n\n  .gt-md\\:-my-14 {\n    margin-top: -3.5rem !important;\n    margin-bottom: -3.5rem !important;\n  }\n\n  .gt-md\\:-mx-14 {\n    margin-left: -3.5rem !important;\n    margin-right: -3.5rem !important;\n  }\n\n  .gt-md\\:-my-16 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n\n  .gt-md\\:-mx-16 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n\n  .gt-md\\:-my-18 {\n    margin-top: -4.5rem !important;\n    margin-bottom: -4.5rem !important;\n  }\n\n  .gt-md\\:-mx-18 {\n    margin-left: -4.5rem !important;\n    margin-right: -4.5rem !important;\n  }\n\n  .gt-md\\:-my-20 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n\n  .gt-md\\:-mx-20 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n\n  .gt-md\\:-my-22 {\n    margin-top: -5.5rem !important;\n    margin-bottom: -5.5rem !important;\n  }\n\n  .gt-md\\:-mx-22 {\n    margin-left: -5.5rem !important;\n    margin-right: -5.5rem !important;\n  }\n\n  .gt-md\\:-my-24 {\n    margin-top: -6rem !important;\n    margin-bottom: -6rem !important;\n  }\n\n  .gt-md\\:-mx-24 {\n    margin-left: -6rem !important;\n    margin-right: -6rem !important;\n  }\n\n  .gt-md\\:-my-26 {\n    margin-top: -6.5rem !important;\n    margin-bottom: -6.5rem !important;\n  }\n\n  .gt-md\\:-mx-26 {\n    margin-left: -6.5rem !important;\n    margin-right: -6.5rem !important;\n  }\n\n  .gt-md\\:-my-28 {\n    margin-top: -7rem !important;\n    margin-bottom: -7rem !important;\n  }\n\n  .gt-md\\:-mx-28 {\n    margin-left: -7rem !important;\n    margin-right: -7rem !important;\n  }\n\n  .gt-md\\:-my-30 {\n    margin-top: -7.5rem !important;\n    margin-bottom: -7.5rem !important;\n  }\n\n  .gt-md\\:-mx-30 {\n    margin-left: -7.5rem !important;\n    margin-right: -7.5rem !important;\n  }\n\n  .gt-md\\:-my-32 {\n    margin-top: -8rem !important;\n    margin-bottom: -8rem !important;\n  }\n\n  .gt-md\\:-mx-32 {\n    margin-left: -8rem !important;\n    margin-right: -8rem !important;\n  }\n\n  .gt-md\\:-my-36 {\n    margin-top: -9rem !important;\n    margin-bottom: -9rem !important;\n  }\n\n  .gt-md\\:-mx-36 {\n    margin-left: -9rem !important;\n    margin-right: -9rem !important;\n  }\n\n  .gt-md\\:-my-40 {\n    margin-top: -10rem !important;\n    margin-bottom: -10rem !important;\n  }\n\n  .gt-md\\:-mx-40 {\n    margin-left: -10rem !important;\n    margin-right: -10rem !important;\n  }\n\n  .gt-md\\:-my-48 {\n    margin-top: -12rem !important;\n    margin-bottom: -12rem !important;\n  }\n\n  .gt-md\\:-mx-48 {\n    margin-left: -12rem !important;\n    margin-right: -12rem !important;\n  }\n\n  .gt-md\\:-my-56 {\n    margin-top: -14rem !important;\n    margin-bottom: -14rem !important;\n  }\n\n  .gt-md\\:-mx-56 {\n    margin-left: -14rem !important;\n    margin-right: -14rem !important;\n  }\n\n  .gt-md\\:-my-64 {\n    margin-top: -16rem !important;\n    margin-bottom: -16rem !important;\n  }\n\n  .gt-md\\:-mx-64 {\n    margin-left: -16rem !important;\n    margin-right: -16rem !important;\n  }\n\n  .gt-md\\:-my-px {\n    margin-top: -1px !important;\n    margin-bottom: -1px !important;\n  }\n\n  .gt-md\\:-mx-px {\n    margin-left: -1px !important;\n    margin-right: -1px !important;\n  }\n\n  .gt-md\\:-my-2px {\n    margin-top: -2px !important;\n    margin-bottom: -2px !important;\n  }\n\n  .gt-md\\:-mx-2px {\n    margin-left: -2px !important;\n    margin-right: -2px !important;\n  }\n\n  .gt-md\\:mt-0 {\n    margin-top: 0 !important;\n  }\n\n  .gt-md\\:mr-0 {\n    margin-right: 0 !important;\n  }\n\n  .gt-md\\:mb-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .gt-md\\:ml-0 {\n    margin-left: 0 !important;\n  }\n\n  .gt-md\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .gt-md\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .gt-md\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .gt-md\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .gt-md\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .gt-md\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .gt-md\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .gt-md\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .gt-md\\:mt-3 {\n    margin-top: 0.75rem !important;\n  }\n\n  .gt-md\\:mr-3 {\n    margin-right: 0.75rem !important;\n  }\n\n  .gt-md\\:mb-3 {\n    margin-bottom: 0.75rem !important;\n  }\n\n  .gt-md\\:ml-3 {\n    margin-left: 0.75rem !important;\n  }\n\n  .gt-md\\:mt-4 {\n    margin-top: 1rem !important;\n  }\n\n  .gt-md\\:mr-4 {\n    margin-right: 1rem !important;\n  }\n\n  .gt-md\\:mb-4 {\n    margin-bottom: 1rem !important;\n  }\n\n  .gt-md\\:ml-4 {\n    margin-left: 1rem !important;\n  }\n\n  .gt-md\\:mt-5 {\n    margin-top: 1.25rem !important;\n  }\n\n  .gt-md\\:mr-5 {\n    margin-right: 1.25rem !important;\n  }\n\n  .gt-md\\:mb-5 {\n    margin-bottom: 1.25rem !important;\n  }\n\n  .gt-md\\:ml-5 {\n    margin-left: 1.25rem !important;\n  }\n\n  .gt-md\\:mt-6 {\n    margin-top: 1.5rem !important;\n  }\n\n  .gt-md\\:mr-6 {\n    margin-right: 1.5rem !important;\n  }\n\n  .gt-md\\:mb-6 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .gt-md\\:ml-6 {\n    margin-left: 1.5rem !important;\n  }\n\n  .gt-md\\:mt-8 {\n    margin-top: 2rem !important;\n  }\n\n  .gt-md\\:mr-8 {\n    margin-right: 2rem !important;\n  }\n\n  .gt-md\\:mb-8 {\n    margin-bottom: 2rem !important;\n  }\n\n  .gt-md\\:ml-8 {\n    margin-left: 2rem !important;\n  }\n\n  .gt-md\\:mt-10 {\n    margin-top: 2.5rem !important;\n  }\n\n  .gt-md\\:mr-10 {\n    margin-right: 2.5rem !important;\n  }\n\n  .gt-md\\:mb-10 {\n    margin-bottom: 2.5rem !important;\n  }\n\n  .gt-md\\:ml-10 {\n    margin-left: 2.5rem !important;\n  }\n\n  .gt-md\\:mt-12 {\n    margin-top: 3rem !important;\n  }\n\n  .gt-md\\:mr-12 {\n    margin-right: 3rem !important;\n  }\n\n  .gt-md\\:mb-12 {\n    margin-bottom: 3rem !important;\n  }\n\n  .gt-md\\:ml-12 {\n    margin-left: 3rem !important;\n  }\n\n  .gt-md\\:mt-14 {\n    margin-top: 3.5rem !important;\n  }\n\n  .gt-md\\:mr-14 {\n    margin-right: 3.5rem !important;\n  }\n\n  .gt-md\\:mb-14 {\n    margin-bottom: 3.5rem !important;\n  }\n\n  .gt-md\\:ml-14 {\n    margin-left: 3.5rem !important;\n  }\n\n  .gt-md\\:mt-16 {\n    margin-top: 4rem !important;\n  }\n\n  .gt-md\\:mr-16 {\n    margin-right: 4rem !important;\n  }\n\n  .gt-md\\:mb-16 {\n    margin-bottom: 4rem !important;\n  }\n\n  .gt-md\\:ml-16 {\n    margin-left: 4rem !important;\n  }\n\n  .gt-md\\:mt-18 {\n    margin-top: 4.5rem !important;\n  }\n\n  .gt-md\\:mr-18 {\n    margin-right: 4.5rem !important;\n  }\n\n  .gt-md\\:mb-18 {\n    margin-bottom: 4.5rem !important;\n  }\n\n  .gt-md\\:ml-18 {\n    margin-left: 4.5rem !important;\n  }\n\n  .gt-md\\:mt-20 {\n    margin-top: 5rem !important;\n  }\n\n  .gt-md\\:mr-20 {\n    margin-right: 5rem !important;\n  }\n\n  .gt-md\\:mb-20 {\n    margin-bottom: 5rem !important;\n  }\n\n  .gt-md\\:ml-20 {\n    margin-left: 5rem !important;\n  }\n\n  .gt-md\\:mt-22 {\n    margin-top: 5.5rem !important;\n  }\n\n  .gt-md\\:mr-22 {\n    margin-right: 5.5rem !important;\n  }\n\n  .gt-md\\:mb-22 {\n    margin-bottom: 5.5rem !important;\n  }\n\n  .gt-md\\:ml-22 {\n    margin-left: 5.5rem !important;\n  }\n\n  .gt-md\\:mt-24 {\n    margin-top: 6rem !important;\n  }\n\n  .gt-md\\:mr-24 {\n    margin-right: 6rem !important;\n  }\n\n  .gt-md\\:mb-24 {\n    margin-bottom: 6rem !important;\n  }\n\n  .gt-md\\:ml-24 {\n    margin-left: 6rem !important;\n  }\n\n  .gt-md\\:mt-26 {\n    margin-top: 6.5rem !important;\n  }\n\n  .gt-md\\:mr-26 {\n    margin-right: 6.5rem !important;\n  }\n\n  .gt-md\\:mb-26 {\n    margin-bottom: 6.5rem !important;\n  }\n\n  .gt-md\\:ml-26 {\n    margin-left: 6.5rem !important;\n  }\n\n  .gt-md\\:mt-28 {\n    margin-top: 7rem !important;\n  }\n\n  .gt-md\\:mr-28 {\n    margin-right: 7rem !important;\n  }\n\n  .gt-md\\:mb-28 {\n    margin-bottom: 7rem !important;\n  }\n\n  .gt-md\\:ml-28 {\n    margin-left: 7rem !important;\n  }\n\n  .gt-md\\:mt-30 {\n    margin-top: 7.5rem !important;\n  }\n\n  .gt-md\\:mr-30 {\n    margin-right: 7.5rem !important;\n  }\n\n  .gt-md\\:mb-30 {\n    margin-bottom: 7.5rem !important;\n  }\n\n  .gt-md\\:ml-30 {\n    margin-left: 7.5rem !important;\n  }\n\n  .gt-md\\:mt-32 {\n    margin-top: 8rem !important;\n  }\n\n  .gt-md\\:mr-32 {\n    margin-right: 8rem !important;\n  }\n\n  .gt-md\\:mb-32 {\n    margin-bottom: 8rem !important;\n  }\n\n  .gt-md\\:ml-32 {\n    margin-left: 8rem !important;\n  }\n\n  .gt-md\\:mt-36 {\n    margin-top: 9rem !important;\n  }\n\n  .gt-md\\:mr-36 {\n    margin-right: 9rem !important;\n  }\n\n  .gt-md\\:mb-36 {\n    margin-bottom: 9rem !important;\n  }\n\n  .gt-md\\:ml-36 {\n    margin-left: 9rem !important;\n  }\n\n  .gt-md\\:mt-40 {\n    margin-top: 10rem !important;\n  }\n\n  .gt-md\\:mr-40 {\n    margin-right: 10rem !important;\n  }\n\n  .gt-md\\:mb-40 {\n    margin-bottom: 10rem !important;\n  }\n\n  .gt-md\\:ml-40 {\n    margin-left: 10rem !important;\n  }\n\n  .gt-md\\:mt-48 {\n    margin-top: 12rem !important;\n  }\n\n  .gt-md\\:mr-48 {\n    margin-right: 12rem !important;\n  }\n\n  .gt-md\\:mb-48 {\n    margin-bottom: 12rem !important;\n  }\n\n  .gt-md\\:ml-48 {\n    margin-left: 12rem !important;\n  }\n\n  .gt-md\\:mt-56 {\n    margin-top: 14rem !important;\n  }\n\n  .gt-md\\:mr-56 {\n    margin-right: 14rem !important;\n  }\n\n  .gt-md\\:mb-56 {\n    margin-bottom: 14rem !important;\n  }\n\n  .gt-md\\:ml-56 {\n    margin-left: 14rem !important;\n  }\n\n  .gt-md\\:mt-64 {\n    margin-top: 16rem !important;\n  }\n\n  .gt-md\\:mr-64 {\n    margin-right: 16rem !important;\n  }\n\n  .gt-md\\:mb-64 {\n    margin-bottom: 16rem !important;\n  }\n\n  .gt-md\\:ml-64 {\n    margin-left: 16rem !important;\n  }\n\n  .gt-md\\:mt-auto {\n    margin-top: auto !important;\n  }\n\n  .gt-md\\:mr-auto {\n    margin-right: auto !important;\n  }\n\n  .gt-md\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n\n  .gt-md\\:ml-auto {\n    margin-left: auto !important;\n  }\n\n  .gt-md\\:mt-px {\n    margin-top: 1px !important;\n  }\n\n  .gt-md\\:mr-px {\n    margin-right: 1px !important;\n  }\n\n  .gt-md\\:mb-px {\n    margin-bottom: 1px !important;\n  }\n\n  .gt-md\\:ml-px {\n    margin-left: 1px !important;\n  }\n\n  .gt-md\\:mt-2px {\n    margin-top: 2px !important;\n  }\n\n  .gt-md\\:mr-2px {\n    margin-right: 2px !important;\n  }\n\n  .gt-md\\:mb-2px {\n    margin-bottom: 2px !important;\n  }\n\n  .gt-md\\:ml-2px {\n    margin-left: 2px !important;\n  }\n\n  .gt-md\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n\n  .gt-md\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n\n  .gt-md\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n\n  .gt-md\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n\n  .gt-md\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n\n  .gt-md\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n\n  .gt-md\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n\n  .gt-md\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n\n  .gt-md\\:-mt-3 {\n    margin-top: -0.75rem !important;\n  }\n\n  .gt-md\\:-mr-3 {\n    margin-right: -0.75rem !important;\n  }\n\n  .gt-md\\:-mb-3 {\n    margin-bottom: -0.75rem !important;\n  }\n\n  .gt-md\\:-ml-3 {\n    margin-left: -0.75rem !important;\n  }\n\n  .gt-md\\:-mt-4 {\n    margin-top: -1rem !important;\n  }\n\n  .gt-md\\:-mr-4 {\n    margin-right: -1rem !important;\n  }\n\n  .gt-md\\:-mb-4 {\n    margin-bottom: -1rem !important;\n  }\n\n  .gt-md\\:-ml-4 {\n    margin-left: -1rem !important;\n  }\n\n  .gt-md\\:-mt-5 {\n    margin-top: -1.25rem !important;\n  }\n\n  .gt-md\\:-mr-5 {\n    margin-right: -1.25rem !important;\n  }\n\n  .gt-md\\:-mb-5 {\n    margin-bottom: -1.25rem !important;\n  }\n\n  .gt-md\\:-ml-5 {\n    margin-left: -1.25rem !important;\n  }\n\n  .gt-md\\:-mt-6 {\n    margin-top: -1.5rem !important;\n  }\n\n  .gt-md\\:-mr-6 {\n    margin-right: -1.5rem !important;\n  }\n\n  .gt-md\\:-mb-6 {\n    margin-bottom: -1.5rem !important;\n  }\n\n  .gt-md\\:-ml-6 {\n    margin-left: -1.5rem !important;\n  }\n\n  .gt-md\\:-mt-8 {\n    margin-top: -2rem !important;\n  }\n\n  .gt-md\\:-mr-8 {\n    margin-right: -2rem !important;\n  }\n\n  .gt-md\\:-mb-8 {\n    margin-bottom: -2rem !important;\n  }\n\n  .gt-md\\:-ml-8 {\n    margin-left: -2rem !important;\n  }\n\n  .gt-md\\:-mt-10 {\n    margin-top: -2.5rem !important;\n  }\n\n  .gt-md\\:-mr-10 {\n    margin-right: -2.5rem !important;\n  }\n\n  .gt-md\\:-mb-10 {\n    margin-bottom: -2.5rem !important;\n  }\n\n  .gt-md\\:-ml-10 {\n    margin-left: -2.5rem !important;\n  }\n\n  .gt-md\\:-mt-12 {\n    margin-top: -3rem !important;\n  }\n\n  .gt-md\\:-mr-12 {\n    margin-right: -3rem !important;\n  }\n\n  .gt-md\\:-mb-12 {\n    margin-bottom: -3rem !important;\n  }\n\n  .gt-md\\:-ml-12 {\n    margin-left: -3rem !important;\n  }\n\n  .gt-md\\:-mt-14 {\n    margin-top: -3.5rem !important;\n  }\n\n  .gt-md\\:-mr-14 {\n    margin-right: -3.5rem !important;\n  }\n\n  .gt-md\\:-mb-14 {\n    margin-bottom: -3.5rem !important;\n  }\n\n  .gt-md\\:-ml-14 {\n    margin-left: -3.5rem !important;\n  }\n\n  .gt-md\\:-mt-16 {\n    margin-top: -4rem !important;\n  }\n\n  .gt-md\\:-mr-16 {\n    margin-right: -4rem !important;\n  }\n\n  .gt-md\\:-mb-16 {\n    margin-bottom: -4rem !important;\n  }\n\n  .gt-md\\:-ml-16 {\n    margin-left: -4rem !important;\n  }\n\n  .gt-md\\:-mt-18 {\n    margin-top: -4.5rem !important;\n  }\n\n  .gt-md\\:-mr-18 {\n    margin-right: -4.5rem !important;\n  }\n\n  .gt-md\\:-mb-18 {\n    margin-bottom: -4.5rem !important;\n  }\n\n  .gt-md\\:-ml-18 {\n    margin-left: -4.5rem !important;\n  }\n\n  .gt-md\\:-mt-20 {\n    margin-top: -5rem !important;\n  }\n\n  .gt-md\\:-mr-20 {\n    margin-right: -5rem !important;\n  }\n\n  .gt-md\\:-mb-20 {\n    margin-bottom: -5rem !important;\n  }\n\n  .gt-md\\:-ml-20 {\n    margin-left: -5rem !important;\n  }\n\n  .gt-md\\:-mt-22 {\n    margin-top: -5.5rem !important;\n  }\n\n  .gt-md\\:-mr-22 {\n    margin-right: -5.5rem !important;\n  }\n\n  .gt-md\\:-mb-22 {\n    margin-bottom: -5.5rem !important;\n  }\n\n  .gt-md\\:-ml-22 {\n    margin-left: -5.5rem !important;\n  }\n\n  .gt-md\\:-mt-24 {\n    margin-top: -6rem !important;\n  }\n\n  .gt-md\\:-mr-24 {\n    margin-right: -6rem !important;\n  }\n\n  .gt-md\\:-mb-24 {\n    margin-bottom: -6rem !important;\n  }\n\n  .gt-md\\:-ml-24 {\n    margin-left: -6rem !important;\n  }\n\n  .gt-md\\:-mt-26 {\n    margin-top: -6.5rem !important;\n  }\n\n  .gt-md\\:-mr-26 {\n    margin-right: -6.5rem !important;\n  }\n\n  .gt-md\\:-mb-26 {\n    margin-bottom: -6.5rem !important;\n  }\n\n  .gt-md\\:-ml-26 {\n    margin-left: -6.5rem !important;\n  }\n\n  .gt-md\\:-mt-28 {\n    margin-top: -7rem !important;\n  }\n\n  .gt-md\\:-mr-28 {\n    margin-right: -7rem !important;\n  }\n\n  .gt-md\\:-mb-28 {\n    margin-bottom: -7rem !important;\n  }\n\n  .gt-md\\:-ml-28 {\n    margin-left: -7rem !important;\n  }\n\n  .gt-md\\:-mt-30 {\n    margin-top: -7.5rem !important;\n  }\n\n  .gt-md\\:-mr-30 {\n    margin-right: -7.5rem !important;\n  }\n\n  .gt-md\\:-mb-30 {\n    margin-bottom: -7.5rem !important;\n  }\n\n  .gt-md\\:-ml-30 {\n    margin-left: -7.5rem !important;\n  }\n\n  .gt-md\\:-mt-32 {\n    margin-top: -8rem !important;\n  }\n\n  .gt-md\\:-mr-32 {\n    margin-right: -8rem !important;\n  }\n\n  .gt-md\\:-mb-32 {\n    margin-bottom: -8rem !important;\n  }\n\n  .gt-md\\:-ml-32 {\n    margin-left: -8rem !important;\n  }\n\n  .gt-md\\:-mt-36 {\n    margin-top: -9rem !important;\n  }\n\n  .gt-md\\:-mr-36 {\n    margin-right: -9rem !important;\n  }\n\n  .gt-md\\:-mb-36 {\n    margin-bottom: -9rem !important;\n  }\n\n  .gt-md\\:-ml-36 {\n    margin-left: -9rem !important;\n  }\n\n  .gt-md\\:-mt-40 {\n    margin-top: -10rem !important;\n  }\n\n  .gt-md\\:-mr-40 {\n    margin-right: -10rem !important;\n  }\n\n  .gt-md\\:-mb-40 {\n    margin-bottom: -10rem !important;\n  }\n\n  .gt-md\\:-ml-40 {\n    margin-left: -10rem !important;\n  }\n\n  .gt-md\\:-mt-48 {\n    margin-top: -12rem !important;\n  }\n\n  .gt-md\\:-mr-48 {\n    margin-right: -12rem !important;\n  }\n\n  .gt-md\\:-mb-48 {\n    margin-bottom: -12rem !important;\n  }\n\n  .gt-md\\:-ml-48 {\n    margin-left: -12rem !important;\n  }\n\n  .gt-md\\:-mt-56 {\n    margin-top: -14rem !important;\n  }\n\n  .gt-md\\:-mr-56 {\n    margin-right: -14rem !important;\n  }\n\n  .gt-md\\:-mb-56 {\n    margin-bottom: -14rem !important;\n  }\n\n  .gt-md\\:-ml-56 {\n    margin-left: -14rem !important;\n  }\n\n  .gt-md\\:-mt-64 {\n    margin-top: -16rem !important;\n  }\n\n  .gt-md\\:-mr-64 {\n    margin-right: -16rem !important;\n  }\n\n  .gt-md\\:-mb-64 {\n    margin-bottom: -16rem !important;\n  }\n\n  .gt-md\\:-ml-64 {\n    margin-left: -16rem !important;\n  }\n\n  .gt-md\\:-mt-px {\n    margin-top: -1px !important;\n  }\n\n  .gt-md\\:-mr-px {\n    margin-right: -1px !important;\n  }\n\n  .gt-md\\:-mb-px {\n    margin-bottom: -1px !important;\n  }\n\n  .gt-md\\:-ml-px {\n    margin-left: -1px !important;\n  }\n\n  .gt-md\\:-mt-2px {\n    margin-top: -2px !important;\n  }\n\n  .gt-md\\:-mr-2px {\n    margin-right: -2px !important;\n  }\n\n  .gt-md\\:-mb-2px {\n    margin-bottom: -2px !important;\n  }\n\n  .gt-md\\:-ml-2px {\n    margin-left: -2px !important;\n  }\n\n  .gt-md\\:max-h-0 {\n    max-height: 0 !important;\n  }\n\n  .gt-md\\:max-h-1 {\n    max-height: 0.25rem !important;\n  }\n\n  .gt-md\\:max-h-2 {\n    max-height: 0.5rem !important;\n  }\n\n  .gt-md\\:max-h-3 {\n    max-height: 0.75rem !important;\n  }\n\n  .gt-md\\:max-h-4 {\n    max-height: 1rem !important;\n  }\n\n  .gt-md\\:max-h-5 {\n    max-height: 1.25rem !important;\n  }\n\n  .gt-md\\:max-h-6 {\n    max-height: 1.5rem !important;\n  }\n\n  .gt-md\\:max-h-8 {\n    max-height: 2rem !important;\n  }\n\n  .gt-md\\:max-h-10 {\n    max-height: 2.5rem !important;\n  }\n\n  .gt-md\\:max-h-12 {\n    max-height: 3rem !important;\n  }\n\n  .gt-md\\:max-h-14 {\n    max-height: 3.5rem !important;\n  }\n\n  .gt-md\\:max-h-16 {\n    max-height: 4rem !important;\n  }\n\n  .gt-md\\:max-h-18 {\n    max-height: 4.5rem !important;\n  }\n\n  .gt-md\\:max-h-20 {\n    max-height: 5rem !important;\n  }\n\n  .gt-md\\:max-h-22 {\n    max-height: 5.5rem !important;\n  }\n\n  .gt-md\\:max-h-24 {\n    max-height: 6rem !important;\n  }\n\n  .gt-md\\:max-h-26 {\n    max-height: 6.5rem !important;\n  }\n\n  .gt-md\\:max-h-28 {\n    max-height: 7rem !important;\n  }\n\n  .gt-md\\:max-h-30 {\n    max-height: 7.5rem !important;\n  }\n\n  .gt-md\\:max-h-32 {\n    max-height: 8rem !important;\n  }\n\n  .gt-md\\:max-h-36 {\n    max-height: 9rem !important;\n  }\n\n  .gt-md\\:max-h-40 {\n    max-height: 10rem !important;\n  }\n\n  .gt-md\\:max-h-48 {\n    max-height: 12rem !important;\n  }\n\n  .gt-md\\:max-h-50 {\n    max-height: 12.5rem !important;\n  }\n\n  .gt-md\\:max-h-56 {\n    max-height: 14rem !important;\n  }\n\n  .gt-md\\:max-h-60 {\n    max-height: 15rem !important;\n  }\n\n  .gt-md\\:max-h-64 {\n    max-height: 16rem !important;\n  }\n\n  .gt-md\\:max-h-80 {\n    max-height: 20rem !important;\n  }\n\n  .gt-md\\:max-h-90 {\n    max-height: 24rem !important;\n  }\n\n  .gt-md\\:max-h-100 {\n    max-height: 25rem !important;\n  }\n\n  .gt-md\\:max-h-120 {\n    max-height: 30rem !important;\n  }\n\n  .gt-md\\:max-h-128 {\n    max-height: 32rem !important;\n  }\n\n  .gt-md\\:max-h-140 {\n    max-height: 35rem !important;\n  }\n\n  .gt-md\\:max-h-160 {\n    max-height: 40rem !important;\n  }\n\n  .gt-md\\:max-h-180 {\n    max-height: 45rem !important;\n  }\n\n  .gt-md\\:max-h-192 {\n    max-height: 48rem !important;\n  }\n\n  .gt-md\\:max-h-200 {\n    max-height: 50rem !important;\n  }\n\n  .gt-md\\:max-h-240 {\n    max-height: 60rem !important;\n  }\n\n  .gt-md\\:max-h-256 {\n    max-height: 64rem !important;\n  }\n\n  .gt-md\\:max-h-280 {\n    max-height: 70rem !important;\n  }\n\n  .gt-md\\:max-h-320 {\n    max-height: 80rem !important;\n  }\n\n  .gt-md\\:max-h-360 {\n    max-height: 90rem !important;\n  }\n\n  .gt-md\\:max-h-400 {\n    max-height: 100rem !important;\n  }\n\n  .gt-md\\:max-h-480 {\n    max-height: 120rem !important;\n  }\n\n  .gt-md\\:max-h-full {\n    max-height: 100% !important;\n  }\n\n  .gt-md\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n\n  .gt-md\\:max-h-none {\n    max-height: none !important;\n  }\n\n  .gt-md\\:max-h-px {\n    max-height: 1px !important;\n  }\n\n  .gt-md\\:max-h-2px {\n    max-height: 2px !important;\n  }\n\n  .gt-md\\:max-h-1\\/2 {\n    max-height: 50% !important;\n  }\n\n  .gt-md\\:max-h-1\\/3 {\n    max-height: 33.33333% !important;\n  }\n\n  .gt-md\\:max-h-2\\/3 {\n    max-height: 66.66667% !important;\n  }\n\n  .gt-md\\:max-h-1\\/4 {\n    max-height: 25% !important;\n  }\n\n  .gt-md\\:max-h-2\\/4 {\n    max-height: 50% !important;\n  }\n\n  .gt-md\\:max-h-3\\/4 {\n    max-height: 75% !important;\n  }\n\n  .gt-md\\:max-h-1\\/5 {\n    max-height: 20% !important;\n  }\n\n  .gt-md\\:max-h-2\\/5 {\n    max-height: 40% !important;\n  }\n\n  .gt-md\\:max-h-3\\/5 {\n    max-height: 60% !important;\n  }\n\n  .gt-md\\:max-h-4\\/5 {\n    max-height: 80% !important;\n  }\n\n  .gt-md\\:max-h-1\\/12 {\n    max-height: 8.33333% !important;\n  }\n\n  .gt-md\\:max-h-2\\/12 {\n    max-height: 16.66667% !important;\n  }\n\n  .gt-md\\:max-h-3\\/12 {\n    max-height: 25% !important;\n  }\n\n  .gt-md\\:max-h-4\\/12 {\n    max-height: 33.33333% !important;\n  }\n\n  .gt-md\\:max-h-5\\/12 {\n    max-height: 41.66667% !important;\n  }\n\n  .gt-md\\:max-h-6\\/12 {\n    max-height: 50% !important;\n  }\n\n  .gt-md\\:max-h-7\\/12 {\n    max-height: 58.33333% !important;\n  }\n\n  .gt-md\\:max-h-8\\/12 {\n    max-height: 66.66667% !important;\n  }\n\n  .gt-md\\:max-h-9\\/12 {\n    max-height: 75% !important;\n  }\n\n  .gt-md\\:max-h-10\\/12 {\n    max-height: 83.33333% !important;\n  }\n\n  .gt-md\\:max-h-11\\/12 {\n    max-height: 91.66667% !important;\n  }\n\n  .gt-md\\:max-w-0 {\n    max-width: 0 !important;\n  }\n\n  .gt-md\\:max-w-1 {\n    max-width: 0.25rem !important;\n  }\n\n  .gt-md\\:max-w-2 {\n    max-width: 0.5rem !important;\n  }\n\n  .gt-md\\:max-w-3 {\n    max-width: 0.75rem !important;\n  }\n\n  .gt-md\\:max-w-4 {\n    max-width: 1rem !important;\n  }\n\n  .gt-md\\:max-w-5 {\n    max-width: 1.25rem !important;\n  }\n\n  .gt-md\\:max-w-6 {\n    max-width: 1.5rem !important;\n  }\n\n  .gt-md\\:max-w-8 {\n    max-width: 2rem !important;\n  }\n\n  .gt-md\\:max-w-10 {\n    max-width: 2.5rem !important;\n  }\n\n  .gt-md\\:max-w-12 {\n    max-width: 3rem !important;\n  }\n\n  .gt-md\\:max-w-14 {\n    max-width: 3.5rem !important;\n  }\n\n  .gt-md\\:max-w-16 {\n    max-width: 4rem !important;\n  }\n\n  .gt-md\\:max-w-18 {\n    max-width: 4.5rem !important;\n  }\n\n  .gt-md\\:max-w-20 {\n    max-width: 5rem !important;\n  }\n\n  .gt-md\\:max-w-22 {\n    max-width: 5.5rem !important;\n  }\n\n  .gt-md\\:max-w-24 {\n    max-width: 6rem !important;\n  }\n\n  .gt-md\\:max-w-26 {\n    max-width: 6.5rem !important;\n  }\n\n  .gt-md\\:max-w-28 {\n    max-width: 7rem !important;\n  }\n\n  .gt-md\\:max-w-30 {\n    max-width: 7.5rem !important;\n  }\n\n  .gt-md\\:max-w-32 {\n    max-width: 8rem !important;\n  }\n\n  .gt-md\\:max-w-36 {\n    max-width: 9rem !important;\n  }\n\n  .gt-md\\:max-w-40 {\n    max-width: 10rem !important;\n  }\n\n  .gt-md\\:max-w-48 {\n    max-width: 12rem !important;\n  }\n\n  .gt-md\\:max-w-50 {\n    max-width: 12.5rem !important;\n  }\n\n  .gt-md\\:max-w-56 {\n    max-width: 14rem !important;\n  }\n\n  .gt-md\\:max-w-60 {\n    max-width: 15rem !important;\n  }\n\n  .gt-md\\:max-w-64 {\n    max-width: 16rem !important;\n  }\n\n  .gt-md\\:max-w-80 {\n    max-width: 20rem !important;\n  }\n\n  .gt-md\\:max-w-90 {\n    max-width: 24rem !important;\n  }\n\n  .gt-md\\:max-w-100 {\n    max-width: 25rem !important;\n  }\n\n  .gt-md\\:max-w-120 {\n    max-width: 30rem !important;\n  }\n\n  .gt-md\\:max-w-128 {\n    max-width: 32rem !important;\n  }\n\n  .gt-md\\:max-w-140 {\n    max-width: 35rem !important;\n  }\n\n  .gt-md\\:max-w-160 {\n    max-width: 40rem !important;\n  }\n\n  .gt-md\\:max-w-180 {\n    max-width: 45rem !important;\n  }\n\n  .gt-md\\:max-w-192 {\n    max-width: 48rem !important;\n  }\n\n  .gt-md\\:max-w-200 {\n    max-width: 50rem !important;\n  }\n\n  .gt-md\\:max-w-240 {\n    max-width: 60rem !important;\n  }\n\n  .gt-md\\:max-w-256 {\n    max-width: 64rem !important;\n  }\n\n  .gt-md\\:max-w-280 {\n    max-width: 70rem !important;\n  }\n\n  .gt-md\\:max-w-320 {\n    max-width: 80rem !important;\n  }\n\n  .gt-md\\:max-w-360 {\n    max-width: 90rem !important;\n  }\n\n  .gt-md\\:max-w-400 {\n    max-width: 100rem !important;\n  }\n\n  .gt-md\\:max-w-480 {\n    max-width: 120rem !important;\n  }\n\n  .gt-md\\:max-w-none {\n    max-width: none !important;\n  }\n\n  .gt-md\\:max-w-xs {\n    max-width: 20rem !important;\n  }\n\n  .gt-md\\:max-w-sm {\n    max-width: 24rem !important;\n  }\n\n  .gt-md\\:max-w-md {\n    max-width: 28rem !important;\n  }\n\n  .gt-md\\:max-w-lg {\n    max-width: 32rem !important;\n  }\n\n  .gt-md\\:max-w-xl {\n    max-width: 36rem !important;\n  }\n\n  .gt-md\\:max-w-2xl {\n    max-width: 42rem !important;\n  }\n\n  .gt-md\\:max-w-3xl {\n    max-width: 48rem !important;\n  }\n\n  .gt-md\\:max-w-4xl {\n    max-width: 56rem !important;\n  }\n\n  .gt-md\\:max-w-5xl {\n    max-width: 64rem !important;\n  }\n\n  .gt-md\\:max-w-6xl {\n    max-width: 72rem !important;\n  }\n\n  .gt-md\\:max-w-full {\n    max-width: 100% !important;\n  }\n\n  .gt-md\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n\n  .gt-md\\:max-w-px {\n    max-width: 1px !important;\n  }\n\n  .gt-md\\:max-w-2px {\n    max-width: 2px !important;\n  }\n\n  .gt-md\\:max-w-1\\/2 {\n    max-width: 50% !important;\n  }\n\n  .gt-md\\:max-w-1\\/3 {\n    max-width: 33.33333% !important;\n  }\n\n  .gt-md\\:max-w-2\\/3 {\n    max-width: 66.66667% !important;\n  }\n\n  .gt-md\\:max-w-1\\/4 {\n    max-width: 25% !important;\n  }\n\n  .gt-md\\:max-w-2\\/4 {\n    max-width: 50% !important;\n  }\n\n  .gt-md\\:max-w-3\\/4 {\n    max-width: 75% !important;\n  }\n\n  .gt-md\\:max-w-1\\/5 {\n    max-width: 20% !important;\n  }\n\n  .gt-md\\:max-w-2\\/5 {\n    max-width: 40% !important;\n  }\n\n  .gt-md\\:max-w-3\\/5 {\n    max-width: 60% !important;\n  }\n\n  .gt-md\\:max-w-4\\/5 {\n    max-width: 80% !important;\n  }\n\n  .gt-md\\:max-w-1\\/12 {\n    max-width: 8.33333% !important;\n  }\n\n  .gt-md\\:max-w-2\\/12 {\n    max-width: 16.66667% !important;\n  }\n\n  .gt-md\\:max-w-3\\/12 {\n    max-width: 25% !important;\n  }\n\n  .gt-md\\:max-w-4\\/12 {\n    max-width: 33.33333% !important;\n  }\n\n  .gt-md\\:max-w-5\\/12 {\n    max-width: 41.66667% !important;\n  }\n\n  .gt-md\\:max-w-6\\/12 {\n    max-width: 50% !important;\n  }\n\n  .gt-md\\:max-w-7\\/12 {\n    max-width: 58.33333% !important;\n  }\n\n  .gt-md\\:max-w-8\\/12 {\n    max-width: 66.66667% !important;\n  }\n\n  .gt-md\\:max-w-9\\/12 {\n    max-width: 75% !important;\n  }\n\n  .gt-md\\:max-w-10\\/12 {\n    max-width: 83.33333% !important;\n  }\n\n  .gt-md\\:max-w-11\\/12 {\n    max-width: 91.66667% !important;\n  }\n\n  .gt-md\\:min-h-0 {\n    min-height: 0 !important;\n  }\n\n  .gt-md\\:min-h-1 {\n    min-height: 0.25rem !important;\n  }\n\n  .gt-md\\:min-h-2 {\n    min-height: 0.5rem !important;\n  }\n\n  .gt-md\\:min-h-3 {\n    min-height: 0.75rem !important;\n  }\n\n  .gt-md\\:min-h-4 {\n    min-height: 1rem !important;\n  }\n\n  .gt-md\\:min-h-5 {\n    min-height: 1.25rem !important;\n  }\n\n  .gt-md\\:min-h-6 {\n    min-height: 1.5rem !important;\n  }\n\n  .gt-md\\:min-h-8 {\n    min-height: 2rem !important;\n  }\n\n  .gt-md\\:min-h-10 {\n    min-height: 2.5rem !important;\n  }\n\n  .gt-md\\:min-h-12 {\n    min-height: 3rem !important;\n  }\n\n  .gt-md\\:min-h-14 {\n    min-height: 3.5rem !important;\n  }\n\n  .gt-md\\:min-h-16 {\n    min-height: 4rem !important;\n  }\n\n  .gt-md\\:min-h-18 {\n    min-height: 4.5rem !important;\n  }\n\n  .gt-md\\:min-h-20 {\n    min-height: 5rem !important;\n  }\n\n  .gt-md\\:min-h-22 {\n    min-height: 5.5rem !important;\n  }\n\n  .gt-md\\:min-h-24 {\n    min-height: 6rem !important;\n  }\n\n  .gt-md\\:min-h-26 {\n    min-height: 6.5rem !important;\n  }\n\n  .gt-md\\:min-h-28 {\n    min-height: 7rem !important;\n  }\n\n  .gt-md\\:min-h-30 {\n    min-height: 7.5rem !important;\n  }\n\n  .gt-md\\:min-h-32 {\n    min-height: 8rem !important;\n  }\n\n  .gt-md\\:min-h-36 {\n    min-height: 9rem !important;\n  }\n\n  .gt-md\\:min-h-40 {\n    min-height: 10rem !important;\n  }\n\n  .gt-md\\:min-h-48 {\n    min-height: 12rem !important;\n  }\n\n  .gt-md\\:min-h-50 {\n    min-height: 12.5rem !important;\n  }\n\n  .gt-md\\:min-h-56 {\n    min-height: 14rem !important;\n  }\n\n  .gt-md\\:min-h-60 {\n    min-height: 15rem !important;\n  }\n\n  .gt-md\\:min-h-64 {\n    min-height: 16rem !important;\n  }\n\n  .gt-md\\:min-h-80 {\n    min-height: 20rem !important;\n  }\n\n  .gt-md\\:min-h-90 {\n    min-height: 24rem !important;\n  }\n\n  .gt-md\\:min-h-100 {\n    min-height: 25rem !important;\n  }\n\n  .gt-md\\:min-h-120 {\n    min-height: 30rem !important;\n  }\n\n  .gt-md\\:min-h-128 {\n    min-height: 32rem !important;\n  }\n\n  .gt-md\\:min-h-140 {\n    min-height: 35rem !important;\n  }\n\n  .gt-md\\:min-h-160 {\n    min-height: 40rem !important;\n  }\n\n  .gt-md\\:min-h-180 {\n    min-height: 45rem !important;\n  }\n\n  .gt-md\\:min-h-192 {\n    min-height: 48rem !important;\n  }\n\n  .gt-md\\:min-h-200 {\n    min-height: 50rem !important;\n  }\n\n  .gt-md\\:min-h-240 {\n    min-height: 60rem !important;\n  }\n\n  .gt-md\\:min-h-256 {\n    min-height: 64rem !important;\n  }\n\n  .gt-md\\:min-h-280 {\n    min-height: 70rem !important;\n  }\n\n  .gt-md\\:min-h-320 {\n    min-height: 80rem !important;\n  }\n\n  .gt-md\\:min-h-360 {\n    min-height: 90rem !important;\n  }\n\n  .gt-md\\:min-h-400 {\n    min-height: 100rem !important;\n  }\n\n  .gt-md\\:min-h-480 {\n    min-height: 120rem !important;\n  }\n\n  .gt-md\\:min-h-full {\n    min-height: 100% !important;\n  }\n\n  .gt-md\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n\n  .gt-md\\:min-h-px {\n    min-height: 1px !important;\n  }\n\n  .gt-md\\:min-h-2px {\n    min-height: 2px !important;\n  }\n\n  .gt-md\\:min-h-1\\/2 {\n    min-height: 50% !important;\n  }\n\n  .gt-md\\:min-h-1\\/3 {\n    min-height: 33.33333% !important;\n  }\n\n  .gt-md\\:min-h-2\\/3 {\n    min-height: 66.66667% !important;\n  }\n\n  .gt-md\\:min-h-1\\/4 {\n    min-height: 25% !important;\n  }\n\n  .gt-md\\:min-h-2\\/4 {\n    min-height: 50% !important;\n  }\n\n  .gt-md\\:min-h-3\\/4 {\n    min-height: 75% !important;\n  }\n\n  .gt-md\\:min-h-1\\/5 {\n    min-height: 20% !important;\n  }\n\n  .gt-md\\:min-h-2\\/5 {\n    min-height: 40% !important;\n  }\n\n  .gt-md\\:min-h-3\\/5 {\n    min-height: 60% !important;\n  }\n\n  .gt-md\\:min-h-4\\/5 {\n    min-height: 80% !important;\n  }\n\n  .gt-md\\:min-h-1\\/12 {\n    min-height: 8.33333% !important;\n  }\n\n  .gt-md\\:min-h-2\\/12 {\n    min-height: 16.66667% !important;\n  }\n\n  .gt-md\\:min-h-3\\/12 {\n    min-height: 25% !important;\n  }\n\n  .gt-md\\:min-h-4\\/12 {\n    min-height: 33.33333% !important;\n  }\n\n  .gt-md\\:min-h-5\\/12 {\n    min-height: 41.66667% !important;\n  }\n\n  .gt-md\\:min-h-6\\/12 {\n    min-height: 50% !important;\n  }\n\n  .gt-md\\:min-h-7\\/12 {\n    min-height: 58.33333% !important;\n  }\n\n  .gt-md\\:min-h-8\\/12 {\n    min-height: 66.66667% !important;\n  }\n\n  .gt-md\\:min-h-9\\/12 {\n    min-height: 75% !important;\n  }\n\n  .gt-md\\:min-h-10\\/12 {\n    min-height: 83.33333% !important;\n  }\n\n  .gt-md\\:min-h-11\\/12 {\n    min-height: 91.66667% !important;\n  }\n\n  .gt-md\\:min-w-0 {\n    min-width: 0 !important;\n  }\n\n  .gt-md\\:min-w-1 {\n    min-width: 0.25rem !important;\n  }\n\n  .gt-md\\:min-w-2 {\n    min-width: 0.5rem !important;\n  }\n\n  .gt-md\\:min-w-3 {\n    min-width: 0.75rem !important;\n  }\n\n  .gt-md\\:min-w-4 {\n    min-width: 1rem !important;\n  }\n\n  .gt-md\\:min-w-5 {\n    min-width: 1.25rem !important;\n  }\n\n  .gt-md\\:min-w-6 {\n    min-width: 1.5rem !important;\n  }\n\n  .gt-md\\:min-w-8 {\n    min-width: 2rem !important;\n  }\n\n  .gt-md\\:min-w-10 {\n    min-width: 2.5rem !important;\n  }\n\n  .gt-md\\:min-w-12 {\n    min-width: 3rem !important;\n  }\n\n  .gt-md\\:min-w-14 {\n    min-width: 3.5rem !important;\n  }\n\n  .gt-md\\:min-w-16 {\n    min-width: 4rem !important;\n  }\n\n  .gt-md\\:min-w-18 {\n    min-width: 4.5rem !important;\n  }\n\n  .gt-md\\:min-w-20 {\n    min-width: 5rem !important;\n  }\n\n  .gt-md\\:min-w-22 {\n    min-width: 5.5rem !important;\n  }\n\n  .gt-md\\:min-w-24 {\n    min-width: 6rem !important;\n  }\n\n  .gt-md\\:min-w-26 {\n    min-width: 6.5rem !important;\n  }\n\n  .gt-md\\:min-w-28 {\n    min-width: 7rem !important;\n  }\n\n  .gt-md\\:min-w-30 {\n    min-width: 7.5rem !important;\n  }\n\n  .gt-md\\:min-w-32 {\n    min-width: 8rem !important;\n  }\n\n  .gt-md\\:min-w-36 {\n    min-width: 9rem !important;\n  }\n\n  .gt-md\\:min-w-40 {\n    min-width: 10rem !important;\n  }\n\n  .gt-md\\:min-w-48 {\n    min-width: 12rem !important;\n  }\n\n  .gt-md\\:min-w-50 {\n    min-width: 12.5rem !important;\n  }\n\n  .gt-md\\:min-w-56 {\n    min-width: 14rem !important;\n  }\n\n  .gt-md\\:min-w-60 {\n    min-width: 15rem !important;\n  }\n\n  .gt-md\\:min-w-64 {\n    min-width: 16rem !important;\n  }\n\n  .gt-md\\:min-w-80 {\n    min-width: 20rem !important;\n  }\n\n  .gt-md\\:min-w-90 {\n    min-width: 24rem !important;\n  }\n\n  .gt-md\\:min-w-100 {\n    min-width: 25rem !important;\n  }\n\n  .gt-md\\:min-w-120 {\n    min-width: 30rem !important;\n  }\n\n  .gt-md\\:min-w-128 {\n    min-width: 32rem !important;\n  }\n\n  .gt-md\\:min-w-140 {\n    min-width: 35rem !important;\n  }\n\n  .gt-md\\:min-w-160 {\n    min-width: 40rem !important;\n  }\n\n  .gt-md\\:min-w-180 {\n    min-width: 45rem !important;\n  }\n\n  .gt-md\\:min-w-192 {\n    min-width: 48rem !important;\n  }\n\n  .gt-md\\:min-w-200 {\n    min-width: 50rem !important;\n  }\n\n  .gt-md\\:min-w-240 {\n    min-width: 60rem !important;\n  }\n\n  .gt-md\\:min-w-256 {\n    min-width: 64rem !important;\n  }\n\n  .gt-md\\:min-w-280 {\n    min-width: 70rem !important;\n  }\n\n  .gt-md\\:min-w-320 {\n    min-width: 80rem !important;\n  }\n\n  .gt-md\\:min-w-360 {\n    min-width: 90rem !important;\n  }\n\n  .gt-md\\:min-w-400 {\n    min-width: 100rem !important;\n  }\n\n  .gt-md\\:min-w-480 {\n    min-width: 120rem !important;\n  }\n\n  .gt-md\\:min-w-full {\n    min-width: 100% !important;\n  }\n\n  .gt-md\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n\n  .gt-md\\:min-w-px {\n    min-width: 1px !important;\n  }\n\n  .gt-md\\:min-w-2px {\n    min-width: 2px !important;\n  }\n\n  .gt-md\\:min-w-1\\/2 {\n    min-width: 50% !important;\n  }\n\n  .gt-md\\:min-w-1\\/3 {\n    min-width: 33.33333% !important;\n  }\n\n  .gt-md\\:min-w-2\\/3 {\n    min-width: 66.66667% !important;\n  }\n\n  .gt-md\\:min-w-1\\/4 {\n    min-width: 25% !important;\n  }\n\n  .gt-md\\:min-w-2\\/4 {\n    min-width: 50% !important;\n  }\n\n  .gt-md\\:min-w-3\\/4 {\n    min-width: 75% !important;\n  }\n\n  .gt-md\\:min-w-1\\/5 {\n    min-width: 20% !important;\n  }\n\n  .gt-md\\:min-w-2\\/5 {\n    min-width: 40% !important;\n  }\n\n  .gt-md\\:min-w-3\\/5 {\n    min-width: 60% !important;\n  }\n\n  .gt-md\\:min-w-4\\/5 {\n    min-width: 80% !important;\n  }\n\n  .gt-md\\:min-w-1\\/12 {\n    min-width: 8.33333% !important;\n  }\n\n  .gt-md\\:min-w-2\\/12 {\n    min-width: 16.66667% !important;\n  }\n\n  .gt-md\\:min-w-3\\/12 {\n    min-width: 25% !important;\n  }\n\n  .gt-md\\:min-w-4\\/12 {\n    min-width: 33.33333% !important;\n  }\n\n  .gt-md\\:min-w-5\\/12 {\n    min-width: 41.66667% !important;\n  }\n\n  .gt-md\\:min-w-6\\/12 {\n    min-width: 50% !important;\n  }\n\n  .gt-md\\:min-w-7\\/12 {\n    min-width: 58.33333% !important;\n  }\n\n  .gt-md\\:min-w-8\\/12 {\n    min-width: 66.66667% !important;\n  }\n\n  .gt-md\\:min-w-9\\/12 {\n    min-width: 75% !important;\n  }\n\n  .gt-md\\:min-w-10\\/12 {\n    min-width: 83.33333% !important;\n  }\n\n  .gt-md\\:min-w-11\\/12 {\n    min-width: 91.66667% !important;\n  }\n\n  .gt-md\\:object-contain {\n    -o-object-fit: contain !important;\n       object-fit: contain !important;\n  }\n\n  .gt-md\\:object-cover {\n    -o-object-fit: cover !important;\n       object-fit: cover !important;\n  }\n\n  .gt-md\\:object-fill {\n    -o-object-fit: fill !important;\n       object-fit: fill !important;\n  }\n\n  .gt-md\\:object-none {\n    -o-object-fit: none !important;\n       object-fit: none !important;\n  }\n\n  .gt-md\\:object-scale-down {\n    -o-object-fit: scale-down !important;\n       object-fit: scale-down !important;\n  }\n\n  .gt-md\\:object-bottom {\n    -o-object-position: bottom !important;\n       object-position: bottom !important;\n  }\n\n  .gt-md\\:object-center {\n    -o-object-position: center !important;\n       object-position: center !important;\n  }\n\n  .gt-md\\:object-left {\n    -o-object-position: left !important;\n       object-position: left !important;\n  }\n\n  .gt-md\\:object-left-bottom {\n    -o-object-position: left bottom !important;\n       object-position: left bottom !important;\n  }\n\n  .gt-md\\:object-left-top {\n    -o-object-position: left top !important;\n       object-position: left top !important;\n  }\n\n  .gt-md\\:object-right {\n    -o-object-position: right !important;\n       object-position: right !important;\n  }\n\n  .gt-md\\:object-right-bottom {\n    -o-object-position: right bottom !important;\n       object-position: right bottom !important;\n  }\n\n  .gt-md\\:object-right-top {\n    -o-object-position: right top !important;\n       object-position: right top !important;\n  }\n\n  .gt-md\\:object-top {\n    -o-object-position: top !important;\n       object-position: top !important;\n  }\n\n  .gt-md\\:opacity-0 {\n    opacity: 0 !important;\n  }\n\n  .gt-md\\:opacity-12 {\n    opacity: 0.12 !important;\n  }\n\n  .gt-md\\:opacity-25 {\n    opacity: 0.25 !important;\n  }\n\n  .gt-md\\:opacity-38 {\n    opacity: 0.38 !important;\n  }\n\n  .gt-md\\:opacity-50 {\n    opacity: 0.5 !important;\n  }\n\n  .gt-md\\:opacity-54 {\n    opacity: 0.54 !important;\n  }\n\n  .gt-md\\:opacity-70 {\n    opacity: 0.70 !important;\n  }\n\n  .gt-md\\:opacity-75 {\n    opacity: 0.75 !important;\n  }\n\n  .gt-md\\:opacity-84 {\n    opacity: 0.84 !important;\n  }\n\n  .gt-md\\:opacity-100 {\n    opacity: 1 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-0:hover {\n    opacity: 0 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-12:hover {\n    opacity: 0.12 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-25:hover {\n    opacity: 0.25 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-38:hover {\n    opacity: 0.38 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-50:hover {\n    opacity: 0.5 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-54:hover {\n    opacity: 0.54 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-70:hover {\n    opacity: 0.70 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-75:hover {\n    opacity: 0.75 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-84:hover {\n    opacity: 0.84 !important;\n  }\n\n  .gt-md\\:hover\\:opacity-100:hover {\n    opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-0:focus {\n    opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-12:focus {\n    opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-25:focus {\n    opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-38:focus {\n    opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-50:focus {\n    opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-54:focus {\n    opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-70:focus {\n    opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-75:focus {\n    opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-84:focus {\n    opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:opacity-100:focus {\n    opacity: 1 !important;\n  }\n\n  .gt-md\\:outline-none {\n    outline: 0 !important;\n  }\n\n  .gt-md\\:focus\\:outline-none:focus {\n    outline: 0 !important;\n  }\n\n  .gt-md\\:overflow-auto {\n    overflow: auto !important;\n  }\n\n  .gt-md\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n\n  .gt-md\\:overflow-visible {\n    overflow: visible !important;\n  }\n\n  .gt-md\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n\n  .gt-md\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n\n  .gt-md\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n\n  .gt-md\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n\n  .gt-md\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n\n  .gt-md\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n\n  .gt-md\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n\n  .gt-md\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n\n  .gt-md\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n\n  .gt-md\\:scrolling-touch {\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .gt-md\\:scrolling-auto {\n    -webkit-overflow-scrolling: auto !important;\n  }\n\n  .gt-md\\:p-0 {\n    padding: 0 !important;\n  }\n\n  .gt-md\\:p-1 {\n    padding: 0.25rem !important;\n  }\n\n  .gt-md\\:p-2 {\n    padding: 0.5rem !important;\n  }\n\n  .gt-md\\:p-3 {\n    padding: 0.75rem !important;\n  }\n\n  .gt-md\\:p-4 {\n    padding: 1rem !important;\n  }\n\n  .gt-md\\:p-5 {\n    padding: 1.25rem !important;\n  }\n\n  .gt-md\\:p-6 {\n    padding: 1.5rem !important;\n  }\n\n  .gt-md\\:p-8 {\n    padding: 2rem !important;\n  }\n\n  .gt-md\\:p-10 {\n    padding: 2.5rem !important;\n  }\n\n  .gt-md\\:p-12 {\n    padding: 3rem !important;\n  }\n\n  .gt-md\\:p-14 {\n    padding: 3.5rem !important;\n  }\n\n  .gt-md\\:p-16 {\n    padding: 4rem !important;\n  }\n\n  .gt-md\\:p-18 {\n    padding: 4.5rem !important;\n  }\n\n  .gt-md\\:p-20 {\n    padding: 5rem !important;\n  }\n\n  .gt-md\\:p-22 {\n    padding: 5.5rem !important;\n  }\n\n  .gt-md\\:p-24 {\n    padding: 6rem !important;\n  }\n\n  .gt-md\\:p-26 {\n    padding: 6.5rem !important;\n  }\n\n  .gt-md\\:p-28 {\n    padding: 7rem !important;\n  }\n\n  .gt-md\\:p-30 {\n    padding: 7.5rem !important;\n  }\n\n  .gt-md\\:p-32 {\n    padding: 8rem !important;\n  }\n\n  .gt-md\\:p-36 {\n    padding: 9rem !important;\n  }\n\n  .gt-md\\:p-40 {\n    padding: 10rem !important;\n  }\n\n  .gt-md\\:p-48 {\n    padding: 12rem !important;\n  }\n\n  .gt-md\\:p-56 {\n    padding: 14rem !important;\n  }\n\n  .gt-md\\:p-64 {\n    padding: 16rem !important;\n  }\n\n  .gt-md\\:p-px {\n    padding: 1px !important;\n  }\n\n  .gt-md\\:p-2px {\n    padding: 2px !important;\n  }\n\n  .gt-md\\:py-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .gt-md\\:px-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .gt-md\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .gt-md\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .gt-md\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .gt-md\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .gt-md\\:py-3 {\n    padding-top: 0.75rem !important;\n    padding-bottom: 0.75rem !important;\n  }\n\n  .gt-md\\:px-3 {\n    padding-left: 0.75rem !important;\n    padding-right: 0.75rem !important;\n  }\n\n  .gt-md\\:py-4 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .gt-md\\:px-4 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .gt-md\\:py-5 {\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n\n  .gt-md\\:px-5 {\n    padding-left: 1.25rem !important;\n    padding-right: 1.25rem !important;\n  }\n\n  .gt-md\\:py-6 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .gt-md\\:px-6 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .gt-md\\:py-8 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n\n  .gt-md\\:px-8 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n\n  .gt-md\\:py-10 {\n    padding-top: 2.5rem !important;\n    padding-bottom: 2.5rem !important;\n  }\n\n  .gt-md\\:px-10 {\n    padding-left: 2.5rem !important;\n    padding-right: 2.5rem !important;\n  }\n\n  .gt-md\\:py-12 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .gt-md\\:px-12 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .gt-md\\:py-14 {\n    padding-top: 3.5rem !important;\n    padding-bottom: 3.5rem !important;\n  }\n\n  .gt-md\\:px-14 {\n    padding-left: 3.5rem !important;\n    padding-right: 3.5rem !important;\n  }\n\n  .gt-md\\:py-16 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n\n  .gt-md\\:px-16 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n\n  .gt-md\\:py-18 {\n    padding-top: 4.5rem !important;\n    padding-bottom: 4.5rem !important;\n  }\n\n  .gt-md\\:px-18 {\n    padding-left: 4.5rem !important;\n    padding-right: 4.5rem !important;\n  }\n\n  .gt-md\\:py-20 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n\n  .gt-md\\:px-20 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n\n  .gt-md\\:py-22 {\n    padding-top: 5.5rem !important;\n    padding-bottom: 5.5rem !important;\n  }\n\n  .gt-md\\:px-22 {\n    padding-left: 5.5rem !important;\n    padding-right: 5.5rem !important;\n  }\n\n  .gt-md\\:py-24 {\n    padding-top: 6rem !important;\n    padding-bottom: 6rem !important;\n  }\n\n  .gt-md\\:px-24 {\n    padding-left: 6rem !important;\n    padding-right: 6rem !important;\n  }\n\n  .gt-md\\:py-26 {\n    padding-top: 6.5rem !important;\n    padding-bottom: 6.5rem !important;\n  }\n\n  .gt-md\\:px-26 {\n    padding-left: 6.5rem !important;\n    padding-right: 6.5rem !important;\n  }\n\n  .gt-md\\:py-28 {\n    padding-top: 7rem !important;\n    padding-bottom: 7rem !important;\n  }\n\n  .gt-md\\:px-28 {\n    padding-left: 7rem !important;\n    padding-right: 7rem !important;\n  }\n\n  .gt-md\\:py-30 {\n    padding-top: 7.5rem !important;\n    padding-bottom: 7.5rem !important;\n  }\n\n  .gt-md\\:px-30 {\n    padding-left: 7.5rem !important;\n    padding-right: 7.5rem !important;\n  }\n\n  .gt-md\\:py-32 {\n    padding-top: 8rem !important;\n    padding-bottom: 8rem !important;\n  }\n\n  .gt-md\\:px-32 {\n    padding-left: 8rem !important;\n    padding-right: 8rem !important;\n  }\n\n  .gt-md\\:py-36 {\n    padding-top: 9rem !important;\n    padding-bottom: 9rem !important;\n  }\n\n  .gt-md\\:px-36 {\n    padding-left: 9rem !important;\n    padding-right: 9rem !important;\n  }\n\n  .gt-md\\:py-40 {\n    padding-top: 10rem !important;\n    padding-bottom: 10rem !important;\n  }\n\n  .gt-md\\:px-40 {\n    padding-left: 10rem !important;\n    padding-right: 10rem !important;\n  }\n\n  .gt-md\\:py-48 {\n    padding-top: 12rem !important;\n    padding-bottom: 12rem !important;\n  }\n\n  .gt-md\\:px-48 {\n    padding-left: 12rem !important;\n    padding-right: 12rem !important;\n  }\n\n  .gt-md\\:py-56 {\n    padding-top: 14rem !important;\n    padding-bottom: 14rem !important;\n  }\n\n  .gt-md\\:px-56 {\n    padding-left: 14rem !important;\n    padding-right: 14rem !important;\n  }\n\n  .gt-md\\:py-64 {\n    padding-top: 16rem !important;\n    padding-bottom: 16rem !important;\n  }\n\n  .gt-md\\:px-64 {\n    padding-left: 16rem !important;\n    padding-right: 16rem !important;\n  }\n\n  .gt-md\\:py-px {\n    padding-top: 1px !important;\n    padding-bottom: 1px !important;\n  }\n\n  .gt-md\\:px-px {\n    padding-left: 1px !important;\n    padding-right: 1px !important;\n  }\n\n  .gt-md\\:py-2px {\n    padding-top: 2px !important;\n    padding-bottom: 2px !important;\n  }\n\n  .gt-md\\:px-2px {\n    padding-left: 2px !important;\n    padding-right: 2px !important;\n  }\n\n  .gt-md\\:pt-0 {\n    padding-top: 0 !important;\n  }\n\n  .gt-md\\:pr-0 {\n    padding-right: 0 !important;\n  }\n\n  .gt-md\\:pb-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .gt-md\\:pl-0 {\n    padding-left: 0 !important;\n  }\n\n  .gt-md\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .gt-md\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .gt-md\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .gt-md\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .gt-md\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .gt-md\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .gt-md\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .gt-md\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .gt-md\\:pt-3 {\n    padding-top: 0.75rem !important;\n  }\n\n  .gt-md\\:pr-3 {\n    padding-right: 0.75rem !important;\n  }\n\n  .gt-md\\:pb-3 {\n    padding-bottom: 0.75rem !important;\n  }\n\n  .gt-md\\:pl-3 {\n    padding-left: 0.75rem !important;\n  }\n\n  .gt-md\\:pt-4 {\n    padding-top: 1rem !important;\n  }\n\n  .gt-md\\:pr-4 {\n    padding-right: 1rem !important;\n  }\n\n  .gt-md\\:pb-4 {\n    padding-bottom: 1rem !important;\n  }\n\n  .gt-md\\:pl-4 {\n    padding-left: 1rem !important;\n  }\n\n  .gt-md\\:pt-5 {\n    padding-top: 1.25rem !important;\n  }\n\n  .gt-md\\:pr-5 {\n    padding-right: 1.25rem !important;\n  }\n\n  .gt-md\\:pb-5 {\n    padding-bottom: 1.25rem !important;\n  }\n\n  .gt-md\\:pl-5 {\n    padding-left: 1.25rem !important;\n  }\n\n  .gt-md\\:pt-6 {\n    padding-top: 1.5rem !important;\n  }\n\n  .gt-md\\:pr-6 {\n    padding-right: 1.5rem !important;\n  }\n\n  .gt-md\\:pb-6 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .gt-md\\:pl-6 {\n    padding-left: 1.5rem !important;\n  }\n\n  .gt-md\\:pt-8 {\n    padding-top: 2rem !important;\n  }\n\n  .gt-md\\:pr-8 {\n    padding-right: 2rem !important;\n  }\n\n  .gt-md\\:pb-8 {\n    padding-bottom: 2rem !important;\n  }\n\n  .gt-md\\:pl-8 {\n    padding-left: 2rem !important;\n  }\n\n  .gt-md\\:pt-10 {\n    padding-top: 2.5rem !important;\n  }\n\n  .gt-md\\:pr-10 {\n    padding-right: 2.5rem !important;\n  }\n\n  .gt-md\\:pb-10 {\n    padding-bottom: 2.5rem !important;\n  }\n\n  .gt-md\\:pl-10 {\n    padding-left: 2.5rem !important;\n  }\n\n  .gt-md\\:pt-12 {\n    padding-top: 3rem !important;\n  }\n\n  .gt-md\\:pr-12 {\n    padding-right: 3rem !important;\n  }\n\n  .gt-md\\:pb-12 {\n    padding-bottom: 3rem !important;\n  }\n\n  .gt-md\\:pl-12 {\n    padding-left: 3rem !important;\n  }\n\n  .gt-md\\:pt-14 {\n    padding-top: 3.5rem !important;\n  }\n\n  .gt-md\\:pr-14 {\n    padding-right: 3.5rem !important;\n  }\n\n  .gt-md\\:pb-14 {\n    padding-bottom: 3.5rem !important;\n  }\n\n  .gt-md\\:pl-14 {\n    padding-left: 3.5rem !important;\n  }\n\n  .gt-md\\:pt-16 {\n    padding-top: 4rem !important;\n  }\n\n  .gt-md\\:pr-16 {\n    padding-right: 4rem !important;\n  }\n\n  .gt-md\\:pb-16 {\n    padding-bottom: 4rem !important;\n  }\n\n  .gt-md\\:pl-16 {\n    padding-left: 4rem !important;\n  }\n\n  .gt-md\\:pt-18 {\n    padding-top: 4.5rem !important;\n  }\n\n  .gt-md\\:pr-18 {\n    padding-right: 4.5rem !important;\n  }\n\n  .gt-md\\:pb-18 {\n    padding-bottom: 4.5rem !important;\n  }\n\n  .gt-md\\:pl-18 {\n    padding-left: 4.5rem !important;\n  }\n\n  .gt-md\\:pt-20 {\n    padding-top: 5rem !important;\n  }\n\n  .gt-md\\:pr-20 {\n    padding-right: 5rem !important;\n  }\n\n  .gt-md\\:pb-20 {\n    padding-bottom: 5rem !important;\n  }\n\n  .gt-md\\:pl-20 {\n    padding-left: 5rem !important;\n  }\n\n  .gt-md\\:pt-22 {\n    padding-top: 5.5rem !important;\n  }\n\n  .gt-md\\:pr-22 {\n    padding-right: 5.5rem !important;\n  }\n\n  .gt-md\\:pb-22 {\n    padding-bottom: 5.5rem !important;\n  }\n\n  .gt-md\\:pl-22 {\n    padding-left: 5.5rem !important;\n  }\n\n  .gt-md\\:pt-24 {\n    padding-top: 6rem !important;\n  }\n\n  .gt-md\\:pr-24 {\n    padding-right: 6rem !important;\n  }\n\n  .gt-md\\:pb-24 {\n    padding-bottom: 6rem !important;\n  }\n\n  .gt-md\\:pl-24 {\n    padding-left: 6rem !important;\n  }\n\n  .gt-md\\:pt-26 {\n    padding-top: 6.5rem !important;\n  }\n\n  .gt-md\\:pr-26 {\n    padding-right: 6.5rem !important;\n  }\n\n  .gt-md\\:pb-26 {\n    padding-bottom: 6.5rem !important;\n  }\n\n  .gt-md\\:pl-26 {\n    padding-left: 6.5rem !important;\n  }\n\n  .gt-md\\:pt-28 {\n    padding-top: 7rem !important;\n  }\n\n  .gt-md\\:pr-28 {\n    padding-right: 7rem !important;\n  }\n\n  .gt-md\\:pb-28 {\n    padding-bottom: 7rem !important;\n  }\n\n  .gt-md\\:pl-28 {\n    padding-left: 7rem !important;\n  }\n\n  .gt-md\\:pt-30 {\n    padding-top: 7.5rem !important;\n  }\n\n  .gt-md\\:pr-30 {\n    padding-right: 7.5rem !important;\n  }\n\n  .gt-md\\:pb-30 {\n    padding-bottom: 7.5rem !important;\n  }\n\n  .gt-md\\:pl-30 {\n    padding-left: 7.5rem !important;\n  }\n\n  .gt-md\\:pt-32 {\n    padding-top: 8rem !important;\n  }\n\n  .gt-md\\:pr-32 {\n    padding-right: 8rem !important;\n  }\n\n  .gt-md\\:pb-32 {\n    padding-bottom: 8rem !important;\n  }\n\n  .gt-md\\:pl-32 {\n    padding-left: 8rem !important;\n  }\n\n  .gt-md\\:pt-36 {\n    padding-top: 9rem !important;\n  }\n\n  .gt-md\\:pr-36 {\n    padding-right: 9rem !important;\n  }\n\n  .gt-md\\:pb-36 {\n    padding-bottom: 9rem !important;\n  }\n\n  .gt-md\\:pl-36 {\n    padding-left: 9rem !important;\n  }\n\n  .gt-md\\:pt-40 {\n    padding-top: 10rem !important;\n  }\n\n  .gt-md\\:pr-40 {\n    padding-right: 10rem !important;\n  }\n\n  .gt-md\\:pb-40 {\n    padding-bottom: 10rem !important;\n  }\n\n  .gt-md\\:pl-40 {\n    padding-left: 10rem !important;\n  }\n\n  .gt-md\\:pt-48 {\n    padding-top: 12rem !important;\n  }\n\n  .gt-md\\:pr-48 {\n    padding-right: 12rem !important;\n  }\n\n  .gt-md\\:pb-48 {\n    padding-bottom: 12rem !important;\n  }\n\n  .gt-md\\:pl-48 {\n    padding-left: 12rem !important;\n  }\n\n  .gt-md\\:pt-56 {\n    padding-top: 14rem !important;\n  }\n\n  .gt-md\\:pr-56 {\n    padding-right: 14rem !important;\n  }\n\n  .gt-md\\:pb-56 {\n    padding-bottom: 14rem !important;\n  }\n\n  .gt-md\\:pl-56 {\n    padding-left: 14rem !important;\n  }\n\n  .gt-md\\:pt-64 {\n    padding-top: 16rem !important;\n  }\n\n  .gt-md\\:pr-64 {\n    padding-right: 16rem !important;\n  }\n\n  .gt-md\\:pb-64 {\n    padding-bottom: 16rem !important;\n  }\n\n  .gt-md\\:pl-64 {\n    padding-left: 16rem !important;\n  }\n\n  .gt-md\\:pt-px {\n    padding-top: 1px !important;\n  }\n\n  .gt-md\\:pr-px {\n    padding-right: 1px !important;\n  }\n\n  .gt-md\\:pb-px {\n    padding-bottom: 1px !important;\n  }\n\n  .gt-md\\:pl-px {\n    padding-left: 1px !important;\n  }\n\n  .gt-md\\:pt-2px {\n    padding-top: 2px !important;\n  }\n\n  .gt-md\\:pr-2px {\n    padding-right: 2px !important;\n  }\n\n  .gt-md\\:pb-2px {\n    padding-bottom: 2px !important;\n  }\n\n  .gt-md\\:pl-2px {\n    padding-left: 2px !important;\n  }\n\n  .gt-md\\:placeholder-opacity-0::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-0::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-0::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-0::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-12::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-12::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-12::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-12::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-25::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-25::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-25::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-25::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-38::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-38::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-38::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-38::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-50::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-50::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-50::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-50::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-54::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-54::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-54::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-54::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-70::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-70::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-70::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-70::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-75::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-75::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-75::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-75::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-84::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-84::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-84::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-84::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-100::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-100::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-100::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:placeholder-opacity-100::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-0:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-0:focus::-moz-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-0:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-0:focus::placeholder {\n    --placeholder-opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-12:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-12:focus::-moz-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-12:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-12:focus::placeholder {\n    --placeholder-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-25:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-25:focus::-moz-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-25:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-25:focus::placeholder {\n    --placeholder-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-38:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-38:focus::-moz-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-38:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-38:focus::placeholder {\n    --placeholder-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-50:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-50:focus::-moz-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-50:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-50:focus::placeholder {\n    --placeholder-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-54:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-54:focus::-moz-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-54:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-54:focus::placeholder {\n    --placeholder-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-70:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-70:focus::-moz-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-70:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-70:focus::placeholder {\n    --placeholder-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-75:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-75:focus::-moz-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-75:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-75:focus::placeholder {\n    --placeholder-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-84:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-84:focus::-moz-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-84:focus::-ms-input-placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-84:focus::placeholder {\n    --placeholder-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-100:focus::-webkit-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-100:focus::-moz-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-100:focus::-ms-input-placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:placeholder-opacity-100:focus::placeholder {\n    --placeholder-opacity: 1 !important;\n  }\n\n  .gt-md\\:pointer-events-none {\n    pointer-events: none !important;\n  }\n\n  .gt-md\\:pointer-events-auto {\n    pointer-events: auto !important;\n  }\n\n  .gt-md\\:static {\n    position: static !important;\n  }\n\n  .gt-md\\:fixed {\n    position: fixed !important;\n  }\n\n  .gt-md\\:absolute {\n    position: absolute !important;\n  }\n\n  .gt-md\\:relative {\n    position: relative !important;\n  }\n\n  .gt-md\\:sticky {\n    position: -webkit-sticky !important;\n    position: sticky !important;\n  }\n\n  .gt-md\\:inset-0 {\n    top: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    left: 0 !important;\n  }\n\n  .gt-md\\:inset-auto {\n    top: auto !important;\n    right: auto !important;\n    bottom: auto !important;\n    left: auto !important;\n  }\n\n  .gt-md\\:inset-y-0 {\n    top: 0 !important;\n    bottom: 0 !important;\n  }\n\n  .gt-md\\:inset-x-0 {\n    right: 0 !important;\n    left: 0 !important;\n  }\n\n  .gt-md\\:inset-y-auto {\n    top: auto !important;\n    bottom: auto !important;\n  }\n\n  .gt-md\\:inset-x-auto {\n    right: auto !important;\n    left: auto !important;\n  }\n\n  .gt-md\\:top-0 {\n    top: 0 !important;\n  }\n\n  .gt-md\\:right-0 {\n    right: 0 !important;\n  }\n\n  .gt-md\\:bottom-0 {\n    bottom: 0 !important;\n  }\n\n  .gt-md\\:left-0 {\n    left: 0 !important;\n  }\n\n  .gt-md\\:top-auto {\n    top: auto !important;\n  }\n\n  .gt-md\\:right-auto {\n    right: auto !important;\n  }\n\n  .gt-md\\:bottom-auto {\n    bottom: auto !important;\n  }\n\n  .gt-md\\:left-auto {\n    left: auto !important;\n  }\n\n  .gt-md\\:shadow-xs {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:shadow-sm {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:shadow {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:shadow-md {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:shadow-lg {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:shadow-xl {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-md\\:shadow-2xl {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-md\\:shadow-inner {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:shadow-outline {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-md\\:shadow-none {\n    box-shadow: none !important;\n  }\n\n  .gt-md\\:shadow-solid {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-md\\:hover\\:shadow-xs:hover {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-sm:hover {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:hover\\:shadow:hover {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-md:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-lg:hover {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-xl:hover {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-2xl:hover {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-inner:hover {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-outline:hover {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-md\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n\n  .gt-md\\:hover\\:shadow-solid:hover {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-md\\:focus\\:shadow-xs:focus {\n    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-sm:focus {\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:focus\\:shadow:focus {\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-md:focus {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-lg:focus {\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-xl:focus {\n    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-2xl:focus {\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-inner:focus {\n    box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-outline:focus {\n    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5) !important;\n  }\n\n  .gt-md\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n\n  .gt-md\\:focus\\:shadow-solid:focus {\n    box-shadow: 0 0 0 2px currentColor !important;\n  }\n\n  .gt-md\\:fill-current {\n    fill: currentColor !important;\n  }\n\n  .gt-md\\:stroke-current {\n    stroke: currentColor !important;\n  }\n\n  .gt-md\\:stroke-0 {\n    stroke-width: 0 !important;\n  }\n\n  .gt-md\\:stroke-1 {\n    stroke-width: 1 !important;\n  }\n\n  .gt-md\\:stroke-2 {\n    stroke-width: 2 !important;\n  }\n\n  .gt-md\\:table-auto {\n    table-layout: auto !important;\n  }\n\n  .gt-md\\:table-fixed {\n    table-layout: fixed !important;\n  }\n\n  .gt-md\\:text-left {\n    text-align: left !important;\n  }\n\n  .gt-md\\:text-center {\n    text-align: center !important;\n  }\n\n  .gt-md\\:text-right {\n    text-align: right !important;\n  }\n\n  .gt-md\\:text-justify {\n    text-align: justify !important;\n  }\n\n  .gt-md\\:text-opacity-0 {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-md\\:text-opacity-12 {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:text-opacity-25 {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:text-opacity-38 {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:text-opacity-50 {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:text-opacity-54 {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:text-opacity-70 {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:text-opacity-75 {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:text-opacity-84 {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:text-opacity-100 {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-0:hover {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-12:hover {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-25:hover {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-38:hover {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-50:hover {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-54:hover {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-70:hover {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-75:hover {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-84:hover {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:hover\\:text-opacity-100:hover {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-0:focus {\n    --text-opacity: 0 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-12:focus {\n    --text-opacity: 0.12 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-25:focus {\n    --text-opacity: 0.25 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-38:focus {\n    --text-opacity: 0.38 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-50:focus {\n    --text-opacity: 0.5 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-54:focus {\n    --text-opacity: 0.54 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-70:focus {\n    --text-opacity: 0.70 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-75:focus {\n    --text-opacity: 0.75 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-84:focus {\n    --text-opacity: 0.84 !important;\n  }\n\n  .gt-md\\:focus\\:text-opacity-100:focus {\n    --text-opacity: 1 !important;\n  }\n\n  .gt-md\\:italic {\n    font-style: italic !important;\n  }\n\n  .gt-md\\:not-italic {\n    font-style: normal !important;\n  }\n\n  .gt-md\\:uppercase {\n    text-transform: uppercase !important;\n  }\n\n  .gt-md\\:lowercase {\n    text-transform: lowercase !important;\n  }\n\n  .gt-md\\:capitalize {\n    text-transform: capitalize !important;\n  }\n\n  .gt-md\\:normal-case {\n    text-transform: none !important;\n  }\n\n  .gt-md\\:underline {\n    text-decoration: underline !important;\n  }\n\n  .gt-md\\:line-through {\n    text-decoration: line-through !important;\n  }\n\n  .gt-md\\:no-underline {\n    text-decoration: none !important;\n  }\n\n  .gt-md\\:hover\\:underline:hover {\n    text-decoration: underline !important;\n  }\n\n  .gt-md\\:hover\\:line-through:hover {\n    text-decoration: line-through !important;\n  }\n\n  .gt-md\\:hover\\:no-underline:hover {\n    text-decoration: none !important;\n  }\n\n  .gt-md\\:focus\\:underline:focus {\n    text-decoration: underline !important;\n  }\n\n  .gt-md\\:focus\\:line-through:focus {\n    text-decoration: line-through !important;\n  }\n\n  .gt-md\\:focus\\:no-underline:focus {\n    text-decoration: none !important;\n  }\n\n  .gt-md\\:tracking-tighter {\n    letter-spacing: -0.05em !important;\n  }\n\n  .gt-md\\:tracking-tight {\n    letter-spacing: -0.025em !important;\n  }\n\n  .gt-md\\:tracking-normal {\n    letter-spacing: 0 !important;\n  }\n\n  .gt-md\\:tracking-wide {\n    letter-spacing: 0.025em !important;\n  }\n\n  .gt-md\\:tracking-wider {\n    letter-spacing: 0.05em !important;\n  }\n\n  .gt-md\\:tracking-widest {\n    letter-spacing: 0.1em !important;\n  }\n\n  .gt-md\\:select-none {\n    -webkit-user-select: none !important;\n       -moz-user-select: none !important;\n        -ms-user-select: none !important;\n            user-select: none !important;\n  }\n\n  .gt-md\\:select-text {\n    -webkit-user-select: text !important;\n       -moz-user-select: text !important;\n        -ms-user-select: text !important;\n            user-select: text !important;\n  }\n\n  .gt-md\\:select-all {\n    -webkit-user-select: all !important;\n       -moz-user-select: all !important;\n        -ms-user-select: all !important;\n            user-select: all !important;\n  }\n\n  .gt-md\\:select-auto {\n    -webkit-user-select: auto !important;\n       -moz-user-select: auto !important;\n        -ms-user-select: auto !important;\n            user-select: auto !important;\n  }\n\n  .gt-md\\:align-baseline {\n    vertical-align: baseline !important;\n  }\n\n  .gt-md\\:align-top {\n    vertical-align: top !important;\n  }\n\n  .gt-md\\:align-middle {\n    vertical-align: middle !important;\n  }\n\n  .gt-md\\:align-bottom {\n    vertical-align: bottom !important;\n  }\n\n  .gt-md\\:align-text-top {\n    vertical-align: text-top !important;\n  }\n\n  .gt-md\\:align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n\n  .gt-md\\:visible {\n    visibility: visible !important;\n  }\n\n  .gt-md\\:invisible {\n    visibility: hidden !important;\n  }\n\n  .gt-md\\:whitespace-normal {\n    white-space: normal !important;\n  }\n\n  .gt-md\\:whitespace-no-wrap {\n    white-space: nowrap !important;\n  }\n\n  .gt-md\\:whitespace-pre {\n    white-space: pre !important;\n  }\n\n  .gt-md\\:whitespace-pre-line {\n    white-space: pre-line !important;\n  }\n\n  .gt-md\\:whitespace-pre-wrap {\n    white-space: pre-wrap !important;\n  }\n\n  .gt-md\\:break-normal {\n    overflow-wrap: normal !important;\n    word-break: normal !important;\n  }\n\n  .gt-md\\:break-words {\n    overflow-wrap: break-word !important;\n  }\n\n  .gt-md\\:break-all {\n    word-break: break-all !important;\n  }\n\n  .gt-md\\:truncate {\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    white-space: nowrap !important;\n  }\n\n  .gt-md\\:w-0 {\n    width: 0 !important;\n  }\n\n  .gt-md\\:w-1 {\n    width: 0.25rem !important;\n  }\n\n  .gt-md\\:w-2 {\n    width: 0.5rem !important;\n  }\n\n  .gt-md\\:w-3 {\n    width: 0.75rem !important;\n  }\n\n  .gt-md\\:w-4 {\n    width: 1rem !important;\n  }\n\n  .gt-md\\:w-5 {\n    width: 1.25rem !important;\n  }\n\n  .gt-md\\:w-6 {\n    width: 1.5rem !important;\n  }\n\n  .gt-md\\:w-8 {\n    width: 2rem !important;\n  }\n\n  .gt-md\\:w-10 {\n    width: 2.5rem !important;\n  }\n\n  .gt-md\\:w-12 {\n    width: 3rem !important;\n  }\n\n  .gt-md\\:w-14 {\n    width: 3.5rem !important;\n  }\n\n  .gt-md\\:w-16 {\n    width: 4rem !important;\n  }\n\n  .gt-md\\:w-18 {\n    width: 4.5rem !important;\n  }\n\n  .gt-md\\:w-20 {\n    width: 5rem !important;\n  }\n\n  .gt-md\\:w-22 {\n    width: 5.5rem !important;\n  }\n\n  .gt-md\\:w-24 {\n    width: 6rem !important;\n  }\n\n  .gt-md\\:w-26 {\n    width: 6.5rem !important;\n  }\n\n  .gt-md\\:w-28 {\n    width: 7rem !important;\n  }\n\n  .gt-md\\:w-30 {\n    width: 7.5rem !important;\n  }\n\n  .gt-md\\:w-32 {\n    width: 8rem !important;\n  }\n\n  .gt-md\\:w-36 {\n    width: 9rem !important;\n  }\n\n  .gt-md\\:w-40 {\n    width: 10rem !important;\n  }\n\n  .gt-md\\:w-48 {\n    width: 12rem !important;\n  }\n\n  .gt-md\\:w-50 {\n    width: 12.5rem !important;\n  }\n\n  .gt-md\\:w-56 {\n    width: 14rem !important;\n  }\n\n  .gt-md\\:w-60 {\n    width: 15rem !important;\n  }\n\n  .gt-md\\:w-64 {\n    width: 16rem !important;\n  }\n\n  .gt-md\\:w-80 {\n    width: 20rem !important;\n  }\n\n  .gt-md\\:w-90 {\n    width: 24rem !important;\n  }\n\n  .gt-md\\:w-100 {\n    width: 25rem !important;\n  }\n\n  .gt-md\\:w-120 {\n    width: 30rem !important;\n  }\n\n  .gt-md\\:w-128 {\n    width: 32rem !important;\n  }\n\n  .gt-md\\:w-140 {\n    width: 35rem !important;\n  }\n\n  .gt-md\\:w-160 {\n    width: 40rem !important;\n  }\n\n  .gt-md\\:w-180 {\n    width: 45rem !important;\n  }\n\n  .gt-md\\:w-192 {\n    width: 48rem !important;\n  }\n\n  .gt-md\\:w-200 {\n    width: 50rem !important;\n  }\n\n  .gt-md\\:w-240 {\n    width: 60rem !important;\n  }\n\n  .gt-md\\:w-256 {\n    width: 64rem !important;\n  }\n\n  .gt-md\\:w-280 {\n    width: 70rem !important;\n  }\n\n  .gt-md\\:w-320 {\n    width: 80rem !important;\n  }\n\n  .gt-md\\:w-360 {\n    width: 90rem !important;\n  }\n\n  .gt-md\\:w-400 {\n    width: 100rem !important;\n  }\n\n  .gt-md\\:w-480 {\n    width: 120rem !important;\n  }\n\n  .gt-md\\:w-auto {\n    width: auto !important;\n  }\n\n  .gt-md\\:w-px {\n    width: 1px !important;\n  }\n\n  .gt-md\\:w-2px {\n    width: 2px !important;\n  }\n\n  .gt-md\\:w-1\\/2 {\n    width: 50% !important;\n  }\n\n  .gt-md\\:w-1\\/3 {\n    width: 33.33333% !important;\n  }\n\n  .gt-md\\:w-2\\/3 {\n    width: 66.66667% !important;\n  }\n\n  .gt-md\\:w-1\\/4 {\n    width: 25% !important;\n  }\n\n  .gt-md\\:w-2\\/4 {\n    width: 50% !important;\n  }\n\n  .gt-md\\:w-3\\/4 {\n    width: 75% !important;\n  }\n\n  .gt-md\\:w-1\\/5 {\n    width: 20% !important;\n  }\n\n  .gt-md\\:w-2\\/5 {\n    width: 40% !important;\n  }\n\n  .gt-md\\:w-3\\/5 {\n    width: 60% !important;\n  }\n\n  .gt-md\\:w-4\\/5 {\n    width: 80% !important;\n  }\n\n  .gt-md\\:w-1\\/6 {\n    width: 16.666667% !important;\n  }\n\n  .gt-md\\:w-2\\/6 {\n    width: 33.333333% !important;\n  }\n\n  .gt-md\\:w-3\\/6 {\n    width: 50% !important;\n  }\n\n  .gt-md\\:w-4\\/6 {\n    width: 66.666667% !important;\n  }\n\n  .gt-md\\:w-5\\/6 {\n    width: 83.333333% !important;\n  }\n\n  .gt-md\\:w-1\\/12 {\n    width: 8.33333% !important;\n  }\n\n  .gt-md\\:w-2\\/12 {\n    width: 16.66667% !important;\n  }\n\n  .gt-md\\:w-3\\/12 {\n    width: 25% !important;\n  }\n\n  .gt-md\\:w-4\\/12 {\n    width: 33.33333% !important;\n  }\n\n  .gt-md\\:w-5\\/12 {\n    width: 41.66667% !important;\n  }\n\n  .gt-md\\:w-6\\/12 {\n    width: 50% !important;\n  }\n\n  .gt-md\\:w-7\\/12 {\n    width: 58.33333% !important;\n  }\n\n  .gt-md\\:w-8\\/12 {\n    width: 66.66667% !important;\n  }\n\n  .gt-md\\:w-9\\/12 {\n    width: 75% !important;\n  }\n\n  .gt-md\\:w-10\\/12 {\n    width: 83.33333% !important;\n  }\n\n  .gt-md\\:w-11\\/12 {\n    width: 91.66667% !important;\n  }\n\n  .gt-md\\:w-full {\n    width: 100% !important;\n  }\n\n  .gt-md\\:w-screen {\n    width: 100vw !important;\n  }\n\n  .gt-md\\:z-0 {\n    z-index: 0 !important;\n  }\n\n  .gt-md\\:z-10 {\n    z-index: 10 !important;\n  }\n\n  .gt-md\\:z-20 {\n    z-index: 20 !important;\n  }\n\n  .gt-md\\:z-30 {\n    z-index: 30 !important;\n  }\n\n  .gt-md\\:z-40 {\n    z-index: 40 !important;\n  }\n\n  .gt-md\\:z-50 {\n    z-index: 50 !important;\n  }\n\n  .gt-md\\:z-60 {\n    z-index: 60 !important;\n  }\n\n  .gt-md\\:z-70 {\n    z-index: 70 !important;\n  }\n\n  .gt-md\\:z-80 {\n    z-index: 80 !important;\n  }\n\n  .gt-md\\:z-90 {\n    z-index: 90 !important;\n  }\n\n  .gt-md\\:z-99 {\n    z-index: 99 !important;\n  }\n\n  .gt-md\\:z-999 {\n    z-index: 999 !important;\n  }\n\n  .gt-md\\:z-9999 {\n    z-index: 9999 !important;\n  }\n\n  .gt-md\\:z-99999 {\n    z-index: 99999 !important;\n  }\n\n  .gt-md\\:z-auto {\n    z-index: auto !important;\n  }\n\n  .gt-md\\:-z-1 {\n    z-index: -1 !important;\n  }\n\n  .gt-md\\:gap-0 {\n    grid-gap: 0 !important;\n    gap: 0 !important;\n  }\n\n  .gt-md\\:gap-1 {\n    grid-gap: 0.25rem !important;\n    gap: 0.25rem !important;\n  }\n\n  .gt-md\\:gap-2 {\n    grid-gap: 0.5rem !important;\n    gap: 0.5rem !important;\n  }\n\n  .gt-md\\:gap-3 {\n    grid-gap: 0.75rem !important;\n    gap: 0.75rem !important;\n  }\n\n  .gt-md\\:gap-4 {\n    grid-gap: 1rem !important;\n    gap: 1rem !important;\n  }\n\n  .gt-md\\:gap-5 {\n    grid-gap: 1.25rem !important;\n    gap: 1.25rem !important;\n  }\n\n  .gt-md\\:gap-6 {\n    grid-gap: 1.5rem !important;\n    gap: 1.5rem !important;\n  }\n\n  .gt-md\\:gap-8 {\n    grid-gap: 2rem !important;\n    gap: 2rem !important;\n  }\n\n  .gt-md\\:gap-10 {\n    grid-gap: 2.5rem !important;\n    gap: 2.5rem !important;\n  }\n\n  .gt-md\\:gap-12 {\n    grid-gap: 3rem !important;\n    gap: 3rem !important;\n  }\n\n  .gt-md\\:gap-14 {\n    grid-gap: 3.5rem !important;\n    gap: 3.5rem !important;\n  }\n\n  .gt-md\\:gap-16 {\n    grid-gap: 4rem !important;\n    gap: 4rem !important;\n  }\n\n  .gt-md\\:gap-18 {\n    grid-gap: 4.5rem !important;\n    gap: 4.5rem !important;\n  }\n\n  .gt-md\\:gap-20 {\n    grid-gap: 5rem !important;\n    gap: 5rem !important;\n  }\n\n  .gt-md\\:gap-22 {\n    grid-gap: 5.5rem !important;\n    gap: 5.5rem !important;\n  }\n\n  .gt-md\\:gap-24 {\n    grid-gap: 6rem !important;\n    gap: 6rem !important;\n  }\n\n  .gt-md\\:gap-26 {\n    grid-gap: 6.5rem !important;\n    gap: 6.5rem !important;\n  }\n\n  .gt-md\\:gap-28 {\n    grid-gap: 7rem !important;\n    gap: 7rem !important;\n  }\n\n  .gt-md\\:gap-30 {\n    grid-gap: 7.5rem !important;\n    gap: 7.5rem !important;\n  }\n\n  .gt-md\\:gap-32 {\n    grid-gap: 8rem !important;\n    gap: 8rem !important;\n  }\n\n  .gt-md\\:gap-36 {\n    grid-gap: 9rem !important;\n    gap: 9rem !important;\n  }\n\n  .gt-md\\:gap-40 {\n    grid-gap: 10rem !important;\n    gap: 10rem !important;\n  }\n\n  .gt-md\\:gap-48 {\n    grid-gap: 12rem !important;\n    gap: 12rem !important;\n  }\n\n  .gt-md\\:gap-56 {\n    grid-gap: 14rem !important;\n    gap: 14rem !important;\n  }\n\n  .gt-md\\:gap-64 {\n    grid-gap: 16rem !important;\n    gap: 16rem !important;\n  }\n\n  .gt-md\\:gap-px {\n    grid-gap: 1px !important;\n    gap: 1px !important;\n  }\n\n  .gt-md\\:gap-2px {\n    grid-gap: 2px !important;\n    gap: 2px !important;\n  }\n\n  .gt-md\\:col-gap-0 {\n    grid-column-gap: 0 !important;\n    -moz-column-gap: 0 !important;\n         column-gap: 0 !important;\n  }\n\n  .gt-md\\:col-gap-1 {\n    grid-column-gap: 0.25rem !important;\n    -moz-column-gap: 0.25rem !important;\n         column-gap: 0.25rem !important;\n  }\n\n  .gt-md\\:col-gap-2 {\n    grid-column-gap: 0.5rem !important;\n    -moz-column-gap: 0.5rem !important;\n         column-gap: 0.5rem !important;\n  }\n\n  .gt-md\\:col-gap-3 {\n    grid-column-gap: 0.75rem !important;\n    -moz-column-gap: 0.75rem !important;\n         column-gap: 0.75rem !important;\n  }\n\n  .gt-md\\:col-gap-4 {\n    grid-column-gap: 1rem !important;\n    -moz-column-gap: 1rem !important;\n         column-gap: 1rem !important;\n  }\n\n  .gt-md\\:col-gap-5 {\n    grid-column-gap: 1.25rem !important;\n    -moz-column-gap: 1.25rem !important;\n         column-gap: 1.25rem !important;\n  }\n\n  .gt-md\\:col-gap-6 {\n    grid-column-gap: 1.5rem !important;\n    -moz-column-gap: 1.5rem !important;\n         column-gap: 1.5rem !important;\n  }\n\n  .gt-md\\:col-gap-8 {\n    grid-column-gap: 2rem !important;\n    -moz-column-gap: 2rem !important;\n         column-gap: 2rem !important;\n  }\n\n  .gt-md\\:col-gap-10 {\n    grid-column-gap: 2.5rem !important;\n    -moz-column-gap: 2.5rem !important;\n         column-gap: 2.5rem !important;\n  }\n\n  .gt-md\\:col-gap-12 {\n    grid-column-gap: 3rem !important;\n    -moz-column-gap: 3rem !important;\n         column-gap: 3rem !important;\n  }\n\n  .gt-md\\:col-gap-14 {\n    grid-column-gap: 3.5rem !important;\n    -moz-column-gap: 3.5rem !important;\n         column-gap: 3.5rem !important;\n  }\n\n  .gt-md\\:col-gap-16 {\n    grid-column-gap: 4rem !important;\n    -moz-column-gap: 4rem !important;\n         column-gap: 4rem !important;\n  }\n\n  .gt-md\\:col-gap-18 {\n    grid-column-gap: 4.5rem !important;\n    -moz-column-gap: 4.5rem !important;\n         column-gap: 4.5rem !important;\n  }\n\n  .gt-md\\:col-gap-20 {\n    grid-column-gap: 5rem !important;\n    -moz-column-gap: 5rem !important;\n         column-gap: 5rem !important;\n  }\n\n  .gt-md\\:col-gap-22 {\n    grid-column-gap: 5.5rem !important;\n    -moz-column-gap: 5.5rem !important;\n         column-gap: 5.5rem !important;\n  }\n\n  .gt-md\\:col-gap-24 {\n    grid-column-gap: 6rem !important;\n    -moz-column-gap: 6rem !important;\n         column-gap: 6rem !important;\n  }\n\n  .gt-md\\:col-gap-26 {\n    grid-column-gap: 6.5rem !important;\n    -moz-column-gap: 6.5rem !important;\n         column-gap: 6.5rem !important;\n  }\n\n  .gt-md\\:col-gap-28 {\n    grid-column-gap: 7rem !important;\n    -moz-column-gap: 7rem !important;\n         column-gap: 7rem !important;\n  }\n\n  .gt-md\\:col-gap-30 {\n    grid-column-gap: 7.5rem !important;\n    -moz-column-gap: 7.5rem !important;\n         column-gap: 7.5rem !important;\n  }\n\n  .gt-md\\:col-gap-32 {\n    grid-column-gap: 8rem !important;\n    -moz-column-gap: 8rem !important;\n         column-gap: 8rem !important;\n  }\n\n  .gt-md\\:col-gap-36 {\n    grid-column-gap: 9rem !important;\n    -moz-column-gap: 9rem !important;\n         column-gap: 9rem !important;\n  }\n\n  .gt-md\\:col-gap-40 {\n    grid-column-gap: 10rem !important;\n    -moz-column-gap: 10rem !important;\n         column-gap: 10rem !important;\n  }\n\n  .gt-md\\:col-gap-48 {\n    grid-column-gap: 12rem !important;\n    -moz-column-gap: 12rem !important;\n         column-gap: 12rem !important;\n  }\n\n  .gt-md\\:col-gap-56 {\n    grid-column-gap: 14rem !important;\n    -moz-column-gap: 14rem !important;\n         column-gap: 14rem !important;\n  }\n\n  .gt-md\\:col-gap-64 {\n    grid-column-gap: 16rem !important;\n    -moz-column-gap: 16rem !important;\n         column-gap: 16rem !important;\n  }\n\n  .gt-md\\:col-gap-px {\n    grid-column-gap: 1px !important;\n    -moz-column-gap: 1px !important;\n         column-gap: 1px !important;\n  }\n\n  .gt-md\\:col-gap-2px {\n    grid-column-gap: 2px !important;\n    -moz-column-gap: 2px !important;\n         column-gap: 2px !important;\n  }\n\n  .gt-md\\:row-gap-0 {\n    grid-row-gap: 0 !important;\n    row-gap: 0 !important;\n  }\n\n  .gt-md\\:row-gap-1 {\n    grid-row-gap: 0.25rem !important;\n    row-gap: 0.25rem !important;\n  }\n\n  .gt-md\\:row-gap-2 {\n    grid-row-gap: 0.5rem !important;\n    row-gap: 0.5rem !important;\n  }\n\n  .gt-md\\:row-gap-3 {\n    grid-row-gap: 0.75rem !important;\n    row-gap: 0.75rem !important;\n  }\n\n  .gt-md\\:row-gap-4 {\n    grid-row-gap: 1rem !important;\n    row-gap: 1rem !important;\n  }\n\n  .gt-md\\:row-gap-5 {\n    grid-row-gap: 1.25rem !important;\n    row-gap: 1.25rem !important;\n  }\n\n  .gt-md\\:row-gap-6 {\n    grid-row-gap: 1.5rem !important;\n    row-gap: 1.5rem !important;\n  }\n\n  .gt-md\\:row-gap-8 {\n    grid-row-gap: 2rem !important;\n    row-gap: 2rem !important;\n  }\n\n  .gt-md\\:row-gap-10 {\n    grid-row-gap: 2.5rem !important;\n    row-gap: 2.5rem !important;\n  }\n\n  .gt-md\\:row-gap-12 {\n    grid-row-gap: 3rem !important;\n    row-gap: 3rem !important;\n  }\n\n  .gt-md\\:row-gap-14 {\n    grid-row-gap: 3.5rem !important;\n    row-gap: 3.5rem !important;\n  }\n\n  .gt-md\\:row-gap-16 {\n    grid-row-gap: 4rem !important;\n    row-gap: 4rem !important;\n  }\n\n  .gt-md\\:row-gap-18 {\n    grid-row-gap: 4.5rem !important;\n    row-gap: 4.5rem !important;\n  }\n\n  .gt-md\\:row-gap-20 {\n    grid-row-gap: 5rem !important;\n    row-gap: 5rem !important;\n  }\n\n  .gt-md\\:row-gap-22 {\n    grid-row-gap: 5.5rem !important;\n    row-gap: 5.5rem !important;\n  }\n\n  .gt-md\\:row-gap-24 {\n    grid-row-gap: 6rem !important;\n    row-gap: 6rem !important;\n  }\n\n  .gt-md\\:row-gap-26 {\n    grid-row-gap: 6.5rem !important;\n    row-gap: 6.5rem !important;\n  }\n\n  .gt-md\\:row-gap-28 {\n    grid-row-gap: 7rem !important;\n    row-gap: 7rem !important;\n  }\n\n  .gt-md\\:row-gap-30 {\n    grid-row-gap: 7.5rem !important;\n    row-gap: 7.5rem !important;\n  }\n\n  .gt-md\\:row-gap-32 {\n    grid-row-gap: 8rem !important;\n    row-gap: 8rem !important;\n  }\n\n  .gt-md\\:row-gap-36 {\n    grid-row-gap: 9rem !important;\n    row-gap: 9rem !important;\n  }\n\n  .gt-md\\:row-gap-40 {\n    grid-row-gap: 10rem !important;\n    row-gap: 10rem !important;\n  }\n\n  .gt-md\\:row-gap-48 {\n    grid-row-gap: 12rem !important;\n    row-gap: 12rem !important;\n  }\n\n  .gt-md\\:row-gap-56 {\n    grid-row-gap: 14rem !important;\n    row-gap: 14rem !important;\n  }\n\n  .gt-md\\:row-gap-64 {\n    grid-row-gap: 16rem !important;\n    row-gap: 16rem !important;\n  }\n\n  .gt-md\\:row-gap-px {\n    grid-row-gap: 1px !important;\n    row-gap: 1px !important;\n  }\n\n  .gt-md\\:row-gap-2px {\n    grid-row-gap: 2px !important;\n    row-gap: 2px !important;\n  }\n\n  .gt-md\\:grid-flow-row {\n    grid-auto-flow: row !important;\n  }\n\n  .gt-md\\:grid-flow-col {\n    grid-auto-flow: column !important;\n  }\n\n  .gt-md\\:grid-flow-row-dense {\n    grid-auto-flow: row dense !important;\n  }\n\n  .gt-md\\:grid-flow-col-dense {\n    grid-auto-flow: column dense !important;\n  }\n\n  .gt-md\\:grid-cols-1 {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-10 {\n    grid-template-columns: repeat(10, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-11 {\n    grid-template-columns: repeat(11, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-12 {\n    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-cols-none {\n    grid-template-columns: none !important;\n  }\n\n  .gt-md\\:col-auto {\n    grid-column: auto !important;\n  }\n\n  .gt-md\\:col-span-1 {\n    grid-column: span 1 / span 1 !important;\n  }\n\n  .gt-md\\:col-span-2 {\n    grid-column: span 2 / span 2 !important;\n  }\n\n  .gt-md\\:col-span-3 {\n    grid-column: span 3 / span 3 !important;\n  }\n\n  .gt-md\\:col-span-4 {\n    grid-column: span 4 / span 4 !important;\n  }\n\n  .gt-md\\:col-span-5 {\n    grid-column: span 5 / span 5 !important;\n  }\n\n  .gt-md\\:col-span-6 {\n    grid-column: span 6 / span 6 !important;\n  }\n\n  .gt-md\\:col-span-7 {\n    grid-column: span 7 / span 7 !important;\n  }\n\n  .gt-md\\:col-span-8 {\n    grid-column: span 8 / span 8 !important;\n  }\n\n  .gt-md\\:col-span-9 {\n    grid-column: span 9 / span 9 !important;\n  }\n\n  .gt-md\\:col-span-10 {\n    grid-column: span 10 / span 10 !important;\n  }\n\n  .gt-md\\:col-span-11 {\n    grid-column: span 11 / span 11 !important;\n  }\n\n  .gt-md\\:col-span-12 {\n    grid-column: span 12 / span 12 !important;\n  }\n\n  .gt-md\\:col-start-1 {\n    grid-column-start: 1 !important;\n  }\n\n  .gt-md\\:col-start-2 {\n    grid-column-start: 2 !important;\n  }\n\n  .gt-md\\:col-start-3 {\n    grid-column-start: 3 !important;\n  }\n\n  .gt-md\\:col-start-4 {\n    grid-column-start: 4 !important;\n  }\n\n  .gt-md\\:col-start-5 {\n    grid-column-start: 5 !important;\n  }\n\n  .gt-md\\:col-start-6 {\n    grid-column-start: 6 !important;\n  }\n\n  .gt-md\\:col-start-7 {\n    grid-column-start: 7 !important;\n  }\n\n  .gt-md\\:col-start-8 {\n    grid-column-start: 8 !important;\n  }\n\n  .gt-md\\:col-start-9 {\n    grid-column-start: 9 !important;\n  }\n\n  .gt-md\\:col-start-10 {\n    grid-column-start: 10 !important;\n  }\n\n  .gt-md\\:col-start-11 {\n    grid-column-start: 11 !important;\n  }\n\n  .gt-md\\:col-start-12 {\n    grid-column-start: 12 !important;\n  }\n\n  .gt-md\\:col-start-13 {\n    grid-column-start: 13 !important;\n  }\n\n  .gt-md\\:col-start-auto {\n    grid-column-start: auto !important;\n  }\n\n  .gt-md\\:col-end-1 {\n    grid-column-end: 1 !important;\n  }\n\n  .gt-md\\:col-end-2 {\n    grid-column-end: 2 !important;\n  }\n\n  .gt-md\\:col-end-3 {\n    grid-column-end: 3 !important;\n  }\n\n  .gt-md\\:col-end-4 {\n    grid-column-end: 4 !important;\n  }\n\n  .gt-md\\:col-end-5 {\n    grid-column-end: 5 !important;\n  }\n\n  .gt-md\\:col-end-6 {\n    grid-column-end: 6 !important;\n  }\n\n  .gt-md\\:col-end-7 {\n    grid-column-end: 7 !important;\n  }\n\n  .gt-md\\:col-end-8 {\n    grid-column-end: 8 !important;\n  }\n\n  .gt-md\\:col-end-9 {\n    grid-column-end: 9 !important;\n  }\n\n  .gt-md\\:col-end-10 {\n    grid-column-end: 10 !important;\n  }\n\n  .gt-md\\:col-end-11 {\n    grid-column-end: 11 !important;\n  }\n\n  .gt-md\\:col-end-12 {\n    grid-column-end: 12 !important;\n  }\n\n  .gt-md\\:col-end-13 {\n    grid-column-end: 13 !important;\n  }\n\n  .gt-md\\:col-end-auto {\n    grid-column-end: auto !important;\n  }\n\n  .gt-md\\:grid-rows-1 {\n    grid-template-rows: repeat(1, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-rows-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-rows-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-rows-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-rows-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-rows-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr)) !important;\n  }\n\n  .gt-md\\:grid-rows-none {\n    grid-template-rows: none !important;\n  }\n\n  .gt-md\\:row-auto {\n    grid-row: auto !important;\n  }\n\n  .gt-md\\:row-span-1 {\n    grid-row: span 1 / span 1 !important;\n  }\n\n  .gt-md\\:row-span-2 {\n    grid-row: span 2 / span 2 !important;\n  }\n\n  .gt-md\\:row-span-3 {\n    grid-row: span 3 / span 3 !important;\n  }\n\n  .gt-md\\:row-span-4 {\n    grid-row: span 4 / span 4 !important;\n  }\n\n  .gt-md\\:row-span-5 {\n    grid-row: span 5 / span 5 !important;\n  }\n\n  .gt-md\\:row-span-6 {\n    grid-row: span 6 / span 6 !important;\n  }\n\n  .gt-md\\:row-start-1 {\n    grid-row-start: 1 !important;\n  }\n\n  .gt-md\\:row-start-2 {\n    grid-row-start: 2 !important;\n  }\n\n  .gt-md\\:row-start-3 {\n    grid-row-start: 3 !important;\n  }\n\n  .gt-md\\:row-start-4 {\n    grid-row-start: 4 !important;\n  }\n\n  .gt-md\\:row-start-5 {\n    grid-row-start: 5 !important;\n  }\n\n  .gt-md\\:row-start-6 {\n    grid-row-start: 6 !important;\n  }\n\n  .gt-md\\:row-start-7 {\n    grid-row-start: 7 !important;\n  }\n\n  .gt-md\\:row-start-auto {\n    grid-row-start: auto !important;\n  }\n\n  .gt-md\\:row-end-1 {\n    grid-row-end: 1 !important;\n  }\n\n  .gt-md\\:row-end-2 {\n    grid-row-end: 2 !important;\n  }\n\n  .gt-md\\:row-end-3 {\n    grid-row-end: 3 !important;\n  }\n\n  .gt-md\\:row-end-4 {\n    grid-row-end: 4 !important;\n  }\n\n  .gt-md\\:row-end-5 {\n    grid-row-end: 5 !important;\n  }\n\n  .gt-md\\:row-end-6 {\n    grid-row-end: 6 !important;\n  }\n\n  .gt-md\\:row-end-7 {\n    grid-row-end: 7 !important;\n  }\n\n  .gt-md\\:row-end-auto {\n    grid-row-end: auto !important;\n  }\n\n  .gt-md\\:transform {\n    --transform-translate-x: 0 !important;\n    --transform-translate-y: 0 !important;\n    --transform-rotate: 0 !important;\n    --transform-skew-x: 0 !important;\n    --transform-skew-y: 0 !important;\n    --transform-scale-x: 1 !important;\n    --transform-scale-y: 1 !important;\n    transform: translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y)) !important;\n  }\n\n  .gt-md\\:transform-none {\n    transform: none !important;\n  }\n\n  .gt-md\\:origin-center {\n    transform-origin: center !important;\n  }\n\n  .gt-md\\:origin-top {\n    transform-origin: top !important;\n  }\n\n  .gt-md\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n\n  .gt-md\\:origin-right {\n    transform-origin: right !important;\n  }\n\n  .gt-md\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n\n  .gt-md\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n\n  .gt-md\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n\n  .gt-md\\:origin-left {\n    transform-origin: left !important;\n  }\n\n  .gt-md\\:origin-top-left {\n    transform-origin: top left !important;\n  }\n\n  .gt-md\\:icon-size-12 {\n    width: 12px !important;\n    height: 12px !important;\n    min-width: 12px !important;\n    min-height: 12px !important;\n    font-size: 12px !important;\n    line-height: 12px !important;\n  }\n\n  .gt-md\\:icon-size-12 svg {\n    width: 12px !important;\n    height: 12px !important;\n  }\n\n  .gt-md\\:icon-size-14 {\n    width: 14px !important;\n    height: 14px !important;\n    min-width: 14px !important;\n    min-height: 14px !important;\n    font-size: 14px !important;\n    line-height: 14px !important;\n  }\n\n  .gt-md\\:icon-size-14 svg {\n    width: 14px !important;\n    height: 14px !important;\n  }\n\n  .gt-md\\:icon-size-16 {\n    width: 16px !important;\n    height: 16px !important;\n    min-width: 16px !important;\n    min-height: 16px !important;\n    font-size: 16px !important;\n    line-height: 16px !important;\n  }\n\n  .gt-md\\:icon-size-16 svg {\n    width: 16px !important;\n    height: 16px !important;\n  }\n\n  .gt-md\\:icon-size-18 {\n    width: 18px !important;\n    height: 18px !important;\n    min-width: 18px !important;\n    min-height: 18px !important;\n    font-size: 18px !important;\n    line-height: 18px !important;\n  }\n\n  .gt-md\\:icon-size-18 svg {\n    width: 18px !important;\n    height: 18px !important;\n  }\n\n  .gt-md\\:icon-size-20 {\n    width: 20px !important;\n    height: 20px !important;\n    min-width: 20px !important;\n    min-height: 20px !important;\n    font-size: 20px !important;\n    line-height: 20px !important;\n  }\n\n  .gt-md\\:icon-size-20 svg {\n    width: 20px !important;\n    height: 20px !important;\n  }\n\n  .gt-md\\:icon-size-24 {\n    width: 24px !important;\n    height: 24px !important;\n    min-width: 24px !important;\n    min-height: 24px !important;\n    font-size: 24px !important;\n    line-height: 24px !important;\n  }\n\n  .gt-md\\:icon-size-24 svg {\n    width: 24px !important;\n    height: 24px !important;\n  }\n\n  .gt-md\\:icon-size-32 {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 32px !important;\n    line-height: 32px !important;\n  }\n\n  .gt-md\\:icon-size-32 svg {\n    width: 32px !important;\n    height: 32px !important;\n  }\n\n  .gt-md\\:icon-size-40 {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 40px !important;\n    line-height: 40px !important;\n  }\n\n  .gt-md\\:icon-size-40 svg {\n    width: 40px !important;\n    height: 40px !important;\n  }\n\n  .gt-md\\:icon-size-48 {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    font-size: 48px !important;\n    line-height: 48px !important;\n  }\n\n  .gt-md\\:icon-size-48 svg {\n    width: 48px !important;\n    height: 48px !important;\n  }\n\n  .gt-md\\:icon-size-56 {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    min-height: 56px !important;\n    font-size: 56px !important;\n    line-height: 56px !important;\n  }\n\n  .gt-md\\:icon-size-56 svg {\n    width: 56px !important;\n    height: 56px !important;\n  }\n\n  .gt-md\\:icon-size-64 {\n    width: 64px !important;\n    height: 64px !important;\n    min-width: 64px !important;\n    min-height: 64px !important;\n    font-size: 64px !important;\n    line-height: 64px !important;\n  }\n\n  .gt-md\\:icon-size-64 svg {\n    width: 64px !important;\n    height: 64px !important;\n  }\n\n  .gt-md\\:icon-size-72 {\n    width: 72px !important;\n    height: 72px !important;\n    min-width: 72px !important;\n    min-height: 72px !important;\n    font-size: 72px !important;\n    line-height: 72px !important;\n  }\n\n  .gt-md\\:icon-size-72 svg {\n    width: 72px !important;\n    height: 72px !important;\n  }\n\n  .gt-md\\:icon-size-80 {\n    width: 80px !important;\n    height: 80px !important;\n    min-width: 80px !important;\n    min-height: 80px !important;\n    font-size: 80px !important;\n    line-height: 80px !important;\n  }\n\n  .gt-md\\:icon-size-80 svg {\n    width: 80px !important;\n    height: 80px !important;\n  }\n\n  .gt-md\\:icon-size-88 {\n    width: 88px !important;\n    height: 88px !important;\n    min-width: 88px !important;\n    min-height: 88px !important;\n    font-size: 88px !important;\n    line-height: 88px !important;\n  }\n\n  .gt-md\\:icon-size-88 svg {\n    width: 88px !important;\n    height: 88px !important;\n  }\n\n  .gt-md\\:icon-size-96 {\n    width: 96px !important;\n    height: 96px !important;\n    min-width: 96px !important;\n    min-height: 96px !important;\n    font-size: 96px !important;\n    line-height: 96px !important;\n  }\n\n  .gt-md\\:icon-size-96 svg {\n    width: 96px !important;\n    height: 96px !important;\n  }\n}\n"
  },
  {
    "path": "webapp/frontend/src/styles/themes.scss",
    "content": "// @formatter:off\n\n// -----------------------------------------------------------------------------------------------------\n// @ Treo themes map. Do NOT rename the '$treo-themes' variable!!!\n//   This file meant to be imported more than once by @treo, do NOT put anything heavy here!\n//   The map contains Angular Material themes that will be generated for your app.\n//\n// @ Each key represents a class name that can be added to the 'body' tag to enable the theme globally.\n//   If added to other elements, themes will be applied to that element's scope only.\n//   Keys must start with 'treo-theme-'.\n//\n// @ Each value is an Angular Material theme, generated and modified by using 'treo-light-theme' or\n//   'treo-dark-theme' functions which uses 'mat-light-theme' and 'mat-dark-theme' functions respectively\n//   to generate the themes.\n//\n// @ 'treo-palette' values are coming from '$treo-color' map which can be found in\n//   '@treo/styles/utilities/_colors.scss'.\n// -----------------------------------------------------------------------------------------------------\n$treo-themes: (\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ User themes - Add/Remove/Modify these for your own likings and needs\n    // -----------------------------------------------------------------------------------------------------\n\n    // Dark theme\n    'treo-theme-dark': treo-dark-theme(\n            treo-palette('teal'),\n            treo-palette('pink', 500),\n            treo-palette('red', 400)\n    ),\n\n    // Light theme\n    'treo-theme-light': treo-light-theme(\n            treo-palette('indigo', 600),\n            treo-palette('cool-gray', 800),\n            treo-palette('red', 700)\n    ),\n\n    // -----------------------------------------------------------------------------------------------------\n    // @ Dark & Light themes - DO NOT REMOVE\n    //   These are generic themes which are useful if you want to adjust the theming of certain container\n    //   or an element independently from the app's global theme.\n    //\n    // @ Example: If you want to have a dark toolbar in your light themed app, adding '.theme-dark' class\n    //   to the toolbar will apply a dark theme to every element that stays inside it without needing any\n    //   extra work. Without the '.theme-dark' class, adding just a dark background color won't automatically\n    //   make the toolbar elements colored correctly, which will break the styling of the toolbar.\n    //\n    // @ Important note: '.theme-light' classes will always override '.theme-dark' classes because how CSS\n    //   works. Since 'theme-light' definition comes after the 'theme-dark' definition, CSS classes and\n    //   helpers will also be generated with that order which will cause that behavior. To overcome this\n    //   issue, never nest '.theme-light' and '.theme-dark' classes. Use them as siblings!\n    // -----------------------------------------------------------------------------------------------------\n\n    // Dark theme - DO NOT REMOVE\n    'theme-dark': treo-dark-theme(\n            treo-palette('white'),\n            treo-palette('gray', 800),\n            treo-palette('red', 800)\n    ),\n\n    // Light theme - DO NOT REMOVE\n    'theme-light': treo-light-theme(\n            treo-palette('black'),\n            treo-palette('gray', 800),\n            treo-palette('red', 800)\n    )\n);\n"
  },
  {
    "path": "webapp/frontend/src/styles/vendors.scss",
    "content": "// -----------------------------------------------------------------------------------------------------\n// @ You can use this file to import styles from third party libraries.\n//\n// @ It's important to put them here because anything imported from this file can be overridden by\n//   Treo which allows having out-of-the-box support for certain libraries. They can also be\n//   overridden from 'styles.scss' file which allows you to override and make any third party library\n//   that Treo doesn't support out-of-the-box visually compatible with your application.\n// -----------------------------------------------------------------------------------------------------\n\n// Perfect scrollbar\n@import '~perfect-scrollbar/css/perfect-scrollbar.css';\n\n// Quill\n@import '~quill/dist/quill.snow.css';\n"
  },
  {
    "path": "webapp/frontend/src/tailwind/config.js",
    "content": "const forEach = require('lodash/forEach');\nconst isObject = require('lodash/isObject');\nconst {colors} = require('tailwindcss/defaultTheme');\n\nmodule.exports = {\n\n    // PurgeCSS\n    purge: false,\n\n    // Options\n    important: true,\n\n    // Theme\n    theme: {\n        colors  : {\n            current    : 'currentColor',\n            transparent: 'transparent',\n            white      : '#FFFFFF',\n            black      : '#000000',\n            gray       : {\n                '50'   : '#F9FAFB',\n                '100'  : '#F4F5F7',\n                '200'  : '#E5E7EB',\n                '300'  : '#D2D6DC',\n                '400'  : '#9FA6B2',\n                '500'  : '#6B7280',\n                default: '#6B7280',\n                '600'  : '#4B5563',\n                '700'  : '#374151',\n                '800'  : '#252F3F',\n                '900'  : '#161E2E'\n            },\n            'cool-gray': {\n                '50'   : '#FBFDFE',\n                '100'  : '#F1F5F9',\n                '200'  : '#E2E8F0',\n                '300'  : '#CFD8E3',\n                '400'  : '#97A6BA',\n                '500'  : '#64748B',\n                default: '#64748B',\n                '600'  : '#475569',\n                '700'  : '#364152',\n                '800'  : '#27303F',\n                '900'  : '#1A202E'\n            },\n            red        : {\n                '50'   : '#FDF2F2',\n                '100'  : '#FDE8E8',\n                '200'  : '#FBD5D5',\n                '300'  : '#F8B4B4',\n                '400'  : '#F98080',\n                '500'  : '#F05252',\n                default: '#F05252',\n                '600'  : '#E02424',\n                '700'  : '#C81E1E',\n                '800'  : '#9B1C1C',\n                '900'  : '#771D1D'\n            },\n            orange     : {\n                '50'   : '#FFF8F1',\n                '100'  : '#FEECDC',\n                '200'  : '#FCD9BD',\n                '300'  : '#FDBA8C',\n                '400'  : '#FF8A4C',\n                '500'  : '#FF5A1F',\n                default: '#FF5A1F',\n                '600'  : '#D03801',\n                '700'  : '#B43403',\n                '800'  : '#8A2C0D',\n                '900'  : '#771D1D'\n            },\n            yellow     : {\n                '50'   : '#FDFDEA',\n                '100'  : '#FDF6B2',\n                '200'  : '#FCE96A',\n                '300'  : '#FACA15',\n                '400'  : '#E3A008',\n                '500'  : '#C27803',\n                default: '#C27803',\n                '600'  : '#9F580A',\n                '700'  : '#8E4B10',\n                '800'  : '#723B13',\n                '900'  : '#633112'\n            },\n            green      : {\n                '50'   : '#F3FAF7',\n                '100'  : '#DEF7EC',\n                '200'  : '#BCF0DA',\n                '300'  : '#84E1BC',\n                '400'  : '#31C48D',\n                '500'  : '#0E9F6E',\n                default: '#0E9F6E',\n                '600'  : '#057A55',\n                '700'  : '#046C4E',\n                '800'  : '#03543F',\n                '900'  : '#014737'\n            },\n            teal       : {\n                '50'   : '#EDFAFA',\n                '100'  : '#D5F5F6',\n                '200'  : '#AFECEF',\n                '300'  : '#7EDCE2',\n                '400'  : '#16BDCA',\n                '500'  : '#0694A2',\n                default: '#0694A2',\n                '600'  : '#047481',\n                '700'  : '#036672',\n                '800'  : '#05505C',\n                '900'  : '#014451'\n            },\n            blue       : {\n                '50'   : '#EBF5FF',\n                '100'  : '#E1EFFE',\n                '200'  : '#C3DDFD',\n                '300'  : '#A4CAFE',\n                '400'  : '#76A9FA',\n                '500'  : '#3F83F8',\n                default: '#3F83F8',\n                '600'  : '#1C64F2',\n                '700'  : '#1A56DB',\n                '800'  : '#1E429F',\n                '900'  : '#233876'\n            },\n            indigo     : {\n                '50'   : '#F0F5FF',\n                '100'  : '#E5EDFF',\n                '200'  : '#CDDBFE',\n                '300'  : '#B4C6FC',\n                '400'  : '#8DA2FB',\n                '500'  : '#6875F5',\n                default: '#6875F5',\n                '600'  : '#5850EC',\n                '700'  : '#5145CD',\n                '800'  : '#42389D',\n                '900'  : '#362F78'\n            },\n            purple     : {\n                '50'   : '#F6F5FF',\n                '100'  : '#EDEBFE',\n                '200'  : '#DCD7FE',\n                '300'  : '#CABFFD',\n                '400'  : '#AC94FA',\n                '500'  : '#9061F9',\n                default: '#9061F9',\n                '600'  : '#7E3AF2',\n                '700'  : '#6C2BD9',\n                '800'  : '#5521B5',\n                '900'  : '#4A1D96'\n            },\n            pink       : {\n                '50'   : '#FDF2F8',\n                '100'  : '#FCE8F3',\n                '200'  : '#FAD1E8',\n                '300'  : '#F8B4D9',\n                '400'  : '#F17EB8',\n                '500'  : '#E74694',\n                default: '#E74694',\n                '600'  : '#D61F69',\n                '700'  : '#BF125D',\n                '800'  : '#99154B',\n                '900'  : '#751A3D'\n            }\n        },\n        fontSize: {\n            'xs'  : '0.625rem',\n            'sm'  : '0.75rem',\n            'md'  : '0.8125rem',\n            'base': '0.875rem',\n            'lg'  : '1rem',\n            'xl'  : '1.125rem',\n            '2xl' : '1.25rem',\n            '3xl' : '1.5rem',\n            '4xl' : '2rem',\n            '5xl' : '2.25rem',\n            '6xl' : '2.5rem',\n            '7xl' : '3rem',\n            '8xl' : '4rem',\n            '9xl' : '6rem',\n            '10xl': '8rem'\n        },\n        screens : {\n            // XSmall\n            'xs'   : {\n                min: '0',\n                max: '599px'\n            },\n            // Small\n            'sm'   : {\n                min: '600px',\n                max: '959px'\n            },\n            // Medium\n            'md'   : {\n                min: '960px',\n                max: '1279px'\n            },\n            // Large\n            'lg'   : {\n                min: '1280px',\n                max: '1439px'\n            },\n            // XLarge\n            'xl'   : {\n                min: '1440px'\n            },\n            // Less than Medium\n            'lt-md': {\n                max: '959px'\n            },\n            // Less than Large\n            'lt-lg': {\n                max: '1279px'\n            },\n            // Less than XLarge\n            'lt-xl': {\n                max: '1439px'\n            },\n            // Greater than XSmall\n            'gt-xs': {\n                min: '600px'\n            },\n            // Greater than Small\n            'gt-sm': {\n                min: '960px'\n            },\n            // Greater than Medium\n            'gt-md': {\n                min: '1280px'\n            }\n        },\n        sizes   : theme => ({\n            // Sizes are used in width & height helpers\n            ...theme('spacing'),\n            '50'   : '12.5rem',\n            '60'   : '15rem',\n            '80'   : '20rem',\n            '90'   : '24rem',\n            '100'  : '25rem',\n            '120'  : '30rem',\n            '128'  : '32rem',\n            '140'  : '35rem',\n            '160'  : '40rem',\n            '180'  : '45rem',\n            '192'  : '48rem',\n            '200'  : '50rem',\n            '240'  : '60rem',\n            '256'  : '64rem',\n            '280'  : '70rem',\n            '320'  : '80rem',\n            '360'  : '90rem',\n            '400'  : '100rem',\n            '480'  : '120rem',\n            '1/2'  : '50%',\n            '1/3'  : '33.33333%',\n            '2/3'  : '66.66667%',\n            '1/4'  : '25%',\n            '2/4'  : '50%',\n            '3/4'  : '75%',\n            '1/5'  : '20%',\n            '2/5'  : '40%',\n            '3/5'  : '60%',\n            '4/5'  : '80%',\n            '1/12' : '8.33333%',\n            '2/12' : '16.66667%',\n            '3/12' : '25%',\n            '4/12' : '33.33333%',\n            '5/12' : '41.66667%',\n            '6/12' : '50%',\n            '7/12' : '58.33333%',\n            '8/12' : '66.66667%',\n            '9/12' : '75%',\n            '10/12': '83.33333%',\n            '11/12': '91.66667%'\n        }),\n        // Extending default configurations\n        extend  : {\n            /*\n                // Once TailwindCSS adds the above colors to their default config,\n                // this code will be used for generating the default colors\n                // and the theme.colors object will be removed from above\n                colors    : theme => {\n                    // Extend the colors to add 'default' values that uses the hue 500.\n                    // This will generate utilities like 'text-indigo' or 'bg-red',\n                    // which will be defaulted to the hue 500 of that color palette.\n                    const defaultColors = colors;\n\n                    forEach(defaultColors, (value, key) => {\n                        if ( isObject(value) )\n                        {\n                            defaultColors[key]['default'] = defaultColors[key]['500']\n                        }\n                    });\n                    return defaultColors;\n                },\n            */\n\n            /*\n                // Use this map to define custom contrasting colors for the custom colors\n                colorContrasts: theme => ({\n                    brand-color: {\n                        50     : theme('colors.brand-color.900'), // Use the 900 from the 'brand-color' palette as the contrasting color of the 50\n                        100    : theme('colors.brand-color.900'),\n                        200    : theme('colors.brand-color.900'),\n                        300    : theme('colors.brand-color.900'),\n                        400    : theme('colors.brand-color.900'),\n                        500    : theme('colors.brand-color.900'),\n                        600    : theme('colors.brand-color.50'),\n                        700    : theme('colors.brand-color.50'),\n                        800    : theme('colors.brand-color.50'),\n                        900    : theme('colors.brand-color.50'),\n                        default: theme('colors.brand-color.900')\n                    }\n                },\n            */\n\n            /*\n                // Use this map to extend the iconSize utility sizes\n                iconSize: {\n                    8: '8px',\n                    10: '10px'\n                },\n            */\n\n            boxShadow : {\n                solid: '0 0 0 2px currentColor'\n            },\n            flex      : {\n                '0': '0 0 auto'\n            },\n            fontFamily: {\n                sans: [\n                    'Inter',\n                    'system-ui',\n                    '-apple-system',\n                    'BlinkMacSystemFont',\n                    '\"Segoe UI\"',\n                    'Roboto',\n                    '\"Helvetica Neue\"',\n                    'Arial',\n                    '\"Noto Sans\"',\n                    'sans-serif',\n                    '\"Apple Color Emoji\"',\n                    '\"Segoe UI Emoji\"',\n                    '\"Segoe UI Symbol\"',\n                    '\"Noto Color Emoji\"'\n                ],\n                mono: [\n                    '\"IBM Plex Mono\"',\n                    'Menlo',\n                    'Monaco',\n                    'Consolas',\n                    '\"Liberation Mono\"',\n                    '\"Courier New\"',\n                    'monospace'\n                ]\n            },\n            opacity   : {\n                12: '0.12',\n                38: '0.38',\n                54: '0.54',\n                70: '0.70',\n                84: '0.84'\n            },\n            rotate    : {\n                '-270': '270deg',\n                '15'  : '15deg',\n                '30'  : '30deg',\n                '60'  : '60deg',\n                '270' : '270deg'\n            },\n            spacing   : {\n                '2px': '2px',\n                '14' : '3.5rem',\n                '18' : '4.5rem',\n                '22' : '5.5rem',\n                '26' : '6.5rem',\n                '28' : '7rem',\n                '30' : '7.5rem',\n                '36' : '9rem'\n            },\n            zIndex    : {\n                '-1'   : -1,\n                '60'   : 60,\n                '70'   : 70,\n                '80'   : 80,\n                '90'   : 90,\n                '99'   : 99,\n                '999'  : 999,\n                '9999' : 9999,\n                '99999': 99999\n            },\n            maxHeight : theme => ({\n                none: 'none',\n                ...theme('sizes')\n            }),\n            minHeight : theme => ({\n                ...theme('sizes')\n            }),\n            height    : theme => ({\n                ...theme('sizes')\n            }),\n            maxWidth  : theme => ({\n                screen: '100vw',\n                ...theme('sizes')\n            }),\n            minWidth  : theme => ({\n                screen: '100vw',\n                ...theme('sizes')\n            }),\n            width     : theme => ({\n                ...theme('sizes')\n            })\n        }\n    },\n\n    // Variants\n    variants: {\n        backgroundColor         : ['dark-light'],\n        borderColor             : ['dark-light'],\n        borderWidth             : ['responsive', 'first', 'last'],\n        cursor                  : [],\n        fontFamily              : [],\n        fontSmoothing           : [],\n        fontWeight              : ['responsive'],\n        iconSize                : ['responsive'],\n        resize                  : [],\n        textColor               : ['dark-light'],\n        scale                   : [],\n        rotate                  : [],\n        translate               : [],\n        skew                    : [],\n        transitionProperty      : [],\n        transitionTimingFunction: [],\n        transitionDuration      : [],\n        transitionDelay         : []\n    },\n\n    // Core plugins\n    corePlugins: {\n        container       : false,\n        clear           : false,\n        float           : false,\n        placeholderColor: false\n    },\n\n    // Custom plugins\n    plugins: [\n\n        // Custom plugins required by Treo\n        ...require('../@treo/tailwind/plugins')\n\n        // Other third party and custom plugins can be required here\n        // ...\n    ]\n};\n"
  },
  {
    "path": "webapp/frontend/src/tailwind/main.css",
    "content": "/* ----------------------------------------------------------------------------------------------------- */\n/* This injects Tailwind's component classes and any component classes registered by plugins.\n/* ----------------------------------------------------------------------------------------------------- */\n@tailwind components;\n\n\n/* ----------------------------------------------------------------------------------------------------- */\n/* Use custom @apply directives here to inline any existing utility classes into your own custom CSS.\n/* ----------------------------------------------------------------------------------------------------- */\n/**\n * .btn {\n *   @apply font-bold py-2 px-4 rounded;\n * }\n */\n\n\n/* ----------------------------------------------------------------------------------------------------- */\n/* This injects Tailwind's utility classes and any utility classes registered by plugins.\n/* ----------------------------------------------------------------------------------------------------- */\n@tailwind utilities;\n\n\n/* ----------------------------------------------------------------------------------------------------- */\n/* Use custom @variant directives here to build them.\n/* ----------------------------------------------------------------------------------------------------- */\n@variants dark-light {}\n\n\n/* ----------------------------------------------------------------------------------------------------- */\n/*  Use this directive to control where Tailwind injects the responsive variations of each utility.\n/*  If omitted, Tailwind will append these classes to the very end of your stylesheet by default.\n/* ----------------------------------------------------------------------------------------------------- */\n@tailwind screens;\n"
  },
  {
    "path": "webapp/frontend/src/test.ts",
    "content": "// This file is required by karma.conf.js and loads recursively all the .spec and framework files\n\nimport 'zone.js/dist/zone-testing';\nimport { getTestBed } from '@angular/core/testing';\nimport { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';\n\ndeclare const require: {\n    context(path: string, deep?: boolean, filter?: RegExp): {\n        keys(): string[];\n        <T>(id: string): T;\n    };\n};\n\n// First, initialize the Angular testing environment.\ngetTestBed().initTestEnvironment(\n    BrowserDynamicTestingModule,\n    platformBrowserDynamicTesting()\n);\n\n// Then we find all the tests.\nconst context = require.context('./', true, /\\.spec\\.ts$/);\n\n// And load the modules.\ncontext.keys().map(context);\n"
  },
  {
    "path": "webapp/frontend/tsconfig.app.json",
    "content": "{\n    \"extends\": \"./tsconfig.json\",\n    \"compilerOptions\": {\n        \"outDir\": \"./out-tsc/app\",\n        \"types\": []\n    },\n    \"files\": [\n        \"src/main.ts\",\n        \"src/polyfills.ts\"\n    ],\n    \"include\": [\n        \"src/**/*.d.ts\"\n    ],\n    \"exclude\": [\n        \"src/tailwind/**\"\n    ]\n}\n"
  },
  {
    "path": "webapp/frontend/tsconfig.json",
    "content": "{\n    \"compileOnSave\": false,\n    \"compilerOptions\": {\n        \"allowSyntheticDefaultImports\": true,\n        \"baseUrl\": \"./src\",\n        \"outDir\": \"./dist/out-tsc\",\n        \"sourceMap\": true,\n        \"declaration\": false,\n        \"downlevelIteration\": true,\n        \"experimentalDecorators\": true,\n        \"module\": \"esnext\",\n        \"moduleResolution\": \"node\",\n        \"importHelpers\": true,\n        \"target\": \"es2015\",\n        \"typeRoots\": [\n            \"node_modules/@types\"\n        ],\n        \"lib\": [\n            \"es2018\",\n            \"dom\"\n        ]\n    },\n    \"angularCompilerOptions\": {\n        \"fullTemplateTypeCheck\": true,\n        \"strictInjectionParameters\": true\n    }\n}\n"
  },
  {
    "path": "webapp/frontend/tsconfig.spec.json",
    "content": "{\n    \"extends\": \"./tsconfig.json\",\n    \"compilerOptions\": {\n        \"outDir\": \"./out-tsc/spec\",\n        \"types\": [\n            \"jasmine\",\n            \"node\"\n        ]\n    },\n    \"files\": [\n        \"src/test.ts\",\n        \"src/polyfills.ts\"\n    ],\n    \"include\": [\n        \"src/**/*.spec.ts\",\n        \"src/**/*.d.ts\"\n    ]\n}\n"
  },
  {
    "path": "webapp/frontend/tslint.json",
    "content": "// @formatter:off\n{\n    \"extends\": \"tslint:recommended\",\n    \"rules\": {\n        \"array-type\": false,\n        \"arrow-parens\": false,\n        \"deprecation\": {\n            \"severity\": \"warning\"\n        },\n        \"component-class-suffix\": true,\n        \"contextual-lifecycle\": true,\n        \"directive-class-suffix\": true,\n        \"directive-selector\": [\n            true,\n            \"attribute\",\n            [\"treo\", \"\"],\n            \"camelCase\"\n        ],\n        \"component-selector\": [\n            true,\n            \"element\",\n            \"attribute\",\n            [\"treo\", \"\"],\n            [\"kebab-case\", \"camelCase\"]\n        ],\n        \"import-blacklist\": [\n            true,\n            \"rxjs/Rx\"\n        ],\n        \"interface-name\": false,\n        \"max-classes-per-file\": false,\n        \"max-line-length\": [\n            true,\n            {\n                \"limit\": 180,\n                \"ignore-pattern\": \"^import |^export | implements\"\n            }\n        ],\n        \"member-access\": false,\n        \"member-ordering\": [\n            true,\n            {\n                \"order\": [\n                    \"static-field\",\n                    \"instance-field\",\n                    \"static-method\",\n                    \"instance-method\"\n                ]\n            }\n        ],\n        \"no-consecutive-blank-lines\": false,\n        \"no-console\": [\n            true,\n            \"debug\",\n            \"info\",\n            \"time\",\n            \"timeEnd\",\n            \"trace\"\n        ],\n        \"no-empty\": false,\n        \"no-inferrable-types\": [\n            true,\n            \"ignore-params\"\n        ],\n        \"no-non-null-assertion\": true,\n        \"no-string-literal\": false,\n        \"no-switch-case-fall-through\": true,\n        \"no-trailing-whitespace\": false,\n        \"no-var-requires\": false,\n        \"object-literal-shorthand\": false,\n        \"object-literal-sort-keys\": false,\n        \"one-line\": false,\n        \"ordered-imports\": false,\n        \"quotemark\": [\n            true,\n            \"single\"\n        ],\n        \"typedef\": [\n            true,\n            \"call-signature\",\n            \"property-declaration\"\n        ],\n        \"trailing-comma\": false,\n        \"no-conflicting-lifecycle\": true,\n        \"no-host-metadata-property\": true,\n        \"no-input-rename\": true,\n        \"no-inputs-metadata-property\": true,\n        \"no-output-native\": true,\n        \"no-output-on-prefix\": true,\n        \"no-output-rename\": true,\n        \"no-outputs-metadata-property\": true,\n        \"template-banana-in-box\": true,\n        \"template-no-negated-async\": true,\n        \"use-lifecycle-interface\": true,\n        \"use-pipe-transform-interface\": true,\n        \"variable-name\": [\n            true,\n            \"ban-keywords\",\n            \"check-format\",\n            \"allow-pascal-case\",\n            \"allow-leading-underscore\"\n        ]\n    },\n    \"rulesDirectory\": [\n        \"codelyzer\"\n    ]\n}\n"
  }
]