diff --git a/.github/actions/publish-docker-images/action.yaml b/.github/actions/publish-docker-images/action.yaml new file mode 100644 index 000000000..7fd5f5445 --- /dev/null +++ b/.github/actions/publish-docker-images/action.yaml @@ -0,0 +1,94 @@ +name: 'Publish Docker Images' +description: 'Publishes the Docker Images' +inputs: + dockerfile: + description: 'Dockerfile to build' + required: true + tag: + description: 'The Tag for the Docker image' + required: true + version_tag: + description: 'Specific version tag' + required: false + major_version_tag: + description: 'Major version tag' + required: false + secret_docker_username: + description: "Docker username" + required: true + secret_docker_password: + description: "Docker password" + required: true + secret_github_package: + description: "Github Package Secret" + required: true +runs: + using: "composite" + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + with: + platforms: linux/amd64,linux/arm64,linux/arm/v7 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + platforms: linux/amd64,linux/arm64,linux/arm/v7 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ inputs.secret_docker_username }} + password: ${{ inputs.secret_docker_password }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ inputs.secret_github_package }} + + - name: Prepare env + run: | + echo "BUILD_VERSION=${GITHUB_RUN_NUMBER}-${GITHUB_RUN_ID}" >> $GITHUB_ENV + shell: bash + + - name: Build & Push Tag to Package Repositories + if: inputs.version_tag == '' + id: docker_build_1 + uses: docker/build-push-action@v3 + with: + push: true + file: ./docker/${{ inputs.dockerfile }} + platforms: linux/amd64,linux/arm64,linux/arm/v7 + build-args: VERSION=${{ env.BUILD_VERSION }} + tags: | + ${{ inputs.secret_docker_username }}/peloton-to-garmin:${{ inputs.tag }} + ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ inputs.tag }} + + - name: Image digest + if: inputs.version_tag == '' + run: echo ${{ steps.docker_build_1.outputs.digest }} + shell: bash + + - name: Build & Push Version Tags to Package Repositories + if: inputs.version_tag != '' + id: docker_build_2 + uses: docker/build-push-action@v3 + with: + push: true + file: ./docker/${{ inputs.dockerfile }} + platforms: linux/amd64,linux/arm64,linux/arm/v7 + build-args: VERSION=${{ env.BUILD_VERSION }} + tags: | + ${{ inputs.secret_docker_username }}/peloton-to-garmin:${{ inputs.tag }} + ${{ inputs.secret_docker_username }}/peloton-to-garmin:${{ inputs.version_tag }} + ${{ inputs.secret_docker_username }}/peloton-to-garmin:${{ inputs.major_version_tag }} + ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ inputs.tag }} + ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ inputs.version_tag }} + ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ inputs.major_version_tag }} + + - name: Image digest + if: inputs.version_tag != '' + run: echo ${{ steps.docker_build_2.outputs.digest }} + shell: bash diff --git a/.github/actions/publish-ui-dist/action.yaml b/.github/actions/publish-ui-dist/action.yaml new file mode 100644 index 000000000..8ef12a6b9 --- /dev/null +++ b/.github/actions/publish-ui-dist/action.yaml @@ -0,0 +1,63 @@ +name: 'Publish UI Distribution' +description: 'Publishes the UI Distribution' +inputs: + dotnet-version: + description: 'Version of dotnet to install' + required: true + framework: + description: 'DotNet Framework' + required: true + os: + description: 'The OS we are running on' + required: true +outputs: + artifact: + description: 'Path to the published artifact' + value: ${{ github.workspace }}/src/ClientUI/bin/Release/${{ inputs.framework }}/${{ inputs.os }} +runs: + using: "composite" + steps: + - name: Setup .NET Core SDK ${{ inputs.dotnet-version }} + uses: actions/setup-dotnet@v3 + with: + dotnet-version: ${{ inputs.dotnet-version }} + + - name: List MAUI Workloads + run: dotnet workload list + shell: pwsh + + - name: Prepare env + run: | + echo "BUILD_VERSION=$Env:GITHUB_RUN_NUMBER-$Env:GITHUB_RUN_ID" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append + echo "RUNNER_TOOL_CACHE=$Env:RUNNER_TOOL_CACHE" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append + shell: pwsh + + - name: Publish ${{ inputs.os }} + run: dotnet publish ${{ github.workspace }}/src/ClientUI/ClientUI.csproj -c Release -f ${{ inputs.framework }} -p:RuntimeIdentifierOverride=${{ inputs.os }} -p:PublishSingleFile=true -p:SelfContained=true + shell: pwsh + + - name: Rename Config + run: Rename-Item ${{ github.workspace }}/src/ClientUI/bin/Release/${{ inputs.framework }}/${{ inputs.os }}/configuration.example.json -NewName configuration.local.json + shell: pwsh + + - name: Remove nested Publish Dir + run: Remove-Item ${{ github.workspace }}/src/ClientUI/bin/Release/${{ inputs.framework }}/${{ inputs.os }}/publish -Recurse + shell: pwsh + + # Create Build Artifact + - name: Upload Artifact ui_${{ inputs.os }}_${{ env.BUILD_VERSION }} + uses: actions/upload-artifact@v3 + with: + name: ui_${{ inputs.os }}_${{ env.BUILD_VERSION }} + path: ${{ github.workspace }}/src/ClientUI/bin/Release/${{ inputs.framework }}/${{ inputs.os }} + + +# Installed Workload Id Manifest Version Installation Source +# --------------------------------------------------------------------- +# maui-android 7.0.92/7.0.100 VS 17.7.34031.279 +# android 33.0.68/7.0.100 VS 17.7.34031.279 +# ios 16.4.7098/7.0.100 VS 17.7.34031.279 +# maui-ios 7.0.92/7.0.100 VS 17.7.34031.279 +# maui-windows 7.0.92/7.0.100 VS 17.7.34031.279 +# maui-maccatalyst 7.0.92/7.0.100 VS 17.7.34031.279 +# maccatalyst 16.4.7098/7.0.100 VS 17.7.34031.279 \ No newline at end of file diff --git a/.github/workflows/docker_latest.yml b/.github/workflows/docker_latest.yml deleted file mode 100644 index 4b8330d9e..000000000 --- a/.github/workflows/docker_latest.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Publish Docker Latest - -on: - workflow_dispatch: - push: - branches: - - master - paths: - - 'src/**' - - 'docker/**' - - 'PelotonToGarmin.sln' - - 'configuration.example.json' - - '.github/workflows/docker_latest.yml' - -jobs: - - create_docker_images: - name: Publish Docker Images - Latest - runs-on: ubuntu-latest - strategy: - matrix: - dockerfile: ['Dockerfile.console', 'Dockerfile.api', 'Dockerfile.webui'] - include: - - dockerfile: 'Dockerfile.console' - tag: 'console-latest' - - dockerfile: 'Dockerfile.api' - tag: 'api-latest' - - dockerfile: 'Dockerfile.webui' - tag: 'webui-latest' - - steps: - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - with: - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GH_PACKAGE_SECRET }} - - - name: Prepare env - run: | - echo "BUILD_VERSION=${GITHUB_RUN_NUMBER}-${GITHUB_RUN_ID}" >> $GITHUB_ENV - - - name: Build & Push to Package Repositories - id: docker_build - uses: docker/build-push-action@v3 - with: - push: true - file: ./docker/${{ matrix.dockerfile }} - platforms: linux/amd64,linux/arm64,linux/arm/v7 - build-args: VERSION=${{ env.BUILD_VERSION }} - tags: | - ${{ secrets.DOCKER_USERNAME }}/peloton-to-garmin:${{ matrix.tag }} - ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ matrix.tag }} - - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml deleted file mode 100644 index 76f9c2a90..000000000 --- a/.github/workflows/jekyll-gh-pages.yml +++ /dev/null @@ -1,52 +0,0 @@ -# Sample workflow for building and deploying a Jekyll site to GitHub Pages -name: Deploy Jekyll with GitHub Pages dependencies preinstalled - -on: - # Runs on pushes targeting the default branch - push: - branches: ["master"] - paths: - - 'docs/**' - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow one concurrent deployment -concurrency: - group: "pages" - cancel-in-progress: true - -jobs: - # Build job - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Setup Pages - uses: actions/configure-pages@v2 - - name: Build with Jekyll - uses: actions/jekyll-build-pages@v1 - with: - source: ./docs - destination: ./_site - - name: Upload artifact - uses: actions/upload-pages-artifact@v1 - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v1 diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index 7e5ef30ac..9f744e6d1 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -8,17 +8,17 @@ on: jobs: build-and-test: - - runs-on: ${{ matrix.os }} strategy: matrix: - dotnet: [ '6.0'] - os: [ubuntu-latest, windows-latest, macos-latest] + dotnet: ['7.0'] + os: [windows-latest] + + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - name: Setup .NET Core SDK ${{ matrix.dotnet }} + - name: Install dotnet uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ matrix.dotnet }} @@ -35,122 +35,49 @@ jobs: - name: Test run: dotnet test - compile-distro-console: - name: Compile Distro + publish-ui-dist: + name: Publish UI Distribution runs-on: 'windows-latest' needs: build-and-test strategy: - max-parallel: 1 matrix: - dotnet: [ '6.0' ] + dotnet: [ '7.0.401' ] + framework: ['net7.0-windows10.0.22621.0'] os: [ 'win10-x64' ] - python-version: [ 3.9.6 ] steps: - - uses: actions/checkout@v3 - - name: Setup .NET Core SDK ${{ matrix.dotnet }} - uses: actions/setup-dotnet@v3 - with: - dotnet-version: ${{ matrix.dotnet }} - - - name: Clean - run: dotnet clean ${{ github.workspace }}/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj --configuration Release && dotnet nuget locals all --clear - - - name: Restore - run: dotnet restore ${{ github.workspace }}/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj - - - name: Prepare env - run: | - echo "BUILD_VERSION=$Env:GITHUB_RUN_NUMBER-$Env:GITHUB_RUN_ID" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - echo "RUNNER_TOOL_CACHE=$Env:RUNNER_TOOL_CACHE" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - - - name: Publish ${{matrix.os}} - run: dotnet publish ${{ github.workspace }}/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj --no-restore -c Release -r ${{ matrix.os }} -o ${{ github.workspace }}/dist/${{ matrix.os }} --version-suffix ${{ env.BUILD_VERSION }} --self-contained true - - - name: Copy Config to Distro - run: cp ${{ github.workspace }}/configuration.example.json ${{ github.workspace }}/dist/${{ matrix.os }}/configuration.local.json - - # Package all-in-one python and add to distro - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r ${{ github.workspace }}/python/requirements.txt - pip install pyinstaller - - - name: Package Python - Windows - if: ${{ matrix.os == 'win10-x64' }} - working-directory: ${{ github.workspace }}/python - run: | - pyinstaller -n upload --distpath ${{ github.workspace }}/dist/${{ matrix.os }}/python/ --console --clean --onefile --noconfirm --add-data "${{ env.RUNNER_TOOL_CACHE }}/python/3.9.6/x64/lib/site-packages/cloudscraper;./cloudscraper" ${{ github.workspace }}/python/upload.py - - # Create Build Artifact - - name: Upload Artifact ${{ matrix.os }}_${{ env.BUILD_VERSION }} - uses: actions/upload-artifact@v3 - with: - name: ${{ matrix.os }}_${{ env.BUILD_VERSION }} - path: ${{ github.workspace }}/dist/${{ matrix.os }} + - uses: actions/checkout@v3 + - name: Publish UI Distribution + uses: ./.github/actions/publish-ui-dist + with: + dotnet-version: ${{ matrix.dotnet }} + os: ${{ matrix.os }} + framework: ${{ matrix.framework }} - create_docker_images: - name: Publish Docker Images - PR - runs-on: ubuntu-latest - needs: build-and-test - strategy: - matrix: - dockerfile: ['Dockerfile.console', 'Dockerfile.api', 'Dockerfile.webui'] - include: - - dockerfile: 'Dockerfile.console' - tag: 'pr-validator-console-A' - - dockerfile: 'Dockerfile.api' - tag: 'pr-validator-api-A' - - dockerfile: 'Dockerfile.webui' - tag: 'pr-validator-webui-A' - - steps: - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - with: - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - platforms: linux/amd64,linux/arm64,linux/arm/v7 + publish-docker-images: + name: Publish Docker Images + runs-on: ubuntu-latest + needs: build-and-test + strategy: + matrix: + dockerfile: ['Dockerfile.console', 'Dockerfile.api', 'Dockerfile.webui'] + include: + - dockerfile: 'Dockerfile.console' + tag: 'pr-validator-console-A' + - dockerfile: 'Dockerfile.api' + tag: 'pr-validator-api-A' + - dockerfile: 'Dockerfile.webui' + tag: 'pr-validator-webui-A' - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GH_PACKAGE_SECRET }} - - - name: Prepare env - run: | - echo "BUILD_VERSION=${GITHUB_RUN_NUMBER}-${GITHUB_RUN_ID}" >> $GITHUB_ENV + steps: - - name: Build & Push to Package Repositories - id: docker_build - uses: docker/build-push-action@v3 + - uses: actions/checkout@v3 + - name: Publish Docker Images + uses: ./.github/actions/publish-docker-images with: - push: true - file: ./docker/${{ matrix.dockerfile }} - platforms: linux/amd64,linux/arm64,linux/arm/v7 - build-args: VERSION=${{ env.BUILD_VERSION }} - tags: | - ${{ secrets.DOCKER_USERNAME }}/peloton-to-garmin:${{ matrix.tag }} - ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ matrix.tag }} - - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} + dockerfile: ${{ matrix.dockerfile }} + tag: ${{ matrix.tag }} + secret_docker_username: ${{ secrets.DOCKER_USERNAME }} + secret_docker_password: ${{ secrets.DOCKER_PASSWORD }} + secret_github_package: ${{ secrets.GH_PACKAGE_SECRET}} \ No newline at end of file diff --git a/.github/workflows/publish-latest.yaml b/.github/workflows/publish-latest.yaml new file mode 100644 index 000000000..7dcac94ed --- /dev/null +++ b/.github/workflows/publish-latest.yaml @@ -0,0 +1,81 @@ +name: Publish Latest + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - 'src/**' + - 'docker/**' + - 'mkdocs/**' + - 'PelotonToGarmin.sln' + - 'configuration.example.json' + +jobs: + publish-docker-images: + name: Publish Docker Images + runs-on: ubuntu-latest + strategy: + matrix: + dockerfile: ['Dockerfile.console', 'Dockerfile.api', 'Dockerfile.webui'] + include: + - dockerfile: 'Dockerfile.console' + tag: 'console-latest' + - dockerfile: 'Dockerfile.api' + tag: 'api-latest' + - dockerfile: 'Dockerfile.webui' + tag: 'webui-latest' + + steps: + + - uses: actions/checkout@v3 + - name: Publish Docker Images + uses: ./.github/actions/publish-docker-images + with: + dockerfile: ${{ matrix.dockerfile }} + tag: ${{ matrix.tag }} + secret_docker_username: ${{ secrets.DOCKER_USERNAME }} + secret_docker_password: ${{ secrets.DOCKER_PASSWORD }} + secret_github_package: ${{ secrets.GH_PACKAGE_SECRET}} + + publish-ui-dist: + name: Publish UI Distribution + runs-on: 'windows-latest' + strategy: + matrix: + dotnet: [ '7.0.400' ] + framework: ['net7.0-windows10.0.22621.0'] + os: [ 'win10-x64' ] + + steps: + + - uses: actions/checkout@v3 + - name: Publish UI Distribution + uses: ./.github/actions/publish-ui-dist + with: + dotnet-version: ${{ matrix.dotnet }} + os: ${{ matrix.os }} + framework: ${{ matrix.framework }} + + publish-gh-pages: + name: Publish GH Pages + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Configure Git user + run: | + git config --local user.email "philosowaffle@gmail.com" + git config --local user.name "philosowaffle" + + - name: Fetch gh-pages + run: git fetch origin gh-pages --depth=1 + + - uses: actions/setup-python@v4 + with: + python-version: 3.x + + - run: pip install mkdocs-material mike + - run: mike deploy --push master + working-directory: ./mkdocs \ No newline at end of file diff --git a/.github/workflows/publish-release.yaml b/.github/workflows/publish-release.yaml new file mode 100644 index 000000000..1dd996113 --- /dev/null +++ b/.github/workflows/publish-release.yaml @@ -0,0 +1,115 @@ +name: Publish Release + +on: + workflow_dispatch: + inputs: + version: + description: 'Release Version' + required: true + majorVersion: + description: 'Major Version Tag' + required: true + +jobs: + publish-docker-images: + name: Publish Docker Images + runs-on: ubuntu-latest + strategy: + matrix: + dockerfile: ['Dockerfile.console', 'Dockerfile.api', 'Dockerfile.webui'] + include: + - dockerfile: 'Dockerfile.console' + tag: console-stable + versionTag: console-v${{ github.event.inputs.version }} + majorVersionTag: console-v${{ github.event.inputs.majorVersion }} + - dockerfile: 'Dockerfile.api' + tag: api-stable + versionTag: api-v${{ github.event.inputs.version }} + majorVersionTag: api-v${{ github.event.inputs.majorVersion }} + - dockerfile: 'Dockerfile.webui' + tag: webui-stable + versionTag: webui-v${{ github.event.inputs.version }} + majorVersionTag: webui-v${{ github.event.inputs.majorVersion }} + + steps: + + - uses: actions/checkout@v4 + - name: Publish Docker Images + uses: ./.github/actions/publish-docker-images + with: + dockerfile: ${{ matrix.dockerfile }} + tag: ${{ matrix.tag }} + version_tag: ${{ matrix.versionTag }} + major_version_tag: ${{ matrix.majorVersionTag }} + secret_docker_username: ${{ secrets.DOCKER_USERNAME }} + secret_docker_password: ${{ secrets.DOCKER_PASSWORD }} + secret_github_package: ${{ secrets.GH_PACKAGE_SECRET}} + + publish-ui-dist: + name: Publish UI Distribution + runs-on: 'windows-latest' + outputs: + artifact: ${{ steps.win-ui-create-artifact.outputs.artifact }} + strategy: + matrix: + dotnet: [ '7.0.400' ] + framework: ['net7.0-windows10.0.22621.0'] + os: [ 'win10-x64' ] + + steps: + + - uses: actions/checkout@v4 + - name: Publish UI Distribution + uses: ./.github/actions/publish-ui-dist + id: win-ui-create-artifact + with: + dotnet-version: ${{ matrix.dotnet }} + os: ${{ matrix.os }} + framework: ${{ matrix.framework }} + + create-gh-release: + runs-on: ubuntu-latest + needs: [publish-ui-dist, publish-docker-images] + steps: + - name: Create Zip for Win UI Release Artifact + uses: papeloto/action-zip@v1 + with: + files: ${{ needs.publish-ui-dist.outputs.artifact }} + dest: /dist/ui_win_${{ github.event.inputs.version }}.zip + + - uses: actions/checkout@v4 + + - name: Create Release and Upload Artifacts + uses: ncipollo/release-action@v1 + with: + artifacts: "${{ github.workspace }}/dist/ui_win_${{ github.event.inputs.version }}.zip" + token: ${{ secrets.GITHUB_TOKEN }} + tag: v${{ github.event.inputs.version }} + allowUpdates: true + replacesArtifacts: true + bodyFile: ${{ github.workspace }}/vNextReleaseNotes.md + + publish-gh-pages: + name: Publish GH Pages + runs-on: ubuntu-latest + needs: [create-gh-release] + steps: + - uses: actions/checkout@v4 + + - name: Configure Git user + run: | + git config --local user.email "philosowaffle@gmail.com" + git config --local user.name "philosowaffle" + + - name: Fetch gh-pages + run: git fetch origin gh-pages --depth=1 + + - uses: actions/setup-python@v4 + with: + python-version: 3.x + + - run: pip install mkdocs-material mike + - run: mike deploy --push --update-aliases v${{ github.event.inputs.version }} latest + working-directory: ./mkdocs + - run: mike set-default --push latest + working-directory: ./mkdocs diff --git a/.github/workflows/publish_distros_latest.yml b/.github/workflows/publish_distros_latest.yml deleted file mode 100644 index 23c7d1ae4..000000000 --- a/.github/workflows/publish_distros_latest.yml +++ /dev/null @@ -1,85 +0,0 @@ -# This workflow will: -# - Build python package for os -# - Publish latest all-in-one windows exe - -name: Publish Distro Latest - -on: - workflow_dispatch: - push: - branches: - - master - paths: - - 'src/**' - - 'python/**' - - 'PelotonToGarmin.sln' - - 'configuration.example.json' - - '.github/workflows/publish_distros_latest.yml' - -jobs: - publish: - - runs-on: 'windows-latest' - strategy: - max-parallel: 1 - matrix: - dotnet: [ '6.0' ] - #os: [ 'win10-x64', 'osx-x64' ] # osx signing issue, mac wont run the executable - os: [ 'win10-x64' ] - python-version: [ 3.9.6 ] - - steps: - - # Publish dotnet core exe - - uses: actions/checkout@v2 - - name: Setup .NET Core SDK ${{ matrix.dotnet }} - uses: actions/setup-dotnet@v3 - with: - dotnet-version: ${{ matrix.dotnet }} - - - name: Clean - run: dotnet clean --configuration Release && dotnet nuget locals all --clear - - - name: Restore - run: dotnet restore - - - name: Prepare env - run: | - echo "BUILD_VERSION=$Env:GITHUB_RUN_NUMBER-$Env:GITHUB_RUN_ID" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - echo "RUNNER_TOOL_CACHE=$Env:RUNNER_TOOL_CACHE" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - - - name: Publish ${{matrix.os}} - run: dotnet publish ${{ github.workspace }}/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj --no-restore -c Release -r ${{ matrix.os }} -o ${{ github.workspace }}/dist/${{ matrix.os }} --version-suffix ${{ env.BUILD_VERSION }} --self-contained true - - - name: Copy Config to Distro - run: cp ${{ github.workspace }}/configuration.example.json ${{ github.workspace }}/dist/${{ matrix.os }}/configuration.local.json - - # Package all-in-one python and add to distro - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r ${{ github.workspace }}/python/requirements.txt - pip install pyinstaller - - - name: Package Python - Windows - if: ${{ matrix.os == 'win10-x64' }} - working-directory: ${{ github.workspace }}/python - run: | - pyinstaller -n upload --distpath ${{ github.workspace }}/dist/${{ matrix.os }}/python/ --console --clean --onefile --noconfirm --add-data "${{ env.RUNNER_TOOL_CACHE }}/python/3.9.6/x64/lib/site-packages/cloudscraper;./cloudscraper" ${{ github.workspace }}/python/upload.py - - - name: Package Python - MacOS - if: ${{ matrix.os == 'osx-x64' }} - run: | - pyinstaller -n upload --distpath ${{ github.workspace }}/dist/${{ matrix.os }}/python/ --console --clean --onefile --noconfirm --add-data "${{ env.RUNNER_TOOL_CACHE }}/python/3.9.6/x64/lib/site-packages/cloudscraper;./cloudscraper" ${{ github.workspace }}/python/upload.py - - # Create Artifact - - name: Upload Artifact ${{ matrix.os }}_${{ env.BUILD_VERSION }} - uses: actions/upload-artifact@v3 - with: - name: ${{ matrix.os }}_${{ env.BUILD_VERSION }} - path: ${{ github.workspace }}/dist/${{ matrix.os }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 56cb561a7..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,166 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Release - -on: - workflow_dispatch: - inputs: - version: - description: 'Release Version' - required: true - majorVersion: - description: 'Major Version Tag' - required: true - -jobs: - create_docker_images: - name: Publish Docker Images - Release - runs-on: ubuntu-latest - strategy: - matrix: - dockerfile: ['Dockerfile.console', 'Dockerfile.api', 'Dockerfile.webui'] - include: - - dockerfile: 'Dockerfile.console' - tag: stable - versionTag: v${{ github.event.inputs.version }} - majorVersionTag: v${{ github.event.inputs.majorVersion }} - - dockerfile: 'Dockerfile.api' - tag: api-stable - versionTag: api-v${{ github.event.inputs.version }} - majorVersionTag: api-v${{ github.event.inputs.majorVersion }} - - dockerfile: 'Dockerfile.webui' - tag: webui-stable - versionTag: webui-v${{ github.event.inputs.version }} - majorVersionTag: webui-v${{ github.event.inputs.majorVersion }} - - steps: - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - with: - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - platforms: linux/amd64,linux/arm64,linux/arm/v7 - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GH_PACKAGE_SECRET }} - - - name: Prepare env - run: | - echo "BUILD_VERSION=${GITHUB_RUN_NUMBER}-${GITHUB_RUN_ID}" >> $GITHUB_ENV - - - name: Build & Push to Package Repositories - id: docker_build - uses: docker/build-push-action@v3 - with: - push: true - file: ./docker/${{ matrix.dockerfile }} - platforms: linux/amd64,linux/arm64,linux/arm/v7 - build-args: VERSION=${{ env.BUILD_VERSION }} - tags: | - ${{ secrets.DOCKER_USERNAME }}/peloton-to-garmin:${{ matrix.tag }} - ${{ secrets.DOCKER_USERNAME }}/peloton-to-garmin:${{ matrix.versionTag }} - ${{ secrets.DOCKER_USERNAME }}/peloton-to-garmin:${{ matrix.majorVersionTag }} - ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ matrix.tag }} - ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ matrix.versionTag }} - ghcr.io/${{ github.repository_owner }}/peloton-to-garmin:${{ matrix.majorVersionTag }} - - - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} - - compile_distro_and_create_gh_release: - name: Compile Distro & Create GH Release - Release - runs-on: 'windows-latest' - strategy: - max-parallel: 1 - matrix: - dotnet: [ '6.0' ] - #os: [ 'win10-x64', 'osx-x64' ] # osx signing issue, mac wont run the executable - os: [ 'win10-x64' ] - python-version: [ 3.9.6 ] - - steps: - - - uses: actions/checkout@v2 - - name: Setup .NET Core SDK ${{ matrix.dotnet }} - uses: actions/setup-dotnet@v3 - with: - dotnet-version: ${{ matrix.dotnet }} - - - name: Clean - run: dotnet clean --configuration Release && dotnet nuget locals all --clear - - - name: Restore - run: dotnet restore - - - name: Prepare env - run: | - echo "BUILD_VERSION=${GITHUB_RUN_NUMBER}-${GITHUB_RUN_ID}" >> $GITHUB_ENV - echo "RUNNER_TOOL_CACHE=$Env:RUNNER_TOOL_CACHE" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append - - - name: Publish ${{matrix.os}} - run: dotnet publish ${{ github.workspace }}/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj --no-restore -c Release -r ${{ matrix.os }} -o ${{ github.workspace }}/dist/${{ matrix.os }} --self-contained true - - - name: Copy Config to Distro - run: cp ${{ github.workspace }}/configuration.example.json ${{ github.workspace }}/dist/${{ matrix.os }}/configuration.local.json - - # Package all-in-one python and add to distro - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r ${{ github.workspace }}/python/requirements.txt - pip install pyinstaller - - - name: Package Python - Windows - if: ${{ matrix.os == 'win10-x64' }} - working-directory: ${{ github.workspace }}/python - run: | - pyinstaller -n upload --distpath ${{ github.workspace }}/dist/${{ matrix.os }}/python/ --console --clean --onefile --noconfirm --add-data "${{ env.RUNNER_TOOL_CACHE }}/python/3.9.6/x64/lib/site-packages/cloudscraper;./cloudscraper" ${{ github.workspace }}/python/upload.py - - - name: Package Python - MacOS - if: ${{ matrix.os == 'osx-x64' }} - working-directory: ${{ github.workspace }}/python - run: | - pyinstaller -n upload --distpath ${{ github.workspace }}/dist/${{ matrix.os }}/python/ --console --clean --onefile --noconfirm --add-data "${{ env.RUNNER_TOOL_CACHE }}/python/3.9.6/x64/lib/site-packages/cloudscraper;./cloudscraper" ${{ github.workspace }}/python/upload.py - - # Create Build Artifact - - name: Upload Artifact ${{ matrix.os }}_${{ github.event.inputs.version }} - uses: actions/upload-artifact@v3 - with: - name: ${{ matrix.os }}_${{ github.event.inputs.version }} - path: ${{ github.workspace }}/dist/${{ matrix.os }} - - - name: Create Zip for Release Artifact - uses: papeloto/action-zip@v1 - with: - files: /dist/${{ matrix.os }} - dest: /dist/${{ matrix.os }}_${{ github.event.inputs.version }}.zip - - - name: Create Release and Upload Artifact - uses: ncipollo/release-action@v1 - with: - artifacts: "${{ github.workspace }}/dist/${{ matrix.os }}_${{ github.event.inputs.version }}.zip" - token: ${{ secrets.GITHUB_TOKEN }} - tag: v${{ github.event.inputs.version }} - allowUpdates: true - replacesArtifacts: true - bodyFile: ${{ github.workspace }}/vNextReleaseNotes.md diff --git a/.github/workflows/sync_peloton_to_garmin.yml b/.github/workflows/sync_peloton_to_garmin.yml index b36414a66..46173c625 100644 --- a/.github/workflows/sync_peloton_to_garmin.yml +++ b/.github/workflows/sync_peloton_to_garmin.yml @@ -9,6 +9,9 @@ on: workoutsToDownload: type: number default: "5" + saveLocalCopy: + type: boolean + default: false schedule: - cron: '0 * * * *' @@ -17,9 +20,11 @@ jobs: runs-on: ubuntu-latest # The type of runner that the job will run on container: - image: philosowaffle/peloton-to-garmin:stable + image: philosowaffle/peloton-to-garmin:console-stable steps: - - run: mkdir -p /app/output + - name: Set env + run: echo "OUTPUT_DIR=/app/output" >> $GITHUB_ENV + - run: mkdir -p ${{ env.OUTPUT_DIR }} - name: Create device info file env: DEVICE_INFO: ${{ secrets.DEVICE_INFO }} @@ -35,27 +40,23 @@ jobs: cat < /app/configuration.local.json { "App": { - "OutputDirectory": "/app/output", - "EnablePolling": false, - "CloseWindowOnFinish": true + "EnablePolling": false }, "Format": { "Fit": true, "Json": false, "Tcx": false, - "SaveLocalCopy": false, + "SaveLocalCopy": ${{ github.event.inputs.saveLocalCopy || false }}, "IncludeTimeInHRZones": false, "IncludeTimeInPowerZones": false, "DeviceInfoPath": "./deviceInfo.xml" }, "Peloton": { "NumWorkoutsToDownload": ${{ github.event.inputs.workoutsToDownload || env.DEFAULT_WORKOUT_NUM }}, - "ExcludeWorkoutTypes": [ "meditation" ], }, "Garmin": { "Upload": true, - "FormatToUpload": "fit", - "UploadStrategy": 2 + "FormatToUpload": "fit" }, "Observability": { "Prometheus": { @@ -66,15 +67,12 @@ jobs: }, "Serilog": { "Using": [ "Serilog.Sinks.Console"], - "MinimumLevel": "Information", - "WriteTo": [ - { "Name": "Console" } - ] + "MinimumLevel": "Information" } } } EOT - - run: /app/PelotonToGarminConsole + - run: /app/ConsoleClient if: ${{ env.P2G_PELOTON__EMAIL && env.P2G_PELOTON__PASSWORD && env.P2G_GARMIN__EMAIL && env.P2G_GARMIN__PASSWORD }} working-directory: /app env: @@ -83,3 +81,18 @@ jobs: P2G_GARMIN__EMAIL: ${{ secrets.P2G_GARMIN__EMAIL }} P2G_GARMIN__PASSWORD: ${{ secrets.P2G_GARMIN__PASSWORD }} TZ: America/Chicago + + - name: archive files + # saveLocalCopy can be set when workflow action is manually run otherwise it's always skipped + if: ${{ github.event.inputs.saveLocalCopy == 'true' }} + run: | + apt-get update + apt-get install -y zip + zip -r -j output.zip ${{ env.OUTPUT_DIR }} + + - uses: actions/upload-artifact@v3 + if: ${{ github.event.inputs.saveLocalCopy == 'true' }} + with: + name: output + path: output.zip + if-no-files-found: error diff --git a/.gitignore b/.gitignore index 55be8c3c0..d9836aa41 100644 --- a/.gitignore +++ b/.gitignore @@ -109,17 +109,20 @@ python/build/ */**/bin/* */**/obj/* -# Dev Files -*.log -syncHistory.json -configuration.local.json -/.vs/PelotonToGarmin -/src/Api/data -/src/PelotonToGarminConsole/data -/src/PelotonToGarminConsole/python/** -/src/WebUI/wwwroot/lib -*/**/output/** -/Output -/.vs/ProjectSettings.json -.vs/ -/.vscode/settings.json +# Dev Files +*.log +syncHistory.json +configuration.local.json +/.vs/PelotonToGarmin +/src/Api/data +/src/ConsoleClient/data +/src/ConsoleClient/python/** +*/**/output/** +/Output +/.vs/ProjectSettings.json +.vs/ +/.vscode/settings.json +/src/ClientUI/ClientUI.csproj.user + +# docs +/mkdocs/site \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 000000000..09486d2c4 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/PelotonToGarmin.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/PelotonToGarmin.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/PelotonToGarmin.sln" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/PelotonToGarmin.sln b/PelotonToGarmin.sln index d3895186c..65acccb1a 100644 --- a/PelotonToGarmin.sln +++ b/PelotonToGarmin.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.0.31912.275 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PelotonToGarminConsole", "src\PelotonToGarminConsole\PelotonToGarminConsole.csproj", "{808B1164-D94D-456F-B0AF-E5DDE4B82B4A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleClient", "src\ConsoleClient\ConsoleClient.csproj", "{808B1164-D94D-456F-B0AF-E5DDE4B82B4A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Garmin", "src\Garmin\Garmin.csproj", "{3E0E0007-E67A-44BA-B819-40C6E2C2EC8C}" EndProject @@ -46,6 +46,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebUI", "src\WebUI\WebUI.cs EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Api", "src\Api\Api.csproj", "{63A354CC-C2D3-4860-995E-C3072EC76C46}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharedUI", "src\SharedUI\SharedUI.csproj", "{5A2D34BF-6301-489C-A53C-46A2105EC923}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientUI", "src\ClientUI\ClientUI.csproj", "{E3C986C7-56B2-409B-A17F-566955804D73}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Api.Service", "src\Api.Service\Api.Service.csproj", "{AE7ED46D-B1F6-402F-AA9F-EE952984B3BA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Api.Contract", "src\Api.Contract\Api.Contract.csproj", "{629769E4-3048-41B6-8818-141DED7AD8D7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -88,6 +96,24 @@ Global {63A354CC-C2D3-4860-995E-C3072EC76C46}.Debug|Any CPU.Build.0 = Debug|Any CPU {63A354CC-C2D3-4860-995E-C3072EC76C46}.Release|Any CPU.ActiveCfg = Release|Any CPU {63A354CC-C2D3-4860-995E-C3072EC76C46}.Release|Any CPU.Build.0 = Release|Any CPU + {5A2D34BF-6301-489C-A53C-46A2105EC923}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A2D34BF-6301-489C-A53C-46A2105EC923}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A2D34BF-6301-489C-A53C-46A2105EC923}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A2D34BF-6301-489C-A53C-46A2105EC923}.Release|Any CPU.Build.0 = Release|Any CPU + {E3C986C7-56B2-409B-A17F-566955804D73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E3C986C7-56B2-409B-A17F-566955804D73}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E3C986C7-56B2-409B-A17F-566955804D73}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {E3C986C7-56B2-409B-A17F-566955804D73}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E3C986C7-56B2-409B-A17F-566955804D73}.Release|Any CPU.Build.0 = Release|Any CPU + {E3C986C7-56B2-409B-A17F-566955804D73}.Release|Any CPU.Deploy.0 = Release|Any CPU + {AE7ED46D-B1F6-402F-AA9F-EE952984B3BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE7ED46D-B1F6-402F-AA9F-EE952984B3BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE7ED46D-B1F6-402F-AA9F-EE952984B3BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE7ED46D-B1F6-402F-AA9F-EE952984B3BA}.Release|Any CPU.Build.0 = Release|Any CPU + {629769E4-3048-41B6-8818-141DED7AD8D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {629769E4-3048-41B6-8818-141DED7AD8D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {629769E4-3048-41B6-8818-141DED7AD8D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {629769E4-3048-41B6-8818-141DED7AD8D7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/README.md b/README.md index 934009096..17427bc3d 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,14 @@ **Peloton Tag:** _#PelotonToGarmin_ -Sync workouts from Peloton to Garmin. +Sync your Pelooton workouts to Garmin. * Fetch latest workouts from Peloton * Bike, Tread, Rower, Meditation, Strength, Outdoor, and more -* Automatically upload TCX or FIT workout to Garmin +* Automatically upload your workout to Garmin * Convert Peloton workouts to a variety of formats for offline backup * Earn Badges and credit for Garmin Challenges -* Counts towards VO2 Max [1]({{ site.baseurl }}{% link faq.md %}) and Training Stress Scores +* Counts towards VO2 Max and Training Stress Scores * Supports Garmin accounts protected by Two Step Verification * Supports mapping Exercises from Strength workouts @@ -23,13 +23,6 @@ Head on over to the [Wiki](https://philosowaffle.github.io/peloton-to-garmin) to ![Example Cycling Workout](/images/example_cycle.png?raw=true "Example Cycling Workout") -## Supported Platforms - -* Windows -* Mac -* Linux -* Docker - ## Contributors Special thanks to all the [contributors](https://github.com/philosowaffle/peloton-to-garmin/graphs/contributors) who have helped improve this project! diff --git a/configuration.example.json b/configuration.example.json index c39a75669..995bd5566 100644 --- a/configuration.example.json +++ b/configuration.example.json @@ -1,9 +1,7 @@ { "App": { - "OutputDirectory": "./output", "EnablePolling": true, "PollingIntervalSeconds": 86400, - "CloseWindowOnFinish": false, "CheckForUpdates": true }, @@ -29,8 +27,7 @@ "Password": "", "TwoStepVerificationEnabled": false, "Upload": false, - "FormatToUpload": "fit", - "UploadStrategy": 2 + "FormatToUpload": "fit" }, "Observability": { @@ -54,18 +51,7 @@ "Microsoft": "Error", "System": "Error" } - }, - "WriteTo": [ - { "Name": "Console" }, - { - "Name": "File", - "Args": { - "path": "./output/log.txt", - "rollingInterval": "Day", - "retainedFileCountLimit": 7 - } - } - ] + } } } } \ No newline at end of file diff --git a/docker/Dockerfile.api b/docker/Dockerfile.api index 9e6e6314d..304e92b60 100644 --- a/docker/Dockerfile.api +++ b/docker/Dockerfile.api @@ -1,22 +1,14 @@ ################### # CREATE FINAL LAYER ################### -FROM mcr.microsoft.com/dotnet/aspnet:6.0 as final +FROM mcr.microsoft.com/dotnet/aspnet:7.0 as final -ENV PYTHONUNBUFFERED=1 RUN apt-get update \ - && apt-get -y install bash python3 python3-pip tzdata \ + && apt-get -y install bash tzdata \ && apt-get purge -y -f --force-yes $EXT_BUILD_DEPS \ && apt-get autoremove -y \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* \ - && ln -sf python3 /usr/bin/python \ - && pip3 install --no-cache --upgrade pip setuptools \ - && python --version \ - && pip3 --version - -COPY ./python/requirements.txt ./requirements.txt -RUN pip3 install -r requirements.txt + && rm -rf /var/lib/apt/lists/* RUN groupadd -g 1015 p2g && useradd -g p2g -u 1015 p2g @@ -27,7 +19,7 @@ RUN mkdir -m770 {output,data,working} ################### # BUILD LAYER ################### -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:7.0 AS build COPY . /build WORKDIR /build diff --git a/docker/Dockerfile.console b/docker/Dockerfile.console index efbe16fbd..4b3f6f22f 100644 --- a/docker/Dockerfile.console +++ b/docker/Dockerfile.console @@ -1,22 +1,14 @@ ################### # CREATE FINAL LAYER ################### -FROM mcr.microsoft.com/dotnet/aspnet:6.0 as final +FROM mcr.microsoft.com/dotnet/aspnet:7.0 as final -ENV PYTHONUNBUFFERED=1 RUN apt-get update \ - && apt-get -y install bash python3 python3-pip tzdata \ + && apt-get -y install bash tzdata \ && apt-get purge -y -f --force-yes $EXT_BUILD_DEPS \ && apt-get autoremove -y \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* \ - && ln -sf python3 /usr/bin/python \ - && pip3 install --no-cache --upgrade pip setuptools \ - && python --version \ - && pip3 --version - -COPY ./python/requirements.txt ./requirements.txt -RUN pip3 install -r requirements.txt + && rm -rf /var/lib/apt/lists/* RUN groupadd -g 1015 p2g && useradd -g p2g -u 1015 p2g @@ -27,7 +19,7 @@ RUN mkdir -m770 {output,data,working} ################### # BUILD LAYER ################### -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:7.0 AS build COPY . /build WORKDIR /build @@ -46,7 +38,7 @@ RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \ RID=linux-arm ; \ fi \ - && dotnet publish /build/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj -c Release -r $RID -o /build/published --version-suffix $VERSION --self-contained ; + && dotnet publish /build/src/ConsoleClient/ConsoleClient.csproj -c Release -r $RID -o /build/published --version-suffix $VERSION --self-contained ; ################### # FINAL diff --git a/docker/Dockerfile.webui b/docker/Dockerfile.webui index 4f7ecd21c..49b14474e 100644 --- a/docker/Dockerfile.webui +++ b/docker/Dockerfile.webui @@ -1,7 +1,7 @@ ################### # CREATE FINAL LAYER ################### -FROM mcr.microsoft.com/dotnet/aspnet:6.0 as final +FROM mcr.microsoft.com/dotnet/aspnet:7.0 as final RUN apt-get update \ && apt-get -y install bash tzdata \ @@ -17,7 +17,7 @@ WORKDIR /app ################### # BUILD LAYER ################### -FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:7.0 AS build COPY . /build WORKDIR /build diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 52fd8fd91..32dcb75a7 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -9,5 +9,5 @@ if [[ "$1" == "api" ]]; then elif [[ "$1" == "webui" ]]; then exec runuser -u p2g ./WebUI else - exec runuser -u p2g ./PelotonToGarminConsole + exec runuser -u p2g ./ConsoleClient fi \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/headless/docker-compose.yaml similarity index 78% rename from docker/docker-compose.yaml rename to docker/headless/docker-compose.yaml index dccbe8c2f..3b00ee9fe 100644 --- a/docker/docker-compose.yaml +++ b/docker/headless/docker-compose.yaml @@ -3,7 +3,7 @@ version: "3.9" services: p2g: container_name: p2g - image: philosowaffle/peloton-to-garmin:stable + image: philosowaffle/peloton-to-garmin:console-stable environment: - TZ=America/Chicago volumes: diff --git a/docker/webui/api.local.json b/docker/webui/api.local.json index 84754a4fd..27a18c8f9 100644 --- a/docker/webui/api.local.json +++ b/docker/webui/api.local.json @@ -1,8 +1,4 @@ { - "Api": { - "HostUrl": "http://*:8080" - }, - "Observability": { "Prometheus": { @@ -25,15 +21,7 @@ } }, "WriteTo": [ - { "Name": "Console" }, - { - "Name": "File", - "Args": { - "path": "./output/log.txt", - "rollingInterval": "Day", - "retainedFileCountLimit": 7 - } - } + { "Name": "Console" } ] } } diff --git a/docker/webui/webui.local.json b/docker/webui/webui.local.json index 9da35a011..6f0b79eef 100644 --- a/docker/webui/webui.local.json +++ b/docker/webui/webui.local.json @@ -3,10 +3,6 @@ "HostUrl": "http://p2g-api:8080" }, - "WebUI": { - "HostUrl": "http://*:8080" - }, - "Observability": { "Prometheus": { @@ -29,15 +25,7 @@ } }, "WriteTo": [ - { "Name": "Console" }, - { - "Name": "File", - "Args": { - "path": "./output/log.txt", - "rollingInterval": "Day", - "retainedFileCountLimit": 7 - } - } + { "Name": "Console" } ] } } diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index cbe74dd2a..000000000 --- a/docs/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -_site/ -.sass-cache -.jekyll-metadata -.jekyll-cache \ No newline at end of file diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index fa4476d60..000000000 --- a/docs/Gemfile +++ /dev/null @@ -1,30 +0,0 @@ -source "https://rubygems.org" - -# Hello! This is where you manage which Jekyll version is used to run. -# When you want to use a different version, change it below, save the -# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: -# -# bundle exec jekyll serve -# -# This will help ensure the proper Jekyll version is running. -# Happy Jekylling! -gem "jekyll", "~> 3.9.2" - -# This is the default theme for new Jekyll sites. You may change this to anything you like. -#gem "minima", "~> 2.0" -gem "just-the-docs" - -# If you want to use GitHub Pages, remove the "gem "jekyll"" above and -# uncomment the line below. To upgrade, run `bundle update github-pages`. -gem "github-pages", group: :jekyll_plugins - -# If you have any plugins, put them here! -group :jekyll_plugins do - gem "jekyll-feed", "~> 0.15" -end - -# Windows does not include zoneinfo files, so bundle the tzinfo-data gem -gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] - -# Performance-booster for watching directories on Windows -gem "wdm", "~> 0.1.0" if Gem.win_platform? diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock deleted file mode 100644 index 0ced70374..000000000 --- a/docs/Gemfile.lock +++ /dev/null @@ -1,287 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (6.0.6.1) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.11.1) - colorator (1.1.0) - commonmarker (0.23.9) - concurrent-ruby (1.2.0) - dnsruby (1.61.7) - simpleidn (~> 0.1) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - ethon (0.15.0) - ffi (>= 1.15.0) - eventmachine (1.2.7) - execjs (2.8.1) - faraday (1.8.0) - faraday-em_http (~> 1.0) - faraday-em_synchrony (~> 1.0) - faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0.1) - faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) - faraday-patron (~> 1.0) - faraday-rack (~> 1.0) - multipart-post (>= 1.2, < 3) - ruby2_keywords (>= 0.0.4) - faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.0) - faraday-excon (1.1.0) - faraday-httpclient (1.0.1) - faraday-net_http (1.0.1) - faraday-net_http_persistent (1.2.0) - faraday-patron (1.0.0) - faraday-rack (1.0.0) - ffi (1.15.4) - forwardable-extended (2.6.0) - gemoji (3.0.1) - github-pages (227) - github-pages-health-check (= 1.17.9) - jekyll (= 3.9.2) - jekyll-avatar (= 0.7.0) - jekyll-coffeescript (= 1.1.1) - jekyll-commonmark-ghpages (= 0.2.0) - jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.15.1) - jekyll-gist (= 1.5.0) - jekyll-github-metadata (= 2.13.0) - jekyll-include-cache (= 0.2.1) - jekyll-mentions (= 1.6.0) - jekyll-optional-front-matter (= 0.3.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.3.0) - jekyll-redirect-from (= 0.16.0) - jekyll-relative-links (= 0.6.1) - jekyll-remote-theme (= 0.4.3) - jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.8.0) - jekyll-sitemap (= 1.4.0) - jekyll-swiss (= 1.0.0) - jekyll-theme-architect (= 0.2.0) - jekyll-theme-cayman (= 0.2.0) - jekyll-theme-dinky (= 0.2.0) - jekyll-theme-hacker (= 0.2.0) - jekyll-theme-leap-day (= 0.2.0) - jekyll-theme-merlot (= 0.2.0) - jekyll-theme-midnight (= 0.2.0) - jekyll-theme-minimal (= 0.2.0) - jekyll-theme-modernist (= 0.2.0) - jekyll-theme-primer (= 0.6.0) - jekyll-theme-slate (= 0.2.0) - jekyll-theme-tactile (= 0.2.0) - jekyll-theme-time-machine (= 0.2.0) - jekyll-titles-from-headings (= 0.5.3) - jemoji (= 0.12.0) - kramdown (= 2.3.2) - kramdown-parser-gfm (= 1.1.0) - liquid (= 4.0.3) - mercenary (~> 0.3) - minima (= 2.5.1) - nokogiri (>= 1.13.6, < 2.0) - rouge (= 3.26.0) - terminal-table (~> 1.4) - github-pages-health-check (1.17.9) - addressable (~> 2.3) - dnsruby (~> 1.60) - octokit (~> 4.0) - public_suffix (>= 3.0, < 5.0) - typhoeus (~> 1.3) - html-pipeline (2.14.0) - activesupport (>= 2) - nokogiri (>= 1.4) - http_parser.rb (0.8.0) - i18n (0.9.5) - concurrent-ruby (~> 1.0) - jekyll (3.9.2) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 0.7) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 2.0) - kramdown (>= 1.17, < 3) - liquid (~> 4.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (>= 1.7, < 4) - safe_yaml (~> 1.0) - jekyll-avatar (0.7.0) - jekyll (>= 3.0, < 5.0) - jekyll-coffeescript (1.1.1) - coffee-script (~> 2.2) - coffee-script-source (~> 1.11.1) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.2.0) - commonmarker (~> 0.23.4) - jekyll (~> 3.9.0) - jekyll-commonmark (~> 1.4.0) - rouge (>= 2.0, < 4.0) - jekyll-default-layout (0.1.4) - jekyll (~> 3.0) - jekyll-feed (0.15.1) - jekyll (>= 3.7, < 5.0) - jekyll-gist (1.5.0) - octokit (~> 4.2) - jekyll-github-metadata (2.13.0) - jekyll (>= 3.4, < 5.0) - octokit (~> 4.0, != 4.4.0) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-mentions (1.6.0) - html-pipeline (~> 2.3) - jekyll (>= 3.7, < 5.0) - jekyll-optional-front-matter (0.3.2) - jekyll (>= 3.0, < 5.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.3.0) - jekyll (>= 3.0, < 5.0) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-relative-links (0.6.1) - jekyll (>= 3.3, < 5.0) - jekyll-remote-theme (0.4.3) - addressable (~> 2.0) - jekyll (>= 3.5, < 5.0) - jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) - rubyzip (>= 1.3.0, < 3.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-swiss (1.0.0) - jekyll-theme-architect (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-cayman (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-dinky (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-leap-day (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-merlot (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-midnight (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-minimal (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-modernist (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.6.0) - jekyll (> 3.5, < 5.0) - jekyll-github-metadata (~> 2.9) - jekyll-seo-tag (~> 2.0) - jekyll-theme-slate (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-tactile (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-time-machine (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.3) - jekyll (>= 3.3, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - jemoji (0.12.0) - gemoji (~> 3.0) - html-pipeline (~> 2.2) - jekyll (>= 3.0, < 5.0) - just-the-docs (0.3.3) - jekyll (>= 3.8.5) - jekyll-seo-tag (~> 2.0) - rake (>= 12.3.1, < 13.1.0) - kramdown (2.3.2) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.3) - listen (3.7.1) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.3.6) - minima (2.5.1) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - minitest (5.17.0) - multipart-post (2.1.1) - nokogiri (1.14.3-x86_64-linux) - racc (~> 1.4) - octokit (4.21.0) - faraday (>= 0.9) - sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (4.0.6) - racc (1.6.2) - rake (13.0.6) - rb-fsevent (0.11.0) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.5) - rouge (3.26.0) - ruby2_keywords (0.0.5) - rubyzip (2.3.2) - safe_yaml (1.0.5) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.8.2) - addressable (>= 2.3.5) - faraday (> 0.8, < 2.0) - simpleidn (0.2.1) - unf (~> 0.1.4) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - typhoeus (1.4.0) - ethon (>= 0.9.0) - tzinfo (1.2.11) - thread_safe (~> 0.1) - unf (0.1.4) - unf_ext - unf_ext (0.0.8) - unicode-display_width (1.8.0) - zeitwerk (2.6.6) - -PLATFORMS - x86_64-linux - x86_64-linux-musl - -DEPENDENCIES - github-pages - jekyll (~> 3.9.2) - jekyll-feed (~> 0.15) - just-the-docs - tzinfo-data - -BUNDLED WITH - 2.3.22 diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index a7529f517..000000000 --- a/docs/_config.yml +++ /dev/null @@ -1,63 +0,0 @@ -title: Peloton to Garmin -description: Convert workout data from Peloton into JSON/TCX/FIT files that can be uploaded to Garmin Connect -repository: philosowaffle/peloton-to-garmin -locale: en_US - -remote_theme: pmarsceill/just-the-docs - -exclude: ["node_modules/", "*.gemspec", "*.gem", "Gemfile", "Gemfile.lock", "package.json", "package-lock.json", "script/", "LICENSE.txt", "lib/", "bin/", "README.md", "Rakefile" -, "docs/tests/" -] - -search_enabled: true -search: - # Split pages into sections that can be searched individually - # Supports 1 - 6, default: 2 - heading_level: 2 - # Maximum amount of previews per search result - # Default: 3 - previews: 2 - # Maximum amount of words to display before a matched word in the preview - # Default: 5 - preview_words_before: 3 - # Maximum amount of words to display after a matched word in the preview - # Default: 10 - preview_words_after: 3 - # Set the search token separator - # Default: /[\s\-/]+/ - # Example: enable support for hyphenated search words - tokenizer_separator: /[\s/]+/ - # Display the relative url in search results - # Supports true (default) or false - rel_url: true - # Enable or disable the search button that appears in the bottom right corner of every page - # Supports true or false (default) - button: false - -heading_anchors: true - -aux_links: - "GitHub": - - "//github.com/philosowaffle/peloton-to-garmin" - "Join the discussion": - - "//github.com/philosowaffle/peloton-to-garmin/discussions" - "Donate": - - "https://www.buymeacoffee.com/philosowaffle" - -back_to_top: true -back_to_top_text: "Back to top" - -gh_edit_link: true # show or hide edit this page link -gh_edit_link_text: "Edit this page on GitHub" -gh_edit_repository: "https://github.com/philosowaffle/peloton-to-garmin" # the github URL for your repo -gh_edit_branch: "master" # the branch that your docs is served from -gh_edit_view_mode: "tree" # "tree" or "edit" if you want the user to jump into the editor immediately -gh_edit_source: docs # the source that your files originate from - -compress_html: - clippings: all - comments: all - endings: all - startings: [] - blanklines: false - profile: false diff --git a/docs/_includes/footer_custom.html b/docs/_includes/footer_custom.html deleted file mode 100644 index 44e6c066a..000000000 --- a/docs/_includes/footer_custom.html +++ /dev/null @@ -1 +0,0 @@ -Buy Me A Coffee donate button \ No newline at end of file diff --git a/docs/configuration/command-line.md b/docs/configuration/command-line.md deleted file mode 100644 index 158ce5cbe..000000000 --- a/docs/configuration/command-line.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Command Line -parent: Configuration -nav_order: 1 ---- - -# Command Line Configuration - -All of the values defined in the [Json config file]({{ site.baseurl }}{% link configuration/json.md %}) can also be defined as command line arguments. This functionality is provided by the default dotnet [IConfiguration interface](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#command-line-1). diff --git a/docs/docker-compose.yaml b/docs/docker-compose.yaml deleted file mode 100644 index 23edc41f4..000000000 --- a/docs/docker-compose.yaml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2.4' - -services: - jekyll: - image: bretfisher/jekyll-serve - volumes: - - .:/site - ports: - - '4000:4000' \ No newline at end of file diff --git a/docs/experimental.md b/docs/experimental.md deleted file mode 100644 index f4723fb27..000000000 --- a/docs/experimental.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: default -title: Experimental -nav_order: 7 ---- - -# Experimental - -New enhancements not quite ready for the prime time can be found here. Use at own risk. - -Nothing in the works right now. Check back later :) \ No newline at end of file diff --git a/docs/install/docker-headless.md b/docs/install/docker-headless.md deleted file mode 100644 index 0146bffdc..000000000 --- a/docs/install/docker-headless.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: default -title: Docker - Headless -parent: Install -nav_order: 2 ---- - -# Docker Headless - -This the original flavor of P2G. It runs without any user interface and relies on configuration from `configuration.local.json` file. - -### [DockerHub](https://hub.docker.com/r/philosowaffle/peloton-to-garmin) - -```bash -docker run -i -v /full/path/to/configuration.local.json:/app/configuration.local.json -v /full/path/to/output:/app/output philosowaffle/peloton-to-garmin:stable -``` - -### [GitHub Package](https://github.com/philosowaffle/peloton-to-garmin/pkgs/container/peloton-to-garmin) - -```bash -docker run -i -v /full/path/to/configuration.local.json:/app/configuration.local.json -v /full/path/to/output:/app/output ghcr.io/philosowaffle/peloton-to-garmin:stable -``` - -## docker-compose - -*Pre-requisite:* You have either `docker-compose` or `Docker Desktop` installed -*This method does not work with Garmin accounts protected by Two Step Verification* - -1. Create a directory `p2g-headless` - 1. Inside this folder create a [docker-compose.yaml](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/docker-compose.yaml) file in the directory - 1. Also create a [configuration.local.json](https://github.com/philosowaffle/peloton-to-garmin/blob/master/configuration.example.json) file in the directory. - 1. Edit the configuration file to use your Peloton and Garmin credentials -1. Open a terminal in this folder -1. Run: `docker-compose pull && docker-compose up -d` - -Any logs or generated files will be available in the `output` directory. Additionally, you can learn more about customizing your configuration over in the [Configuration Section]({{ site.baseurl }}{% link configuration/index.md %}) - -### To stop P2G - -1. You can use Docker Desktop application to kill the containers -1. Or, you can open a terminal in the `p2g-headless` folder - 1. Run: `docker-compose down` - -### To update P2G - -1. Open a terminal in the `p2g-headless` folder - 1. Run: `docker-compose pull && docker-compose up -d` - -## Prometheus - -If you configure P2G to serve Prometheus metrics then you will also need to map the corresponding port for your docker container. By default, Prometheus metrics will be served on port `4000`. You can learn more about P2G and Prometheus in the [Observability Configuration]({{ site.baseurl }}{% link configuration/index.md %}) section. - -```yaml -version: "3.9" -services: - p2g: - container_name: p2g - image: philosowaffle/peloton-to-garmin:stable - environment: - - TZ=America/Chicago - ports: - - 4000:4000 - volumes: - - ./configuration.local.json:/app/configuration.local.json - - ./output:/app/output -``` diff --git a/docs/install/index.md b/docs/install/index.md deleted file mode 100644 index 22c48d9f9..000000000 --- a/docs/install/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default -title: Install -nav_order: 3 -has_children: true ---- - -# Install - -P2G can be run on all major operating systems. - -| Choose your system | Support Garmin 2-Step Verification | -|:-------------------|:-----------------------------------| -| [Windows](#windows-quick-start) | yes | -| [Mac](#mac-quick-start) | yes | -| [Linux](#linux-quick-start) | yes | -| [I don't want to install anything](#github-actions)| no | - -## Windows Quick Start - -1. [Windows Executable]({{ site.baseurl }}{% link install/windows.md %}) - recommended unless you are comfortable with Docker on Windows -1. [Docker]({{ site.baseurl }}{% link install/docker.md %}) -1. [Build from Source]({{ site.baseurl }}{% link install/source.md %}) - -## Mac Quick Start - -1. [Docker]({{ site.baseurl }}{% link install/docker.md %}) -1. [Build from Source]({{ site.baseurl }}{% link install/source.md %}) - -## Linux Quick Start - -1. [Docker]({{ site.baseurl }}{% link install/docker.md %}) - recommended -1. [Build from Source]({{ site.baseurl }}{% link install/source.md %}) - -## GitHub Actions - -If you would rather not install anything on your computer, you can run P2G using a feature called `GitHub Actions`, this will require you to create an account on `GitHub`. Additionally, your Garmin account must *not* have Two Step Verification enabled. - -1. [GitHub Actions]({{ site.baseurl }}{% link install/github-action.md %}) diff --git a/docs/install/source.md b/docs/install/source.md deleted file mode 100644 index 2095666cd..000000000 --- a/docs/install/source.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Build from Source -parent: Install -nav_order: 5 ---- - -# Build from Source - -To compile and run P2G on your machine, follow the below steps. - -## dotnet 6.0 - -1. Install the latest [dotnet 6.0 SDK](https://dotnet.microsoft.com/download/dotnet/6.0) -1. Clone the GitHub repository locally -1. In the local repo, find the file named `configuration.example.json`. Make a copy of it and name it `configuration.local.json`. -1. Move `configuration.local.json` into the `src/PelotongToGarminConsole` directory -1. Open `configuration.local.json` in a text editor of your choice and edit it to use your Peloton and Garmin credentials -1. Open a terminal and run the below one-time setup steps: - -```bash -> cd peloton-to-garmin -> dotnet restore -> dotnet build -``` - -## To run P2G - -```bash -> dotnet run --project ./src/PelotonToGarminConsole/PelotonToGarminConsole.csproj -``` - -## Updating - -```bash -> git fetch -> git pull -> cd peloton-to-garmin -> dotnet restore ./src/PelotonToGarminConsole/PelotonToGarminConsole.csproj -> dotnet build ./src/PelotonToGarminConsole/PelotonToGarminConsole.csproj -> dotnet run --project ./src/PelotonToGarminConsole/PelotonToGarminConsole.csproj -``` diff --git a/images/P2G_Architecture_Diagram.png b/images/P2G_Architecture_Diagram.png new file mode 100644 index 000000000..bec13876a Binary files /dev/null and b/images/P2G_Architecture_Diagram.png differ diff --git a/images/P2G_diagram.drawio b/images/P2G_diagram.drawio new file mode 100644 index 000000000..4b178b1ca --- /dev/null +++ b/images/P2G_diagram.drawio @@ -0,0 +1,372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mkdocs/docs/configuration/command-line.md b/mkdocs/docs/configuration/command-line.md new file mode 100644 index 000000000..8fa97bc0a --- /dev/null +++ b/mkdocs/docs/configuration/command-line.md @@ -0,0 +1,4 @@ + +# Command Line Configuration + +All of the values defined in the [Json config file](json.md) can also be defined as command line arguments. This functionality is provided by the default dotnet [IConfiguration interface](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#command-line-1). diff --git a/docs/configuration/environment-variables.md b/mkdocs/docs/configuration/environment-variables.md similarity index 63% rename from docs/configuration/environment-variables.md rename to mkdocs/docs/configuration/environment-variables.md index f639803ac..ac9c657e0 100644 --- a/docs/configuration/environment-variables.md +++ b/mkdocs/docs/configuration/environment-variables.md @@ -1,13 +1,7 @@ ---- -layout: default -title: Environment Variables -parent: Configuration -nav_order: 2 ---- # Environment Variable Configuration -All of the values defined in the [Json config file]({{ site.baseurl }}{% link configuration/json.md %}) can also be defined as environment variables. This functionality is provided by the default dotnet [IConfiguration interface](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#environment-variables-1). +All of the values defined in the [Json config file](json.md) can also be defined as environment variables. This functionality is provided by the default dotnet [IConfiguration interface](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#environment-variables-1). The variables use the following convention, note the use of both single and double underscores: @@ -18,7 +12,6 @@ P2G_CONFIGSECTION__CONFIGPROPERTY=value #### Example App Config ```bash -P2G_APP__OUTPUTDIRECTORY P2G_APP__WORKINGDIRECTORY P2G_APP__ENABLEPOLLING P2G_APP__POLLINGINTERVALSECONDS diff --git a/docs/configuration/index.md b/mkdocs/docs/configuration/index.md similarity index 62% rename from docs/configuration/index.md rename to mkdocs/docs/configuration/index.md index be3b162de..34068afab 100644 --- a/docs/configuration/index.md +++ b/mkdocs/docs/configuration/index.md @@ -1,29 +1,22 @@ ---- -layout: default -title: Configuration -nav_order: 3 -has_children: true ---- - -# Configuration - -P2G supports configuration via [command line arguments]({{ site.baseurl }}{% link configuration/command-line.md %}), [environment variables]({{ site.baseurl }}{% link configuration/environment-variables.md %}), [json config file]({{ site.baseurl }}{% link configuration/json.md %}), and via the user interface. By default, P2G looks for a file named `configuration.local.json` in the same directory where it is run. - -## Example working configs - -1. [Headless config](https://github.com/philosowaffle/peloton-to-garmin/blob/master/configuration.example.json) -1. [WebUI configs](https://github.com/philosowaffle/peloton-to-garmin/tree/master/docker/webui) - -## Config Precedence - -The following defines the precedence in which config definitions are honored. With the first item overriding any below it. - -1. Command Line -1. Environment Variables -1. Config File - -For example, if you defined your Peloton credentials ONLY in the Config file, then the Config file credentials will be used. - -If you defined your credentials in both the Config file AND the Environment variables, then the Environment variable credentials will be used. - -If you defined credentials using all 3 methods (config file, env, and command line), then the credentials provided via the command line will be used. +# Configuration + +P2G supports configuration via [command line arguments](command-line.md), [environment variables](environment-variables.md), [json config file](json.md), and via the user interface. By default, P2G looks for a file named `configuration.local.json` in the same directory where it is run. + +## Example working configs + +1. [Headless config](https://github.com/philosowaffle/peloton-to-garmin/blob/master/configuration.example.json) +1. [WebUI configs](https://github.com/philosowaffle/peloton-to-garmin/tree/master/docker/webui) + +## Config Precedence + +The following defines the precedence in which config definitions are honored. With the first item overriding any below it. + +1. Command Line +1. Environment Variables +1. Config File + +For example, if you defined your Peloton credentials ONLY in the Config file, then the Config file credentials will be used. + +If you defined your credentials in both the Config file AND the Environment variables, then the Environment variable credentials will be used. + +If you defined credentials using all 3 methods (config file, env, and command line), then the credentials provided via the command line will be used. diff --git a/docs/configuration/json.md b/mkdocs/docs/configuration/json.md similarity index 79% rename from docs/configuration/json.md rename to mkdocs/docs/configuration/json.md index 92b69b609..16e7bbb7e 100644 --- a/docs/configuration/json.md +++ b/mkdocs/docs/configuration/json.md @@ -1,405 +1,405 @@ ---- -layout: default -title: JSON Config File -parent: Configuration -nav_order: 0 ---- - -# Json Config File - -Based on your installation method, configuration may be provided via a `configuration.local.json` or it may be done via the user interface. In the below documentation you will see the information for both the JSON config file, and the Web UI. - -By default, P2G looks for a file named `configuration.local.json` in the same directory where the program is run. - -The config file is written in JSON and supports hot-reload for all fields except the following: - -1. `App.PollingintervalSeconds` -1. `Observability` Section - -The config file is organized into the below sections. - -| Section | Platforms | Description | -|:-------------|:----------|:------------------| -| [Api Config](#api-config) | Web UI | This section provides global settings for the P2G Api. | -| [WebUI Config](#webui-config) | Web UI | This section provides global settings for the P2G Web UI. | -| [App Config](#app-config) | Headless | This section provides global settings for the P2G application. | -| [Format Config](#format-config) | Headless | This section provides settings related to conversions and what formats should be created/saved. | -| [Peloton Config](#peloton-config) | Headless | This section provides settings related to fetching workouts from Peloton. | -| [Garmin Config](#garmin-config) | Headless | This section provides settings related to uploading workouts to Garmin. | -| [Observability Config](#observability-config) | All | This section provides settings related to Metrics, Logs, and Traces for monitoring purposes. | - -## Api Config - -If you aren't running the Web UI version of P2G you can ignore this section. - -This section lives in `webui.local.json`. - -```json - "Api": { - "HostUrl": "http://p2g-api:8080" - } -``` - -| Field | Required | Default | UI Setting Location | Description | -|:-----------|:---------|:--------|:--------------------|:------------| -| HostUrl | yes | `null` | none | The host and port for the Web UI to communicate with the Api. | - -### Advanced usage - -Typically this section is only needed in the `webui.local.json` so that the Web UI knows where to find the running Api. However, if you have a unique setup and need to modify the Host and Port the Api binds to, then you can also provide this config section in the `api.local.json`. - -```json - "Api": { - "HostUrl": "http://*:8080" - } -``` - -| Field | Required | Default | UI Setting Location | Description | -|:-----------|:---------|:--------|:--------------------|:------------| -| HostUrl | no | `http://localhost:80` | none | The host and port the Api should bind to and listen on. | - -## WebUI Config - -If you aren't running the Web UI version of P2G you can ignore this section. - -You can provide this config section in the `webui.local.json`. - -```json - "WebUI": { - "HostUrl": "http://*:8080" - } -``` - -| Field | Required | Default | UI Setting Location | Description | -|:-----------|:---------|:--------|:--------------------|:------------| -| HostUrl | no | `http://localhost:80` | none | The host and port the WebUI should bind to and listen on. | - -## App Config - -This section provides global settings for the P2G application. - -```json - "App": { - "OutputDirectory": "./output", - "EnablePolling": true, - "PollingIntervalSeconds": 86400, - "PythonAndGUploadInstalled": true, - "CloseWindowOnFinish": false, - "CheckForUpdates": true - } -``` - -| Field | Required | Default | UI Setting Location | Description | -|:-----------|:---------|:--------|:--------------------|:------------| -| OutputDirectory | no | `$PWD/output` | `App > Advanced` | Where downloaded and converted files should be saved to. | -| EnablePolling | no | `true` | `App Tab` | `true` if you wish P2G to run continuously and poll Peloton for new workouts. | -| PollingIntervalSeconds | no | 86400 | `App Tab` | The polling interval in seconds determines how frequently P2G should check for new workouts. Be warned, that setting this to a frequency of hourly or less may get you flagged by Peloton as a bad actor and they may reset your password. The default is set to Daily. | -| CloseWindowOnFinish | no | `false` | none | `true` if you wish the console window to close automatically when the program finishes. Not that if you have Polling enabled the program will never 'finish' as it remains active to poll regularly. | -| CheckForUpdates | no | `true` | `App Tab` | `true` if P2G should check for updates and write a log message if a new release is available. If using the UI this message will display there as well. | - -## Format Config - -This section provides settings related to conversions and what formats should be created/saved. P2G supports converting Peloton workouts into a variety of different formats. P2G also lets you choose whether or not you wish to save a local copy when the conversion is completed. This can be useful if you wish to backup your workouts or upload them manually to a different service other than Garmin. - -```json -"Format": { - "Fit": true, - "Json": false, - "Tcx": false, - "SaveLocalCopy": false, - "IncldudeTimeInHRZones": false, - "IncludeTimeInPowerZones": false, - "DeviceInfoPath": "./deviceInfo.xml", - "Cycling": { - "PreferredLapType": "Class_Targets" - }, - "Running": { - "PreferredLapType": "Distance" - }, - "Rowing": { - "PreferredLapType": "Class_Segments" - }, - "Strength": { - "DefaultSecondsPerRep": 3 - } - } -``` - -| Field | Required | Default | UI Setting Location | Description | -|:-----------|:---------|:--------|:--------------------|:------------| -| Fit | no | `false` | `Conversion Tab` | `true` indicates you wish downloaded workouts to be converted to FIT | -| Json | no | `false` | `Conversion Tab` | `true` indicates you wish downloaded workouts to be converted to JSON. This will automatically save a local copy when enabled. | -| Tcx | no | `false` | `Conversion Tab` | `true` indicates you wish downloaded workouts to be converted to TCX | -| SaveLocalCopy | no | `false` | `Conversion > Advanced` | `true` will save any converted workouts to your specified [OutputDirectory](#app-config) | -| IncludeTimeInHRZones | no | `false` | `Conversion > Advanced` | **Only use this if you are unable to configure your Max HR on Garmin Connect.** When set to True, P2G will attempt to capture the time spent in each HR Zone per the data returned by Peloton. See [understanding custom zones](#understanding-custom-zones). -| IncludePowerInHRZones | no | `false` | `Conversion > Advanced` | **Only use this if you are unable to configure your FTP and Power Zones on Garmin Connect.** When set to True, P2G will attempt to capture the time spent in each Power Zone per the data returned by Peloton. See [understanding custom zones](#understanding-custom-zones). | -| DeviceInfoPath | no | `null` | `Conversion > Advanced` | The path to your `deviceInfo.xml` file. See [providing device info](#custom-device-info) | -| Cycling | no | `null` | none | Configuration specific to Cycling workouts. | -| Cycling.PreferredLapType | no | `Default` | `Conversion Tab` | The preferred [lap type to use](#lap-types). | -| Running | no | `null` | none | Configuration specific to Running workouts. | -| Running.PreferredLapType | no | `Default` | `Conversion Tab` | The preferred [lap type to use](#lap-types). | -| Rowing | no | `null` | none | Configuration specific to Rowing workouts. | -| Rowing.PreferredLapType | no | `Default` | `Conversion Tab` | The preferred [lap type to use](#lap-types). | -| Strength | no | `null` | `Conversion Tab` | Configuration specific to Strength workouts. | -| Strength.DefaultSecondsPerRep | no | `3` | `Conversion Tab` | For exercises that are done for time instead of reps, P2G can estimate how many reps you completed using this value. Ex. If `DefaultSecondsPerRep=3` and you do Curls for 15s, P2G will estimate you completed 5 reps. | - -### Understanding Custom Zones - -Garmin Connect expects that users have a registered device and they expect users have set up their HR and Power Zones on that device. However, this presents a problem if you either A) do not have a device capable of tracking Power or B) do not have a Garmin device at all. - -The most common scenario for Peloton users is A, where they do not own a Power capable Garmin device and therefore are not able to configure their Power Zones in Garmin Connect. If you do not have Power or HR zones configured in Garmin Connect then you are not able to view accurate `Time In Zones` charts for a given workout. - -P2G provides a work around for this by optionally enriching the workout with the `Time In Zones` data with one caveat: the chart will not display the range value for the zone. - -![Example Cycling Workout](https://github.com/philosowaffle/peloton-to-garmin/blob/master/images/missing_zone_values.png?raw=true "Example Missing Zone Values") - -This is only available when generating and uploading the [FIT](#garmin-config) format. - -### Custom Device Info - -By default, P2G using a custom device when converting and upload workouts. This device information is needed in order to count your Peloton workouts towards Challenges and Badges on Garmin. However, you may observe on Garmin Connect that your Peloton workouts will show a device image that does not match your personal device. - -If you choose, you can provide P2G with your personal Device Info which will cause the Garmin workout to show the correct to device. Note, **this is completely optional and is only for cosmetic preference**, your workout will be converted, uploaded, and counted towards challenges regardless of whether this matches your personal device. - -See [configuring device info]({{ site.baseurl }}{% link configuration/providing-device-info.md %}) for detailed steps on how to create your `deviceInfo.xml`. - -### Lap Types - -P2G supports several different strategies for creating Laps in Garmin Connect. If a certain strategy is not available P2G will attempt to fallback to a different strategy. You can override this behavior by specifying your preferred Lap type in the config. When `PreferredLapType` is set, P2G will first attempt to generate your preferred type and then fall back to the default behavior if it is unable to. By default P2G will: - -1. First try to create laps based on `Class_Targets` -1. Then try to create laps based on `Class_Segments` -1. Finally fallback to create laps based on `Distance` - -| Strategy | Config Value | Description | -|:----------|:-------------|:------------| -| Class Targets | `Class_Targets` | If the Peloton data includes Target Cadence information, then laps will be created to match any time the Target Cadence changed. You must use this strategy if you want the Target Cadence to show up in Garmin on the Cadence chart. | -| Class Segments | `Class_Segments` | If the Peloton data includes Class Segment information, then laps will be created to match each segment: Warm Up, Cycling, Weights, Cool Down, etc. | -| Distance | `Distance` | P2G will caclulate Laps based on distance for each 1mi, 1km, or 500m (for Row only) based on your distance setting in Peloton. | - -## Peloton Config - -This section provides settings related to fetching workouts from Peloton. - -```json -"Peloton": { - "Email": "peloton@gmail.com", - "Password": "peloton", - "NumWorkoutsToDownload": 1, - "ExcludeWorkoutTypes": [ "meditation" ] - } -``` - -⚠️ Console or Docker Headless: Your username and password for Peloton and Garmin Connect are stored in clear text, which **is not secure**. Please be aware of the risks. ⚠️ - -⚠️ WebUI version 3.3.0: Credentials are stored **encrypted**. - -⚠️ GitHub Actions: Credentials are stored **encrypted**. - -| Field | Required | Default | UI Setting Location | Description | -|:-----------|:---------|:--------|:--------------------|:------------| -| Email | **yes** | `null` | `Peloton Tab` | Your Peloton email used to sign in | -| Password | **yes** | `null` | `Peloton Tab` | Your Peloton password used to sign in | -| NumWorkoutsToDownload | no | 5 | `Peloton Tab` | The default number of workouts to download. See [choosing number of workouts to download](#choosing-number-of-workouts-to-download). Set this to `0` if you would like P2G to prompt you each time for a number to download. | -| ExcludeWorkoutTypes | no | none | `Peloton Tab` | A comma separated list of workout types that you do not want P2G to download/convert/upload. See [example use cases](#exclude-workout-types) below. | - -### Choosing Number of Workouts To Download - -When choosing the number of workouts P2G should download each polling cycle its important to keep your configured [PollingInterval](#app-config) in mind. If, for example, your polling interval is set to hourly, then you may want to set `NumWorkoutsToDownload` to 4 or greater. This ensures if you did four 15min workouts during that hour they would all be captured. - -### Exclude Workout Types - -Example use cases: - -1. You take a wide variety of Peloton classes, including meditation and you want to skip uploading meditation classes. -1. You want to avoid double-counting activities you already track directly on a Garmin device, such as outdoor running workouts. - -The available values are: - -```json - Cycling - BikeBootcamp - TreadmillRunning - OutdoorRunning - TreadmillWalking - OutdoorWalking - Cardio - Circuit - Strength - Stretching - Yoga - Meditation -``` - -## Garmin Config - -This section provides settings related to uploading workouts to Garmin. - -```json -"Garmin": { - "Email": "garmin@gmail.com", - "Password": "garmin", - "TwoStepVerificationEnabled": false, - "Upload": false, - "FormatToUpload": "fit", - "UploadStrategy": 2 - } -``` - -⚠️ Console or Docker Headless: Your username and password for Peloton and Garmin Connect are stored in clear text, which **is not secure**. Please be aware of the risks. ⚠️ - -⚠️ WebUI version 3.3.0: Credentials are stored **encrypted**. - -⚠️ GitHub Actions: Credentials are stored **encrypted**. - -| Field | Required | Default | UI Setting Location | Description | -|:-----------|:---------|:--------|:--------------------|:------------| -| Email | **yes - if Upload=true** | `null` | `Garmin Tab` | Your Garmin email used to sign in | -| Password | **yes - if Upload=true** | `null` | `Garmin Tab` | Your Garmin password used to sign in | -| TwoStepVerificationEnabled | no | `false` | `Garmin Tab` | Whether or not your Garmin account is protected by Two Step Verification | -| Upload | no | `false` | `Garmin Tab` | `true` indicates you wish downloaded workouts to be automatically uploaded to Garmin for you. | -| FormatToUpload | no | `fit` | `Garmin Tab > Advanced` | Valid values are `fit` or `tcx`. Ensure the format you specify here is also enabled in your [Format config](#format-config) | -| UploadStrategy | **yes if Upload=true** | `null` | `Garmin Tab > Advanced` | Allows configuring different upload strategies for syncing with Garmin. Valid values are `[0 - PythonAndGuploadInstalledLocally, 1 - WindowsExeBundledPython, 2 - NativeImplV1]`. See [upload strategies](#upload-strategies) for more info. | - -### Upload Strategies - -Because Garmin does not officially support 3rd party uploads by small projects like P2G, over time we have occassionally encountered upload issues. This has caused P2G's upload strategy to evolve. Based on your installation method and or geo location, different upload strategies have worked for different people at different times. - -If you are just getting started with P2G, I recommend you start with upload strategy `2 - NativeImplV1`. You can find more details about the strategies below. - -| Strategy | Config Value | Supports Garmin Two Step Verification| Description | -|:----------|:-------------|:-------------------------------------|:------------| -| PythonAndGuploadInstalledLocally | 0 | maybe | The very first strategy P2G used. This assumes you have Python 3 and the [garmin-uploader](https://github.com/La0/garmin-uploader) python library already installed on your computer. This strategy uses the `garmin-uploader` python library for handling all uploads to Garmin. | -| WindowsExeBundledPython | 1 | no | If you are running the windows executable version of P2G and would like to use the [garmin-uploader](https://github.com/La0/garmin-uploader) python library for uploads then use this strategy. | -| NativeImplV1 | 2 | yes | **The most current and recommended upload strategy.** P2G preforms the upload to Garmin itself without relying on 3rd party libraries. | - -## Observability Config - -P2G supports publishing OpenTelemetry Metrics, Logs, and Trace. This section provides settings related to those pillars. - -The Observability config section contains three main sub-sections: - -1. [Prometheus](#prometheus-config) - Metrics -1. [Jaeger](#jaeger-config) - Traces -1. [Serilog](#serilog-config) - Logs - -```json -"Observability": { - - "Prometheus": { - "Enabled": false, - "Port": 4000 - }, - - "Jaeger": { - "Enabled": false, - "AgentHost": "localhost", - "AgentPort": 6831 - }, - - "Serilog": { - "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], - "MinimumLevel": "Information", - "WriteTo": [ - { "Name": "Console" }, - { - "Name": "File", - "Args": { - "path": "./output/log.txt", - "rollingInterval": "Day", - "retainedFileCountLimit": 7 - } - } - ] - } - } -``` - -### Prometheus Config - -```json -"Prometheus": { - "Enabled": false, - "Port": 4000 - } -``` - -| Field | Required | Default | Description | -|:-----------|:---------|:--------|:------------| -| Enabled | no | `false` | Whether or not to expose metrics. Metrics will be available at `http://localhost:{port}/metrics` | -| Port | no | `80` | The port the metrics endpoint should be served on. Only valid for Console mode, not Api/WebUI | - -If you are using Docker, ensure you have exposed the port from your container. - -#### Example Prometheus scraper config - -```yaml -- job_name: 'p2g' - scrape_interval: 60s - static_configs: - - targets: [:] - tls_config: - insecure_skip_verify: true -``` - -### Jaeger Config - -```json -"Jaeger": { - "Enabled": false, - "AgentHost": "localhost", - "AgentPort": 6831 - } -``` - -| Field | Required | Default | Description | -|:-----------|:---------|:--------|:------------| -| Enabled | no | `false` | Whether or not to generate traces. | -| AgentHost | **yes - if Enalbed=true** | `null` | The host address for your trace collector. | -| AgentPort | **yes - if Enabled=true** | `null` | The port for your trace collector. | - -### Serilog Config - -```json -"Serilog": { - "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Grafana.Loki" ], - "MinimumLevel": { - "Default": "Information", - "Override": { - "Microsoft": "Error", - "System": "Error" - } - }, - "WriteTo": [ - { "Name": "Console" }, - { - "Name": "File", - "Args": { - "path": "./output/log.txt", - "rollingInterval": "Day", - "retainedFileCountLimit": 7 - } - }, - { - "Name": "GrafanaLoki", - "Args": { - "uri": "http://192.168.1.95:3100", - "textFormatter": "Serilog.Sinks.Grafana.Loki.LokiJsonTextFormatter, Serilog.Sinks.Grafana.Loki", - "labels": [ - { - "key": "app", - "value": "p2g" - } - ] - } - }] -} -``` - -| Field | Required | Default | Description | -|:-----------|:---------|:--------|:------------| -| Using | no | `null` | A list of sinks you would like use. The valid sinks are listed in the examplea above. | -| MinimumLevel | no | `null` | The minimum level to write. `[Verbose, Debug, Information, Warning, Error, Fatal]` | -| WriteTo | no | `null` | Additional config for various sinks you are writing to. | - -More detailed information about configuring Logging can be found on the [Serilog Config Repo](https://github.com/serilog/serilog-settings-configuration#serilogsettingsconfiguration--). + +# Json Config File + +Based on your installation method, configuration may be provided via a `configuration.local.json` or it may be done via the user interface. In the below documentation you will see the information for both the JSON config file, and the Web UI. + +By default, P2G looks for a file named `configuration.local.json` in the same directory where the program is run. + +The config file is written in JSON and supports hot-reload for all fields except the following: + +1. `App.PollingintervalSeconds` +1. `Observability` Section + +The config file is organized into the below sections. + +| Section | Platforms | Description | +|:-------------|:----------|:------------------| +| [Api Config](#api-config) | Web UI | This section provides global settings for the P2G Api. | +| [WebUI Config](#webui-config) | Web UI | This section provides global settings for the P2G Web UI. | +| [App Config](#app-config) | Headless | This section provides global settings for the P2G application. | +| [Format Config](#format-config) | Headless | This section provides settings related to conversions and what formats should be created/saved. | +| [Peloton Config](#peloton-config) | Headless | This section provides settings related to fetching workouts from Peloton. | +| [Garmin Config](#garmin-config) | Headless | This section provides settings related to uploading workouts to Garmin. | +| [Observability Config](#observability-config) | All | This section provides settings related to Metrics, Logs, and Traces for monitoring purposes. | + +## Api Config + +If you aren't running the Web UI version of P2G you can ignore this section. + +This section lives in `webui.local.json`. + +```json + "Api": { + "HostUrl": "http://p2g-api:8080" + } +``` + +| Field | Required | Default | UI Setting Location | Description | +|:-----------|:---------|:--------|:--------------------|:------------| +| HostUrl | yes | `null` | none | The host and port for the Web UI to communicate with the Api. | + +### Advanced usage + +Typically this section is only needed in the `webui.local.json` so that the Web UI knows where to find the running Api. However, if you have a unique setup and need to modify the Host and Port the Api binds to, then you can also provide this config section in the `api.local.json`. + +```json + "Api": { + "HostUrl": "http://*:8080" + } +``` + +| Field | Required | Default | UI Setting Location | Description | +|:-----------|:---------|:--------|:--------------------|:------------| +| HostUrl | no | `http://localhost:8080` | none | The host and port the Api should bind to and listen on. | + +## WebUI Config + +If you aren't running the Web UI version of P2G you can ignore this section. + +You can provide this config section in the `webui.local.json`. + +```json + "WebUI": { + "HostUrl": "http://*:8080" + } +``` + +| Field | Required | Default | UI Setting Location | Description | +|:-----------|:---------|:--------|:--------------------|:------------| +| HostUrl | no | `http://localhost:8080` | none | The host and port the WebUI should bind to and listen on. | + +## App Config + +This section provides global settings for the P2G application. + +```json + "App": { + "EnablePolling": true, + "PollingIntervalSeconds": 86400, + "CheckForUpdates": true + } +``` + +| Field | Required | Default | UI Setting Location | Description | +|:-----------|:---------|:--------|:--------------------|:------------| +| EnablePolling | no | `true` | `App Tab` | `true` if you wish P2G to run continuously and poll Peloton for new workouts. | +| PollingIntervalSeconds | no | 86400 | `App Tab` | The polling interval in seconds determines how frequently P2G should check for new workouts. Be warned, that setting this to a frequency of hourly or less may get you flagged by Peloton as a bad actor and they may reset your password. The default is set to Daily. | +| CheckForUpdates | no | `true` | `App Tab` | `true` if P2G should check for updates and write a log message if a new release is available. If using the UI this message will display there as well. | + +## Format Config + +This section provides settings related to conversions and what formats should be created/saved. P2G supports converting Peloton workouts into a variety of different formats. P2G also lets you choose whether or not you wish to save a local copy when the conversion is completed. This can be useful if you wish to backup your workouts or upload them manually to a different service other than Garmin. + +```json +"Format": { + "Fit": true, + "Json": false, + "Tcx": false, + "SaveLocalCopy": false, + "IncldudeTimeInHRZones": false, + "IncludeTimeInPowerZones": false, + "DeviceInfoPath": "./deviceInfo.xml", + "Cycling": { + "PreferredLapType": "Class_Targets" + }, + "Running": { + "PreferredLapType": "Distance" + }, + "Rowing": { + "PreferredLapType": "Class_Segments" + }, + "Strength": { + "DefaultSecondsPerRep": 3 + }, + "WorkoutTitleTemplate": "{{PelotonWorkoutTitle}} with {{PelotonInstructorName}}" + } +``` + +| Field | Required | Default | UI Setting Location | Description | +|:-----------|:---------|:--------|:--------------------|:------------| +| Fit | no | `false` | `Conversion Tab` | `true` indicates you wish downloaded workouts to be converted to FIT | +| Json | no | `false` | `Conversion Tab` | `true` indicates you wish downloaded workouts to be converted to JSON. This will automatically save a local copy when enabled. | +| Tcx | no | `false` | `Conversion Tab` | `true` indicates you wish downloaded workouts to be converted to TCX | +| SaveLocalCopy | no | `false` | `Conversion > Advanced` | `true` will save any converted workouts to your specified [OutputDirectory](#app-config) | +| IncludeTimeInHRZones | no | `false` | `Conversion > Advanced` | **Only use this if you are unable to configure your Max HR on Garmin Connect.** When set to True, P2G will attempt to capture the time spent in each HR Zone per the data returned by Peloton. See [understanding custom zones](#understanding-custom-zones). +| IncludePowerInHRZones | no | `false` | `Conversion > Advanced` | **Only use this if you are unable to configure your FTP and Power Zones on Garmin Connect.** When set to True, P2G will attempt to capture the time spent in each Power Zone per the data returned by Peloton. See [understanding custom zones](#understanding-custom-zones). | +| DeviceInfoPath | no | `null` | `Conversion > Advanced` | The path to your `deviceInfo.xml` file. See [providing device info](#custom-device-info) | +| Cycling | no | `null` | none | Configuration specific to Cycling workouts. | +| Cycling.PreferredLapType | no | `Default` | `Conversion Tab` | The preferred [lap type to use](#lap-types). | +| Running | no | `null` | none | Configuration specific to Running workouts. | +| Running.PreferredLapType | no | `Default` | `Conversion Tab` | The preferred [lap type to use](#lap-types). | +| Rowing | no | `null` | none | Configuration specific to Rowing workouts. | +| Rowing.PreferredLapType | no | `Default` | `Conversion Tab` | The preferred [lap type to use](#lap-types). | +| Strength | no | `null` | `Conversion Tab` | Configuration specific to Strength workouts. | +| Strength.DefaultSecondsPerRep | no | `3` | `Conversion Tab` | For exercises that are done for time instead of reps, P2G can estimate how many reps you completed using this value. Ex. If `DefaultSecondsPerRep=3` and you do Curls for 15s, P2G will estimate you completed 5 reps. | +| WorkoutTitleTemplate | no | `{{PelotonWorkoutTitle}} with {{PelotonInstructorName}}` | `Conversion Tab` | Allows you to customize how your workout title will appear in Garmin Connect using [Handlebars templates](https://github.com/Handlebars-Net/Handlebars.Net). [Read More...](#workout-title-templating) | + +### Understanding Custom Zones + +Garmin Connect expects that users have a registered device and they expect users have set up their HR and Power Zones on that device. However, this presents a problem if you either: + +* A) do not have a device capable of tracking Power +* B) do not have a Garmin device at all. + +The most common scenario for Peloton users is scenario `A`, where they do not own a Power capable Garmin device and therefore are not able to configure their Power Zones in Garmin Connect. If you do not have Power or HR zones configured in Garmin Connect then you are not able to view accurate `Time In Zones` charts for a given workout. + +P2G provides a work around for this by optionally enriching the workout with the `Time In Zones` data with one caveat: the chart will not display the range value for the zone. + +![Example Cycling Workout](https://github.com/philosowaffle/peloton-to-garmin/blob/master/images/missing_zone_values.png?raw=true "Example Missing Zone Values") + +This is only available when generating and uploading the [FIT](#garmin-config) format. + +### Custom Device Info + +By default, P2G using a custom device when converting and upload workouts. This device information is needed in order to count your Peloton workouts towards Challenges and Badges on Garmin. However, you may observe on Garmin Connect that your Peloton workouts will show a device image that does not match your personal device. + +If you choose, you can provide P2G with your personal Device Info which will cause the Garmin workout to show the correct to device. Note, **this is completely optional and is only for cosmetic preference**, your workout will be converted, uploaded, and counted towards challenges regardless of whether this matches your personal device. + +See [configuring device info](providing-device-info.md) for detailed steps on how to create your `deviceInfo.xml`. + +### Lap Types + +P2G supports several different strategies for creating Laps in Garmin Connect. If a certain strategy is not available P2G will attempt to fallback to a different strategy. You can override this behavior by specifying your preferred Lap type in the config. When `PreferredLapType` is set, P2G will first attempt to generate your preferred type and then fall back to the default behavior if it is unable to. By default P2G will: + +1. First try to create laps based on `Class_Targets` +1. Then try to create laps based on `Class_Segments` +1. Finally fallback to create laps based on `Distance` + +| Strategy | Config Value | Description | +|:----------|:-------------|:------------| +| Class Targets | `Class_Targets` | If the Peloton data includes Target Cadence information, then laps will be created to match any time the Target Cadence changed. You must use this strategy if you want the Target Cadence to show up in Garmin on the Cadence chart. | +| Class Segments | `Class_Segments` | If the Peloton data includes Class Segment information, then laps will be created to match each segment: Warm Up, Cycling, Weights, Cool Down, etc. | +| Distance | `Distance` | P2G will caclulate Laps based on distance for each 1mi, 1km, or 500m (for Row only) based on your distance setting in Peloton. | + +### Workout Title Templating + +Some characters are not allowed to be used in the workout titles. If you use these characters in your configuration they will automatically be replaced with `-`. Additionally, Garmin has a limit on how long a title will be. If the title exceeds this limit (~45 characters) then the title will be truncated. + +The below data fields are available for use in the template: + +* `PelotonWorkoutTitle` - Peloton provides this usually in the form of "10 min HITT Ride" +* `PelotonInstructorName` - Peloton provides this as the full instructors name: "Ally Love" + +**Note:** + +For this setting to take effect, your Garmin Connect account must be set to allow custom workout names. In the Garmin Connect web interface click on the user icon in the top right, select `Account Settings` then `Display Preferences` ([shortcut](https://connect.garmin.com/modern/settings/displayPreferences)). +Change the `Activity Name` setting to `Workout Name (when available)`. This will allow the custom workout name to sync, and should still allow the standard behavior when syncing non-P2G activities directly. + +## Peloton Config + +This section provides settings related to fetching workouts from Peloton. + +```json +"Peloton": { + "Email": "peloton@gmail.com", + "Password": "peloton", + "NumWorkoutsToDownload": 1, + "ExcludeWorkoutTypes": [ "meditation" ] + } +``` + +!!! warning + + Console or Docker Headless: Your username and password for Peloton and Garmin Connect are stored in clear text, which **is not secure**. Please be aware of the risks. + + +!!! success "WebUI version 3.3.0: Credentials are stored **encrypted**." + +!!! success "GitHub Actions: Credentials are stored **encrypted**." + +| Field | Required | Default | UI Setting Location | Description | +|:-----------|:---------|:--------|:--------------------|:------------| +| Email | **yes** | `null` | `Peloton Tab` | Your Peloton email used to sign in | +| Password | **yes** | `null` | `Peloton Tab` | Your Peloton password used to sign in. **Note: Does not support `\` character in password** | +| NumWorkoutsToDownload | no | 5 | `Peloton Tab` | The default number of workouts to download. See [choosing number of workouts to download](#choosing-number-of-workouts-to-download). Set this to `0` if you would like P2G to prompt you each time for a number to download. | +| ExcludeWorkoutTypes | no | none | `Peloton Tab` | A comma separated list of workout types that you do not want P2G to download/convert/upload. See [example use cases](#exclude-workout-types) below. | + +### Choosing Number of Workouts To Download + +When choosing the number of workouts P2G should download each polling cycle its important to keep your configured [PollingInterval](#app-config) in mind. If, for example, your polling interval is set to hourly, then you may want to set `NumWorkoutsToDownload` to 4 or greater. This ensures if you did four 15min workouts during that hour they would all be captured. + +### Exclude Workout Types + +Example use cases: + +1. You take a wide variety of Peloton classes, including meditation and you want to skip uploading meditation classes. +1. You want to avoid double-counting activities you already track directly on a Garmin device, such as outdoor running workouts. + +The available values are: + +```json + Cycling + Outdoor Cycling + BikeBootcamp + TreadmillRunning + OutdoorRunning + TreadmillWalking + OutdoorWalking + Cardio + Circuit + Strength + Stretching + Yoga + Meditation +``` + +## Garmin Config + +This section provides settings related to uploading workouts to Garmin. + +```json +"Garmin": { + "Email": "garmin@gmail.com", + "Password": "garmin", + "TwoStepVerificationEnabled": false, + "Upload": false, + "FormatToUpload": "fit" + } +``` + +!!! warning + + Console or Docker Headless: Your username and password for Peloton and Garmin Connect are stored in clear text, which **is not secure**. Please be aware of the risks. + +!!! success "WebUI version 3.3.0: Credentials are stored **encrypted**." + +!!! success "GitHub Actions: Credentials are stored **encrypted**." + +| Field | Required | Default | UI Setting Location | Description | +|:-----------|:---------|:--------|:--------------------|:------------| +| Email | **yes - if Upload=true** | `null` | `Garmin Tab` | Your Garmin email used to sign in | +| Password | **yes - if Upload=true** | `null` | `Garmin Tab` | Your Garmin password used to sign in. **Note: Does not support `\` character in password** | +| TwoStepVerificationEnabled | no | `false` | `Garmin Tab` | Whether or not your Garmin account is protected by Two Step Verification | +| Upload | no | `false` | `Garmin Tab` | `true` indicates you wish downloaded workouts to be automatically uploaded to Garmin for you. | +| FormatToUpload | no | `fit` | `Garmin Tab > Advanced` | Valid values are `fit` or `tcx`. Ensure the format you specify here is also enabled in your [Format config](#format-config) | + +## Observability Config + +P2G supports publishing OpenTelemetry Metrics, Logs, and Trace. This section provides settings related to those pillars. + +The Observability config section contains three main sub-sections: + +1. [Prometheus](#prometheus-config) - Metrics +1. [Jaeger](#jaeger-config) - Traces +1. [Serilog](#serilog-config) - Logs + +```json +"Observability": { + + "Prometheus": { + "Enabled": false, + "Port": 4000 + }, + + "Jaeger": { + "Enabled": false, + "AgentHost": "localhost", + "AgentPort": 6831 + }, + + "Serilog": { + "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], + "MinimumLevel": "Information", + "WriteTo": [ + { "Name": "Console" }, + { + "Name": "File", + "Args": { + "path": "./output/log.txt", + "rollingInterval": "Day", + "retainedFileCountLimit": 7 + } + } + ] + } + } +``` + +### Prometheus Config + +```json +"Prometheus": { + "Enabled": false, + "Port": 4000 + } +``` + +| Field | Required | Default | Description | +|:-----------|:---------|:--------|:------------| +| Enabled | no | `false` | Whether or not to expose metrics. Metrics will be available at `http://localhost:{port}/metrics` | +| Port | no | `80` | The port the metrics endpoint should be served on. Only valid for Console mode, not Api/WebUI | + +If you are using Docker, ensure you have exposed the port from your container. + +#### Example Prometheus scraper config + +```yaml +- job_name: 'p2g' + scrape_interval: 60s + static_configs: + - targets: [:] + tls_config: + insecure_skip_verify: true +``` + +### Jaeger Config + +```json +"Jaeger": { + "Enabled": false, + "AgentHost": "localhost", + "AgentPort": 6831 + } +``` + +| Field | Required | Default | Description | +|:-----------|:---------|:--------|:------------| +| Enabled | no | `false` | Whether or not to generate traces. | +| AgentHost | **yes - if Enalbed=true** | `null` | The host address for your trace collector. | +| AgentPort | **yes - if Enabled=true** | `null` | The port for your trace collector. | + +### Serilog Config + +```json +"Serilog": { + "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Grafana.Loki" ], + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Error", + "System": "Error" + } + }, + "WriteTo": [ + { "Name": "Console" }, + { + "Name": "File", + "Args": { + "path": "./output/log.txt", + "rollingInterval": "Day", + "retainedFileCountLimit": 7 + } + }, + { + "Name": "GrafanaLoki", + "Args": { + "uri": "http://192.168.1.95:3100", + "textFormatter": "Serilog.Sinks.Grafana.Loki.LokiJsonTextFormatter, Serilog.Sinks.Grafana.Loki", + "labels": [ + { + "key": "app", + "value": "p2g" + } + ] + } + }] +} +``` + +| Field | Required | Default | Description | +|:-----------|:---------|:--------|:------------| +| Using | no | `null` | A list of sinks you would like use. The valid sinks are listed in the examplea above. | +| MinimumLevel | no | `null` | The minimum level to write. `[Verbose, Debug, Information, Warning, Error, Fatal]` | +| WriteTo | no | `null` | Additional config for various sinks you are writing to. | + +More detailed information about configuring Logging can be found on the [Serilog Config Repo](https://github.com/serilog/serilog-settings-configuration#serilogsettingsconfiguration--). diff --git a/docs/configuration/providing-device-info.md b/mkdocs/docs/configuration/providing-device-info.md similarity index 93% rename from docs/configuration/providing-device-info.md rename to mkdocs/docs/configuration/providing-device-info.md index d1a6a9574..0ca78a9e7 100644 --- a/docs/configuration/providing-device-info.md +++ b/mkdocs/docs/configuration/providing-device-info.md @@ -1,9 +1,3 @@ ---- -layout: default -title: Providing Device Info -parent: Configuration -nav_order: 3 ---- # Device Info @@ -43,7 +37,7 @@ If you choose, you can provide P2G with your personal Device Info which will cau 1. Save the file as `deviceInfo.xml` 1. Configure P2G to use the device info file 1. Move your prepared `deviceInfo.xml` file so that it is in your P2G folder - 1. Modify the [DeviceInfoPath]({{ site.baseurl }}{% link configuration/json.md %}#format-config) to point to the location of your `deviceInfo.xml` + 1. Modify the [DeviceInfoPath](json.md#format-config) to point to the location of your `deviceInfo.xml` 1. If you are using Docker, ensure you have mounted the files location into the container ### Example diff --git a/docs/contributing.md b/mkdocs/docs/contributing.md similarity index 83% rename from docs/contributing.md rename to mkdocs/docs/contributing.md index ba0a5fe9f..e03dff521 100644 --- a/docs/contributing.md +++ b/mkdocs/docs/contributing.md @@ -1,9 +1,3 @@ ---- -layout: default -title: Contributing -nav_order: 8 ---- - # Contributing Enhancements and fixes are always welcome. Feel free to contribute to any of the Issues not already assigned to another person. @@ -24,12 +18,12 @@ Ensure that your code: ``` > dotnet restore > dotnet build -> dotnet run ./src/PelotonToGarminConsole/PelotonToGarminConsole.csproj +> dotnet run ./src/ConsoleClient/ConsoleClient.csproj ``` ## Package Windows exe ``` -> dotnet publish ./src/PelotonToGarminConsole/PelotonToGarminConsole.csproj --no-restore -c Release -r win10-x64 -o ./dist --version-suffix local +> dotnet publish ./src/ConsoleClient/ConsoleClient.csproj --no-restore -c Release -r win10-x64 -o ./dist --version-suffix local ``` ## Developing against garmin-upload python library diff --git a/docs/faq.md b/mkdocs/docs/faq.md similarity index 75% rename from docs/faq.md rename to mkdocs/docs/faq.md index aaacc9287..ac4ddb017 100644 --- a/docs/faq.md +++ b/mkdocs/docs/faq.md @@ -1,27 +1,18 @@ ---- -layout: default -title: FAQ -nav_order: 6 ---- - # F.A.Q. Below are a list of commonly asked questions. For even more help head on over to the [discussion forum](https://github.com/philosowaffle/peloton-to-garmin/discussions). -1. TOC -{:toc} - ## VO2 Max and TSS Garmin will only generate a VO2 max for your workouts if all of the following criteria are met: 1. Your personal Garmin device already supports VO2 Max Calculations -1. You have not configured a [custom device info file]({{ site.baseurl }}{% link configuration/providing-device-info.md %}) (i.e. you are using the defaults) +1. You have not configured a [custom device info file](configuration/providing-device-info.md) (i.e. you are using the defaults) 1. You have met all of [Garmin's VO2 requirements](https://support.garmin.com/en-SG/?faq=MyIZ05OMpu6wSl95UVUjp7) for your workout type ## Garmin Two Step Verification -Only some [install options have support]({{ site.baseurl }}{% link install/index.md %}) for Garmin Two Step Verification. In all cases, automatic-syncing is never supported when your Garmin account is protected by two step verification. +Only some [install options have support](install/index.md) for Garmin Two Step Verification. In all cases, automatic-syncing is never supported when your Garmin account is protected by two step verification. ## Garmin Upload Not Working @@ -39,4 +30,4 @@ If the problem persists head on over to the [discussion forum](https://github.co ## My Zones are missing the range values in Garmin Connect -See [Understanding custom zones]({{ site.baseurl }}{% link configuration/json.md %}#understanding-custom-zones). \ No newline at end of file +See [Understanding custom zones](configuration/json.md#understanding-custom-zones). diff --git a/docs/features.md b/mkdocs/docs/features.md similarity index 61% rename from docs/features.md rename to mkdocs/docs/features.md index 178433295..2e30c9972 100644 --- a/docs/features.md +++ b/mkdocs/docs/features.md @@ -1,35 +1,43 @@ ---- -layout: default -title: Features -nav_order: 1 ---- # Features -Convert, Backup, and Sync. +Convert, Backup, and Sync your Peloton workouts to Garmin Connect locally and for free. + +## Workout Data + +1. Workout Types Supported + 1. Bike + 1. Tread + 1. Rower + 1. Meditation + 1. Strength + 1. Outdoor + 1. and more +1. Workout Data + 1. Heart Rate + 1. Cadence + 1. Target Cadence + 1. Distance + 1. Power + 1. Laps + 1. and more +1. Strength Data + 1. Exercise Name + 1. Rep count + 1. Weight + +## Garmin Sync -## Feature List - -1. Syncs workout data from Peloton to Garmin Connect -1. Supports all Peloton workout types (Biking, Tread, Core, Meditation, Rower etc.) 1. Supports Garmin accounts protected by Two Step Verification -1. Syncs all available metric data from Peloton over to Garmin Connect -1. Syncs laps and target cadence 1. Synced workouts count towards Garmin Badges and Challenges -1. Synced workouts count towards VO2 Max [1]({{ site.baseurl }}{% link faq.md %}) and Training Stress Scores -1. Syncs Exercise information (including reps and weight) for Strength and Core workouts (when available) -1. Syncs on demand or on a schedule -1. Highly Configurable -1. Docker-ized -1. OpenTelemetry for the data nerds +1. Synced workouts count towards VO2 Max [1](faq.md) and Training Stress Scores -### Data Synced +## P2G -1. HR -1. Cadence -1. Target Cadence -1. Distance -1. Power +1. Syncs on-demand or on a schedule +1. Highly configurable +1. Docker-ized +1. OpenTelemetry for the data nerds ## Typical Usage @@ -42,7 +50,7 @@ Convert, Backup, and Sync. ## Screenshots -#### Converted and imported Cycling Workout +### Converted and imported Cycling Workout ![Converted Cycling Workout](https://github.com/philosowaffle/peloton-to-garmin/raw/master/images/example_cycle.png?raw=true "Converted Cycling Workout") @@ -58,5 +66,6 @@ Convert, Backup, and Sync. ![Laps](https://github.com/philosowaffle/peloton-to-garmin/raw/master/images/example_laps.png?raw=true "Laps") -### Web UI -![Web UI Demo](https://github.com/philosowaffle/peloton-to-garmin/raw/master/images/p2g_webui_demo.gif?raw=true "Web UI Demo") +### UI + +![P2G UI Demo](img/p2g_demo.gif "P2G UI Demo") diff --git a/mkdocs/docs/help.md b/mkdocs/docs/help.md new file mode 100644 index 000000000..db88631ca --- /dev/null +++ b/mkdocs/docs/help.md @@ -0,0 +1,53 @@ + +# Help + +If you are encountering a problem, here are some resources that may help you. + +## Discussion Forum + +[Search the Discussion Forum](https://github.com/philosowaffle/peloton-to-garmin/discussions) to see if your topic has already been discussed before. Take note that the search bar lets you filter by `open` and `closed` discussions, it is beneficial to check both. + +!!! tip "Have a question? Need help with something?" + + The [Discussion Forum](https://github.com/philosowaffle/peloton-to-garmin/discussions) is the best place to post. When posting please ensure you are [providing the right details](#providing-the-right-details). + +## Issues + +Bugs, feature requests, and more often get tracked in the [Issues](https://github.com/philosowaffle/peloton-to-garmin/issues) tab in Github. This is also a great place to search for information. Particularly important issues that impact many people will usually be pinned and highly visible. Take note that the search bar lets you filter by `open` and `closed` issues, it is beneficial to check both. + +!!! tip "Have a feature idea? Encountered a bug?" + + Creating a new [Issue](https://github.com/philosowaffle/peloton-to-garmin/issues) is the best place to post. When posting please ensure you are [providing the right details](#providing-the-right-details). + +## Providing the right details + +P2G can be run in a variety of different ways and its difficult for people to provide help if they have to guess about your particular setup. When asking for help, or logging a bug, please be sure to include the below information at a minimum for the most effective help: + +1. How are you running P2G? In other words, which [install mtehod](install/index.md) did you choose when you setup P2G? +1. What [version of P2G](#finding-version) are you running? +1. A copy of the log files that were generated, ideally the entire log file, not just the part where you see an error. See [Finding logs](#finding-logs). + +## Finding logs + +### Headless / Docker Headless + +The log files will be written to `output/log.txt`. + +### Windows UI / Web UI + +Naviate to the `About` page, then click the `Logs` tab. Additionally, the log files will be written to `output/log.txt`. + +### GitHub Actions + +If your forked repository is public, then you can simply provide a link to the repository and people can view the necessary logs from there. If your repository is private then to find the logs for a given run: + +1. Go to your copy of the repository +1. Select the `Actions` tab, along the top left of the view +1. Click the very first `Sync workflow`` item to open up that workflow +1. In the left hand menu, under Jobs click `sync` +1. Finally, expand the item that says `Run /app/PelotonToGarminConsole` +1. Share the logs from this view + +## Finding version + +Version information is always written as the first thing in the [log file](#finding-logs). Additionally, on a UI version of P2G you can find the version information on the `About` page. diff --git a/mkdocs/docs/img/256x256.png b/mkdocs/docs/img/256x256.png new file mode 100644 index 000000000..982917379 Binary files /dev/null and b/mkdocs/docs/img/256x256.png differ diff --git a/docs/favicon.ico b/mkdocs/docs/img/favicon.ico similarity index 100% rename from docs/favicon.ico rename to mkdocs/docs/img/favicon.ico diff --git a/mkdocs/docs/img/p2g_demo.gif b/mkdocs/docs/img/p2g_demo.gif new file mode 100644 index 000000000..42c384c02 Binary files /dev/null and b/mkdocs/docs/img/p2g_demo.gif differ diff --git a/docs/index.md b/mkdocs/docs/index.md similarity index 54% rename from docs/index.md rename to mkdocs/docs/index.md index bcfb57598..5a1a6a43c 100644 --- a/docs/index.md +++ b/mkdocs/docs/index.md @@ -1,23 +1,16 @@ ---- -layout: default -title: Home -nav_order: 0 ---- # Home -Sync workouts from Peloton to Garmin. +Sync your Peloton workouts to Garmin locally and for free. + +![P2G UI Demo](img/p2g_demo.gif "P2G UI Demo") * Fetch latest workouts from Peloton - * Bike, Tread, Rower, Meditation, Strength, Outdoor, and more -* Automatically upload TCX or FIT workout to Garmin -* Convert Peloton workouts to a variety of formats for offline backup -* Earn Badges and credit for Garmin Challenges -* Counts towards VO2 Max [1]({{ site.baseurl }}{% link faq.md %}) and Training Stress Scores -* Supports Garmin accounts protected by Two Step Verification -* Supports mapping Exercises from Strength workouts +* Create backups +* Automatically upload your workouts to Garmin +* [And more...](features.md) -Head on over to the [Install]({{ site.baseurl }}{% link install/index.md %}) page to get started! +### Head on over to the [Install](install/index.md) page to get started! ## Example Usage @@ -29,12 +22,12 @@ Head on over to the [Install]({{ site.baseurl }}{% link install/index.md %}) pag ![Example Cycling Workout](https://github.com/philosowaffle/peloton-to-garmin/blob/master/images/example_cycle.png?raw=true "Example Cycling Workout") -## Supported Platforms +!!!note "Supported Platforms" -* Windows -* Mac -* Linux -* Docker + * Windows + * Mac + * Linux + * Docker ## Contributors diff --git a/mkdocs/docs/install/docker-headless.md b/mkdocs/docs/install/docker-headless.md new file mode 100644 index 000000000..c75a896ed --- /dev/null +++ b/mkdocs/docs/install/docker-headless.md @@ -0,0 +1,45 @@ + +# Docker Headless + +This flavor of P2G runs without any user interface and relies on configuration from `configuration.local.json` file. + +!!! info "[DockerHub](https://hub.docker.com/r/philosowaffle/peloton-to-garmin)" + + ```bash + docker run -i -v /full/path/to/configuration.local.json:/app/configuration.local.json -v /full/path/to/output:/app/output philosowaffle/peloton-to-garmin:stable + ``` + +!!! info "[GitHub Package](https://github.com/philosowaffle/peloton-to-garmin/pkgs/container/peloton-to-garmin)" + + ```bash + docker run -i -v /full/path/to/configuration.local.json:/app/configuration.local.json -v /full/path/to/output:/app/output ghcr.io/philosowaffle/peloton-to-garmin:stable + ``` + +## docker-compose + +*Pre-requisite:* You have either `docker-compose` or `Docker Desktop` installed +*This method does not work with Garmin accounts protected by Two Step Verification* + +1. Create a directory `p2g-headless` + 1. Inside this folder create a [docker-compose.yaml](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/headless/docker-compose.yaml) file in the directory + 1. Also create a [configuration.local.json](https://github.com/philosowaffle/peloton-to-garmin/blob/master/configuration.example.json) file in the directory. + 1. Edit the configuration file to use your Peloton and Garmin credentials +1. Open a terminal in this folder +1. Run: `docker-compose pull && docker-compose up -d` + +Any logs or generated files will be available in the `output` directory. Additionally, you can learn more about customizing your configuration over in the [Configuration Section](../configuration/index.md) + +### To stop P2G + +1. You can use Docker Desktop application to kill the containers +1. Or, you can open a terminal in the `p2g-headless` folder + 1. Run: `docker-compose down` + +### To update P2G + +1. Open a terminal in the `p2g-headless` folder + 1. Run: `docker-compose pull && docker-compose up -d` + +## Prometheus + +If you configure P2G to serve Prometheus metrics then you will also need to map the corresponding port for your docker container. By default, Prometheus metrics will be served on port `4000`. You can learn more about P2G and Prometheus in the [Observability Configuration](../configuration/index.md) section. diff --git a/docs/install/docker-webui.md b/mkdocs/docs/install/docker-webui.md similarity index 84% rename from docs/install/docker-webui.md rename to mkdocs/docs/install/docker-webui.md index a81e3c512..d40149823 100644 --- a/docs/install/docker-webui.md +++ b/mkdocs/docs/install/docker-webui.md @@ -1,81 +1,75 @@ ---- -layout: default -title: Docker - Web UI -parent: Install -nav_order: 1 ---- - -# Docker - Web UI - -With version 3, P2G now ships with an optional User Interface. Some key features include: - -1. Configure your settings via a user interface -1. Trigger a sync from any browser (your computer, your phone, etc.) -1. Sync service can still run in the background, syncing periodically -1. OpenApi for custom scripts and workflows - -![Web UI Demo](https://github.com/philosowaffle/peloton-to-garmin/raw/master/images/p2g_webui_demo.gif?raw=true "Web UI Demo") - -## docker-compose - -*Pre-requisite:* You have either `docker-compose` or `Docker Desktop` installed - -1. Create a folder named `p2g-webui` - 1. Inside this folder create [docker-compose.yaml](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/webui/docker-compose-ui.yaml) - 1. Also create [api.local.json](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/webui/api.local.json) - 1. Also create [webui.local.json](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/webui/webui.local.json) -1. Open a terminal in this folder -1. Run: `docker-compose pull && docker-compose up -d` - 1. This will pull the containers and start them up running in the background - 1. You can close the terminal at this time -1. Open a browser and navigate to `http://localhost:8002` - -Any logs or generated files will be available in the `output` directory. Additionally, you can learn more about customizing your configuration over in the [Configuration Section]({{ site.baseurl }}{% link configuration/index.md %}) - -### To stop P2G - -1. You can use Docker Desktop application to kill the containers -1. Or, you can open a terminal in the `p2g-webui` folder - 1. Run: `docker-compose down` - -### To update P2G - -1. Open a terminal in the `p2g-webui` folder - 1. Run: `docker-compose pull && docker-compose up -d` - -## Configuration - -If you are migrating to the Web UI for the first time you will need to reconfigure most of your settings using the user interface. The only settings that are carried over and still configured via the configuration file are the ones related to `Observability` and `Api`. - -## Open Api - -To access the Open API spec for P2G you will need to expose the below port on the Api docker container. The open API spec will be available at `http://localhost:8001/swagger`. - -```yaml -version: "3.9" - -services: - p2g-api: - container_name: p2g-api - image: philosowaffle/peloton-to-garmin:api-stable - environment: - - TZ=America/Chicago - ports: - - 8001:8080 # to access the api or swagger docs - volumes: - - ./api.local.json:/app/configuration.local.json - - ./data:/app/data - - ./output:/app/output - - p2g-webui: - container_name: p2g-webui - image: philosowaffle/peloton-to-garmin:webui-stable - ports: - - 8002:8080 - environment: - - TZ=America/Chicago - volumes: - - ./webui.local.json:/app/configuration.local.json - depends_on: - - p2g-api -``` + +# Docker - Web UI + +P2G provides a website user interface. Some key features include: + +1. Configure your settings via a user interface +1. Trigger a sync from any browser (your computer, your phone, etc.) +1. Sync service can still run in the background, syncing periodically +1. OpenApi for custom scripts and workflows + +![P2G UI Demo](../img/p2g_demo.gif "P2G UI Demo") + +## docker-compose + +*Pre-requisite:* You have either `docker-compose` or `Docker Desktop` installed + +1. Create a folder named `p2g-webui` + 1. Inside this folder create [docker-compose.yaml](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/webui/docker-compose-ui.yaml) + 1. Also create [api.local.json](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/webui/api.local.json) + 1. Also create [webui.local.json](https://github.com/philosowaffle/peloton-to-garmin/blob/master/docker/webui/webui.local.json) +1. Open a terminal in this folder +1. Run: `docker-compose pull && docker-compose up -d` + 1. This will pull the containers and start them up running in the background + 1. You can close the terminal at this time +1. Open a browser and navigate to `http://localhost:8002` + +Any logs or generated files will be available in the `output` directory. Additionally, you can learn more about customizing your configuration over in the [Configuration Section](../configuration/index.md) + +### To stop P2G + +1. You can use Docker Desktop application to kill the containers +1. Or, you can open a terminal in the `p2g-webui` folder + 1. Run: `docker-compose down` + +### To update P2G + +1. Open a terminal in the `p2g-webui` folder + 1. Run: `docker-compose pull && docker-compose up -d` + +## Configuration + +If you are migrating to the Web UI for the first time you will need to reconfigure most of your settings using the user interface. The only settings that are carried over and still configured via the configuration file are the ones related to `Observability`. + +## Open Api + +To access the Open API spec for P2G you will need to expose the below port on the Api docker container. The open API spec will be available at `http://localhost:8001/swagger`. + +```yaml +version: "3.9" + +services: + p2g-api: + container_name: p2g-api + image: philosowaffle/peloton-to-garmin:api-stable + environment: + - TZ=America/Chicago + ports: + - 8001:8080 # to access the api or swagger docs + volumes: + - ./api.local.json:/app/configuration.local.json + - ./data:/app/data + - ./output:/app/output + + p2g-webui: + container_name: p2g-webui + image: philosowaffle/peloton-to-garmin:webui-stable + ports: + - 8002:8080 + environment: + - TZ=America/Chicago + volumes: + - ./webui.local.json:/app/configuration.local.json + depends_on: + - p2g-api +``` diff --git a/docs/install/docker.md b/mkdocs/docs/install/docker.md similarity index 62% rename from docs/install/docker.md rename to mkdocs/docs/install/docker.md index 64909dca4..181dc5faf 100644 --- a/docs/install/docker.md +++ b/mkdocs/docs/install/docker.md @@ -1,59 +1,61 @@ ---- -layout: default -title: Docker -parent: Install -nav_order: 0 ---- - -# Docker - -The recommended installation method is with Docker. If you're not familiar with Docker but would like to try it check out the [quick start guide](#quick-start-guide). - -P2G offers two main flavors of docker images: - -| Flavor | Support Garmin 2-Step Verification | Support Automatic Syncing | -|:------------------|:-----------------------------------|:--------------------------| -| [Web UI]({{ site.baseurl }}{% link install/docker-webui.md %}) | yes | only when Garmin 2fa is disabled | -| [Docker Headless]({{ site.baseurl }}{% link install/docker-headless.md %}) | partial | only when Garmin 2fa is disabled | - -## Image Repositories - -P2G publishes Docker images to both [DockerHub](https://hub.docker.com/r/philosowaffle/peloton-to-garmin) and [GitHub Package](https://github.com/philosowaffle/peloton-to-garmin/pkgs/container/peloton-to-garmin). - -## Tags - -The following tags are provided: - -### Image flavors - -1. `stable`- By default the base tag points to the headless version of P2G -2. `console-latest` - By default points to the latest version of the headless version of P2G -3. `api-stable` / `api-latest` - Used in conjunction with the `webui` image, provides the API and server for P2G user interface -4. `webui-stable` / `webui-latest` - Used in conjunction with the `api` image, provides a P2G web user interface - -### Tag versioning - -1. `stable` - Always points to the latest release -1. `v{X}` / `v3` / `v4` - Always points to the latest of the current major version -1. `latest` - The bleeding edge of the master branch, breaking changes may happen -1. `vX.Y.Z` - For using a specific released version - -## Docker User - -The P2G images run the process under the user and group `p2g:p2g` with uid and gid `1015:1015`. To access files created by `p2g`: - -1. Create a group on the local machine `p2g` with group id `1015` -1. Add your user on the local machine to the `p2g` group - -## Quick Start Guide - -Docker provides an easy and consistent way to install, update, and uninstall applications across multiple Operating Systems. Docker is extremely popular in the self-hosted community, a group interested in minimizing dependencies on Cloud providers in favor of attempting to keep their data local, private, and free. You can learn more about the ever growing list of self-hosted applications on the [awesome-selfhosted list](https://github.com/awesome-selfhosted/awesome-selfhosted). - -To learn more about Docker head on over to their [website](https://www.docker.com/resources/what-container/). - -### Mac / Windows Docker Quick Start - -1. Download and install Docker Desktop, this will give you all the tools you need and a handy UI for managing docker containers - 1. [Install Mac Docker Desktop](https://docs.docker.com/desktop/install/mac-install/) - 1. [Install Windows Docker Desktop](https://docs.docker.com/desktop/install/windows-install/) -1. Follow the remaining instructions [here]({{ site.baseurl }}{% link install/docker-webui.md %}#docker-compose) + +# Docker + +The recommended installation method is with Docker. If you're not familiar with Docker but would like to try it check out the [quick start guide](#quick-start-guide). + +P2G offers two main flavors of docker images: + +| Flavor | Support Garmin 2-Step Verification | Support Automatic Syncing | +|:------------------|:-----------------------------------|:--------------------------| +| [Web UI](docker-webui.md) | yes | only when Garmin 2fa is disabled | +| [Docker Headless](docker-headless.md) | partial | only when Garmin 2fa is disabled | + +!!! info "Image Repositories" + + P2G publishes Docker images to both [DockerHub](https://hub.docker.com/r/philosowaffle/peloton-to-garmin) and [GitHub Package](https://github.com/philosowaffle/peloton-to-garmin/pkgs/container/peloton-to-garmin). + +## Tags + +P2G ships several different flavors of containers that can be combined with a version tag: + +### Image flavors + +1. `console`- The headless version of P2G, simple console application +1. `api` - Used in conjunction with the `webui` image, provides the API and server for P2G user interface +1. `webui` - Used in conjunction with the `api` image, provides a P2G web user interface + +### Version tags + +1. `stable` - Always points to the latest release +1. `v{X}` / `v3` / `v4` - Always points to the latest of the current major version +1. `latest` - The bleeding edge of the master branch, breaking changes may happen +1. `vX.Y.Z` - For using a specific released version + +### Using Flavor and Version Tag + +In the below examples, you can substitute `console` for any [Image Flavor](#image-flavors). + +1. `console-latest` +1. `console-stable` +1. `console-v4` +1. `console-v3.6.0` + +## Docker User + +The P2G images run the process under the user and group `p2g:p2g` with uid and gid `1015:1015`. To access files created by `p2g`: + +1. Create a group on the local machine `p2g` with group id `1015` +1. Add your user on the local machine to the `p2g` group + +## Quick Start Guide + +Docker provides an easy and consistent way to install, update, and uninstall applications across multiple Operating Systems. Docker is extremely popular in the self-hosted community, a group interested in minimizing dependencies on Cloud providers in favor of attempting to keep their data local, private, and free. You can learn more about the ever growing list of self-hosted applications on the [awesome-selfhosted list](https://github.com/awesome-selfhosted/awesome-selfhosted). + +To learn more about Docker head on over to their [website](https://www.docker.com/resources/what-container/). + +### Mac / Windows Docker Quick Start + +1. Download and install Docker Desktop, this will give you all the tools you need and a handy UI for managing docker containers + 1. [Install Mac Docker Desktop](https://docs.docker.com/desktop/install/mac-install/) + 1. [Install Windows Docker Desktop](https://docs.docker.com/desktop/install/windows-install/) +1. Follow the remaining instructions [here](docker-webui.md#docker-compose) diff --git a/docs/install/github-action.md b/mkdocs/docs/install/github-action.md similarity index 69% rename from docs/install/github-action.md rename to mkdocs/docs/install/github-action.md index 8db0173c6..e896da648 100644 --- a/docs/install/github-action.md +++ b/mkdocs/docs/install/github-action.md @@ -1,14 +1,10 @@ ---- -layout: default -title: Using Github Actions -nav_order: 4 -parent: Install -has_children: false ---- - # Github Actions -A Github Actions workflow exists that can be used to automatically sync your rides on a schedule (by default once a day). This option does not support Garmin accounts protected by Two Step Verification. +A Github Actions workflow exists that can be used to automatically sync your rides on a schedule (by default once a day). + +!!! warning + + This option does not support Garmin accounts protected by Two Step Verification. ## Getting started @@ -26,6 +22,7 @@ Once you've created your fork, you'll need to set a number of secrets in your re 1. From your forked copy of P2G, click the `Settings` 1. Then, on the side nav, select `Secrets` and then `Actions`. +1. Continue on to the [Action Permissions](#action-permissions) instructions below From this point on you can add secrets by clicking the `New repository secret` button at the top right. @@ -37,11 +34,18 @@ From this point on you can add secrets by clicking the `New repository secret` b | `P2G_GARMIN__PASSWORD` | The password that you use to log into Garmin | | `DEVICE_INFO` | The contents of the deviceInfo.xml that you want to use for the sync | +## Action Permissions + +1. From your forked copy of P2G, click the `Settings` tab +1. Navigate to the settings for `Actions > General` +1. Under `Action Permissions` choose the 4th radio button titled: "Allow , and select non-, actions and reusable workflows". +1. Under the same radio button, check the checkbox to "Allow actions created by GitHub" + ## Starting the workflow -Once you've configured your secrets, you can then navigate to the `Actions` tab within your repository. +Once you've configured your secrets, you can then navigate to the `Actions` tab within your repository. -1. Enable actions for your fork. +1. Enable actions for your fork. 1. You can now run the `Sync workflow` manually To have tha action run on a schedule set the `cron` line in the `./github/workflows/sync_peloton_to_garmin.yml` file. @@ -52,4 +56,6 @@ If you're doing more than 5 activities a day, you will need to change the defaul ## Updating -1. From the home page of your forked repository, there should be a button to `Sync fork`, click this to pull in the latest changes from the original repo \ No newline at end of file +1. Make note of your current configuration in `.github/workflows/sync_peloton_to_garmin.yml` as you may need to reapply these changes after updating. +1. From the home page of your forked repository, there should be a button to `Sync fork`, click this to pull in the latest changes from the original repo. +1. Go back to your `.github/workflows/sync_peloton_to_garmin.yml` and re-apply any changes from step 1. \ No newline at end of file diff --git a/mkdocs/docs/install/index.md b/mkdocs/docs/install/index.md new file mode 100644 index 000000000..a368cd7c8 --- /dev/null +++ b/mkdocs/docs/install/index.md @@ -0,0 +1,32 @@ +# Install + +P2G can be run on all major operating systems. + +| Operating System | Support Garmin 2-Step Verification | +|:-------------------|:-----------------------------------| +| [Windows](#windows-quick-start) | yes | +| [Mac](#mac-quick-start) | yes | +| [Linux](#linux-quick-start) | yes | +| [I don't want to install anything](#github-actions)| no | + +## Windows Quick Start + +1. [Windows Executable](windows.md) - recommended unless you are comfortable with Docker on Windows +1. [Docker](docker.md) +1. [Build from Source](source.md) + +## Mac Quick Start + +1. [Docker](docker.md) +1. [Build from Source](source.md) + +## Linux Quick Start + +1. [Docker](docker.md) - recommended +1. [Build from Source](source.md) + +## GitHub Actions + +If you would rather not install anything on your computer, you can run P2G using a feature called `GitHub Actions`, this will require you to create an account on `GitHub`. Additionally, your Garmin account must *not* have Two Step Verification enabled. + +1. [GitHub Actions](github-action.md) diff --git a/mkdocs/docs/install/source.md b/mkdocs/docs/install/source.md new file mode 100644 index 000000000..6afdcc836 --- /dev/null +++ b/mkdocs/docs/install/source.md @@ -0,0 +1,51 @@ + +# Build from Source + +To compile and run P2G on your machine, follow the below steps. + +## Setup + +1. Install the latest [dotnet 7.0 SDK](https://dotnet.microsoft.com/download/dotnet/7.0) +1. Clone the GitHub repository locally +1. In the local repo, find the file named `configuration.example.json`. Make a copy of it and name it `configuration.local.json`. +1. Open a terminal and run the below one-time setup steps: + +```bash +> cd peloton-to-garmin +> dotnet restore +> dotnet build +``` + +## To run P2G + +### Console + +1. Move `configuration.local.json` into the `src/ConsoleClient` directory +1. Open `configuration.local.json` in a text editor of your choice and edit it to use your Peloton and Garmin credentials + +```bash +> dotnet run --project ./src/ConsoleClient/ConsoleClient.csproj +``` + +### Windows UI + +```bash +> dotnet run --project ./src/ClientUI/ClientUI.csproj +``` + +### Web UI + +```bash +> dotnet run --project ./src/WebUI/WebUI.csproj +> dotnet run --project ./src/Api/Api.csproj +``` + +## Updating + +```bash +> git fetch +> git pull +> cd peloton-to-garmin +> dotnet restore +> dotnet build +``` diff --git a/docs/install/windows.md b/mkdocs/docs/install/windows.md similarity index 53% rename from docs/install/windows.md rename to mkdocs/docs/install/windows.md index 4afca85d3..52261a107 100644 --- a/docs/install/windows.md +++ b/mkdocs/docs/install/windows.md @@ -1,48 +1,53 @@ ---- -layout: default -title: Windows -parent: Install -nav_order: 3 ---- - -# Windows - -For convenience a compiled windows executable is provided. This can easily be downloaded and run on your machine. - -1. Download and unzip the [latest stable release](https://github.com/philosowaffle/peloton-to-garmin/releases) -1. In the unzipped directory find the `configuration.local.json` and open it in a text editor of your choice - 1. Be sure to set your usernames and passwords in Garmin and Peloton config sections respectively. - 1. Save and close the file -1. Find the `PelotonToGarminConsole.exe` -1. Double click to run it! - -You can learn more about customizing your configuration file over in the [Configuration Section]({{ site.baseurl }}{% link configuration/index.md %}). - -## Updating - -1. Download and unzip the [latest stable release](https://github.com/philosowaffle/peloton-to-garmin/releases) -1. In the unzipped directory replace the `configuration.local.json` with your previous `configuration.local.json` file -1. Find the `PelotonToGarminConsole.exe` -1. Double click to run it! - -## Rolling back to a previous version - -1. Find the release you want from the [releases page](https://github.com/philosowaffle/peloton-to-garmin/releases) -1. Download and unzip the Windows exe from that relase (found in the `Assets` section) -1. In the unzipped directory replace the `configuration.local.json` with your previous `configuration.local.json` file -1. Find the `PelotonToGarminConsole.exe` -1. Double click to run it! - -## Available Versions - -P2G provides two different versions of the executable you can choose between: - -1. [The latest stable version](https://github.com/philosowaffle/peloton-to-garmin/releases) -1. [The latest dev version](https://github.com/philosowaffle/peloton-to-garmin/actions/workflows/publish_distros_latest.yml) - 1. Click on the first item in the list with a green checkmark, this will be the latest successful build. - 1. On the summary page, at the bottom you will see a section called `Artifacts` with various builds attached. Click on one of these builds to download for your operating system. - -## Limitations - -1. Does not truly run in the background, the program must be minimized to the the task bar if using it to automatically sync, and you must manually restart it if your computer reboots -1. No GUI....yet ;) \ No newline at end of file + +# Windows + +With P2G v4, there is now a Windows GUI application available for download. P2G does not install anything to your computer, everything it needs to run is self-contained in the folder you downloaded. This includes all of your settings and other configuration files. For this reason, + +1. You can always download and run a newer version of P2G without any risk of breaking your existing version. +1. P2G does not yet support multiple users, but you can have two instances of P2G on the same computer, each in a different folder, setup for a different user +1. To uninstall P2G simply delete its folder +1. You may wish to create a Desktop shortcut to the application for convenience + +![P2G UI Demo](../img/p2g_demo.gif "P2G UI Demo") + +## Install + +1. Download and unzip the [latest stable release](https://github.com/philosowaffle/peloton-to-garmin/releases) +1. Find the `ClientUI.exe` +1. Double click to run it! + +You can learn more about customizing your configuration over in the [Configuration Section](../configuration/index.md). + +## Updating + +1. Download and unzip the [latest stable release](https://github.com/philosowaffle/peloton-to-garmin/releases) +1. In the unzipped directory replace the `configuration.local.json` with your previous `configuration.local.json` file +1. In the unzipped directory copy over the `data` folder from your previous P2G install folder, this will preserve your settings +1. Find the `ClientUI.exe` +1. Double click to run it! + +## Rolling back to a previous version + +1. Find the release you want from the [releases page](https://github.com/philosowaffle/peloton-to-garmin/releases) +1. Download and unzip the Windows exe from that relase (found in the `Assets` section) +1. In the unzipped directory replace the `configuration.local.json` with your previous `configuration.local.json` file +1. In the unzipped directory copy over th `data` folder from your previous P2G install folder, this will preserve your settings +1. Find the `ClientUI.exe` +1. Double click to run it! + +!!! warning + + Attempting to use configuration or data from a later version of P2G with an older version is not guaranteed to work. You may need to reconfigure your instance. + +## Available Versions + +P2G provides two different versions of the executable you can choose between: + +1. [The latest stable version](https://github.com/philosowaffle/peloton-to-garmin/releases) +1. [The latest dev version](https://github.com/philosowaffle/peloton-to-garmin/actions/workflows/publish-latest.yaml) + 1. Click on the first item in the list with a green checkmark, this will be the latest successful build. + 1. On the summary page, at the bottom you will see a section called `Artifacts` with various builds attached. Click on one of these builds to download for your operating system. + +## Limitations + +1. Does not truly run in the background, the program must be minimized to the the task bar if using it to automatically sync, and you must manually restart it if your computer reboots diff --git a/docs/migration/migrate-v1-v2.md b/mkdocs/docs/migration/migrate-v1-v2.md similarity index 55% rename from docs/migration/migrate-v1-v2.md rename to mkdocs/docs/migration/migrate-v1-v2.md index 62d1890ad..1f2f378cb 100644 --- a/docs/migration/migrate-v1-v2.md +++ b/mkdocs/docs/migration/migrate-v1-v2.md @@ -1,9 +1,3 @@ ---- -layout: default -title: Migrating from V1 to V2 -parent: Migrating -nav_order: 1 ---- # Migrating from V1 to V2 @@ -20,7 +14,7 @@ Version 2 will not interfere with your Version 1 install, so if anything doesn't ### 2. Download v2 -1. Download and install v2, see [Install]({{ site.baseurl }}{% link install/index.md %}) +1. Download and install v2, see [Install](../install/index.md) ### 3. Migrate your config @@ -39,9 +33,9 @@ WorkoutTypes = cycling, strength | Property | New Config | Notes | |:-------------|:------------------|-------| -| Email | [Peloton Config]({{ site.baseurl }}{% link configuration/json.md %}#peloton-config).Email | | -| Password | [Peloton Config]({{ site.baseurl }}{% link configuration/json.md %}#peloton-config).Password | | -| WorkoutTypes | [Peloton Config]({{ site.baseurl }}{% link configuration/json.md %}#peloton-config).ExcludeWorkoutTypes | In v1 this was a list of workout types to **include**, in v2 this changes to a list of workout types to **exclude**. | +| Email | [Peloton Config](../configuration/json.md#peloton-config).Email | | +| Password | [Peloton Config](../configuration/json.md#peloton-config).Password | | +| WorkoutTypes | [Peloton Config](../configuration/json.md#peloton-config).ExcludeWorkoutTypes | In v1 this was a list of workout types to **include**, in v2 this changes to a list of workout types to **exclude**. | #### Garmin section @@ -54,9 +48,9 @@ Password = garminPassword | Property | New Config | Notes | |:-------------|:------------------|-------| -| Email | [Garmin Config]({{ site.baseurl }}{% link configuration/json.md %}#garmin-config).Email | | -| Password | [Garmin Config]({{ site.baseurl }}{% link configuration/json.md %}#garmin-config).Password | | -| UploadEnabled | [Garmin Config]({{ site.baseurl }}{% link configuration/json.md %}#peloton-config).Upload | You will additionally need to specify `FormatToUpload` if you have this enabled. | +| Email | [Garmin Config](../configuration/json.md#garmin-config).Email | | +| Password | [Garmin Config](../configuration/json.md#garmin-config).Password | | +| UploadEnabled | [Garmin Config](../configuration/json.md#peloton-config).Upload | You will additionally need to specify `FormatToUpload` if you have this enabled. | #### PTOG Section @@ -68,8 +62,8 @@ PollingIntervalSeconds = 600 | Property | New Config | Notes | |:-------------|:------------------|-------| -| EnablePolling | [App Config]({{ site.baseurl }}{% link configuration/json.md %}#app-config).EnablePolling | | -| PollingIntervalSeconds | [App Config]({{ site.baseurl }}{% link configuration/json.md %}#app-config).PollingIntervalSeconds | | +| EnablePolling | [App Config](../configuration/json.md#app-config).EnablePolling | | +| PollingIntervalSeconds | [App Config](../configuration/json.md#app-config).PollingIntervalSeconds | | #### Output Section @@ -87,12 +81,12 @@ ArchiveByType = true | Property | New Config | Notes | |:-------------|:------------------|-------| | Directory | none | | -| WorkingDirectory | [App Config]({{ site.baseurl }}{% link configuration/json.md %}#app-config).WorkingDirectory | | -| ArchiveDirectory | [App Config]({{ site.baseurl }}{% link configuration/json.md %}#app-config).OutputDirectory | | -| RetainFiles | [Format Config]({{ site.baseurl }}{% link configuration/json.md %}#app-config).SaveLocalCopy | | +| WorkingDirectory | [App Config](../configuration/json.md#app-config).WorkingDirectory | | +| ArchiveDirectory | [App Config](../configuration/json.md#app-config).OutputDirectory | | +| RetainFiles | [Format Config](../configuration/json.md#app-config).SaveLocalCopy | | | ArchiveFiles | none | | | SkipDownload | none | | -| ArchiveByType | [Format Config]({{ site.baseurl }}{% link configuration/json.md %}#app-config).[Fit,Tcx,Json] | Set the formats you want to save to true and then set `SaveLocalCopy: true` | +| ArchiveByType | [Format Config](../configuration/json.md#app-config).[Fit,Tcx,Json] | Set the formats you want to save to true and then set `SaveLocalCopy: true` | #### Logger Section @@ -104,8 +98,8 @@ LogLevel = INFO | Property | New Config | Notes | |:-------------|:------------------|-------| -| LogFile | [Observability Config]({{ site.baseurl }}{% link configuration/json.md %}#observability-config).Serilog.WriteTo.Args.Path | | -| LogLevel | [Observability Config]({{ site.baseurl }}{% link configuration/json.md %}#observability-config).Serilog.MinimumLevel | | +| LogFile | [Observability Config](../configuration/json.md#observability-config).Serilog.WriteTo.Args.Path | | +| LogLevel | [Observability Config](../configuration/json.md#observability-config).Serilog.MinimumLevel | | For the general use case, the below config should be sufficient. @@ -139,4 +133,4 @@ PauseOnFinish = true | Property | New Config | Notes | |:-------------|:------------------|-------| -| PauseOnFinish | [App Config]({{ site.baseurl }}{% link configuration/json.md %}#app-config).CloseWindowOnFinish | | +| PauseOnFinish | [App Config](../configuration/json.md#app-config).CloseWindowOnFinish | | diff --git a/docs/migration/migrate-v2-v3.md b/mkdocs/docs/migration/migrate-v2-v3.md similarity index 71% rename from docs/migration/migrate-v2-v3.md rename to mkdocs/docs/migration/migrate-v2-v3.md index 9c057e2d8..91d63f1a2 100644 --- a/docs/migration/migrate-v2-v3.md +++ b/mkdocs/docs/migration/migrate-v2-v3.md @@ -1,9 +1,3 @@ ---- -layout: default -title: Migrating from V2 to V3 -parent: Migrating -nav_order: 2 ---- # Migrating from V2 to V3 @@ -15,7 +9,7 @@ No changes are needed. ## Docker -No changes are needed, though you may wish to switch over to the [Web UI image tags]({{ site.baseurl }}{% link install/docker-webui.md %}). +No changes are needed, though you may wish to switch over to the [Web UI image tags](../install/docker-webui.md). ## Source diff --git a/mkdocs/docs/migration/migrate-v3-v4.md b/mkdocs/docs/migration/migrate-v3-v4.md new file mode 100644 index 000000000..72534107a --- /dev/null +++ b/mkdocs/docs/migration/migrate-v3-v4.md @@ -0,0 +1,36 @@ + +# Migrating from V3 to V4 + +Version 3 only includes one breaking change that some users will need to account for. Based on your install type you can find what changes need to be made below. + +## Windows Exe + +The P2G windows exe now provides a proper user interface. You can migrate to this new version simply by following the [install steps](../install/windows.md). You will need to re-configure P2G using the user interface as your settings will not migrate over. + +There is no risk installing v4 and trying it out. Your previous install will continue to work while you test out v4. When you're satisfied with v4 you can delete your previous version of P2G. + +## GitHub Action + +Follow the [updating instructions for GitHub Actions](../install/github-action.md#updating). A couple notable changes that will be pulled in: + +1. [Container Image tag](https://github.com/philosowaffle/peloton-to-garmin/blob/v4.0.0/.github/workflows/sync_peloton_to_garmin.yml#L23) has changed to `console-stable`, you may wish to edit this to be `console-v4` +1. The [configuration options](https://github.com/philosowaffle/peloton-to-garmin/blob/v4.0.0/.github/workflows/sync_peloton_to_garmin.yml#L40) have changed slightly with some fields being deprecated and removed +1. The [command to run p2g](https://github.com/philosowaffle/peloton-to-garmin/blob/v4.0.0/.github/workflows/sync_peloton_to_garmin.yml#L75) has changed to `/app/ConsoleClient`. + +## Docker Headless + +No specific migration steps are needed, however please take note of the [breaking changes](https://github.com/philosowaffle/peloton-to-garmin/releases/tag/v3.6.0) in case any of these impact your setup. + +## Docker WebUI + +No specific migration steps are needed, however please take note of the [breaking changes](https://github.com/philosowaffle/peloton-to-garmin/releases/tag/v3.6.0) in case any of these impact your setup. + +## Docker API + +No specific migration steps are needed, however please take note of the [breaking changes](https://github.com/philosowaffle/peloton-to-garmin/releases/tag/v3.6.0) in case any of these impact your setup. + +## Source + +1. Install the latest [dotnet 7.0 SDK](https://dotnet.microsoft.com/download/dotnet/7.0) + +Please take note of the [breaking changes](https://github.com/philosowaffle/peloton-to-garmin/releases/tag/v3.6.0) in case any of these impact your setup. diff --git a/docs/migration/index.md b/mkdocs/docs/migration/migrations.md similarity index 51% rename from docs/migration/index.md rename to mkdocs/docs/migration/migrations.md index bcfed8c27..c07985c00 100644 --- a/docs/migration/index.md +++ b/mkdocs/docs/migration/migrations.md @@ -1,13 +1,8 @@ ---- -layout: default -title: Migrating -nav_order: 4 -has_children: true ---- # Migrating from older P2G Versions P2G uses major release versions to designate when a breaking or non-backwards compatible change has been made. For this reason, when moving between major versions there may be some one time steps that need to be followed. -1. [Migrating from V1 to V2]({{ site.baseurl }}{% link migration/migrate-v1-v2.md %}) -1. [Migrating from V2 to V3]({{ site.baseurl }}{% link migration/migrate-v2-v3.md %}) +1. [Migrating from V1 to V2](migrate-v1-v2.md) +1. [Migrating from V2 to V3](migrate-v2-v3.md) +1. [Migrating from V3 to V4](migrate-v3-v4.md) diff --git a/docs/observability.md b/mkdocs/docs/observability.md similarity index 86% rename from docs/observability.md rename to mkdocs/docs/observability.md index a831e8540..35e5de855 100644 --- a/docs/observability.md +++ b/mkdocs/docs/observability.md @@ -1,12 +1,7 @@ ---- -layout: default -title: Observability -nav_order: 5 ---- # Observability -P2G supports publishing Open Telemetry metrics. These metrics can be setup and configured in the [Observability config section]({{ site.baseurl }}{% link configuration/json.md %}#observability-config). P2G publishes the following: +P2G supports publishing Open Telemetry metrics. These metrics can be setup and configured in the [Observability config section](configuration/json.md#observability-config). P2G publishes the following: 1. Logs via Serilog. Logs can be sunk to a variety of sources including Console, File, ElasticSearch, and Grafana Loki. 1. Metrics via Prometheus. Metrics are exposed on a standard `/metrics` endpoint and the port is configurable. diff --git a/mkdocs/mkdocs.yml b/mkdocs/mkdocs.yml new file mode 100644 index 000000000..cec294e5d --- /dev/null +++ b/mkdocs/mkdocs.yml @@ -0,0 +1,51 @@ +site_name: Peloton To Garmin +site_description: Convert workout data from Peloton into JSON/TCX/FIT files that can be uploaded to Garmin Connect +site_author: philosowaffle +site_url: 'https://philosowaffle.github.io/peloton-to-garmin/' + +repo_url: https://github.com/philosowaffle/peloton-to-garmin +edit_uri: /tree/master/mkdocs/docs + +extra: + version: + provider: mike + +theme: + name: material + logo: img/256x256.png + favicon: img/favicon.ico + palette: + scheme: slate + features: + - navigation.tabs + - navigation.path + - navigation.top + - naviation.sections + - navigation.indexes + +markdown_extensions: + - admonition + - pymdownx.details + - pymdownx.superfences + +nav: + - Home: index.md + - Features: features.md + - Install: + - Install: install/index.md + - Docker: + - Docker: install/docker.md + - 'Web UI': install/docker-webui.md + - Headless: install/docker-headless.md + - 'Windows App': install/windows.md + - Source: install/source.md + - 'GitHub Actions': install/github-action.md + - Configuration: + - Configuration: configuration/index.md + - 'User Interface and Json': configuration/json.md + - Observability: observability.md + - Help: + - Help: help.md + - 'F.A.Q': faq.md + - Migration: migration/migrations.md + - Contributing: contributing.md \ No newline at end of file diff --git a/mkdocs/readme.md b/mkdocs/readme.md new file mode 100644 index 000000000..0839880cd --- /dev/null +++ b/mkdocs/readme.md @@ -0,0 +1,29 @@ +# Welcome to MkDocs + +For full documentation visit [mkdocs.org](https://www.mkdocs.org). +MkDocs: https://www.mkdocs.org/user-guide/installation/ +Material design: https://squidfunk.github.io/mkdocs-material/getting-started/ +Mike: https://github.com/jimporter/mike + +## Commands + +* `mkdocs new [dir-name]` - Create a new project. +* `mkdocs serve` - Start the live-reloading docs server. +* `mkdocs build` - Build the documentation site. +* `mkdocs -h` - Print help message and exit. + +## Updating an existing version + +* Checkout version of master branch that has the docs you want to modify +* Make changes +* `git fetch origin gh-pages --depth=1` +* `mike deploy --push` + * this will push to `gh-pages` branch and update the appropriate directory + + +## Project layout + + mkdocs.yml # The configuration file. + docs/ + index.md # The documentation homepage. + ... # Other markdown pages, images and other files. diff --git a/python/lib/garminClient.py b/python/lib/garminClient.py deleted file mode 100644 index e75414410..000000000 --- a/python/lib/garminClient.py +++ /dev/null @@ -1,67 +0,0 @@ -import logging -import time -import os -import pkgutil -import requests -import tempfile -from datetime import datetime -from garmin_uploader.workflow import Workflow -from garmin_uploader.workflow import User -from garmin_uploader.workflow import Activity - -cert_data = pkgutil.get_data('certifi', 'cacert.pem') -handle = tempfile.NamedTemporaryFile(delete=False) -handle.write(cert_data) -handle.flush() -os.environ['REQUESTS_CA_BUNDLE'] = handle.name - -class GarminClient: - - """Main Garmin Api Class""" - def __init__(self, user_email, user_password): - self.logger = logging.getLogger('peloton-to-garmin.garminClient') - - assert user_email is not None and user_email != "", "Please specify your Garmin login email." - assert user_password is not None and user_password != "", "Please specify your Garmin login password." - - self.user = User(user_email, user_password) - self.activities = {} - self.last_request = 0.0 - - def addActivity(self, path, activityType=None, activityName=None, activityId=None): - index = activityId - if index is None: - index = len(self.activities) + 1 - - self.activities[index] = Activity(path, activityName, activityType) - - def uploadToGarmin(self, uploadHistoryTable=None): - assert self.user.authenticate(), "Failed to authenticate garmin user." - - for activityId in self.activities: - try: - self.rate_limit() - activityName = self.activities[activityId].name - - self.logger.info("Uploading activity: {}".format(self.activities[activityId].path)) - self.activities[activityId].upload(self.user) - - if uploadHistoryTable is not None: - uploadHistoryTable.insert({'workoutId': activityId, 'title': activityName, 'uploadDt': datetime.now().strftime("%Y-%m-%d %H:%M:%S")}) - - self.logger.info("Uploaded activity: {}".format(activityName)) - except Exception as e: - self.logger.error("Failed to upload activity: {} to Garmin Connect with error {}".format(self.activities[activityId].path, e)) - - def rate_limit(self): - min_period = 1 - if not self.last_request: - self.last_request = 0.0 - - wait_time = max(0, min_period - (time.time() - self.last_request)) - if wait_time <= 0: - return - time.sleep(wait_time) - - self.last_request = time.time() - self.logger.debug("Rate limiting for %f" % wait_time) \ No newline at end of file diff --git a/python/requirements.txt b/python/requirements.txt deleted file mode 100644 index cc92275a3..000000000 --- a/python/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -# garmin_uploader>=1.0.10 -# Patch cloudscrapper fix for garmin auth failures -https://github.com/La0/garmin-uploader/archive/cloudscraper.zip \ No newline at end of file diff --git a/python/upload.py b/python/upload.py deleted file mode 100644 index 89f13e1e9..000000000 --- a/python/upload.py +++ /dev/null @@ -1,21 +0,0 @@ -import argparse -from lib import garminClient - -if __name__ == "__main__": - args = argparse.ArgumentParser() - args.add_argument("-ge", "--garmin_email",help="Garmin email address for upload to Garmin",dest="garmin_email",type=str, required=True) - args.add_argument("-gp", "--garmin_password",help="Garmin password for upload to Garmin",dest="garmin_password",type=str, required=True) - args.add_argument("-f", "--files", help="Path to file to upload", dest="files", nargs="+", required=True) - - argResults = args.parse_args() - - garmin_email = argResults.garmin_email - garmin_password = argResults.garmin_password - files = argResults.files - - garminUploader = garminClient.GarminClient(garmin_email, garmin_password) - - for file in files: - garminUploader.addActivity(file) - - garminUploader.uploadToGarmin() \ No newline at end of file diff --git a/src/Api.Contract/Api.Contract.csproj b/src/Api.Contract/Api.Contract.csproj new file mode 100644 index 000000000..42b6e2d5f --- /dev/null +++ b/src/Api.Contract/Api.Contract.csproj @@ -0,0 +1,13 @@ + + + + net7.0 + enable + enable + + + + + + + diff --git a/src/Common/Dto/Api/GarminAuthenticationContracts.cs b/src/Api.Contract/GarminAuthenticationContracts.cs similarity index 69% rename from src/Common/Dto/Api/GarminAuthenticationContracts.cs rename to src/Api.Contract/GarminAuthenticationContracts.cs index 39cb5c0bb..674fcf42d 100644 --- a/src/Common/Dto/Api/GarminAuthenticationContracts.cs +++ b/src/Api.Contract/GarminAuthenticationContracts.cs @@ -1,8 +1,8 @@ -namespace Common.Dto.Api; +namespace Api.Contract; public record GarminAuthenticationMfaTokenPostRequest { - public string MfaToken { get; set; } + public string? MfaToken { get; set; } } public record GarminAuthenticationGetResponse diff --git a/src/Api.Contract/IError.cs b/src/Api.Contract/IError.cs new file mode 100644 index 000000000..e7e173609 --- /dev/null +++ b/src/Api.Contract/IError.cs @@ -0,0 +1,39 @@ +namespace Api.Contract; + +public interface IErrorResponse +{ + public string Message { get; set; } + public ErrorCode Code { get; set; } +} + +public class ErrorResponse : IErrorResponse +{ + public string Message { get; set; } + public ErrorCode Code { get; set; } + public Exception? Exception { get; set; } + + public ErrorResponse() + { + Message = string.Empty; + } + + public ErrorResponse(string message, Exception? ex = null) + { + Message = message; + } + + public ErrorResponse(string message, ErrorCode code, Exception? ex = null) + { + Message = message; + Code = code; + } +} + +public enum ErrorCode : ushort +{ + None = 0, + + NeedToInitGarminMFAAuth = 100, + UnexpectedGarminMFA = 101, + InvalidGarminCredentials = 102, +} diff --git a/src/Common/Dto/Api/IPaging.cs b/src/Api.Contract/IPaging.cs similarity index 66% rename from src/Common/Dto/Api/IPaging.cs rename to src/Api.Contract/IPaging.cs index 1a7161cc0..6683d9f5d 100644 --- a/src/Common/Dto/Api/IPaging.cs +++ b/src/Api.Contract/IPaging.cs @@ -1,8 +1,7 @@ using Common.Helpers; using Microsoft.AspNetCore.Mvc; -using System.Collections.Generic; -namespace Common.Dto.Api; +namespace Api.Contract; public interface IPagingRequest { @@ -38,19 +37,4 @@ public abstract class PagingResponseBase : IPagingResponse public abstract ICollection Items { get; set; } -} - -public static class PagingExtensions -{ - public static bool IsValid(this IPagingRequest request, out ActionResult result) - { - if (request.PageSize.CheckIsLessThanOrEqualTo(0, nameof(request.PageSize), out result)) - return false; - - if (request.PageIndex.CheckIsLessThan(0, nameof(request.PageIndex), out result)) - return false; - - return true; - } -} - +} \ No newline at end of file diff --git a/src/Api.Contract/PelotonAnnualChallengeContracts.cs b/src/Api.Contract/PelotonAnnualChallengeContracts.cs new file mode 100644 index 000000000..3b30db467 --- /dev/null +++ b/src/Api.Contract/PelotonAnnualChallengeContracts.cs @@ -0,0 +1,42 @@ +namespace Api.Contract; + +public record ProgressGetResponse +{ + public ProgressGetResponse() + { + Tiers = new List(); + } + + public double EarnedMinutes { get; init; } + public ICollection Tiers { get; init; } +} + +public record Tier +{ + public Tier() { } + + public string? BadgeUrl { get; init; } + public string? Title { get; init; } + public double RequiredMinutes { get; init; } + public bool HasEarned { get; init; } + public float PercentComplete { get; init; } + public bool IsOnTrackToEarndByEndOfYear { get; init; } + public double MinutesBehindPace { get; init; } + public double MinutesAheadOfPace { get; init; } + /// + /// Assuming working evenly throughout the whole year, this is the amount of time to plan to spend per day. + /// + public double MinutesNeededPerDay { get; set; } + /// + /// Assuming working evenly throughout the whole year, this is the amount of time to plan to spend per week. + /// + public double MinutesNeededPerWeek { get; set; } + /// + /// Assuming working evenly throughout the remainder of the year, this is the amount of time to plan to spend per day. + /// + public double MinutesNeededPerDayToFinishOnTime { get; set; } + /// + /// Assuming working evenly throughout the remainder of the year, this is the amount of time to plan to spend per week. + /// + public double MinutesNeededPerWeekToFinishOnTime { get; set; } +} \ No newline at end of file diff --git a/src/Common/Dto/Api/PelotonWorkoutsRequest.cs b/src/Api.Contract/PelotonWorkoutsRequest.cs similarity index 72% rename from src/Common/Dto/Api/PelotonWorkoutsRequest.cs rename to src/Api.Contract/PelotonWorkoutsRequest.cs index 1dd9ac269..84c9d38bc 100644 --- a/src/Common/Dto/Api/PelotonWorkoutsRequest.cs +++ b/src/Api.Contract/PelotonWorkoutsRequest.cs @@ -1,8 +1,7 @@ -using Common.Dto.Peloton; -using System; -using System.Collections.Generic; +using Common.Dto; +using Common.Dto.Peloton; -namespace Common.Dto.Api; +namespace Api.Contract; public class PelotonWorkoutsGetRequest : IPagingRequest { @@ -53,20 +52,24 @@ public PelotonWorkout(Workout workout) { Id = workout.Id; Status = workout.Status; - ClassTypeTitle = workout.Title; + PelotonFitnessDiscipline = workout.Fitness_Discipline.ToString(); + IsOutdoor = workout.Is_Outdoor; WorkoutTitle = workout.Ride?.Title; + InstructorName = workout.Ride?.Instructor?.Name; Name = workout.Name; CreatedAt = workout.Created_At; ImageUrl = workout.Ride?.Image_Url; } - public string Id { get; init; } - public string Status { get; init; } - public string ClassTypeTitle { get; init; } - public string WorkoutTitle { get; init; } - public string Name { get; init; } + public string? Id { get; init; } + public string? Status { get; init; } + public string? PelotonFitnessDiscipline { get; init; } + public bool IsOutdoor { get; init; } + public string? WorkoutTitle { get; init; } + public string? InstructorName { get; init; } + public string? Name { get; init; } public long CreatedAt { get; init; } - public Uri ImageUrl { get; set; } + public Uri? ImageUrl { get; set; } } diff --git a/src/Common/Dto/Api/SettingsContracts.cs b/src/Api.Contract/SettingsContracts.cs similarity index 75% rename from src/Common/Dto/Api/SettingsContracts.cs rename to src/Api.Contract/SettingsContracts.cs index 22ef9b832..01dc094fe 100644 --- a/src/Common/Dto/Api/SettingsContracts.cs +++ b/src/Api.Contract/SettingsContracts.cs @@ -1,6 +1,7 @@ -using System.Collections.Generic; +using Common; +using Common.Dto; -namespace Common.Dto.Api; +namespace Api.Contract; public class SettingsGetResponse { @@ -29,11 +30,10 @@ public SettingsGetResponse(Settings settings) Garmin = new SettingsGarminGetResponse() { Email = settings.Garmin.Email, - Password = null, + Password = null, TwoStepVerificationEnabled = settings.Garmin.TwoStepVerificationEnabled, FormatToUpload = settings.Garmin.FormatToUpload, Upload = settings.Garmin.Upload, - UploadStrategy = settings.Garmin.UploadStrategy, IsPasswordSet = !string.IsNullOrEmpty(settings.Garmin.Password) }; } @@ -47,38 +47,41 @@ public SettingsGetResponse(Settings settings) public class SettingsGarminGetResponse { public bool IsPasswordSet { get; set; } - public string Email { get; set; } - public string Password { get; set; } + public string? Email { get; set; } + public string? Password { get; set; } public bool TwoStepVerificationEnabled { get; set; } public bool Upload { get; set; } public FileFormat FormatToUpload { get; set; } - public UploadStrategy UploadStrategy { get; set; } } public class SettingsGarminPostRequest { - public string Email { get; set; } - public string Password { get; set; } + public string? Email { get; set; } + public string? Password { get; set; } public bool TwoStepVerificationEnabled { get; set; } public bool Upload { get; set; } public FileFormat FormatToUpload { get; set; } - public UploadStrategy UploadStrategy { get; set; } } public class SettingsPelotonGetResponse { + public SettingsPelotonGetResponse() + { + ExcludeWorkoutTypes = new List(); + } + public bool IsPasswordSet { get; set; } - public string Email { get; set; } - public string Password { get; set; } + public string? Email { get; set; } + public string? Password { get; set; } public ICollection ExcludeWorkoutTypes { get; set; } public int NumWorkoutsToDownload { get; set; } } public class SettingsPelotonPostRequest { - public string Email { get; set; } - public string Password { get; set; } - public ICollection ExcludeWorkoutTypes { get; set; } + public string? Email { get; set; } + public string? Password { get; set; } + public ICollection? ExcludeWorkoutTypes { get; set; } public int NumWorkoutsToDownload { get; set; } } @@ -95,9 +98,9 @@ public static SettingsPelotonPostRequest Map(this SettingsPelotonGetResponse res }; } - public static Common.Peloton Map(this SettingsPelotonPostRequest request) + public static PelotonSettings Map(this SettingsPelotonPostRequest request) { - return new Common.Peloton() + return new () { Email = request.Email, Password = request.Password, @@ -115,20 +118,18 @@ public static SettingsGarminPostRequest Map(this SettingsGarminGetResponse respo TwoStepVerificationEnabled = response.TwoStepVerificationEnabled, FormatToUpload = response.FormatToUpload, Upload = response.Upload, - UploadStrategy = response.UploadStrategy, }; } - public static Common.Garmin Map(this SettingsGarminPostRequest request) + public static GarminSettings Map(this SettingsGarminPostRequest request) { - return new Common.Garmin() + return new () { Email = request.Email, Password = request.Password, TwoStepVerificationEnabled = request.TwoStepVerificationEnabled, FormatToUpload = request.FormatToUpload, Upload = request.Upload, - UploadStrategy = request.UploadStrategy, }; } } \ No newline at end of file diff --git a/src/Common/Dto/Api/SyncContracts.cs b/src/Api.Contract/SyncContracts.cs similarity index 94% rename from src/Common/Dto/Api/SyncContracts.cs rename to src/Api.Contract/SyncContracts.cs index f2c24712b..f9a108a07 100644 --- a/src/Common/Dto/Api/SyncContracts.cs +++ b/src/Api.Contract/SyncContracts.cs @@ -1,8 +1,6 @@ using Common.Database; -using System; -using System.Collections.Generic; -namespace Common.Dto.Api; +namespace Api.Contract; public record SyncGetResponse { diff --git a/src/Common/Dto/Api/SystemInfoRequest.cs b/src/Api.Contract/SystemInfoRequest.cs similarity index 67% rename from src/Common/Dto/Api/SystemInfoRequest.cs rename to src/Api.Contract/SystemInfoRequest.cs index ad4541c6b..25e849745 100644 --- a/src/Common/Dto/Api/SystemInfoRequest.cs +++ b/src/Api.Contract/SystemInfoRequest.cs @@ -1,6 +1,6 @@ -namespace Common.Dto.Api; +namespace Api.Contract; -public class SystemInfoGetRequest +public record SystemInfoGetRequest { /// /// Whether or not to check if a new P2G update is available. @@ -9,7 +9,7 @@ public class SystemInfoGetRequest public bool CheckForUpdate { get; set; } } -public class SystemInfoGetResponse +public record SystemInfoGetResponse { public SystemInfoGetResponse() { @@ -23,6 +23,8 @@ public SystemInfoGetResponse() Donate = string.Empty; Issues = string.Empty; Api = string.Empty; + OutputDirectory = string.Empty; + TempDirectory = string.Empty; LatestVersionInformation = new (); } @@ -38,7 +40,9 @@ public SystemInfoGetResponse() public string Issues { get; set; } public string Api { get; set; } public bool? NewerVersionAvailable { get; set; } - public LatestVersionInformation LatestVersionInformation { get; set; } + public LatestVersionInformation? LatestVersionInformation { get; set; } + public string OutputDirectory { get; set; } + public string TempDirectory { get; set; } } public class LatestVersionInformation @@ -47,11 +51,18 @@ public LatestVersionInformation() { LatestVersion = string.Empty; ReleaseUrl = string.Empty; + ReleaseDate = string.Empty; Description = string.Empty; } - public string LatestVersion { get; set; } - public string ReleaseDate { get; set; } - public string ReleaseUrl { get; set; } - public string Description { get; set; } + public string? LatestVersion { get; set; } + public string? ReleaseDate { get; set; } + public string? ReleaseUrl { get; set; } + public string? Description { get; set; } } + + +public class SystemInfoLogsGetResponse +{ + public string? LogText { get; set; } +} \ No newline at end of file diff --git a/src/Api.Service/Api.Service.csproj b/src/Api.Service/Api.Service.csproj new file mode 100644 index 000000000..21a087bfb --- /dev/null +++ b/src/Api.Service/Api.Service.csproj @@ -0,0 +1,19 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + diff --git a/src/Api.Service/ApiStartupServices.cs b/src/Api.Service/ApiStartupServices.cs new file mode 100644 index 000000000..83b61fac3 --- /dev/null +++ b/src/Api.Service/ApiStartupServices.cs @@ -0,0 +1,66 @@ +using Common.Database; +using Common.Service; +using Common; +using Conversion; +using Garmin; +using Microsoft.Extensions.Caching.Memory; +using Peloton.AnnualChallenge; +using Peloton; +using Sync; +using Philosowaffle.Capability.ReleaseChecks; +using Microsoft.Extensions.DependencyInjection; +using Api.Services; +using Garmin.Auth; +using Api.Service; + +namespace SharedStartup; + +public static class ApiStartupServices +{ + public static void ConfigureP2GApiServices(this IServiceCollection services) + { + // CACHE + services.AddSingleton(); + + // CONVERT + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + // GARMIN + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + // IO + services.AddSingleton(); + + // MIGRATIONS + services.AddSingleton(); + + // PELOTON + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + // RELEASE CHECKS + services.AddGitHubReleaseChecker(); + + // SETTINGS + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + + // SYNC + services.AddSingleton(); + services.AddSingleton(); + + // SYSTEM INFO + services.AddSingleton(); + services.AddSingleton(); + + // USERS + services.AddSingleton(); + } +} diff --git a/src/Api.Service/Helpers/Guard.cs b/src/Api.Service/Helpers/Guard.cs new file mode 100644 index 000000000..107177314 --- /dev/null +++ b/src/Api.Service/Helpers/Guard.cs @@ -0,0 +1,84 @@ +using Api.Contract; + +namespace Api.Service.Helpers; + +public static class Guard +{ + public static bool IsNull(this T input, string name, out ErrorResponse? result, string? errorMessage = null) + { + result = null; + + if (input is null) + { + result = new ErrorResponse(errorMessage ?? $"{name} must not be null."); + return true; + } + + return false; + } + + public static bool CheckIsNullOrEmpty(this string input, string name, out ErrorResponse? result, string? errorMessage = null) + { + result = null; + + if (string.IsNullOrEmpty(input)) + { + result = new ErrorResponse(errorMessage ?? $"{name} must not be null or empty."); + return true; + } + + return false; + } + + public static bool CheckIsLessThanOrEqualTo(this int input, int limit, string name, out ErrorResponse? result, string? errorMessage = null) + { + result = null; + + if (input <= limit) + { + result = new ErrorResponse(errorMessage ?? $"{name} must be greater than {limit}."); + return true; + } + + return false; + } + + public static bool CheckIsLessThan(this int input, int limit, string name, out ErrorResponse? result, string? errorMessage = null) + { + result = null; + + if (input < limit) + { + result = new ErrorResponse(errorMessage ?? $"{name} must be greater than or equal to {limit}."); + return true; + } + + return false; + } + + public static bool DoesNotHaveAny(this ICollection input, string name, out ErrorResponse? result, string? errorMessage = null) + { + result = null; + + if (input is null || !input.Any()) + { + result = new ErrorResponse(errorMessage ?? $"{name} must not be empty."); + return true; + } + + return false; + } + + public static bool IsAfter(this DateTime input, DateTime limit, string name, out ErrorResponse? result, string? errorMessage = null) + { + result = null; + + if (input > limit) + { + result = new ErrorResponse(errorMessage ?? $"{name} must be before {limit}."); + return true; + } + + return false; + } +} diff --git a/src/Api.Service/Helpers/PagingExtensions.cs b/src/Api.Service/Helpers/PagingExtensions.cs new file mode 100644 index 000000000..3ab4950d0 --- /dev/null +++ b/src/Api.Service/Helpers/PagingExtensions.cs @@ -0,0 +1,17 @@ +using Api.Contract; + +namespace Api.Service.Helpers; + +public static class PagingExtensions +{ + public static bool IsValid(this IPagingRequest request, out ErrorResponse? result) + { + if (request.PageSize.CheckIsLessThanOrEqualTo(0, nameof(request.PageSize), out result)) + return false; + + if (request.PageIndex.CheckIsLessThan(0, nameof(request.PageIndex), out result)) + return false; + + return true; + } +} \ No newline at end of file diff --git a/src/Api.Service/Helpers/ServiceResponseExtensions.cs b/src/Api.Service/Helpers/ServiceResponseExtensions.cs new file mode 100644 index 000000000..e9a2301b1 --- /dev/null +++ b/src/Api.Service/Helpers/ServiceResponseExtensions.cs @@ -0,0 +1,30 @@ +using Api.Contract; +using Common.Dto; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace Api.Service.Helpers; + +public static class ServiceResultExtensions +{ + public static bool IsErrored(this IServiceResult serviceResult) => !serviceResult.Successful; + + public static ActionResult GetResultForError(this IServiceResult serviceResult) + { + if (serviceResult.Error is null) + return new ObjectResult(new ErrorResponse($"Unexpected error occurred.")) + { + StatusCode = StatusCodes.Status500InternalServerError + }; + + if (serviceResult.Error.IsServerException) + { + return new ObjectResult(new ErrorResponse(serviceResult.Error.Message)) + { + StatusCode = StatusCodes.Status500InternalServerError + }; + } + + return new BadRequestObjectResult(new ErrorResponse(serviceResult.Error.Message)); + } +} \ No newline at end of file diff --git a/src/Api.Service/Mappers/AnnualChallengeMapper.cs b/src/Api.Service/Mappers/AnnualChallengeMapper.cs new file mode 100644 index 000000000..6f5861d26 --- /dev/null +++ b/src/Api.Service/Mappers/AnnualChallengeMapper.cs @@ -0,0 +1,25 @@ +using Api.Contract; + +namespace Api.Service.Mappers; + +public static class AnnualChallengeMapper +{ + public static Tier Map(this Peloton.AnnualChallenge.Tier t) + { + return new Tier() + { + BadgeUrl = t.BadgeUrl, + Title = t.Title, + RequiredMinutes = t.RequiredMinutes, + HasEarned = t.HasEarned, + PercentComplete = Convert.ToSingle(t.PercentComplete * 100), + IsOnTrackToEarndByEndOfYear = t.IsOnTrackToEarndByEndOfYear, + MinutesBehindPace = t.MinutesBehindPace, + MinutesAheadOfPace = t.MinutesAheadOfPace, + MinutesNeededPerDay = t.MinutesNeededPerDay, + MinutesNeededPerWeek = t.MinutesNeededPerWeek, + MinutesNeededPerDayToFinishOnTime = t.MinutesNeededPerDayToFinishOnTime, + MinutesNeededPerWeekToFinishOnTime = t.MinutesNeededPerWeekToFinishOnTime + }; + } +} diff --git a/src/Api.Service/PelotonAnnualChallengeService.cs b/src/Api.Service/PelotonAnnualChallengeService.cs new file mode 100644 index 000000000..88b95c047 --- /dev/null +++ b/src/Api.Service/PelotonAnnualChallengeService.cs @@ -0,0 +1,57 @@ +using Api.Contract; +using Api.Service.Helpers; +using Api.Service.Mappers; +using Common.Dto; +using Peloton.AnnualChallenge; + +namespace Api.Service; + +public interface IPelotonAnnualChallengeService +{ + Task> GetProgressAsync(); +} + +public class PelotonAnnualChallengeService : IPelotonAnnualChallengeService +{ + private readonly IAnnualChallengeService _service; + + public PelotonAnnualChallengeService(IAnnualChallengeService service) + { + _service = service; + } + + public async Task> GetProgressAsync() + { + var userId = 1; + var result = new ServiceResult(); + + try + { + var serviceResult = await _service.GetAnnualChallengeProgressAsync(userId); + + if (serviceResult.IsErrored()) + { + result.Successful = serviceResult.Successful; + result.Error = serviceResult.Error; + return result; + } + + var data = serviceResult.Result; + var tiers = data.Tiers?.Select(t => t.Map()).ToList(); + + result.Result = new ProgressGetResponse() + { + EarnedMinutes = data.EarnedMinutes, + Tiers = tiers ?? new List(), + }; + + return result; + } + catch (Exception e) + { + result.Successful = false; + result.Error = new ServiceError() { Exception = e, Message = "Failed to fetch Peloton Annual Challenge data. See logs for more details." }; + return result; + } + } +} diff --git a/src/Api.Service/SettingsUpdaterService.cs b/src/Api.Service/SettingsUpdaterService.cs new file mode 100644 index 000000000..f8169f1fe --- /dev/null +++ b/src/Api.Service/SettingsUpdaterService.cs @@ -0,0 +1,141 @@ +using Api.Contract; +using Common; +using Common.Dto; +using Common.Service; +using Common.Stateful; + +namespace Api.Service; + +public interface ISettingsUpdaterService +{ + Task> UpdateAppSettingsAsync(App updatedAppSettings); + Task> UpdatePelotonSettingsAsync(SettingsPelotonPostRequest updatedPelotonSettings); + Task> UpdateFormatSettingsAsync(Format updatedFormatSettings); + Task> UpdateGarminSettingsAsync(SettingsGarminPostRequest updatedGarminSettings); +} +public class SettingsUpdaterService : ISettingsUpdaterService +{ + private readonly IFileHandling _fileHandler; + private readonly ISettingsService _settingsService; + + public SettingsUpdaterService(IFileHandling fileHandler, ISettingsService settingsService) + { + _fileHandler = fileHandler; + _settingsService = settingsService; + } + + public async Task> UpdateAppSettingsAsync(App updatedAppSettings) + { + var result = new ServiceResult(); + + if (updatedAppSettings is null) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "Updated AppSettings must not be null or empty." }; + return result; + } + + var settings = await _settingsService.GetSettingsAsync(); + settings.App = updatedAppSettings; + + if (settings.Garmin.TwoStepVerificationEnabled && settings.App.EnablePolling) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "Automatic Syncing cannot be enabled when Garmin TwoStepVerification is enabled." }; + return result; + } + + await _settingsService.UpdateSettingsAsync(settings); + var updatedSettings = await _settingsService.GetSettingsAsync(); + + result.Result = updatedSettings.App; + return result; + } + + public async Task> UpdateFormatSettingsAsync(Format updatedFormatSettings) + { + var result = new ServiceResult(); + + if (updatedFormatSettings is null) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "Updated Format Settings must not be null or empty." }; + return result; + } + + if (!string.IsNullOrWhiteSpace(updatedFormatSettings.DeviceInfoPath) + && !_fileHandler.FileExists(updatedFormatSettings.DeviceInfoPath)) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "The DeviceInfo path is either not accessible or does not exist." }; + return result; + } + + var settings = await _settingsService.GetSettingsAsync(); + settings.Format = updatedFormatSettings; + + await _settingsService.UpdateSettingsAsync(settings); + var updatedSettings = await _settingsService.GetSettingsAsync(); + + result.Result = updatedSettings.Format; + return result; + } + + public async Task> UpdateGarminSettingsAsync(SettingsGarminPostRequest updatedGarminSettings) + { + var result = new ServiceResult(); + + if (updatedGarminSettings is null) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "Updated Garmin Settings must not be null or empty." }; + return result; + } + + var settings = await _settingsService.GetSettingsAsync(); + settings.Garmin = updatedGarminSettings.Map(); + + if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled && settings.App.EnablePolling) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "Garmin TwoStepVerification cannot be enabled while Automatic Syncing is enabled. Please disable Automatic Syncing first." }; + return result; + } + + await _settingsService.UpdateSettingsAsync(settings); + var updatedSettings = await _settingsService.GetSettingsAsync(); + + result.Result = new SettingsGetResponse(updatedSettings).Garmin; + return result; + } + + public async Task> UpdatePelotonSettingsAsync(SettingsPelotonPostRequest updatedPelotonSettings) + { + var result = new ServiceResult(); + + if (updatedPelotonSettings is null) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "Updated PelotonSettings must not be null or empty." }; + return result; + } + + var settings = await _settingsService.GetSettingsAsync(); + + if (updatedPelotonSettings.NumWorkoutsToDownload <= 0 + && settings.App.EnablePolling) + { + result.Successful = false; + result.Error = new ServiceError() { Message = "Number of workouts to download must but greater than 0 when Automatic Polling is enabled." }; + return result; + } + + settings.Peloton = updatedPelotonSettings.Map(); + + await _settingsService.UpdateSettingsAsync(settings); + var updatedSettings = await _settingsService.GetSettingsAsync(); + + result.Result = new SettingsGetResponse(updatedSettings).Peloton; + return result; + } +} diff --git a/src/Api.Service/SystemInfoService.cs b/src/Api.Service/SystemInfoService.cs new file mode 100644 index 000000000..605f81bad --- /dev/null +++ b/src/Api.Service/SystemInfoService.cs @@ -0,0 +1,97 @@ +using Api.Contract; +using Api.Service; +using Common; +using Common.Dto; +using Common.Observe; +using Common.Service; +using Philosowaffle.Capability.ReleaseChecks.Model; + +namespace Api.Services; + +public interface ISystemInfoService +{ + Task GetAsync(SystemInfoGetRequest request, string? scheme = null, string? host = null); + Task> GetLogsAsync(); +} + +public class SystemInfoService : ISystemInfoService +{ + private readonly IVersionInformationService _versionInformationService; + private readonly ISettingsService _settingsService; + + public SystemInfoService(ISettingsService settingsService, IVersionInformationService versionInformationService) + { + _versionInformationService = versionInformationService; + _settingsService = settingsService; + } + + public async Task GetAsync(SystemInfoGetRequest request, string? scheme = null, string? host = null) + { + LatestReleaseInformation? versionInformation = null; + + if (request.CheckForUpdate) + versionInformation = await _versionInformationService.GetLatestReleaseInformationAsync(); + + var documentationVersion = versionInformation?.IsInstalledVersionReleaseCandidate ?? true ? "master" : $"v{Constants.AppVersion}"; + + var settings = await _settingsService.GetSettingsAsync(); + + return new SystemInfoGetResponse() + { + OperatingSystem = SystemInformation.OS, + OperatingSystemVersion = SystemInformation.OSVersion, + + RunTimeVersion = SystemInformation.RunTimeVersion, + + Version = Constants.AppVersion, + NewerVersionAvailable = versionInformation?.IsReleaseNewerThanInstalledVersion, + LatestVersionInformation = request.CheckForUpdate ? new LatestVersionInformation() + { + LatestVersion = versionInformation?.LatestVersion, + ReleaseDate = versionInformation?.ReleaseDate.ToString(), + ReleaseUrl = versionInformation?.ReleaseUrl, + Description = versionInformation?.Description + } : null, + + GitHub = "https://github.com/philosowaffle/peloton-to-garmin", + Documentation = $"https://philosowaffle.github.io/peloton-to-garmin/{documentationVersion}", + Forums = "https://github.com/philosowaffle/peloton-to-garmin/discussions", + Donate = "https://www.buymeacoffee.com/philosowaffle", + Issues = "https://github.com/philosowaffle/peloton-to-garmin/issues", + Api = $"{scheme}://{host}/swagger", + + OutputDirectory = settings?.App?.OutputDirectory ?? string.Empty, + TempDirectory = settings?.App?.WorkingDirectory ?? string.Empty, + }; + } + + public async Task> GetLogsAsync() + { + var result = new ServiceResult(); + + if (string.IsNullOrWhiteSpace(Logging.CurrentFilePath)) + { + result.Error = new ServiceError() { Message = "No log file path found." }; + return result; + } + + var text = string.Empty; + try + { + using (var sr = new StreamReader(Logging.CurrentFilePath, new FileStreamOptions () { Access = FileAccess.Read, Share = FileShare.ReadWrite })) + { + text = await sr.ReadToEndAsync(); + + result.Result = new SystemInfoLogsGetResponse() { LogText = text }; + result.Successful = true; + return result; + } + } + catch (FileNotFoundException ex) + { + result.Error = new ServiceError() { Message = "Failed to read logs", Exception = ex, IsServerException = true }; + } + + return result; + } +} diff --git a/src/Api.Service/Validators/SyncValidators.cs b/src/Api.Service/Validators/SyncValidators.cs new file mode 100644 index 000000000..6add5399c --- /dev/null +++ b/src/Api.Service/Validators/SyncValidators.cs @@ -0,0 +1,53 @@ +using Api.Contract; +using Api.Service.Helpers; +using Common; +using Common.Dto; +using Common.Stateful; +using Microsoft.AspNetCore.Mvc; + +namespace Api.Service.Validators; + +public static class SyncValidators +{ + public static (bool, ErrorResponse?) IsValid(this SyncPostRequest request, Settings settings, GarminApiAuthentication garminAuth) + { + if (request.IsNull("Request", out var result)) + return (false, result); + + if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled) + { + if (garminAuth is null || !garminAuth.IsValid(settings)) + { + result = new ErrorResponse("Must initialize Garmin two factor auth token before sync can be preformed.", ErrorCode.NeedToInitGarminMFAAuth); + return (false, result); + } + } + + if (request.WorkoutIds.DoesNotHaveAny(nameof(request.WorkoutIds), out result!)) + return (false, result); + + return (true, result); + } + + public static (bool, ActionResult?) IsValidHttp(this SyncPostRequest request, Settings settings, GarminApiAuthentication garminAuth) + { + ActionResult result = new OkResult(); + + if (request.IsNull("Request", out var error)) + return (false, new BadRequestObjectResult(error)); + + if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled) + { + if (garminAuth is null || !garminAuth.IsValid(settings)) + { + result = new UnauthorizedObjectResult(new ErrorResponse("Must initialize Garmin two factor auth token before sync can be preformed.", ErrorCode.NeedToInitGarminMFAAuth)); + return (false, result); + } + } + + if (request.WorkoutIds.DoesNotHaveAny(nameof(request.WorkoutIds), out error!)) + return (false, new BadRequestObjectResult(error)); + + return (true, result); + } +} diff --git a/src/Api.Service/VersionInformationService.cs b/src/Api.Service/VersionInformationService.cs new file mode 100644 index 000000000..55467ed30 --- /dev/null +++ b/src/Api.Service/VersionInformationService.cs @@ -0,0 +1,52 @@ +using Common; +using Common.Observe; +using Core.GitHub; +using Microsoft.Extensions.Caching.Memory; +using Philosowaffle.Capability.ReleaseChecks.Model; +using Serilog; + +namespace Api.Service; + +public interface IVersionInformationService +{ + Task GetLatestReleaseInformationAsync(); +} + +public class VersionInformationService : IVersionInformationService +{ + private static readonly ILogger _logger = LogContext.ForClass(); + private static readonly object _lock = new object(); + + private readonly IGitHubReleaseCheckService _gitHubService; + private readonly IMemoryCache _cache; + + public VersionInformationService(IGitHubReleaseCheckService gitHubService, IMemoryCache cache) + { + _gitHubService = gitHubService; + _cache = cache; + } + + public Task GetLatestReleaseInformationAsync() + { + using var tracing = Tracing.Trace($"{nameof(VersionInformationService)}.{nameof(GetLatestReleaseInformationAsync)}"); + + try + { + lock (_lock) + { + var key = $"LatestReleaseInformation"; + return _cache.GetOrCreateAsync(key, (cacheEntry) => + { + cacheEntry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5); + + return _gitHubService.GetLatestReleaseInformationAsync("philosowaffle", "peloton-to-garmin", Constants.AppVersion); + }); + } + } + catch (Exception e) + { + _logger.Error("Failed to fetch Latest P2G Release information.", e); + return Task.FromResult(new LatestReleaseInformation()); + } + } +} diff --git a/src/Api/Api.csproj b/src/Api/Api.csproj index 6fb5036df..5b9813ef8 100644 --- a/src/Api/Api.csproj +++ b/src/Api/Api.csproj @@ -1,7 +1,7 @@  - net6.0 + net7.0 PelotonToGarmin.Api enable enable @@ -26,20 +26,12 @@ - - - - - - - - - + diff --git a/src/Api/Controllers/GarminAuthenticationController.cs b/src/Api/Controllers/GarminAuthenticationController.cs index 6e1adab00..77bea7ff1 100644 --- a/src/Api/Controllers/GarminAuthenticationController.cs +++ b/src/Api/Controllers/GarminAuthenticationController.cs @@ -1,5 +1,5 @@ -using Common.Dto.Api; -using Common.Helpers; +using Api.Contract; +using Api.Service.Helpers; using Common.Service; using Garmin.Auth; using Microsoft.AspNetCore.Mvc; @@ -47,8 +47,8 @@ public async Task SignInAsync() { var settings = await _settingsService.GetSettingsAsync(); - if (settings.Garmin.Password.CheckIsNullOrEmpty("Garmin Password", out var result)) return result; - if (settings.Garmin.Email.CheckIsNullOrEmpty("Garmin Email", out result)) return result; + if (settings.Garmin.Password.CheckIsNullOrEmpty("Garmin Password", out var result)) return BadRequest(result); + if (settings.Garmin.Email.CheckIsNullOrEmpty("Garmin Email", out result)) return BadRequest(result); try { diff --git a/src/Api/Controllers/PelotonAnnualChallengeController.cs b/src/Api/Controllers/PelotonAnnualChallengeController.cs index c04b921dc..6d3ce31e8 100644 --- a/src/Api/Controllers/PelotonAnnualChallengeController.cs +++ b/src/Api/Controllers/PelotonAnnualChallengeController.cs @@ -1,7 +1,7 @@ -using Common.Dto; -using Common.Dto.Api; +using Api.Contract; +using Api.Service; +using Api.Service.Helpers; using Microsoft.AspNetCore.Mvc; -using Peloton.AnnualChallenge; namespace Api.Controllers; @@ -10,9 +10,9 @@ namespace Api.Controllers; [Consumes("application/json")] public class PelotonAnnualChallengeController : Controller { - private readonly IAnnualChallengeService _annualChallengeService; + private readonly IPelotonAnnualChallengeService _annualChallengeService; - public PelotonAnnualChallengeController(IAnnualChallengeService annualChallengeService) + public PelotonAnnualChallengeController(IPelotonAnnualChallengeService annualChallengeService) { _annualChallengeService = annualChallengeService; } @@ -30,34 +30,14 @@ public PelotonAnnualChallengeController(IAnnualChallengeService annualChallengeS [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] public async Task> GetProgressSummaryAsync() { - var userId = 1; try { - var serviceResult = await _annualChallengeService.GetAnnualChallengeProgressAsync(userId); + var serviceResult = await _annualChallengeService.GetProgressAsync(); if (serviceResult.IsErrored()) return serviceResult.GetResultForError(); - var data = serviceResult.Result; - var tiers = data.Tiers?.Select(t => new Common.Dto.Api.Tier() - { - BadgeUrl = t.BadgeUrl, - Title = t.Title, - RequiredMinutes = t.RequiredMinutes, - HasEarned = t.HasEarned, - PercentComplete = Convert.ToSingle(t.PercentComplete * 100), - IsOnTrackToEarndByEndOfYear = t.IsOnTrackToEarndByEndOfYear, - MinutesBehindPace = t.MinutesBehindPace, - MinutesAheadOfPace = t.MinutesAheadOfPace, - MinutesNeededPerDay = t.MinutesNeededPerDay, - MinutesNeededPerWeek = t.MinutesNeededPerWeek, - }).ToList(); - - return Ok(new ProgressGetResponse() - { - EarnedMinutes = data.EarnedMinutes, - Tiers = tiers ?? new List(), - }); + return Ok(serviceResult.Result); } catch (Exception e) { diff --git a/src/Api/Controllers/PelotonWorkoutsController.cs b/src/Api/Controllers/PelotonWorkoutsController.cs index f8d72592f..61acb4edb 100644 --- a/src/Api/Controllers/PelotonWorkoutsController.cs +++ b/src/Api/Controllers/PelotonWorkoutsController.cs @@ -1,7 +1,7 @@ -using Common.Dto; -using Common.Dto.Api; +using Api.Contract; +using Api.Service.Helpers; +using Common.Dto; using Common.Dto.Peloton; -using Common.Helpers; using Flurl.Http; using Microsoft.AspNetCore.Mvc; using Peloton; @@ -35,7 +35,7 @@ public PelotonWorkoutsController(IPelotonService pelotonService) public async Task> GetAsync([FromQuery]PelotonWorkoutsGetRequest request) { if (!request.IsValid(out var result)) - return result; + return new BadRequestObjectResult(result); PagedPelotonResponse? recentWorkouts = null; @@ -82,7 +82,7 @@ public async Task> GetAsync([FromQuery] public async Task> GetAsync([FromQuery] PelotonWorkoutsGetAllRequest request) { if (request.SinceDate.IsAfter(DateTime.UtcNow, nameof(request.SinceDate), out var result)) - return result; + return new BadRequestObjectResult(result!); ICollection workoutsToReturn = new List(); var completedOnly = request.WorkoutStatusFilter == WorkoutStatus.Completed; diff --git a/src/Api/Controllers/SettingsController.cs b/src/Api/Controllers/SettingsController.cs index 9b894ee0a..217a39140 100644 --- a/src/Api/Controllers/SettingsController.cs +++ b/src/Api/Controllers/SettingsController.cs @@ -1,6 +1,8 @@ -using Common; -using Common.Dto.Api; -using Common.Helpers; +using Api.Contract; +using Api.Service; +using Api.Service.Helpers; +using Common; +using Common.Dto; using Common.Service; using Microsoft.AspNetCore.Mvc; @@ -13,12 +15,14 @@ namespace Api.Controllers; public class SettingsController : Controller { private readonly ISettingsService _settingsService; - private readonly IFileHandling _fileHandler; + private readonly IFileHandling _fileHandler; + private readonly ISettingsUpdaterService _settingsUpdaterService; - public SettingsController(ISettingsService settingsService, IFileHandling fileHandler) + public SettingsController(ISettingsService settingsService, IFileHandling fileHandler, ISettingsUpdaterService settingsUpdaterService) { _settingsService = settingsService; _fileHandler = fileHandler; + _settingsUpdaterService = settingsUpdaterService; } /// @@ -59,29 +63,14 @@ public async Task> Get() [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] public async Task> AppPost([FromBody] App updatedAppSettings) { - if (updatedAppSettings.CheckIsNull("PostRequest", out var result)) - return result; - - if (!string.IsNullOrWhiteSpace(updatedAppSettings.OutputDirectory) - && !_fileHandler.DirExists(updatedAppSettings.OutputDirectory)) - return new BadRequestObjectResult(new ErrorResponse($"Output Directory path is either not accessible or does not exist.")); - - if (updatedAppSettings.EnablePolling - && updatedAppSettings.PollingIntervalSeconds.CheckIsLessThanOrEqualTo(0, "PollingIntervalSeconds", out result)) - return result; - try { - var settings = await _settingsService.GetSettingsAsync(); - settings.App = updatedAppSettings; - - if (settings.Garmin.TwoStepVerificationEnabled && settings.App.EnablePolling) - return new BadRequestObjectResult(new ErrorResponse($"Automatic Syncing cannot be enabled when Garmin TwoStepVerification is enabled.")); + var result = await _settingsUpdaterService.UpdateAppSettingsAsync(updatedAppSettings); - await _settingsService.UpdateSettingsAsync(settings); - var updatedSettings = await _settingsService.GetSettingsAsync(); + if (result.IsErrored()) + return result.GetResultForError(); - return Ok(updatedSettings.App); + return Ok(result.Result); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, new ErrorResponse($"Unexpected error occurred: {e.Message}")); @@ -101,22 +90,14 @@ public async Task> AppPost([FromBody] App updatedAppSettings) [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] public async Task> FormatPost([FromBody] Format updatedFormatSettings) { - if (updatedFormatSettings.CheckIsNull("PostRequest", out var result)) - return result; - - if (!string.IsNullOrWhiteSpace(updatedFormatSettings.DeviceInfoPath) - && !_fileHandler.FileExists(updatedFormatSettings.DeviceInfoPath)) - return new BadRequestObjectResult(new ErrorResponse($"DeviceInfo path is either not accessible or does not exist.")); - try { - var settings = await _settingsService.GetSettingsAsync(); - settings.Format = updatedFormatSettings; + var result = await _settingsUpdaterService.UpdateFormatSettingsAsync(updatedFormatSettings); - await _settingsService.UpdateSettingsAsync(settings); - var updatedSettings = await _settingsService.GetSettingsAsync(); + if (result.IsErrored()) + return result.GetResultForError(); - return Ok(updatedSettings.Format); + return Ok(result.Result); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, new ErrorResponse($"Unexpected error occurred: {e.Message}")); @@ -136,23 +117,14 @@ public async Task> FormatPost([FromBody] Format updatedForm [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] public async Task> PelotonPost([FromBody] SettingsPelotonPostRequest updatedPelotonSettings) { - if (updatedPelotonSettings.CheckIsNull("PostRequest", out var result)) - return result; - - if (updatedPelotonSettings.NumWorkoutsToDownload.CheckIsLessThanOrEqualTo(0, "NumWorkoutsToDownload", out result)) - return result; - try { - var settings = await _settingsService.GetSettingsAsync(); - settings.Peloton = updatedPelotonSettings.Map(); - - await _settingsService.UpdateSettingsAsync(settings); - var updatedSettings = await _settingsService.GetSettingsAsync(); + var result = await _settingsUpdaterService.UpdatePelotonSettingsAsync(updatedPelotonSettings); - var settingsResponse = new SettingsGetResponse(updatedSettings); + if (result.IsErrored()) + return result.GetResultForError(); - return Ok(settingsResponse.Peloton); + return Ok(result.Result); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, new ErrorResponse($"Unexpected error occurred: {e.Message}")); @@ -171,24 +143,15 @@ public async Task> PelotonPost([FromBod [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] public async Task> GarminPost([FromBody] SettingsGarminPostRequest updatedGarminSettings) - { - if (updatedGarminSettings.CheckIsNull("PostRequest", out var result)) - return result; - + { try { - var settings = await _settingsService.GetSettingsAsync(); - settings.Garmin = updatedGarminSettings.Map(); - - if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled && settings.App.EnablePolling) - return new BadRequestObjectResult(new ErrorResponse($"Garmin TwoStepVerification cannot be enabled while Automatic Syncing is enabled. Please disable Automatic Syncing first.")); - - await _settingsService.UpdateSettingsAsync(settings); - var updatedSettings = await _settingsService.GetSettingsAsync(); + var result = await _settingsUpdaterService.UpdateGarminSettingsAsync(updatedGarminSettings); - var settingsResponse = new SettingsGetResponse(updatedSettings); + if (result.IsErrored()) + return result.GetResultForError(); - return Ok(settingsResponse.Garmin); + return Ok(result.Result); } catch (Exception e) { return StatusCode(StatusCodes.Status500InternalServerError, new ErrorResponse($"Unexpected error occurred: {e.Message}")); diff --git a/src/Api/Controllers/SyncController.cs b/src/Api/Controllers/SyncController.cs index 98cfc101b..16af58c41 100644 --- a/src/Api/Controllers/SyncController.cs +++ b/src/Api/Controllers/SyncController.cs @@ -1,11 +1,10 @@ -using Common.Database; -using Common.Dto.Api; -using Common.Helpers; +using Api.Contract; +using Api.Service.Validators; +using Common.Database; using Common.Service; using Microsoft.AspNetCore.Mvc; using Sync; -using ErrorResponse = Common.Dto.Api.ErrorResponse; - + namespace Api.Controllers; [ApiController] @@ -30,21 +29,22 @@ public SyncController(ISettingsService settingsService, ISyncService syncService /// /// The sync was successful. Returns the sync status information. /// This request completed, but the Sync may not have been successful. Returns the sync status information. - /// If the request fields are invalid. + /// If the request fields are invalid. /// ErrorCode.NeedToInitGarminMFAAuth - Garmin Two Factor is enabled, you must manually initialize Garmin auth prior to syncing. /// Unhandled exception. [HttpPost] [ProducesResponseType(typeof(SyncPostResponse), StatusCodes.Status201Created)] [ProducesResponseType(typeof(SyncPostResponse), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status400BadRequest)] - [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status401Unauthorized)] - [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] + [ProducesResponseType(typeof(Contract.ErrorResponse), StatusCodes.Status400BadRequest)] + [ProducesResponseType(typeof(Contract.ErrorResponse), StatusCodes.Status401Unauthorized)] + [ProducesResponseType(typeof(Contract.ErrorResponse), StatusCodes.Status500InternalServerError)] public async Task> SyncAsync([FromBody] SyncPostRequest request) { var settings = await _settingsService.GetSettingsAsync(); + var auth = _settingsService.GetGarminAuthentication(settings.Garmin.Email); - var (isValid, result) = await IsValidAsync(request); - if (!isValid) return result; + var (isValid, result) = request.IsValidHttp(settings, auth); + if (!isValid) return result!; SyncResult syncResult = new(); try @@ -53,7 +53,7 @@ public async Task> SyncAsync([FromBody] SyncPostR } catch (Exception e) { - return StatusCode(StatusCodes.Status500InternalServerError, new ErrorResponse($"Unexpected error occurred: {e.Message}")); + return StatusCode(StatusCodes.Status500InternalServerError, new Contract.ErrorResponse($"Unexpected error occurred: {e.Message}")); } var response = new SyncPostResponse() @@ -62,7 +62,7 @@ public async Task> SyncAsync([FromBody] SyncPostR PelotonDownloadSuccess = syncResult.PelotonDownloadSuccess, ConverToFitSuccess = syncResult.ConversionSuccess, UploadToGarminSuccess = syncResult.UploadToGarminSuccess, - Errors = syncResult.Errors.Select(e => new ErrorResponse(e.Message)).ToList() + Errors = syncResult.Errors.Select(e => new Contract.ErrorResponse(e.Message)).ToList() }; if (!response.SyncSuccess) @@ -98,29 +98,5 @@ public async Task> GetAsync() }; return response; - } - - async Task<(bool, ActionResult)> IsValidAsync(SyncPostRequest request) - { - ActionResult result = new OkResult(); - - if (request.CheckIsNull("PostRequest", out result)) - return (false, result); - - var settings = await _settingsService.GetSettingsAsync(); - if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled) - { - var auth = _settingsService.GetGarminAuthentication(settings.Garmin.Email); - if (auth is null || !auth.IsValid(settings)) - { - result = new UnauthorizedObjectResult(new ErrorResponse("Must initialize Garmin two factor auth token before sync can be preformed.", ErrorCode.NeedToInitGarminMFAAuth)); - return (false, result); - } - } - - if (request.WorkoutIds.CheckDoesNotHaveAny(nameof(request.WorkoutIds), out result)) - return (false, result); - - return (true, result); } } diff --git a/src/Api/Controllers/SystemInfoController.cs b/src/Api/Controllers/SystemInfoController.cs index cbcedf93b..baa2d74f9 100644 --- a/src/Api/Controllers/SystemInfoController.cs +++ b/src/Api/Controllers/SystemInfoController.cs @@ -1,9 +1,7 @@ -using Common; -using Common.Dto; -using Common.Dto.Api; -using Core.GitHub; +using Api.Contract; +using Api.Services; +using Api.Service.Helpers; using Microsoft.AspNetCore.Mvc; -using Philosowaffle.Capability.ReleaseChecks.Model; namespace WebApp.Controllers { @@ -13,11 +11,11 @@ namespace WebApp.Controllers [Consumes("application/json")] public class SystemInfoController : Controller { - private readonly IGitHubReleaseCheckService _gitHubService; + private readonly ISystemInfoService _systemInfoService; - public SystemInfoController(IGitHubReleaseCheckService gitHubService) + public SystemInfoController(ISystemInfoService systemInforService) { - _gitHubService = gitHubService; + _systemInfoService = systemInforService; } /// @@ -28,35 +26,29 @@ public SystemInfoController(IGitHubReleaseCheckService gitHubService) [ProducesResponseType(StatusCodes.Status200OK)] public async Task> GetAsync([FromQuery]SystemInfoGetRequest request) { - LatestReleaseInformation? versionInformation = null; - - if (request.CheckForUpdate) - versionInformation = await _gitHubService.GetLatestReleaseInformationAsync("philosowaffle", "peloton-to-garmin", Constants.AppVersion); + var result = await _systemInfoService.GetAsync(request, this.Request.Scheme, this.Request.Host.ToString()); + return Ok(result); + } - return new SystemInfoGetResponse() + [HttpGet] + [Route("/api/systeminfo/logs")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] + public async Task LogsGetAsync() + { + try { - OperatingSystem = SystemInformation.OS, - OperatingSystemVersion = SystemInformation.OSVersion, + var result = await _systemInfoService.GetLogsAsync(); - RunTimeVersion = SystemInformation.RunTimeVersion, + if (result.IsErrored()) + return result.GetResultForError(); - Version = Constants.AppVersion, - NewerVersionAvailable = versionInformation?.IsReleaseNewerThanInstalledVersion, - LatestVersionInformation = request.CheckForUpdate ? new LatestVersionInformation() - { - LatestVersion = versionInformation?.LatestVersion, - ReleaseDate = versionInformation?.ReleaseDate.ToString(), - ReleaseUrl = versionInformation?.ReleaseUrl, - Description = versionInformation?.Description - } : null, + return Ok(result.Result); - GitHub = "https://github.com/philosowaffle/peloton-to-garmin", - Documentation = "https://philosowaffle.github.io/peloton-to-garmin/", - Forums = "https://github.com/philosowaffle/peloton-to-garmin/discussions", - Donate = "https://www.buymeacoffee.com/philosowaffle", - Issues = "https://github.com/philosowaffle/peloton-to-garmin/issues", - Api = $"{this.Request.Scheme}://{this.Request.Host}/swagger" - }; + } catch (Exception e) + { + return StatusCode(StatusCodes.Status500InternalServerError, new ErrorResponse($"Unexpected error occurred: {e.Message}")); + } } } } diff --git a/src/Api/Program.cs b/src/Api/Program.cs index ab98f352b..7372a644c 100644 --- a/src/Api/Program.cs +++ b/src/Api/Program.cs @@ -1,22 +1,11 @@ using Api.Services; using Common; using Common.Database; -using Common.Http; -using Common.Observe; -using Common.Service; using Common.Stateful; -using Conversion; -using Garmin; -using Garmin.Auth; -using Microsoft.Extensions.Caching.Memory; -using Peloton; -using Peloton.AnnualChallenge; -using Philosowaffle.Capability.ReleaseChecks; using Prometheus; using Serilog; -using Serilog.Enrichers.Span; using Serilog.Events; -using Sync; +using SharedStartup; using System.Reflection; /////////////////////////////////////////////////////////// @@ -30,8 +19,7 @@ /////////////////////////////////////////////////////////// /// HOST /////////////////////////////////////////////////////////// -var builder = WebApplication - .CreateBuilder(args); +var builder = WebApplication.CreateBuilder(args); var configProvider = builder.Configuration.AddJsonFile(Statics.ConfigPath, optional: true, reloadOnChange: true) .AddEnvironmentVariables(prefix: "P2G_") @@ -42,19 +30,11 @@ builder.WebHost.UseUrls(config.Api.HostUrl); -builder.Host.UseSerilog((ctx, logConfig) => -{ - logConfig - .ReadFrom.Configuration(ctx.Configuration, sectionName: $"{nameof(Observability)}:Serilog") - .Enrich.WithSpan() - .Enrich.FromLogContext(); -}); - -builder.Host.ConfigureServices(services => services.AddHostedService()); - -/////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////// /// SERVICES -/////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////// + +builder.Services.AddHostedService(); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); @@ -71,53 +51,9 @@ c.IncludeXmlComments(docPath); }); -// CACHE -builder.Services.AddSingleton(); - -// CONVERT -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); - -// GARMIN -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); - -// IO -builder.Services.AddSingleton(); +builder.Services.ConfigureP2GApiServices(); -// MIGRATIONS -builder.Services.AddSingleton(); - -// PELOTON -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); - -// RELEASE CHECKS -builder.Services.AddGitHubReleaseChecker(); - -// SETTINGS -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); - -// SYNC -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); - -// USERS -builder.Services.AddSingleton(); - -FlurlConfiguration.Configure(config.Observability); -Tracing.EnableApiTracing(builder.Services, config.Observability.Jaeger); - -Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(builder.Configuration, sectionName: $"{nameof(Observability)}:Serilog") - .Enrich.FromLogContext() - .CreateLogger(); - -Logging.LogSystemInformation(); +ObservabilityStartup.ConfigureApi(builder.Services, builder.Configuration, config); Common.Observe.Metrics.CreateAppInfo(); /////////////////////////////////////////////////////////// @@ -126,8 +62,17 @@ var app = builder.Build(); -// Setup initial Tracing Source -Tracing.Source = new(Statics.TracingService); +if (Log.IsEnabled(LogEventLevel.Verbose)) + app.UseSerilogRequestLogging(); + +if (config.Observability.Prometheus.Enabled) +{ + Log.Information("Metrics Enabled"); + Common.Observe.Metrics.EnableCollector(config.Observability.Prometheus); + + app.MapMetrics(); + app.UseHttpMetrics(); +} app.UseCors(options => { @@ -139,22 +84,11 @@ app.UseSwagger(); app.UseSwaggerUI(); -if (Log.IsEnabled(LogEventLevel.Verbose)) - app.UseSerilogRequestLogging(); - app.Use((context, next) => { return next.Invoke(); }); -if (config.Observability.Prometheus.Enabled) -{ - Log.Information("Metrics Enabled"); - Common.Observe.Metrics.EnableCollector(config.Observability.Prometheus); - - app.MapMetrics(); - app.UseHttpMetrics(); -} //app.UseHttpsRedirection(); app.UseAuthorization(); diff --git a/src/Api/Services/BackgroundSyncJob.cs b/src/Api/Services/BackgroundSyncJob.cs index 60ee22001..f22ad7843 100644 --- a/src/Api/Services/BackgroundSyncJob.cs +++ b/src/Api/Services/BackgroundSyncJob.cs @@ -1,5 +1,6 @@ using Common; using Common.Database; +using Common.Dto; using Common.Observe; using Common.Service; using Common.Stateful; diff --git a/src/ClientUI/App.xaml b/src/ClientUI/App.xaml new file mode 100644 index 000000000..4115021dd --- /dev/null +++ b/src/ClientUI/App.xaml @@ -0,0 +1,26 @@ + + + + + + #512bdf + White + + + + + + + + \ No newline at end of file diff --git a/src/ClientUI/App.xaml.cs b/src/ClientUI/App.xaml.cs new file mode 100644 index 000000000..15b9edee7 --- /dev/null +++ b/src/ClientUI/App.xaml.cs @@ -0,0 +1,12 @@ +namespace ClientUI +{ + public partial class App : Application + { + public App() + { + InitializeComponent(); + + MainPage = new MainPage(); + } + } +} \ No newline at end of file diff --git a/src/ClientUI/ClientUI.csproj b/src/ClientUI/ClientUI.csproj new file mode 100644 index 000000000..86e56edc4 --- /dev/null +++ b/src/ClientUI/ClientUI.csproj @@ -0,0 +1,83 @@ + + + + + $(TargetFrameworks);net7.0-windows10.0.22621.0 + + + Exe + ClientUI + true + true + enable + false + + None + true + false + + + PelotonToGarmin + + + com.philosowaffle.pelotontogarmin.clientui + B01486E7-1F8D-4350-B68E-874A02A96694 + + + 1.0 + 1 + + 14.2 + 14.0 + 24.0 + 10.0.19041.0 + 10.0.19041.0 + 6.5 + P2G ClientUI + Philosowaffle + P2G ClientUI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NU1603,NETSDK1023 + + + + + + + + + + + + Always + + + + diff --git a/src/ClientUI/Main.razor b/src/ClientUI/Main.razor new file mode 100644 index 000000000..a547605d1 --- /dev/null +++ b/src/ClientUI/Main.razor @@ -0,0 +1 @@ + diff --git a/src/ClientUI/MainPage.xaml b/src/ClientUI/MainPage.xaml new file mode 100644 index 000000000..f38423f75 --- /dev/null +++ b/src/ClientUI/MainPage.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/src/ClientUI/MainPage.xaml.cs b/src/ClientUI/MainPage.xaml.cs new file mode 100644 index 000000000..3615c0fa5 --- /dev/null +++ b/src/ClientUI/MainPage.xaml.cs @@ -0,0 +1,10 @@ +namespace ClientUI +{ + public partial class MainPage : ContentPage + { + public MainPage() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/src/ClientUI/MauiProgram.cs b/src/ClientUI/MauiProgram.cs new file mode 100644 index 000000000..e4d6a4dab --- /dev/null +++ b/src/ClientUI/MauiProgram.cs @@ -0,0 +1,96 @@ +using Common; +using Microsoft.Extensions.Logging; +using SharedUI; +using Common.Stateful; +using Microsoft.Extensions.Configuration; +using SharedStartup; + +namespace ClientUI; + +public static class MauiProgram +{ + public static MauiApp CreateMauiApp() + { + /////////////////////////////////////////////////////////// + /// STATICS + /////////////////////////////////////////////////////////// + Statics.AppType = Constants.ClientUIName; + Statics.MetricPrefix = Constants.ClientUIName; + Statics.TracingService = Constants.ClientUIName; + Statics.ConfigPath = Path.Join(Environment.CurrentDirectory, "configuration.local.json"); + + Directory.CreateDirectory(Statics.DefaultOutputDirectory); + + /////////////////////////////////////////////////////////// + /// HOST + /////////////////////////////////////////////////////////// + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }); + + var observabilityConfigFilePath = Statics.ConfigPath; + if (!File.Exists(observabilityConfigFilePath)) + InitObservabilityConfigFile("configuration.local.json", observabilityConfigFilePath); + + var configProvider = builder.Configuration.AddJsonFile(observabilityConfigFilePath, optional: true, reloadOnChange: true) + .AddEnvironmentVariables(prefix: "P2G_"); + + var config = new AppConfiguration(); + ConfigurationSetup.LoadConfigValues(builder.Configuration, config); + + /////////////////////////////////////////////////////////// + /// SERVICES + /////////////////////////////////////////////////////////// + + // API CLIENT + builder.Services.AddSingleton(); + + builder.Services.ConfigureSharedUIServices(); + builder.Services.ConfigureP2GApiServices(); + + ObservabilityStartup.ConfigureClientUI(builder.Services, builder.Configuration, config); + + /////////////////////////////////////////////////////////// + /// APP + /////////////////////////////////////////////////////////// + + builder.Services.AddMauiBlazorWebView(); + +#if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); + builder.Logging.AddDebug(); +#endif + + return builder.Build(); + } + + private static void InitObservabilityConfigFile(string sourceFileName, string destinationPath) + { + using FileStream outputStream = File.OpenWrite(destinationPath); + using Stream fs = FileSystem.Current.OpenAppPackageFileAsync(sourceFileName).GetAwaiter().GetResult(); + using BinaryWriter writer = new BinaryWriter(outputStream); + using (BinaryReader reader = new BinaryReader(fs)) + { + var bytesRead = 0; + + int bufferSize = 1024; + var buffer = new byte[bufferSize]; + using (fs) + { + do + { + buffer = reader.ReadBytes(bufferSize); + bytesRead = buffer.Count(); + writer.Write(buffer); + } + + while (bytesRead > 0); + + } + } + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/Android/AndroidManifest.xml b/src/ClientUI/Platforms/Android/AndroidManifest.xml new file mode 100644 index 000000000..dbf9e7e53 --- /dev/null +++ b/src/ClientUI/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/ClientUI/Platforms/Android/MainActivity.cs b/src/ClientUI/Platforms/Android/MainActivity.cs new file mode 100644 index 000000000..e960165b2 --- /dev/null +++ b/src/ClientUI/Platforms/Android/MainActivity.cs @@ -0,0 +1,11 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace ClientUI +{ + [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] + public class MainActivity : MauiAppCompatActivity + { + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/Android/MainApplication.cs b/src/ClientUI/Platforms/Android/MainApplication.cs new file mode 100644 index 000000000..c91889718 --- /dev/null +++ b/src/ClientUI/Platforms/Android/MainApplication.cs @@ -0,0 +1,16 @@ +using Android.App; +using Android.Runtime; + +namespace ClientUI +{ + [Application] + public class MainApplication : MauiApplication + { + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/Android/Resources/values/colors.xml b/src/ClientUI/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 000000000..c04d7492a --- /dev/null +++ b/src/ClientUI/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/src/ClientUI/Platforms/MacCatalyst/AppDelegate.cs b/src/ClientUI/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 000000000..7c5357446 --- /dev/null +++ b/src/ClientUI/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace ClientUI +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/MacCatalyst/Info.plist b/src/ClientUI/Platforms/MacCatalyst/Info.plist new file mode 100644 index 000000000..403ce9c66 --- /dev/null +++ b/src/ClientUI/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,30 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/ClientUI/Platforms/MacCatalyst/Program.cs b/src/ClientUI/Platforms/MacCatalyst/Program.cs new file mode 100644 index 000000000..0fa773004 --- /dev/null +++ b/src/ClientUI/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace ClientUI +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/Tizen/Main.cs b/src/ClientUI/Platforms/Tizen/Main.cs new file mode 100644 index 000000000..f1e4b6dc1 --- /dev/null +++ b/src/ClientUI/Platforms/Tizen/Main.cs @@ -0,0 +1,17 @@ +using Microsoft.Maui; +using Microsoft.Maui.Hosting; +using System; + +namespace ClientUI +{ + internal class Program : MauiApplication + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + + static void Main(string[] args) + { + var app = new Program(); + app.Run(args); + } + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/Tizen/tizen-manifest.xml b/src/ClientUI/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 000000000..52e59bf2b --- /dev/null +++ b/src/ClientUI/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + maui-appicon-placeholder + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/src/ClientUI/Platforms/Windows/App.xaml b/src/ClientUI/Platforms/Windows/App.xaml new file mode 100644 index 000000000..41c2bd6cf --- /dev/null +++ b/src/ClientUI/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/src/ClientUI/Platforms/Windows/App.xaml.cs b/src/ClientUI/Platforms/Windows/App.xaml.cs new file mode 100644 index 000000000..de869244f --- /dev/null +++ b/src/ClientUI/Platforms/Windows/App.xaml.cs @@ -0,0 +1,24 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace ClientUI.WinUI +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : MauiWinUIApplication + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/Windows/Package.appxmanifest b/src/ClientUI/Platforms/Windows/Package.appxmanifest new file mode 100644 index 000000000..ad10a7ead --- /dev/null +++ b/src/ClientUI/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,47 @@ + + + + + + + + + P2G + Philosowaffle + Resources\Logo\P2G-Package-Logo.png + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ClientUI/Platforms/iOS/AppDelegate.cs b/src/ClientUI/Platforms/iOS/AppDelegate.cs new file mode 100644 index 000000000..7c5357446 --- /dev/null +++ b/src/ClientUI/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace ClientUI +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} \ No newline at end of file diff --git a/src/ClientUI/Platforms/iOS/Info.plist b/src/ClientUI/Platforms/iOS/Info.plist new file mode 100644 index 000000000..ecb7f719b --- /dev/null +++ b/src/ClientUI/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/ClientUI/Platforms/iOS/Program.cs b/src/ClientUI/Platforms/iOS/Program.cs new file mode 100644 index 000000000..0fa773004 --- /dev/null +++ b/src/ClientUI/Platforms/iOS/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace ClientUI +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} \ No newline at end of file diff --git a/src/ClientUI/Properties/launchSettings.json b/src/ClientUI/Properties/launchSettings.json new file mode 100644 index 000000000..4f857936f --- /dev/null +++ b/src/ClientUI/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "Project", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/src/ClientUI/Resources/AppIcon/appicon.svg b/src/ClientUI/Resources/AppIcon/appicon.svg new file mode 100644 index 000000000..49fe7f83f --- /dev/null +++ b/src/ClientUI/Resources/AppIcon/appicon.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/ClientUI/Resources/AppIcon/appiconfg.svg b/src/ClientUI/Resources/AppIcon/appiconfg.svg new file mode 100644 index 000000000..a5455b3fd --- /dev/null +++ b/src/ClientUI/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + P + G + 2 + + + P + G + 2 + + + + diff --git a/src/ClientUI/Resources/Fonts/OpenSans-Regular.ttf b/src/ClientUI/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 000000000..f7fd33bb1 Binary files /dev/null and b/src/ClientUI/Resources/Fonts/OpenSans-Regular.ttf differ diff --git a/src/ClientUI/Resources/Images/dotnet_bot.svg b/src/ClientUI/Resources/Images/dotnet_bot.svg new file mode 100644 index 000000000..abfaff26a --- /dev/null +++ b/src/ClientUI/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ClientUI/Resources/Raw/AboutAssets.txt b/src/ClientUI/Resources/Raw/AboutAssets.txt new file mode 100644 index 000000000..531df33f7 --- /dev/null +++ b/src/ClientUI/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with you package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/src/ClientUI/Resources/Splash/P2G-Splash.png b/src/ClientUI/Resources/Splash/P2G-Splash.png new file mode 100644 index 000000000..9b3ec5d11 Binary files /dev/null and b/src/ClientUI/Resources/Splash/P2G-Splash.png differ diff --git a/src/ClientUI/Resources/Splash/P2G-Splash.scale-125.png b/src/ClientUI/Resources/Splash/P2G-Splash.scale-125.png new file mode 100644 index 000000000..b5c7eed27 Binary files /dev/null and b/src/ClientUI/Resources/Splash/P2G-Splash.scale-125.png differ diff --git a/src/ClientUI/Resources/Splash/P2G-Splash.scale-150.png b/src/ClientUI/Resources/Splash/P2G-Splash.scale-150.png new file mode 100644 index 000000000..db8944ab2 Binary files /dev/null and b/src/ClientUI/Resources/Splash/P2G-Splash.scale-150.png differ diff --git a/src/ClientUI/Resources/Splash/splash.svg b/src/ClientUI/Resources/Splash/splash.svg new file mode 100644 index 000000000..e00f64570 --- /dev/null +++ b/src/ClientUI/Resources/Splash/splash.svg @@ -0,0 +1,136 @@ + +image/svg+xml + + + + +PG2PG2 diff --git a/src/ClientUI/ServiceClient.cs b/src/ClientUI/ServiceClient.cs new file mode 100644 index 000000000..301fffd17 --- /dev/null +++ b/src/ClientUI/ServiceClient.cs @@ -0,0 +1,360 @@ +using Api.Contract; +using Api.Service; +using Api.Service.Helpers; +using Api.Service.Validators; +using Api.Services; +using Common.Database; +using Common.Dto.Peloton; +using Common.Dto; +using Common.Service; +using Flurl.Http; +using Garmin.Auth; +using Peloton; +using Peloton.Dto; +using SharedUI; +using Sync; + +namespace ClientUI; + +public class ServiceClient : IApiClient +{ + private readonly ISystemInfoService _systemInfoService; + private readonly ISettingsService _settingsService; + private readonly ISettingsUpdaterService _settingsUpdaterService; + private readonly IPelotonAnnualChallengeService _annualChallengeService; + private readonly IPelotonService _pelotonService; + private readonly IGarminAuthenticationService _garminAuthService; + private readonly ISyncService _syncService; + private readonly ISyncStatusDb _syncStatusDb; + + public ServiceClient(ISystemInfoService systemInfoService, ISettingsService settingsService, IPelotonAnnualChallengeService annualChallengeService, ISettingsUpdaterService settingsUpdaterService, IPelotonService pelotonService, IGarminAuthenticationService garminAuthService, ISyncService syncService, ISyncStatusDb syncStatusDb) + { + _systemInfoService = systemInfoService; + _settingsService = settingsService; + _annualChallengeService = annualChallengeService; + _settingsUpdaterService = settingsUpdaterService; + _pelotonService = pelotonService; + _garminAuthService = garminAuthService; + _syncService = syncService; + _syncStatusDb = syncStatusDb; + } + + public async Task GetAnnualProgressAsync() + { + try + { + var result = await _annualChallengeService.GetProgressAsync(); + + if (result.IsErrored()) + throw new ApiClientException(result.Error.Message, result.Error.Exception); + + return result.Result; + } + catch (Exception e) + { + throw new ApiClientException($"Unexpected error occurred: {e.Message}", e); + } + } + + public async Task GetGarminAuthenticationAsync() + { + var settings = await _settingsService.GetSettingsAsync(); + var auth = _settingsService.GetGarminAuthentication(settings.Garmin.Email); + + var result = new GarminAuthenticationGetResponse() { IsAuthenticated = auth?.IsValid(settings) ?? false }; + return result; + } + + public async Task PelotonWorkoutsGetAsync(PelotonWorkoutsGetRequest request) + { + if (!request.IsValid(out var result)) + throw new ApiClientException(result); + + PagedPelotonResponse recentWorkouts = null; + + try + { + recentWorkouts = await _pelotonService.GetPelotonWorkoutsAsync(request.PageSize, request.PageIndex); + } + catch (ArgumentException ae) + { + throw new ApiClientException(new ErrorResponse(ae.Message, ae)); + } + catch (PelotonAuthenticationError pe) + { + throw new ApiClientException(new ErrorResponse(pe.Message, pe)); + } + catch (Exception e) + { + throw new ApiClientException(new ErrorResponse($"Unexpected error occurred: {e.Message}", e)); + } + + return new PelotonWorkoutsGetResponse() + { + PageSize = recentWorkouts.Limit, + PageIndex = recentWorkouts.Page, + PageCount = recentWorkouts.Page_Count, + TotalItems = recentWorkouts.Total, + Items = recentWorkouts.data + .OrderByDescending(i => i.Created_At) + .Select(w => new PelotonWorkout(w)) + .ToList() + }; + } + + public async Task PelotonWorkoutsGetAsync(PelotonWorkoutsGetAllRequest request) + { + if (request.SinceDate.IsAfter(DateTime.UtcNow, nameof(request.SinceDate), out var result)) + throw new ApiClientException(result!); + + ICollection workoutsToReturn = new List(); + var completedOnly = request.WorkoutStatusFilter == WorkoutStatus.Completed; + + try + { + var serviceResult = await _pelotonService.GetWorkoutsSinceAsync(request.SinceDate); + + if (serviceResult.IsErrored()) + throw new ApiClientException(new ErrorResponse(serviceResult.Error.Message)); + + foreach (var w in serviceResult.Result) + { + if (completedOnly && w.Status != "COMPLETE") + continue; + + if (request.ExcludeWorkoutTypes.Contains(w.GetWorkoutType())) + continue; + + workoutsToReturn.Add(w); + } + } + catch (Exception e) + { + throw new ApiClientException(new ErrorResponse($"Unexpected error occurred: {e.Message}", e)); + } + + return new PelotonWorkoutsGetAllResponse() + { + SinceDate = request.SinceDate, + Items = workoutsToReturn + .OrderByDescending(i => i.Created_At) + .Select(w => new PelotonWorkout(w)) + .ToList() + }; + } + + public async Task SendGarminMfaTokenAsync(GarminAuthenticationMfaTokenPostRequest request) + { + var settings = await _settingsService.GetSettingsAsync(); + + if (!settings.Garmin.TwoStepVerificationEnabled) + throw new ApiClientException(new ErrorResponse("Garmin two step verification is not enabled in Settings.")); + + try + { + await _garminAuthService.CompleteMFAAuthAsync(request.MfaToken); + return; + } + catch (Exception e) + { + throw new ApiClientException(new ErrorResponse($"Unexpected error occurred: {e.Message}", e)); + } + } + + public async Task SettingsGetAsync() + { + try + { + var settings = await _settingsService.GetSettingsAsync(); + + var settingsResponse = new SettingsGetResponse(settings); + settingsResponse.Peloton.Password = null; + settingsResponse.Garmin.Password = null; + + return settingsResponse; + } + catch (Exception e) + { + throw new ApiClientException($"Unexpected error ocurred: {e.Message}", e); + } + } + + public async Task SettingsAppPostAsync(Common.Dto.App appSettings) + { + try + { + var result = await _settingsUpdaterService.UpdateAppSettingsAsync(appSettings); + + if (result.IsErrored()) + throw new ApiClientException(result.Error.Message, result.Error.Exception); + + return result.Result; + } + catch (Exception e) + { + throw new ApiClientException($"Unexpected error occurred: {e.Message}", e); + } + } + + public async Task SettingsFormatPostAsync(Format formatSettings) + { + try + { + var result = await _settingsUpdaterService.UpdateFormatSettingsAsync(formatSettings); + + if (result.IsErrored()) + throw new ApiClientException(result.Error.Message, result.Error.Exception); + + return result.Result; + } + catch (Exception e) + { + throw new ApiClientException($"Unexpected error occurred: {e.Message}", e); + } + } + + public async Task SettingsGarminPostAsync(SettingsGarminPostRequest garminSettings) + { + try + { + var result = await _settingsUpdaterService.UpdateGarminSettingsAsync(garminSettings); + + if (result.IsErrored()) + throw new ApiClientException(result.Error.Message, result.Error.Exception); + + return result.Result; + } + catch (Exception e) + { + throw new ApiClientException($"Unexpected error occurred: {e.Message}", e); + } + } + + public async Task SettingsPelotonPostAsync(SettingsPelotonPostRequest pelotonSettings) + { + try + { + var result = await _settingsUpdaterService.UpdatePelotonSettingsAsync(pelotonSettings); + + if (result.IsErrored()) + throw new ApiClientException(result.Error.Message, result.Error.Exception); + + return result.Result; + } + catch (Exception e) + { + throw new ApiClientException($"Unexpected error occurred: {e.Message}", e); + } + } + + public async Task SignInToGarminAsync() + { + var settings = await _settingsService.GetSettingsAsync(); + + if (settings.Garmin.Password.CheckIsNullOrEmpty("Garmin Password", out var result)) throw new ApiClientException(result); + if (settings.Garmin.Email.CheckIsNullOrEmpty("Garmin Email", out result)) throw new ApiClientException(result); + + try + { + if (!settings.Garmin.TwoStepVerificationEnabled) + { + await _garminAuthService.RefreshGarminAuthenticationAsync(); + return new FlurlResponse(new HttpResponseMessage() { StatusCode = System.Net.HttpStatusCode.Created }); + } + else + { + var auth = await _garminAuthService.RefreshGarminAuthenticationAsync(); + + if (auth.AuthStage == Common.Stateful.AuthStage.NeedMfaToken) + return new FlurlResponse(new HttpResponseMessage() { StatusCode = System.Net.HttpStatusCode.Accepted }); + + return new FlurlResponse(new HttpResponseMessage() { StatusCode = System.Net.HttpStatusCode.Created }); + } + } + catch (GarminAuthenticationError gae) when (gae.Code == Code.UnexpectedMfa) + { + throw new ApiClientException(new ErrorResponse("It looks like your account is protected by two step verification. Please enable the Two Step verification setting.", ErrorCode.UnexpectedGarminMFA, gae)); + } + catch (GarminAuthenticationError gae) when (gae.Code == Code.InvalidCredentials) + { + throw new ApiClientException(new ErrorResponse("Garmin authentication failed. Invalid Garmin credentials.", ErrorCode.InvalidGarminCredentials, gae)); + } + catch (Exception e) + { + throw new ApiClientException(new ErrorResponse($"Unexpected error occurred: {e.Message}", e)); + } + } + + public async Task SyncGetAsync() + { + var syncTimeTask = _syncStatusDb.GetSyncStatusAsync(); + var settingsTask = _settingsService.GetSettingsAsync(); + + await Task.WhenAll(syncTimeTask, settingsTask); + + var syncTime = await syncTimeTask; + var settings = await settingsTask; + + return new SyncGetResponse() + { + SyncEnabled = settings.App.EnablePolling, + SyncStatus = syncTime.SyncStatus, + LastSuccessfulSyncTime = syncTime.LastSuccessfulSyncTime, + LastSyncTime = syncTime.LastSyncTime, + NextSyncTime = syncTime.NextSyncTime + }; + } + + public async Task SyncPostAsync(SyncPostRequest syncPostRequest) + { + var settings = await _settingsService.GetSettingsAsync(); + var auth = _settingsService.GetGarminAuthentication(settings.Garmin.Email); + + var (isValid, result) = syncPostRequest.IsValid(settings, auth); + if (!isValid) + throw new ApiClientException(result); + + SyncResult syncResult = new(); + try + { + syncResult = await _syncService.SyncAsync(syncPostRequest.WorkoutIds, exclude: null); + } + catch (Exception e) + { + throw new ApiClientException(new ErrorResponse($"Unexpected error occurred: {e.Message}", e)); + } + + return new SyncPostResponse() + { + SyncSuccess = syncResult.SyncSuccess, + PelotonDownloadSuccess = syncResult.PelotonDownloadSuccess, + ConverToFitSuccess = syncResult.ConversionSuccess, + UploadToGarminSuccess = syncResult.UploadToGarminSuccess, + Errors = syncResult.Errors.Select(e => new ErrorResponse(e.Message)).ToList() + }; + } + + public async Task SystemInfoGetAsync(SystemInfoGetRequest systemInfoGetRequest) + { + var result = await _systemInfoService.GetAsync(systemInfoGetRequest); + result.Api = null; + return result; + } + + public async Task SystemInfoGetLogsAsync() + { + try + { + var result = await _systemInfoService.GetLogsAsync(); + + if (result.IsErrored()) + throw new ApiClientException(result.Error.Message, result.Error.Exception); + + return result.Result; + } + catch (Exception e) + { + throw new ApiClientException($"Unexpected error occurred: {e.Message}", e); + } + } +} diff --git a/src/ClientUI/_Imports.razor b/src/ClientUI/_Imports.razor new file mode 100644 index 000000000..873c1ed8e --- /dev/null +++ b/src/ClientUI/_Imports.razor @@ -0,0 +1,7 @@ +@using System.Net.Http +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using ClientUI diff --git a/src/ClientUI/configuration.example.json b/src/ClientUI/configuration.example.json new file mode 100644 index 000000000..47de40236 --- /dev/null +++ b/src/ClientUI/configuration.example.json @@ -0,0 +1,37 @@ +{ + "Observability": { + + "Prometheus": { + "Enabled": false, + "Port": 4000 + }, + + "Jaeger": { + "Enabled": false, + "AgentHost": "localhost", + "AgentPort": 6831 + }, + + "Serilog": { + "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Error", + "System": "Error" + } + }, + "WriteTo": [ + { "Name": "Console" }, + { + "Name": "File", + "Args": { + "path": "./output/log.txt", + "rollingInterval": "Day", + "retainedFileCountLimit": 7 + } + } + ] + } + } + } \ No newline at end of file diff --git a/src/ClientUI/wwwroot/index.html b/src/ClientUI/wwwroot/index.html new file mode 100644 index 000000000..1c9f98664 --- /dev/null +++ b/src/ClientUI/wwwroot/index.html @@ -0,0 +1,31 @@ + + + + + + ClientUI + + + + + + + +
+ +
Loading...
+ +
+ An unhandled error has occurred. + Reload + 🗙 +
+ + + + + + + + + \ No newline at end of file diff --git a/src/Common/Common.csproj b/src/Common/Common.csproj index 4a6207e00..e25eebaa4 100644 --- a/src/Common/Common.csproj +++ b/src/Common/Common.csproj @@ -1,25 +1,33 @@  - net6.0 + net7.0 true $(NoWarn);1591 - - - + + + - + - - - + + + - - + + + + + + + + + + diff --git a/src/Common/Configuration.cs b/src/Common/Configuration.cs index 524729bf0..8c251ed13 100644 --- a/src/Common/Configuration.cs +++ b/src/Common/Configuration.cs @@ -1,9 +1,5 @@ using Common.Dto; using Microsoft.Extensions.Configuration; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.IO; namespace Common; @@ -13,8 +9,8 @@ public static void LoadConfigValues(IConfiguration provider, Settings config) { provider.GetSection(nameof(App)).Bind(config.App); provider.GetSection(nameof(Format)).Bind(config.Format); - provider.GetSection(nameof(Peloton)).Bind(config.Peloton); - provider.GetSection(nameof(Garmin)).Bind(config.Garmin); + provider.GetSection("Peloton").Bind(config.Peloton); + provider.GetSection("Garmin").Bind(config.Garmin); } public static void LoadConfigValues(IConfiguration provider, AppConfiguration config) @@ -45,170 +41,11 @@ public AppConfiguration() public Developer Developer { get; set; } } -/// -/// Settings that can be looked up after app start, changed on demand, and saved to the SettingsDb. -/// -public class Settings -{ - public Settings() - { - App = new App(); - Format = new Format(); - Peloton = new Peloton(); - Garmin = new Garmin(); - } - - public App App { get; set; } - public Format Format { get; set; } - public Peloton Peloton { get; set; } - public Garmin Garmin { get; set; } -} - -public class App -{ - public App() - { - OutputDirectory = Path.Join(Environment.CurrentDirectory, "output"); - WorkingDirectory = Path.Join(Environment.CurrentDirectory, "working"); - - CheckForUpdates = true; - EnablePolling = false; - PollingIntervalSeconds = 86400; // 1 day - } - - [DisplayName("Output Directory")] - [Description("Where downloaded and converted files should be saved to.")] - public string OutputDirectory { get; set; } - [DisplayName("Working Directory")] - [Description("The directory where P2G can work. When running, P2G will create and delete files and needs a dedicated directory to do that.")] - public string WorkingDirectory { get; set; } - - [DisplayName("Enable Polling")] - [Description("Enabled if you wish P2G to run continuously and poll Peloton for new workouts.")] - public bool EnablePolling { get; set; } - [DisplayName("Polling Interval in Seconds")] - [Description("The polling interval in seconds determines how frequently P2G should check for new workouts. Be warned, that setting this to a frequency of hourly or less may get you flagged by Peloton as a bad actor and they may reset your password.")] - public int PollingIntervalSeconds { get; set; } - [Obsolete] - public bool? PythonAndGUploadInstalled { get; set; } - public bool CloseWindowOnFinish { get; set; } - public bool CheckForUpdates { get; set; } - - - public static string DataDirectory = Path.GetFullPath(Path.Join(Environment.CurrentDirectory, "data")); - public string FailedDirectory => Path.GetFullPath(Path.Join(OutputDirectory, "failed")); - public string DownloadDirectory => Path.GetFullPath(Path.Join(WorkingDirectory, "downloaded")); - public string UploadDirectory => Path.GetFullPath(Path.Join(WorkingDirectory, "upload")); - -} - -public class Format -{ - public Format() - { - Cycling = new Cycling(); - Running = new Running(); - Rowing = new Rowing(); - Strength= new Strength(); - } - - [DisplayName("FIT")] - [Description("Enabled indicates you wish downloaded workouts to be converted to FIT")] - public bool Fit { get; set; } - [DisplayName("JSON")] - [Description("Enabled indicates you wish downloaded workouts to be converted to JSON")] - public bool Json { get; set; } - [DisplayName("TCX")] - [Description("Enabled indicates you wish downloaded workouts to be converted to TCX.")] - public bool Tcx { get; set; } - [DisplayName("Save a local copy")] - [Description("Save any converted workouts to your specified Output Directory")] - public bool SaveLocalCopy { get; set; } - [DisplayName("Include Time in HR Zones")] - [Description("Only use this if you are unable to configure your Max HR on Garmin Connect. When set to True, P2G will attempt to capture the time spent in each HR Zone per the data returned by Peloton.")] - public bool IncludeTimeInHRZones { get; set; } - [DisplayName("Include Time in Power Zones")] - [Description("Only use this if you are unable to configure your FTP and Power Zones on Garmin Connect. When set to True, P2G will attempt to capture the time spent in each Power Zone per the data returned by Peloton.")] - public bool IncludeTimeInPowerZones { get; set; } - [DisplayName("Device Info Path")] - [Description("The path to your deviceInfo.xml file.")] - public string DeviceInfoPath { get; set; } - public Cycling Cycling { get; set; } - public Running Running { get; set; } - public Rowing Rowing { get; init; } - public Strength Strength { get; init; } -} - -public record Cycling -{ - public PreferredLapType PreferredLapType { get; set; } -} - -public record Running -{ - public PreferredLapType PreferredLapType { get; set; } -} - -public record Rowing -{ - public PreferredLapType PreferredLapType { get; set; } -} - -public record Strength -{ - /// - /// When no Rep information is provided by Peloton, P2G will calculate number - /// of reps based on this default value. Example, if your DefaultNumSecondsPerRep is 3, - /// and the Exercise duration was 15 seconds, then P2G would credit you with 5 reps for that - /// exercise. - /// - public int DefaultSecondsPerRep { get; set; } = 3; -} - -public enum PreferredLapType -{ - Default = 0, - Distance = 1, - Class_Segments = 2, - Class_Targets = 3 -} - -public class Peloton : ICredentials -{ - public Peloton() - { - ExcludeWorkoutTypes = new List(); - NumWorkoutsToDownload = 5; - } - - public EncryptionVersion EncryptionVersion { get; set; } - public string Email { get; set; } - public string Password { get; set; } - public int NumWorkoutsToDownload { get; set; } - public ICollection ExcludeWorkoutTypes { get; set; } -} - -public class Garmin : ICredentials -{ - public Garmin() - { - UploadStrategy = UploadStrategy.NativeImplV1; - } - - public EncryptionVersion EncryptionVersion { get; set; } - public string Email { get; set; } - public string Password { get; set; } - public bool TwoStepVerificationEnabled { get; set; } - public bool Upload { get; set; } - public FileFormat FormatToUpload { get; set; } - public UploadStrategy UploadStrategy { get; set; } -} - public class ApiSettings { public ApiSettings() { - HostUrl = "http://localhost"; + HostUrl = "http://*:8080"; } public string HostUrl { get; set; } @@ -218,7 +55,7 @@ public class WebUISettings { public WebUISettings() { - HostUrl = "http://localhost"; + HostUrl = "http://*:8080"; } public string HostUrl { get; set; } @@ -254,20 +91,6 @@ public class Developer public string UserAgent { get; set; } } -public enum UploadStrategy : byte -{ - PythonAndGuploadInstalledLocally = 0, - WindowsExeBundledPython = 1, - NativeImplV1 = 2 -} - -public enum FileFormat : byte -{ - Fit = 0, - Tcx = 1, - Json = 2 -} - public enum EncryptionVersion : byte { None = 0, diff --git a/src/Common/Constants.cs b/src/Common/Constants.cs index 7fd73766c..5242950fc 100644 --- a/src/Common/Constants.cs +++ b/src/Common/Constants.cs @@ -7,6 +7,8 @@ public static class Constants public const string ConsoleAppName = "p2g_console"; public const string ApiName = "p2g_api"; public const string WebUIName = "p2g_webui"; - public const string AppVersion = "3.5.1"; + public const string ClientUIName = "p2g_clientui"; + + public const string AppVersion = "4.2.0-rc"; } } diff --git a/src/Common/Database/DbBase.cs b/src/Common/Database/DbBase.cs index 05a48f7a1..0f8b14937 100644 --- a/src/Common/Database/DbBase.cs +++ b/src/Common/Database/DbBase.cs @@ -1,4 +1,5 @@ -using Common.Observe; +using Common.Dto; +using Common.Observe; using JsonFlatFileDataStore; using Serilog; using System; diff --git a/src/Common/Database/SettingsDb.cs b/src/Common/Database/SettingsDb.cs index 617871e11..d7f601736 100644 --- a/src/Common/Database/SettingsDb.cs +++ b/src/Common/Database/SettingsDb.cs @@ -1,4 +1,5 @@ -using Common.Helpers; +using Common.Dto; +using Common.Helpers; using Common.Observe; using JsonFlatFileDataStore; using Prometheus; @@ -28,7 +29,24 @@ public class SettingsDb : DbBase, ISettingsDb public SettingsDb(IFileHandling fileHandler) : base("Settings", fileHandler) { - _db = new DataStore(DbPath); + _db = new DataStore(DbPath); + Init(); + } + + private void Init() + { + try + { + var settings = _db.GetItem("1"); + } + catch (KeyNotFoundException) + { + var success = _db.InsertItem("1", _defaultSettings); + if (!success) + { + _logger.Error($"Failed to init default Settings to Db for default user."); + } + } } public Settings GetLegacySettings() @@ -53,7 +71,7 @@ public Settings GetLegacySettings() } } - public async Task GetSettingsAsync(int userId) + public Task GetSettingsAsync(int userId) { using var metrics = DbMetrics.DbActionDuration .WithLabels("get", DbName) @@ -67,20 +85,7 @@ public async Task GetSettingsAsync(int userId) settings.Peloton.Decrypt(); settings.Garmin.Decrypt(); - return settings; - } - catch (KeyNotFoundException k) - { - _logger.Verbose(k, $"Settings key not found in DB for user {userId}. Creating default Settings."); - - var success = await _db.InsertItemAsync(userId.ToString(), _defaultSettings); - if (!success) - { - _logger.Error($"Failed to save default Settings to Db for user {userId}"); - throw; - } - - return _defaultSettings; + return Task.FromResult(settings); } catch (Exception e) { diff --git a/src/Common/Dto/Api/IError.cs b/src/Common/Dto/Api/IError.cs deleted file mode 100644 index 9f162e81d..000000000 --- a/src/Common/Dto/Api/IError.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Common.Dto.Api -{ - public interface IErrorResponse - { - public string Message { get; set; } - public ErrorCode Code { get; set; } - } - - public class ErrorResponse : IErrorResponse - { - public string Message { get; set; } - public ErrorCode Code { get; set; } - - public ErrorResponse() { } - - public ErrorResponse(string message) - { - Message = message; - } - - public ErrorResponse(string message, ErrorCode code) - { - Message = message; - Code = code; - } - } - - public enum ErrorCode : ushort - { - None = 0, - - NeedToInitGarminMFAAuth = 100, - } -} diff --git a/src/Common/Dto/Api/PelotonAnnualChallengeContracts.cs b/src/Common/Dto/Api/PelotonAnnualChallengeContracts.cs deleted file mode 100644 index 5a44fe7ac..000000000 --- a/src/Common/Dto/Api/PelotonAnnualChallengeContracts.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Collections.Generic; - -namespace Common.Dto.Api; - -public record ProgressGetResponse -{ - public double EarnedMinutes { get; init; } - public ICollection Tiers { get; init; } -} - -public record Tier -{ - public string BadgeUrl { get; init; } - public string Title { get; init; } - public double RequiredMinutes { get; init; } - public bool HasEarned { get; init; } - public float PercentComplete { get; init; } - public bool IsOnTrackToEarndByEndOfYear { get; init; } - public double MinutesBehindPace { get; init; } - public double MinutesAheadOfPace { get; init; } - public double MinutesNeededPerDay { get; init; } - public double MinutesNeededPerWeek { get; init; } -} \ No newline at end of file diff --git a/src/Common/Dto/P2GWorkout.cs b/src/Common/Dto/P2GWorkout.cs index d98585590..dbb8efdc8 100644 --- a/src/Common/Dto/P2GWorkout.cs +++ b/src/Common/Dto/P2GWorkout.cs @@ -1,6 +1,5 @@ using Common.Dto.Peloton; using System.Collections.Generic; -using System.Linq; namespace Common.Dto { @@ -34,6 +33,7 @@ public static WorkoutType GetWorkoutType(this Workout workout) FitnessDiscipline.Caesar => WorkoutType.Rowing, FitnessDiscipline.Cardio => WorkoutType.Cardio, FitnessDiscipline.Circuit => WorkoutType.Circuit, + FitnessDiscipline.Cycling when workout.Is_Outdoor => WorkoutType.OutdoorCycling, FitnessDiscipline.Cycling => WorkoutType.Cycling, FitnessDiscipline.Meditation => WorkoutType.Meditation, FitnessDiscipline.Strength => WorkoutType.Strength, diff --git a/src/Common/Dto/Peloton/Workout.cs b/src/Common/Dto/Peloton/Workout.cs index 4f2a11898..d7a9690f5 100644 --- a/src/Common/Dto/Peloton/Workout.cs +++ b/src/Common/Dto/Peloton/Workout.cs @@ -86,6 +86,7 @@ public enum FitnessDiscipline : byte Stretching = 8, Yoga = 9, Meditation = 10, - Caesar = 11, // Project Caesar = Rower + Caesar = 11, // Project Caesar = Rower, + Caesar_Bootcamp = 12, } } diff --git a/src/Common/Dto/ServiceResult.cs b/src/Common/Dto/ServiceResult.cs index 211c60d14..fd0f59da0 100644 --- a/src/Common/Dto/ServiceResult.cs +++ b/src/Common/Dto/ServiceResult.cs @@ -1,5 +1,4 @@ -using Common.Dto.Api; -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; @@ -31,28 +30,4 @@ public class ServiceError : IServiceError public Exception Exception { get; init; } public string Message { get; init; } public bool IsServerException { get; init; } -} - -public static class ServiceResultExtensions -{ - public static bool IsErrored(this IServiceResult serviceResult) => !serviceResult.Successful; - - public static ActionResult GetResultForError(this IServiceResult serviceResult) - { - if (serviceResult.Error is null) - return new ObjectResult(new ErrorResponse($"Unexpected error occurred.")) - { - StatusCode = StatusCodes.Status500InternalServerError - }; - - if (serviceResult.Error.IsServerException) - { - return new ObjectResult(new ErrorResponse(serviceResult.Error.Message)) - { - StatusCode = StatusCodes.Status500InternalServerError - }; - } - - return new BadRequestObjectResult(new ErrorResponse(serviceResult.Error.Message)); - } } \ No newline at end of file diff --git a/src/Common/Dto/Settings.cs b/src/Common/Dto/Settings.cs new file mode 100644 index 000000000..08c43895f --- /dev/null +++ b/src/Common/Dto/Settings.cs @@ -0,0 +1,138 @@ +using Common.Stateful; +using System.Collections.Generic; +using System.IO; + +namespace Common.Dto; + +/// +/// Settings that can be looked up after app start, changed on demand, and saved to the SettingsDb. +/// +public class Settings +{ + public Settings() + { + App = new (); + Format = new (); + Peloton = new (); + Garmin = new (); + } + + public App App { get; set; } + public Format Format { get; set; } + public PelotonSettings Peloton { get; set; } + public GarminSettings Garmin { get; set; } +} + +public class App +{ + public App() + { + CheckForUpdates = true; + EnablePolling = false; + PollingIntervalSeconds = 86400; // 1 day + } + + public bool EnablePolling { get; set; } + public int PollingIntervalSeconds { get; set; } + public bool CheckForUpdates { get; set; } + + public static string DataDirectory => Path.GetFullPath(Path.Join(Statics.DefaultDataDirectory, "data")); + + public string WorkingDirectory => Statics.DefaultTempDirectory; + public string OutputDirectory => Statics.DefaultOutputDirectory; + public string FailedDirectory => Path.GetFullPath(Path.Join(OutputDirectory, "failed")); + public string DownloadDirectory => Path.GetFullPath(Path.Join(WorkingDirectory, "downloaded")); + public string UploadDirectory => Path.GetFullPath(Path.Join(WorkingDirectory, "upload")); + + +} + +public class Format +{ + public Format() + { + Cycling = new Cycling(); + Running = new Running(); + Rowing = new Rowing(); + Strength = new Strength(); + } + + public bool Fit { get; set; } + public bool Json { get; set; } + public bool Tcx { get; set; } + public bool SaveLocalCopy { get; set; } + public bool IncludeTimeInHRZones { get; set; } + public bool IncludeTimeInPowerZones { get; set; } + public string DeviceInfoPath { get; set; } + public string WorkoutTitleTemplate { get; set; } = "{{PelotonWorkoutTitle}}{{#if PelotonInstructorName}} with {{PelotonInstructorName}}{{/if}}"; + public Cycling Cycling { get; set; } + public Running Running { get; set; } + public Rowing Rowing { get; init; } + public Strength Strength { get; init; } +} + +public record Cycling +{ + public PreferredLapType PreferredLapType { get; set; } +} + +public record Running +{ + public PreferredLapType PreferredLapType { get; set; } +} + +public record Rowing +{ + public PreferredLapType PreferredLapType { get; set; } +} + +public record Strength +{ + /// + /// When no Rep information is provided by Peloton, P2G will calculate number + /// of reps based on this default value. Example, if your DefaultNumSecondsPerRep is 3, + /// and the Exercise duration was 15 seconds, then P2G would credit you with 5 reps for that + /// exercise. + /// + public int DefaultSecondsPerRep { get; set; } = 3; +} + +public enum PreferredLapType +{ + Default = 0, + Distance = 1, + Class_Segments = 2, + Class_Targets = 3 +} + +public class PelotonSettings : ICredentials +{ + public PelotonSettings() + { + ExcludeWorkoutTypes = new List(); + NumWorkoutsToDownload = 5; + } + + public EncryptionVersion EncryptionVersion { get; set; } + public string Email { get; set; } + public string Password { get; set; } + public int NumWorkoutsToDownload { get; set; } + public ICollection ExcludeWorkoutTypes { get; set; } +} + +public class GarminSettings : ICredentials +{ + public EncryptionVersion EncryptionVersion { get; set; } + public string Email { get; set; } + public string Password { get; set; } + public bool TwoStepVerificationEnabled { get; set; } + public bool Upload { get; set; } + public FileFormat FormatToUpload { get; set; } +} + +public enum FileFormat : byte +{ + Fit = 0, + Tcx = 1, + Json = 2 +} \ No newline at end of file diff --git a/src/Common/Dto/WorkoutType.cs b/src/Common/Dto/WorkoutType.cs index b20c4d053..91a46829e 100644 --- a/src/Common/Dto/WorkoutType.cs +++ b/src/Common/Dto/WorkoutType.cs @@ -16,5 +16,6 @@ public enum WorkoutType : byte Yoga = 11, Meditation = 12, Rowing = 13, + OutdoorCycling = 14, } } diff --git a/src/Common/FileHandling.cs b/src/Common/FileHandling.cs index abc7ca2cf..e4b05cf95 100644 --- a/src/Common/FileHandling.cs +++ b/src/Common/FileHandling.cs @@ -5,183 +5,182 @@ using System.Text.Json; using System.Xml.Serialization; -namespace Common +namespace Common; + +public interface IFileHandling { - public interface IFileHandling - { - void MkDirIfNotExists(string path); - bool DirExists(string path); - bool FileExists(string path); - string[] GetFiles(string path); - - T DeserializeJson(string file); - bool TryDeserializeXml(string file, out T result) where T : new(); - void MoveFailedFile(string fromPath, string toPath); - void Copy(string from, string to, bool overwrite); - bool WriteToFile(string path, string content); - void Cleanup(string dir); - } - - public class IOWrapper : IFileHandling - { - private static readonly ILogger _logger = LogContext.ForClass(); + void MkDirIfNotExists(string path); + bool DirExists(string path); + bool FileExists(string path); + string[] GetFiles(string path); + + T DeserializeJson(string file); + bool TryDeserializeXml(string file, out T result) where T : new(); + void MoveFailedFile(string fromPath, string toPath); + void Copy(string from, string to, bool overwrite); + bool WriteToFile(string path, string content); + void Cleanup(string dir); +} - public void MkDirIfNotExists(string path) - { - using var trace1 = Tracing.Trace(nameof(MkDirIfNotExists), "io") - .WithTag("path", path); - if (!DirExists(path)) - { - using var trace2 = Tracing.Trace("CreateDirectory", "io") - .WithTag("path", path); - _logger.Debug("Creating directory {@Directory}", path); - Directory.CreateDirectory(path); - } - } +public class IOWrapper : IFileHandling +{ + private static readonly ILogger _logger = LogContext.ForClass(); - public bool DirExists(string path) + public void MkDirIfNotExists(string path) + { + using var trace1 = Tracing.Trace(nameof(MkDirIfNotExists), "io") + .WithTag("path", path); + if (!DirExists(path)) { - using var trace1 = Tracing.Trace(nameof(DirExists), "io") + using var trace2 = Tracing.Trace("CreateDirectory", "io") .WithTag("path", path); - return Directory.Exists(path); + _logger.Debug("Creating directory {@Directory}", path); + Directory.CreateDirectory(path); } + } - public bool FileExists(string path) - { - using var trace1 = Tracing.Trace(nameof(FileExists), "io") - .WithTag("path", path); - var p = Path.GetFullPath(path); - return File.Exists(p); - } + public bool DirExists(string path) + { + using var trace1 = Tracing.Trace(nameof(DirExists), "io") + .WithTag("path", path); + return Directory.Exists(path); + } - public string[] GetFiles(string path) - { - using var trace1 = Tracing.Trace(nameof(GetFiles), "io") - .WithTag("path", path); - var files = Directory.GetFiles(path); + public bool FileExists(string path) + { + using var trace1 = Tracing.Trace(nameof(FileExists), "io") + .WithTag("path", path); + var p = Path.GetFullPath(path); + return File.Exists(p); + } - trace1?.AddTag("numFiles", files.Length); + public string[] GetFiles(string path) + { + using var trace1 = Tracing.Trace(nameof(GetFiles), "io") + .WithTag("path", path); + var files = Directory.GetFiles(path); - return files; - } + trace1?.AddTag("numFiles", files.Length); - public T DeserializeJson(string file) - { - using var trace1 = Tracing.Trace(nameof(DeserializeJson), "io") - .WithTag("path", file); + return files; + } - using (var reader = new StreamReader(file)) - { - return JsonSerializer.Deserialize(reader.ReadToEnd(), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); - } - } + public T DeserializeJson(string file) + { + using var trace1 = Tracing.Trace(nameof(DeserializeJson), "io") + .WithTag("path", file); - public bool TryDeserializeXml(string file, out T result) where T : new() + using (var reader = new StreamReader(file)) { - result = default; + return JsonSerializer.Deserialize(reader.ReadToEnd(), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); + } + } + + public bool TryDeserializeXml(string file, out T result) where T : new() + { + result = default; - using var trace = Tracing.Trace(nameof(TryDeserializeXml), "io") - .WithTag("path", file); - if (!File.Exists(file)) return false; + using var trace = Tracing.Trace(nameof(TryDeserializeXml), "io") + .WithTag("path", file); + if (!File.Exists(file)) return false; - XmlSerializer serializer = new XmlSerializer(typeof(T), new XmlRootAttribute("Creator")); - try + XmlSerializer serializer = new XmlSerializer(typeof(T), new XmlRootAttribute("Creator")); + try + { + using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { - using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) + try { - try - { - result = (T)serializer.Deserialize(stream); - return true; - } - catch (Exception e) - { - _logger.Error(e, "Failed to deserialize {@File} from xml to type {@Type}.", file, typeof(T)); - trace?.AddTag("exception.message", e.Message); - trace?.AddTag("exception.stacktrace", e.StackTrace); - return false; - } + result = (T)serializer.Deserialize(stream); + return true; + } + catch (Exception e) + { + _logger.Error(e, "Failed to deserialize {@File} from xml to type {@Type}.", file, typeof(T)); + trace?.AddTag("exception.message", e.Message); + trace?.AddTag("exception.stacktrace", e.StackTrace); + return false; } - } - catch (Exception e) - { - _logger.Error(e, "Failed to read {@file}.", file); - trace?.AddTag("exception.message", e.Message); - trace?.AddTag("exception.stacktrace", e.StackTrace); - return false; } + } + catch (Exception e) + { + _logger.Error(e, "Failed to read {@file}.", file); + trace?.AddTag("exception.message", e.Message); + trace?.AddTag("exception.stacktrace", e.StackTrace); + return false; + } } - public void MoveFailedFile(string fromPath, string toPath) + public void MoveFailedFile(string fromPath, string toPath) + { + using var trace = Tracing.Trace(nameof(MoveFailedFile), "io") + .WithTag("path.from", fromPath) + .WithTag("path.to", toPath); + try { - using var trace = Tracing.Trace(nameof(MoveFailedFile), "io") - .WithTag("path.from", fromPath) - .WithTag("path.to", toPath); - try - { - MkDirIfNotExists(toPath); - toPath = Path.Join(toPath, Path.GetFileName(fromPath)); - _logger.Debug("Moving failed file from {@FromPath} to {@ToPath}", fromPath, toPath); - File.Copy(fromPath, toPath, overwrite: true); + MkDirIfNotExists(toPath); + toPath = Path.Join(toPath, Path.GetFileName(fromPath)); + _logger.Debug("Moving failed file from {@FromPath} to {@ToPath}", fromPath, toPath); + File.Copy(fromPath, toPath, overwrite: true); - } - catch (Exception e) - { - _logger.Error(e, "Failed to move file from {@FromPath} to {@ToPath}", fromPath, toPath); - trace?.AddTag("exception.message", e.Message); - trace?.AddTag("exception.stacktrace", e.StackTrace); - } } - - public void Copy(string from, string to, bool overwrite) + catch (Exception e) { - using var trace1 = Tracing.Trace(nameof(Copy), "io") - .WithTag("path.from", from) - .WithTag("path.to", to) - .WithTag("overwrite", overwrite.ToString()); - File.Copy(from, to, overwrite); + _logger.Error(e, "Failed to move file from {@FromPath} to {@ToPath}", fromPath, toPath); + trace?.AddTag("exception.message", e.Message); + trace?.AddTag("exception.stacktrace", e.StackTrace); } + } - public bool WriteToFile(string path, string content) + public void Copy(string from, string to, bool overwrite) + { + using var trace1 = Tracing.Trace(nameof(Copy), "io") + .WithTag("path.from", from) + .WithTag("path.to", to) + .WithTag("overwrite", overwrite.ToString()); + File.Copy(from, to, overwrite); + } + + public bool WriteToFile(string path, string content) + { + using var trace = Tracing.Trace(nameof(WriteToFile), "io") + .WithTag("path", path); + try { - using var trace = Tracing.Trace(nameof(WriteToFile), "io") - .WithTag("path", path); - try - { - File.WriteAllText(path, content); - return true; - } - catch (Exception e) - { - _logger.Error(e, "Failed to write content to file {@Path}", path); - _logger.Verbose("Failed content: {@Content}", content); - trace?.AddTag("exception.message", e.Message); - trace?.AddTag("exception.stacktrace", e.StackTrace); - return false; - } + File.WriteAllText(path, content); + return true; + } + catch (Exception e) + { + _logger.Error(e, "Failed to write content to file {@Path}", path); + _logger.Verbose("Failed content: {@Content}", content); + trace?.AddTag("exception.message", e.Message); + trace?.AddTag("exception.stacktrace", e.StackTrace); + return false; } + } - public void Cleanup(string dir) - { - using var trace = Tracing.Trace(nameof(Cleanup), "io") - .WithTag("path", dir); - if (!DirExists(dir)) - return; + public void Cleanup(string dir) + { + using var trace = Tracing.Trace(nameof(Cleanup), "io") + .WithTag("path", dir); + if (!DirExists(dir)) + return; - using var trace2 = Tracing.Trace("DeleteDir", "io") - .WithTag("path", dir); + using var trace2 = Tracing.Trace("DeleteDir", "io") + .WithTag("path", dir); - try - { - _logger.Debug("Deleting directory: {@Directory}", dir); - Directory.Delete(dir, recursive: true); - } - catch (Exception e) - { - _logger.Error(e, "Failed to clean up directory: {@Directory}", dir); - trace2?.AddTag("exception.message", e.Message); - trace2?.AddTag("exception.stacktrace", e.StackTrace); - } + try + { + _logger.Debug("Deleting directory: {@Directory}", dir); + Directory.Delete(dir, recursive: true); + } + catch (Exception e) + { + _logger.Error(e, "Failed to clean up directory: {@Directory}", dir); + trace2?.AddTag("exception.message", e.Message); + trace2?.AddTag("exception.stacktrace", e.StackTrace); } } } diff --git a/src/Common/Helpers/Guard.cs b/src/Common/Helpers/Guard.cs deleted file mode 100644 index 8fb009dea..000000000 --- a/src/Common/Helpers/Guard.cs +++ /dev/null @@ -1,127 +0,0 @@ -using Common.Dto.Api; -using Microsoft.AspNetCore.Mvc; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Common.Helpers; - -public static class Guard -{ - public static bool CheckIsNull(this T input, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input is null) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must not be null.")); - return true; - } - - return false; - } - - public static bool CheckIsNullOrEmpty(this string input, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (string.IsNullOrEmpty(input)) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must not be null or empty.")); - return true; - } - - return false; - } - - public static bool CheckIsNotNull(this T input, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input is not null) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must be null.")); - return true; - } - - return false; - } - - public static bool CheckIsGreaterThan(this int input, int limit, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input > limit) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must not be greater than {limit}.")); - return true; - } - - return false; - } - - public static bool CheckIsLessThanOrEqualTo(this int input, int limit, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input <= limit) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must be greater than {limit}.")); - return true; - } - - return false; - } - - public static bool CheckIsLessThan(this int input, int limit, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input < limit) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must be greater than or equal to {limit}.")); - return true; - } - - return false; - } - - public static bool CheckHasAny(this ICollection input, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input is not null && input.Any()) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must be empty.")); - return true; - } - - return false; - } - - public static bool CheckDoesNotHaveAny(this ICollection input, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input is null || !input.Any()) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must not be empty.")); - return true; - } - - return false; - } - - public static bool IsAfter(this DateTime input, DateTime limit, string name, out ActionResult result, string errorMessage = null) - { - result = null; - - if (input > limit) - { - result = new BadRequestObjectResult(new ErrorResponse(errorMessage ?? $"{name} must be before {limit}.")); - return true; - } - - return false; - } -} diff --git a/src/Common/Helpers/WorkoutHelper.cs b/src/Common/Helpers/WorkoutHelper.cs index 7661406a4..31687dc28 100644 --- a/src/Common/Helpers/WorkoutHelper.cs +++ b/src/Common/Helpers/WorkoutHelper.cs @@ -1,42 +1,57 @@ -using Common.Dto.Peloton; +using Common.Dto; +using Common.Dto.Peloton; +using HandlebarsDotNet; using System.IO; +using System.Web; namespace Common.Helpers; public static class WorkoutHelper { public const char SpaceSeparator = '_'; + public const char InvalidCharacterReplacer = '-'; + public const char Space = ' '; - private static readonly char[] InvalidFileNameChars = Path.GetInvalidFileNameChars(); + private static readonly char[] InvalidFileNameChars = Path.GetInvalidFileNameChars(); - public static string GetTitle(Workout workout) + public static string GetTitle(Workout workout, Format settings) { var rideTitle = workout.Ride?.Title ?? workout.Id; var instructorName = workout.Ride?.Instructor?.Name; - if (instructorName is object) - instructorName = $" with {instructorName}"; + var templateData = new + { + PelotonWorkoutTitle = rideTitle, + PelotonInstructorName = instructorName + }; + + var template = settings.WorkoutTitleTemplate; + if (string.IsNullOrWhiteSpace(template)) + template = new Format().WorkoutTitleTemplate; + + var compiledTemplate = Handlebars.Compile(settings.WorkoutTitleTemplate); + var title = compiledTemplate(templateData); - var title = $"{rideTitle}{instructorName}" - .Replace(' ', SpaceSeparator); + var cleanedTitle = title.Replace(Space, SpaceSeparator); foreach (var c in InvalidFileNameChars) { - title = title.Replace(c, '-'); + cleanedTitle = cleanedTitle.Replace(c, InvalidCharacterReplacer); } - return title; + var result = HttpUtility.HtmlDecode(cleanedTitle); + return result; } - public static string GetUniqueTitle(Workout workout) + public static string GetUniqueTitle(Workout workout, Format settings) { - return $"{workout.Id}_{GetTitle(workout)}"; + return $"{workout.Id}_{GetTitle(workout, settings)}"; } public static string GetWorkoutIdFromFileName(string filePath) { var fileName = Path.GetFileNameWithoutExtension(filePath); - var parts = fileName.Split("_"); + var parts = fileName.Split(SpaceSeparator); return parts[0]; } } diff --git a/src/Common/ObservabilityStartup.cs b/src/Common/ObservabilityStartup.cs new file mode 100644 index 000000000..8b3ce49ed --- /dev/null +++ b/src/Common/ObservabilityStartup.cs @@ -0,0 +1,65 @@ +using Common.Http; +using Common.Observe; +using Common.Stateful; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Enrichers.Span; +using Serilog.Settings.Configuration; +using System.IO; + +namespace Common; + +public static class ObservabilityStartup +{ + public static void ConfigureClientUI(IServiceCollection services, ConfigurationManager configManager, AppConfiguration config) + { + FlurlConfiguration.Configure(config.Observability); + ConfigureLogging(configManager); + + // Setup initial Tracing Source + Tracing.Source = new(Statics.TracingService); + } + + public static void ConfigureApi(IServiceCollection services, ConfigurationManager configManager, AppConfiguration config) + { + FlurlConfiguration.Configure(config.Observability); + Tracing.EnableApiTracing(services, config.Observability.Jaeger); + ConfigureLogging(configManager); + + // Setup initial Tracing Source + Tracing.Source = new(Statics.TracingService); + } + + public static void ConfigureWebUI(IServiceCollection services, ConfigurationManager configManager, AppConfiguration config) + { + FlurlConfiguration.Configure(config.Observability); + Tracing.EnableWebUITracing(services, config.Observability.Jaeger); + ConfigureLogging(configManager); + + // Setup initial Tracing Source + Tracing.Source = new(Statics.TracingService); + } + + private static void ConfigureLogging(ConfigurationManager configManager) + { + var loggingConfig = new LoggerConfiguration() + .ReadFrom.Configuration(configManager, new ConfigurationReaderOptions() { SectionName = $"{nameof(Observability)}:Serilog" }) + .Enrich.WithSpan() + .Enrich.FromLogContext(); + + // Always write to app defined log file + loggingConfig.WriteTo.File( + Path.Join(Statics.DefaultOutputDirectory, $"{Statics.AppType}_log.txt"), + rollingInterval: RollingInterval.Day, + retainedFileCountLimit: 2, + shared: false, + hooks: new CaptureFilePathHook()); + + Log.Logger = loggingConfig.CreateLogger(); + + + Logging.LogSystemInformation(); + } +} diff --git a/src/Common/Observe/Logging.cs b/src/Common/Observe/Logging.cs index b2cf38e41..8c94be2d8 100644 --- a/src/Common/Observe/Logging.cs +++ b/src/Common/Observe/Logging.cs @@ -1,7 +1,11 @@ using Common.Dto; using Common.Stateful; using Serilog; - +using Serilog.Sinks.File; +using Serilog.Sinks.File.Header; +using System.IO; +using System.Text; + namespace Common.Observe; public class LogContext @@ -12,15 +16,52 @@ public class LogContext public static class Logging { + public static string CurrentFilePath { get; set; } + public static void LogSystemInformation() { Log.Information("*********************************************"); Log.Information("P2G Version: {@AppName} {@Version}", Statics.AppType, Constants.AppVersion); Log.Information("Operating System: {@Os}", SystemInformation.OS); Log.Information("OS Version: {@OsVersion}", SystemInformation.OSVersion); - Log.Information("DotNet Runtime: {@DotnetRuntime}", SystemInformation.OSVersion); + Log.Information("DotNet Runtime: {@DotnetRuntime}", SystemInformation.RunTimeVersion); Log.Information("Docker Deployment: {@IsDocker}", SystemInformation.RunningInDocker); Log.Information("Config path: {@ConfigPath}", Statics.ConfigPath); Log.Information("*********************************************"); } + + public static string GetSystemInformationLogMessage() + { + return $@" +********************************************* +P2G Version: {Statics.AppType} {Constants.AppVersion} +Operating System: {SystemInformation.OS} +OS Version: {SystemInformation.OSVersion} +DotNet Runtime: {SystemInformation.RunTimeVersion} +Docker Deployment: {SystemInformation.RunningInDocker} +Config path: {Statics.ConfigPath} +*********************************************"; + } +} + +public class CaptureFilePathHook : FileLifecycleHooks +{ + private HeaderWriter _headerHook; + + public CaptureFilePathHook() + { + _headerHook = new HeaderWriter(Logging.GetSystemInformationLogMessage); + } + + public override Stream OnFileOpened(string path, Stream underlyingStream, Encoding encoding) + { + Logging.CurrentFilePath = path; + + return _headerHook.OnFileOpened(path, underlyingStream, encoding); + } + + public override void OnFileDeleting(string path) + { + _headerHook.OnFileDeleting(path); + } } diff --git a/src/Common/Service/FileBasedSettingsService.cs b/src/Common/Service/FileBasedSettingsService.cs index 8c23f9ba3..a8d8eb5a9 100644 --- a/src/Common/Service/FileBasedSettingsService.cs +++ b/src/Common/Service/FileBasedSettingsService.cs @@ -1,4 +1,5 @@ -using Common.Dto.Garmin; +using Common.Dto; +using Common.Dto.Garmin; using Common.Observe; using Common.Stateful; using Microsoft.Extensions.Caching.Memory; diff --git a/src/Common/Service/ISettingsService.cs b/src/Common/Service/ISettingsService.cs index 89acc39bc..9a153fa58 100644 --- a/src/Common/Service/ISettingsService.cs +++ b/src/Common/Service/ISettingsService.cs @@ -1,4 +1,5 @@ -using Common.Dto.Garmin; +using Common.Dto; +using Common.Dto.Garmin; using Common.Stateful; using System.Threading.Tasks; diff --git a/src/Common/Service/SettingsService.cs b/src/Common/Service/SettingsService.cs index af3b795a6..6a1476f76 100644 --- a/src/Common/Service/SettingsService.cs +++ b/src/Common/Service/SettingsService.cs @@ -1,4 +1,5 @@ using Common.Database; +using Common.Dto; using Common.Dto.Garmin; using Common.Observe; using Common.Stateful; @@ -113,7 +114,9 @@ public void SetGarminAuthentication(GarminApiAuthentication authentication) lock (_lock) { var key = $"{GarminApiAuthKey}:{authentication.Email}"; - _cache.Set(key, authentication, new MemoryCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(45) }); + var expiration = authentication.OAuth2Token?.Expires_In - (60 * 60) ?? 0; // expire an hour early + var finalExpiration = expiration <= 0 ? 45 * 60 : expiration; // default to 45min + _cache.Set(key, authentication, new MemoryCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(finalExpiration) }); } } diff --git a/src/Common/Stateful/GarminApiAuthentication.cs b/src/Common/Stateful/GarminApiAuthentication.cs index a73bb2a09..19743577a 100644 --- a/src/Common/Stateful/GarminApiAuthentication.cs +++ b/src/Common/Stateful/GarminApiAuthentication.cs @@ -1,5 +1,6 @@ -using Flurl.Http; - +using Common.Dto; +using Flurl.Http; + namespace Common.Stateful; public class GarminApiAuthentication : IApiAuthentication @@ -8,18 +9,26 @@ public class GarminApiAuthentication : IApiAuthentication public string Password { get; set; } public AuthStage AuthStage { get; set; } public CookieJar CookieJar { get; set; } - public string UserAgent { get; set; } = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/50.0"; + public string UserAgent { get; set; } = "Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"; public string MFACsrfToken { get; set; } + public OAuth1Token OAuth1Token { get; set; } + public OAuth2Token OAuth2Token { get; set; } public bool IsValid(Settings settings) { return Email == settings.Garmin.Email && Password == settings.Garmin.Password - && CookieJar is object - && AuthStage == AuthStage.Completed; + && AuthStage == AuthStage.Completed + && !string.IsNullOrWhiteSpace(OAuth2Token?.Access_Token); } } +public class OAuth1Token +{ + public string Token { get; set; } + public string TokenSecret { get; set; } +} + public enum AuthStage : byte { None = 0, diff --git a/src/Common/Stateful/IApiAuthentication.cs b/src/Common/Stateful/IApiAuthentication.cs index 00192b936..d15bb6df9 100644 --- a/src/Common/Stateful/IApiAuthentication.cs +++ b/src/Common/Stateful/IApiAuthentication.cs @@ -1,4 +1,6 @@ -namespace Common.Stateful +using Common.Dto; + +namespace Common.Stateful { public interface IApiAuthentication { diff --git a/src/Common/Stateful/OAuth2Token.cs b/src/Common/Stateful/OAuth2Token.cs new file mode 100644 index 000000000..3f934968f --- /dev/null +++ b/src/Common/Stateful/OAuth2Token.cs @@ -0,0 +1,12 @@ +namespace Common.Stateful; + +public record OAuth2Token +{ + public string Scope { get; set; } + public string Jti { get; set; } + public string Access_Token { get; set; } + public string Token_Type { get; set; } + public string Refresh_Token { get; set; } + public int Expires_In { get; set; } + public int Refresh_Token_Expires_In { get; set; } +} diff --git a/src/Common/Stateful/PelotonApiAuthentication.cs b/src/Common/Stateful/PelotonApiAuthentication.cs index 0e9de4d0c..3d895d32c 100644 --- a/src/Common/Stateful/PelotonApiAuthentication.cs +++ b/src/Common/Stateful/PelotonApiAuthentication.cs @@ -1,4 +1,6 @@ -namespace Common.Stateful +using Common.Dto; + +namespace Common.Stateful { public class PelotonApiAuthentication : IApiAuthentication { diff --git a/src/Common/Stateful/Statics.cs b/src/Common/Stateful/Statics.cs index 2bc8aadac..a3fbccc3e 100644 --- a/src/Common/Stateful/Statics.cs +++ b/src/Common/Stateful/Statics.cs @@ -1,4 +1,7 @@ -namespace Common.Stateful +using System; +using System.IO; + +namespace Common.Stateful { public static class Statics { @@ -6,6 +9,10 @@ public static class Statics public static string MetricPrefix = "p2g"; public static string TracingService = "p2g"; + public static string DefaultDataDirectory = Environment.CurrentDirectory; + public static string DefaultTempDirectory = Path.Join(Environment.CurrentDirectory, "working"); + public static string DefaultOutputDirectory = Path.Join(Environment.CurrentDirectory, "output"); + public static string ConfigPath; } } diff --git a/src/PelotonToGarminConsole/256x256.ico b/src/ConsoleClient/256x256.ico similarity index 100% rename from src/PelotonToGarminConsole/256x256.ico rename to src/ConsoleClient/256x256.ico diff --git a/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj b/src/ConsoleClient/ConsoleClient.csproj similarity index 82% rename from src/PelotonToGarminConsole/PelotonToGarminConsole.csproj rename to src/ConsoleClient/ConsoleClient.csproj index eb89d30b5..6bc25e5c4 100644 --- a/src/PelotonToGarminConsole/PelotonToGarminConsole.csproj +++ b/src/ConsoleClient/ConsoleClient.csproj @@ -2,9 +2,9 @@ Exe - net6.0 - PelotonToGarminConsole - PelotonToGarminConsole + net7.0 + ConsoleClient + ConsoleClient win10-x64;osx-x64;linux-x64 https://github.com/philosowaffle/peloton-to-garmin https://github.com/philosowaffle/peloton-to-garmin @@ -29,18 +29,18 @@ - - + + - - + + - - - + + + - + diff --git a/src/PelotonToGarminConsole/Program.cs b/src/ConsoleClient/Program.cs similarity index 84% rename from src/PelotonToGarminConsole/Program.cs rename to src/ConsoleClient/Program.cs index 5d460bf23..1af035473 100644 --- a/src/PelotonToGarminConsole/Program.cs +++ b/src/ConsoleClient/Program.cs @@ -6,7 +6,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Peloton; -using PelotonToGarminConsole; +using ConsoleClient; using System; using System.IO; using Sync; @@ -18,6 +18,8 @@ using Common.Stateful; using Philosowaffle.Capability.ReleaseChecks; using Garmin.Auth; +using Serilog.Settings.Configuration; +using Common.Observe; Statics.AppType = Constants.ConsoleAppName; Statics.MetricPrefix = Constants.ConsoleAppName; @@ -48,9 +50,18 @@ static IHostBuilder CreateHostBuilder(string[] args) .UseSerilog((ctx, logConfig) => { logConfig - .ReadFrom.Configuration(ctx.Configuration, sectionName: "Observability:Serilog") + .ReadFrom.Configuration(ctx.Configuration, new ConfigurationReaderOptions() { SectionName = "Observability:Serilog" }) .Enrich.WithSpan() .Enrich.FromLogContext(); + + logConfig.WriteTo.Console(); + + logConfig.WriteTo.File( + Path.Join(Statics.DefaultOutputDirectory, $"{Statics.AppType}_log.txt"), + rollingInterval: RollingInterval.Day, + retainedFileCountLimit: 2, + shared: false, + hooks: new CaptureFilePathHook()); }) .ConfigureServices((hostContext, services) => { diff --git a/src/PelotonToGarminConsole/Properties/launchSettings.json b/src/ConsoleClient/Properties/launchSettings.json similarity index 95% rename from src/PelotonToGarminConsole/Properties/launchSettings.json rename to src/ConsoleClient/Properties/launchSettings.json index daeb15bd2..b51da5f65 100644 --- a/src/PelotonToGarminConsole/Properties/launchSettings.json +++ b/src/ConsoleClient/Properties/launchSettings.json @@ -8,7 +8,7 @@ } }, "profiles": { - "PelotonToGarminConsole": { + "ConsoleClient": { "commandName": "Project", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" diff --git a/src/PelotonToGarminConsole/Startup.cs b/src/ConsoleClient/Startup.cs similarity index 95% rename from src/PelotonToGarminConsole/Startup.cs rename to src/ConsoleClient/Startup.cs index aadfea5d8..785d87c76 100644 --- a/src/PelotonToGarminConsole/Startup.cs +++ b/src/ConsoleClient/Startup.cs @@ -1,192 +1,188 @@ -using Common; -using Common.Observe; -using Common.Service; -using Common.Stateful; -using Core.GitHub; -using Garmin; -using Garmin.Auth; -using Microsoft.Extensions.Hosting; -using Peloton; -using Prometheus; -using Serilog; -using Sync; -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using static Common.Observe.Metrics; -using Metrics = Common.Observe.Metrics; - -namespace PelotonToGarminConsole -{ - internal class Startup : BackgroundService - { - private static readonly ILogger _logger = LogContext.ForClass(); - private static readonly Gauge Health = Prometheus.Metrics.CreateGauge("p2g_health_info", "Health status for P2G."); - private static readonly Gauge NextSyncTime = Prometheus.Metrics.CreateGauge("p2g_next_sync_time", "The next time the sync will run in seconds since epoch."); - - private readonly ISettingsService _settingsService; - private readonly ISyncService _syncService; - private readonly IGitHubReleaseCheckService _githubService; - private readonly IGarminAuthenticationService _garminAuthService; - - public Startup(ISettingsService settingsService, ISyncService syncService, IGitHubReleaseCheckService gitHubService, IGarminAuthenticationService garminAuthService) - { - _settingsService = settingsService; - _syncService = syncService; - _githubService = gitHubService; - - Logging.LogSystemInformation(); - _garminAuthService = garminAuthService; - } - - protected override async Task ExecuteAsync(CancellationToken cancelToken) - { - _logger.Verbose("Begin."); - - var settings = await _settingsService.GetSettingsAsync(); - var appConfig = await _settingsService.GetAppConfigurationAsync(); - - try - { - PelotonService.ValidateConfig(settings.Peloton); - GarminUploader.ValidateConfig(settings); - Metrics.ValidateConfig(appConfig.Observability); - Tracing.ValidateConfig(appConfig.Observability); - - if (settings.App.CheckForUpdates) - { - var latestReleaseInformation = await _githubService.GetLatestReleaseInformationAsync("philosowaffle", "peloton-to-garmin", Constants.AppVersion); - if (latestReleaseInformation.IsReleaseNewerThanInstalledVersion) - { - _logger.Information("*********************************************"); - _logger.Information("A new version is available: {@Version}", latestReleaseInformation.LatestVersion); - _logger.Information("Release Date: {@ReleaseDate}", latestReleaseInformation.ReleaseDate); - _logger.Information("Release Information: {@ReleaseUrl}", latestReleaseInformation.ReleaseUrl); - _logger.Information("*********************************************"); - - AppMetrics.SyncUpdateAvailableMetric(latestReleaseInformation.IsReleaseNewerThanInstalledVersion, latestReleaseInformation.LatestVersion); - } - } - } - catch (Exception ex) - { - _logger.Error(ex, "Exception during config validation. Please modify your configuration.local.json and relaunch the application."); - Health.Set(HealthStatus.Dead); - if (!settings.App.CloseWindowOnFinish) - Console.ReadLine(); - Environment.Exit(-1); - } - - Health.Set(HealthStatus.Healthy); - await RunAsync(cancelToken); - } - - private async Task RunAsync(CancellationToken cancelToken) - { - int exitCode = 0; - - var appConfig = await _settingsService.GetAppConfigurationAsync(); - - Log.Information("*********************************************"); - using var metrics = Metrics.EnableMetricsServer(appConfig.Observability.Prometheus); - using var metricsCollector = Metrics.EnableCollector(appConfig.Observability.Prometheus); - using var tracing = Tracing.EnableConsoleTracing(appConfig.Observability.Jaeger); - Log.Information("*********************************************"); - - Tracing.Source = new(Statics.TracingService); - Metrics.CreateAppInfo(); - - var settings = await _settingsService.GetSettingsAsync(); - - try - { - if (settings.Peloton.NumWorkoutsToDownload <= 0) - { - Console.Write("How many workouts to grab? "); - int num = Convert.ToInt32(Console.ReadLine()); - settings.Peloton.NumWorkoutsToDownload = num; - } - - if (settings.App.EnablePolling) - { - if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled && settings.App.EnablePolling) - { - _logger.Error("Polling cannot be enabled when Garmin TwoStepVerification is enabled."); - _logger.Information("Sync Service stopped."); - return; - } - - while (!cancelToken.IsCancellationRequested) - { - settings = await _settingsService.GetSettingsAsync(); - - if (settings.App.CheckForUpdates) - { - var latestReleaseInformation = await _githubService.GetLatestReleaseInformationAsync("philosowaffle", "peloton-to-garmin", Constants.AppVersion); - if (latestReleaseInformation.IsReleaseNewerThanInstalledVersion) - { - _logger.Information("*********************************************"); - _logger.Information("A new version is available: {@Version}", latestReleaseInformation.LatestVersion); - _logger.Information("Release Date: {@ReleaseDate}", latestReleaseInformation.ReleaseDate); - _logger.Information("Release Information: {@ReleaseUrl}", latestReleaseInformation.ReleaseUrl); - _logger.Information("*********************************************"); - - AppMetrics.SyncUpdateAvailableMetric(latestReleaseInformation.IsReleaseNewerThanInstalledVersion, latestReleaseInformation.LatestVersion); - } - } - - var syncResult = await _syncService.SyncAsync(settings.Peloton.NumWorkoutsToDownload); - Health.Set(syncResult.SyncSuccess ? HealthStatus.Healthy : HealthStatus.UnHealthy); - - Log.Information("Done"); - Log.Information("Sleeping for {@Seconds} seconds...", settings.App.PollingIntervalSeconds); - - var now = DateTime.UtcNow; - var nextRunTime = now.AddSeconds(settings.App.PollingIntervalSeconds); - NextSyncTime.Set(new DateTimeOffset(nextRunTime).ToUnixTimeSeconds()); - Thread.Sleep(settings.App.PollingIntervalSeconds * 1000); - } - } - else - { - if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled) - { - await _garminAuthService.RefreshGarminAuthenticationAsync(); - - Console.WriteLine("Detected Garmin Two Factor Enabled. Please check your email or phone for the Security Passcode sent by Garmin."); - var mfaCode = string.Empty; - var retryCount = 5; - while (retryCount > 0 && string.IsNullOrWhiteSpace(mfaCode)) - { - Console.Write("Enter Code: "); - mfaCode = Console.ReadLine(); - retryCount--; - } - - await _garminAuthService.CompleteMFAAuthAsync(mfaCode); - } - - await _syncService.SyncAsync(settings.Peloton.NumWorkoutsToDownload); - } - - _logger.Information("Done."); - } - catch (Exception ex) - { - _logger.Fatal(ex, "Uncaught Exception"); - Health.Set(HealthStatus.Dead); - exitCode = -2; - } - finally - { - _logger.Verbose("Exit."); - - if (!settings.App.CloseWindowOnFinish) - Console.ReadLine(); - - Environment.Exit(exitCode); - } - } - } -} +using Common; +using Common.Observe; +using Common.Service; +using Common.Stateful; +using Core.GitHub; +using Garmin; +using Garmin.Auth; +using Microsoft.Extensions.Hosting; +using Peloton; +using Prometheus; +using Serilog; +using Sync; +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using static Common.Observe.Metrics; +using Metrics = Common.Observe.Metrics; + +namespace ConsoleClient +{ + internal class Startup : BackgroundService + { + private static readonly ILogger _logger = LogContext.ForClass(); + private static readonly Gauge Health = Prometheus.Metrics.CreateGauge("p2g_health_info", "Health status for P2G."); + private static readonly Gauge NextSyncTime = Prometheus.Metrics.CreateGauge("p2g_next_sync_time", "The next time the sync will run in seconds since epoch."); + + private readonly ISettingsService _settingsService; + private readonly ISyncService _syncService; + private readonly IGitHubReleaseCheckService _githubService; + private readonly IGarminAuthenticationService _garminAuthService; + + public Startup(ISettingsService settingsService, ISyncService syncService, IGitHubReleaseCheckService gitHubService, IGarminAuthenticationService garminAuthService) + { + _settingsService = settingsService; + _syncService = syncService; + _githubService = gitHubService; + + Logging.LogSystemInformation(); + _garminAuthService = garminAuthService; + } + + protected override async Task ExecuteAsync(CancellationToken cancelToken) + { + _logger.Verbose("Begin."); + + var settings = await _settingsService.GetSettingsAsync(); + var appConfig = await _settingsService.GetAppConfigurationAsync(); + + try + { + PelotonService.ValidateConfig(settings.Peloton); + GarminUploader.ValidateConfig(settings); + Metrics.ValidateConfig(appConfig.Observability); + Tracing.ValidateConfig(appConfig.Observability); + + if (settings.App.CheckForUpdates) + { + var latestReleaseInformation = await _githubService.GetLatestReleaseInformationAsync("philosowaffle", "peloton-to-garmin", Constants.AppVersion); + if (latestReleaseInformation.IsReleaseNewerThanInstalledVersion) + { + _logger.Information("*********************************************"); + _logger.Information("A new version is available: {@Version}", latestReleaseInformation.LatestVersion); + _logger.Information("Release Date: {@ReleaseDate}", latestReleaseInformation.ReleaseDate); + _logger.Information("Release Information: {@ReleaseUrl}", latestReleaseInformation.ReleaseUrl); + _logger.Information("*********************************************"); + + AppMetrics.SyncUpdateAvailableMetric(latestReleaseInformation.IsReleaseNewerThanInstalledVersion, latestReleaseInformation.LatestVersion); + } + } + } + catch (Exception ex) + { + _logger.Error(ex, "Exception during config validation. Please modify your configuration.local.json and relaunch the application."); + Health.Set(HealthStatus.Dead); + Console.ReadLine(); + Environment.Exit(-1); + } + + Health.Set(HealthStatus.Healthy); + await RunAsync(cancelToken); + } + + private async Task RunAsync(CancellationToken cancelToken) + { + int exitCode = 0; + + var appConfig = await _settingsService.GetAppConfigurationAsync(); + + Log.Information("*********************************************"); + using var metrics = Metrics.EnableMetricsServer(appConfig.Observability.Prometheus); + using var metricsCollector = Metrics.EnableCollector(appConfig.Observability.Prometheus); + using var tracing = Tracing.EnableConsoleTracing(appConfig.Observability.Jaeger); + Log.Information("*********************************************"); + + Tracing.Source = new(Statics.TracingService); + Metrics.CreateAppInfo(); + + var settings = await _settingsService.GetSettingsAsync(); + + try + { + if (settings.Peloton.NumWorkoutsToDownload <= 0) + { + Console.Write("How many workouts to grab? "); + int num = Convert.ToInt32(Console.ReadLine()); + settings.Peloton.NumWorkoutsToDownload = num; + } + + if (settings.App.EnablePolling) + { + if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled && settings.App.EnablePolling) + { + _logger.Error("Polling cannot be enabled when Garmin TwoStepVerification is enabled."); + _logger.Information("Sync Service stopped."); + return; + } + + while (!cancelToken.IsCancellationRequested) + { + settings = await _settingsService.GetSettingsAsync(); + + if (settings.App.CheckForUpdates) + { + var latestReleaseInformation = await _githubService.GetLatestReleaseInformationAsync("philosowaffle", "peloton-to-garmin", Constants.AppVersion); + if (latestReleaseInformation.IsReleaseNewerThanInstalledVersion) + { + _logger.Information("*********************************************"); + _logger.Information("A new version is available: {@Version}", latestReleaseInformation.LatestVersion); + _logger.Information("Release Date: {@ReleaseDate}", latestReleaseInformation.ReleaseDate); + _logger.Information("Release Information: {@ReleaseUrl}", latestReleaseInformation.ReleaseUrl); + _logger.Information("*********************************************"); + + AppMetrics.SyncUpdateAvailableMetric(latestReleaseInformation.IsReleaseNewerThanInstalledVersion, latestReleaseInformation.LatestVersion); + } + } + + var syncResult = await _syncService.SyncAsync(settings.Peloton.NumWorkoutsToDownload); + Health.Set(syncResult.SyncSuccess ? HealthStatus.Healthy : HealthStatus.UnHealthy); + + Log.Information("Done"); + Log.Information("Sleeping for {@Seconds} seconds...", settings.App.PollingIntervalSeconds); + + var now = DateTime.UtcNow; + var nextRunTime = now.AddSeconds(settings.App.PollingIntervalSeconds); + NextSyncTime.Set(new DateTimeOffset(nextRunTime).ToUnixTimeSeconds()); + Thread.Sleep(settings.App.PollingIntervalSeconds * 1000); + } + } + else + { + if (settings.Garmin.Upload && settings.Garmin.TwoStepVerificationEnabled) + { + await _garminAuthService.RefreshGarminAuthenticationAsync(); + + Console.WriteLine("Detected Garmin Two Factor Enabled. Please check your email or phone for the Security Passcode sent by Garmin."); + var mfaCode = string.Empty; + var retryCount = 5; + while (retryCount > 0 && string.IsNullOrWhiteSpace(mfaCode)) + { + Console.Write("Enter Code: "); + mfaCode = Console.ReadLine(); + retryCount--; + } + + await _garminAuthService.CompleteMFAAuthAsync(mfaCode); + } + + await _syncService.SyncAsync(settings.Peloton.NumWorkoutsToDownload); + } + + _logger.Information("Done."); + } + catch (Exception ex) + { + _logger.Fatal(ex, "Uncaught Exception"); + Health.Set(HealthStatus.Dead); + exitCode = -2; + } + finally + { + _logger.Verbose("Exit."); + Console.ReadLine(); + Environment.Exit(exitCode); + } + } + } +} diff --git a/src/Conversion/Conversion.csproj b/src/Conversion/Conversion.csproj index 2328dc1b2..44c2bcc47 100644 --- a/src/Conversion/Conversion.csproj +++ b/src/Conversion/Conversion.csproj @@ -1,7 +1,7 @@  - net6.0 + net7.0 true $(NoWarn);1591 diff --git a/src/Conversion/ExerciseMapping.cs b/src/Conversion/ExerciseMapping.cs index b31e959a9..8cfd22847 100644 --- a/src/Conversion/ExerciseMapping.cs +++ b/src/Conversion/ExerciseMapping.cs @@ -8,6 +8,7 @@ public static class ExerciseMapping public static IReadOnlyCollection IgnoredPelotonExercises = new HashSet() { // A + /* Active Recovery */ "b067c9f7a1e4412190b0f8eb3c6128e3", /* AMRAP */ "98cde50f696746ff98727d5362229cfb", // D @@ -23,9 +24,11 @@ public static class ExerciseMapping public static readonly Dictionary StrengthExerciseMappings = new() { // A - /* Arnold Press */ { "01251235527748368069f9dc898aadf3", new (ExerciseCategory.ShoulderPress, ShoulderPressExerciseName.ArnoldPress) }, + /* Arnold Press */ { "01251235527748368069f9dc898aadf3", new (ExerciseCategory.ShoulderPress, ShoulderPressExerciseName.ArnoldPress) }, + /* Arm Circles */ { "1b3400e0aade45e58d2f42cf19af0f40", new (ExerciseCategory.WarmUp, WarmUpExerciseName.ArmCircles) }, // B + /* Bear Crawl */ { "46112d47abe24b53ad1fa8e75edcf545", new (ExerciseCategory.Plank, PlankExerciseName.BearCrawl) }, /* Bent Over Row */ { "d60a1dd8824a49a4926f826b24f3b061", new (ExerciseCategory.Row, RowExerciseName.OneArmBentOverRow) }, /* Bicep Curl */ { "43d404595338443baab306a6589ae7fc", new (ExerciseCategory.Curl, CurlExerciseName.StandingDumbbellBicepsCurl) }, /* Bicycle */ { "550b2c852a9547b18ca8e6240c5c6750", new (ExerciseCategory.Crunch, CrunchExerciseName.BicycleCrunch) }, @@ -38,6 +41,7 @@ public static class ExerciseMapping /* Clam Shell */ { "5749daaf9be3448397af9d813d760ff3", new (ExerciseCategory.HipRaise, HipRaiseExerciseName.Clams) }, /* Clean */ { "f2a28d3ebf3c4844a704d2b94e283099", new (ExerciseCategory.OlympicLift, OlympicLiftExerciseName.DumbbellClean) }, /* Concentrated Curl */ { "3695ef0ec2ce484faedc8ce2bfa2819d", new (ExerciseCategory.Curl, CurlExerciseName.SeatedDumbbellBicepsCurl) }, + /* Criss-Cross */ { "b62c0d2189ae4c2fb6f5203fa145010a", new (ExerciseCategory.Core, CoreExerciseName.CrissCross) }, /* Crunch */ { "61ac0d64602c48fba25af7e5e5dc1f97", new (ExerciseCategory.Crunch, CrunchExerciseName.Crunch) }, /* Cursh Press */ { "4899db2664ce47da8ec14282282d3b0d", new (ExerciseCategory.BenchPress, BenchPressExerciseName.CloseGripBarbellBenchPress) }, /* Cross Body Curl */ { "a66b797fc2014b799cc0cb114d9c5079", new (ExerciseCategory.Curl, CurlExerciseName.CrossBodyDumbbellHammerCurl) }, @@ -51,10 +55,12 @@ public static class ExerciseMapping /* Dumbbell Sumo Deadlisft */ { "cd25b61809884d60adb1d97cd646f4fd", new (ExerciseCategory.Deadlift, DeadliftExerciseName.SumoDeadlift) }, /* Dumbbell Swing */ { "4460e019d86c4e4ebe7284bb16d128d2", new (ExerciseCategory.HipSwing, HipSwingExerciseName.SingleArmDumbbellSwing) }, /* Dumbbell Thruster */ { "5ab0baeebee94d3995cb7f2b0332f430", new (ExerciseCategory.Squat, SquatExerciseName.Thrusters) }, + /* Dolphin */ { "843d434f59f941c0826fc0fe15eb0236", new (ExerciseCategory.Plank, PlankExerciseName.PlankPikes) }, // F /* Flutter Kick */ { "6091566fa0674afd96a22fcec3ab18ce", new (ExerciseCategory.Crunch, CrunchExerciseName.FlutterKicks) }, /* Forearm Side Plank */ { "1c0403c4d7264d83b1c75d18c8cdac4f", new (ExerciseCategory.Plank, PlankExerciseName.SidePlank) }, + /* Forearm Side Plank Rotation */ { "223e8e6918d64d9097064d34e3b17e77", new (ExerciseCategory.Plank, PlankExerciseName.SidePlankWithReachUnder) }, /* ForeArm Plank */ { "feb44f24e2b8487b870a35f4501069be", new (ExerciseCategory.Plank, PlankExerciseName.Plank) }, /* French Door */ { "78b0a09ce8274e9c8beac6aadd50454b", new (ExerciseCategory.TricepsExtension, TricepsExtensionExerciseName.DumbbellLyingTricepsExtension) }, /* Front to Back Lunge */ { "ed18d837c14746c5af38d4fa03b56918", new (ExerciseCategory.Lunge, LungeExerciseName.DumbbellLunge) }, @@ -67,6 +73,7 @@ public static class ExerciseMapping // H /* Hammer Curl */ { "114ce849b47a4fabbaad961188bf4f7d", new (ExerciseCategory.Curl, CurlExerciseName.DumbbellHammerCurl) }, /* High Plank */ { "194cc4f6a88c4abd80afe9bbddb25915", new (ExerciseCategory.Plank, PlankExerciseName.StraightArmPlank) }, + /* High Pull */ { "d06c8e68481741de849e4101eda76855", new (ExerciseCategory.Shrug, ShrugExerciseName.DumbbellUprightRow) }, /* High Side Plank */ { "a6833a0f9c35489585398d1f293600de", new (ExerciseCategory.Plank, PlankExerciseName.SidePlank) }, /* Hip Bridge */ { "06a504988ace45faabd927af1479f454", new (ExerciseCategory.HipRaise, HipRaiseExerciseName.BarbellHipThrustOnFloor) }, /* Hollow Hold */ { "060174b84e3744e6a19fe4ce80411113", new (ExerciseCategory.Crunch, CrunchExerciseName.HollowRock) }, @@ -82,11 +89,14 @@ public static class ExerciseMapping /* Neutral Grip Chest Press */ { "802f10996b5048d08f320d8661f13ee1", new (ExerciseCategory.BenchPress, BenchPressExerciseName.NeutralGripDumbbellBenchPress) }, // O + /* Oblique Heel Tap */ { "d5ec25fe793f4318a6891607bd3c9259", new (ExerciseCategory.Crunch, CoreExerciseName.SideBend) }, + /* Open Lateral Raise */ { "00046ee377554425866b0a1963b98589", new (ExerciseCategory.LateralRaise, LateralRaiseExerciseName.SeatedLateralRaise) }, /* Overhead Carry */ { "12057d5f9e144913a824bcae5706966c", new (ExerciseCategory.Carry, CarryExerciseName.OverheadCarry) }, /* Overhead Extension */ { "f260623343e74d37b165071ee5903199", new (ExerciseCategory.TricepsExtension, TricepsExtensionExerciseName.OverheadDumbbellTricepsExtension) }, /* Overhead Press */ { "ef0279948228409298cd6bf62c5b122c", new (ExerciseCategory.ShoulderPress, ShoulderPressExerciseName.OverheadDumbbellPress) }, // P + /* Pike Push Up */ { "8af39d3485224ac19f7d8659d30524e7", new (ExerciseCategory.PushUp, PushUpExerciseName.ShoulderPushUp) }, /* Push Up */ { "1c4d81ad487849a6995f93e1a6a4b1e4", new (ExerciseCategory.PushUp, PushUpExerciseName.PushUp) }, /* Plank Hand Tap */ { "ad8e4f16bf5a450db7d3b72b8ff7b014", new (ExerciseCategory.Plank, PlankExerciseName.StraightArmPlankWithShoulderTouch) }, /* Plank Pike Reach */ { "67c956e4da6542d1bbfa0625d569f018", new (ExerciseCategory.Plank, PlankExerciseName.PlankPikes) }, @@ -97,6 +107,7 @@ public static class ExerciseMapping /* Reverse Fly */ { "3df6a1136a7a4e4db31e104c7d5a0fcf", new (ExerciseCategory.Flye, FlyeExerciseName.InclineDumbbellFlye) }, /* Renegade Row */ { "ed9adea36e77459dab7c189884ceb7ab", new (ExerciseCategory.Row, RowExerciseName.RenegadeRow) }, /* Roll Up */ { "0b853e45afb04c31968b20fc7deaa718", new (ExerciseCategory.Core, CoreExerciseName.RollUp) }, + /* Row */ { "165ed4b439204800b9d88d85363f0609", new (ExerciseCategory.Row, RowExerciseName.DumbbellRow) }, /* Romanian Deadlift */ { "a17b8d35d1264a2fbabe3ab28df458dc", new (ExerciseCategory.Deadlift, DeadliftExerciseName.DumbbellDeadlift) },// RDL exists in Connect but not in SDK definition /* Russian Twist */ { "5c7b2bc65abc4c44849e2119f1338120", new (ExerciseCategory.Core, CoreExerciseName.RussianTwist) }, @@ -104,15 +115,18 @@ public static class ExerciseMapping /* Scissor Kick */ { "f6a10df381004afba2a2b63447d9968f", new (ExerciseCategory.Crunch, CrunchExerciseName.LegLevers) }, /* Scissors */ { "0f9b2d6f18b247bd950d60bbbefd19f3", new (ExerciseCategory.Crunch, CrunchExerciseName.LegLevers) }, /* Shoulder Tap */ { "5b33283433e7479390c0d5fc11722f80", new (ExerciseCategory.Plank, PlankExerciseName.StraightArmPlankWithShoulderTouch) }, + /* Single Leg Stretch */ { "32c3f3f1f90446ad8e58589b45ae891b", new (ExerciseCategory.Core, CoreExerciseName.SingleLegStretch) }, /* Skull Crusher */ { "3c72e60de73d43f4b5a774c90dea90cd", new (ExerciseCategory.TricepsExtension, TricepsExtensionExerciseName.DumbbellLyingTricepsExtension) }, /* Snatch */ { "0ddf8f94acfe4c2289aef5a9bf59e8d9", new (ExerciseCategory.OlympicLift, OlympicLiftExerciseName.SingleArmDumbbellSnatch) }, /* Split Squat */ { "28833fd99466476ea273d6b94747e3db", new (ExerciseCategory.Squat, SquatExerciseName.DumbbellSplitSquat) }, /* Standing Chest Fly */ { "021047bf0cff470bb2d11f94d3539cfe", new (ExerciseCategory.Flye, FlyeExerciseName.DumbbellFlye) }, + /* Straight Leg Bicycle */ { "b617914877c24dac85df81621872e056", new (ExerciseCategory.Core, CoreExerciseName.Bicycle) }, /* Supinated Row */ { "34dd5f694fd44d15bb0eead604dfebae", new (ExerciseCategory.Row, RowExerciseName.ReverseGripBarbellRow) }, // T /* Table Top Lateral Leg Lift */ { "5bb2d37f052e4d2faf1b0f1de4489531", new (ExerciseCategory.Plank, PlankExerciseName.KneelingSidePlankWithLegLift) }, /* Tall Kneeling Side Bend */ { "6be91da1de1c49f4b34bf358bdbf3bbc", new (ExerciseCategory.Crunch, CrunchExerciseName.StandingSideCrunch) }, + /* Tricep Dip */ { "0a983b7dfca7400a92761380ff9d351a", new (ExerciseCategory.TricepsExtension, TricepsExtensionExerciseName.BodyWeightDip) }, /* Tricep Kickback */ { "da89d743904640d58e8b3f667f08783c", new (ExerciseCategory.TricepsExtension, TricepsExtensionExerciseName.DumbbellKickback) }, /* Tuck up */ { "3069e7ba28b84005b71c16a3781dda8d", new (ExerciseCategory.SitUp, SitUpExerciseName.BentKneeVUp) }, /* Tricep Push Up */ { "d463a4dc0cf640e0a58f3aa058c5b1a0", new (ExerciseCategory.PushUp, PushUpExerciseName.PushUp) }, diff --git a/src/Conversion/FitConverter.cs b/src/Conversion/FitConverter.cs index 160c46c89..6d58f8d03 100644 --- a/src/Conversion/FitConverter.cs +++ b/src/Conversion/FitConverter.cs @@ -30,6 +30,8 @@ protected override void Save(Tuple> data, string path) using var tracing = Tracing.Trace($"{nameof(FitConverter)}.{nameof(Save)}") .WithTag(TagKey.Format, FileFormat.Fit.ToString()); + if (data is null) return; + using (FileStream fitDest = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.Read)) { Encode encoder = new Encode(ProtocolVersion.V20); @@ -60,7 +62,7 @@ protected override async Task>> ConvertInternalA var startTime = GetStartTimeUtc(workout); var endTime = GetEndTimeUtc(workout, workoutSamples); - var title = WorkoutHelper.GetTitle(workout); + var title = WorkoutHelper.GetTitle(workout, settings.Format); var sport = GetGarminSport(workout); var subSport = GetGarminSubSport(workout); var deviceInfo = await GetDeviceInfoAsync(workout.Fitness_Discipline, settings); @@ -68,7 +70,7 @@ protected override async Task>> ConvertInternalA if (sport == Sport.Invalid) { _logger.Warning("Unsupported Sport Type - Skipping {@Sport}", workout.Fitness_Discipline); - return new Tuple>(string.Empty, null); + return null; } var fileIdMesg = new FileIdMesg(); @@ -127,7 +129,7 @@ protected override async Task>> ConvertInternalA AddMetrics(messages, workoutSamples, sport, startTime); var workoutMesg = new WorkoutMesg(); - workoutMesg.SetWktName(title.Replace(WorkoutHelper.SpaceSeparator, ' ')); + workoutMesg.SetWktName(title.Replace(WorkoutHelper.SpaceSeparator, WorkoutHelper.Space)); workoutMesg.SetCapabilities(32); workoutMesg.SetSport(sport); workoutMesg.SetSubSport(subSport); diff --git a/src/Conversion/FitDecoder.cs b/src/Conversion/FitDecoder.cs index 175d4ca3e..3c733c252 100644 --- a/src/Conversion/FitDecoder.cs +++ b/src/Conversion/FitDecoder.cs @@ -1,7 +1,6 @@ -using Common; +using Common.Dto; using Common.Observe; using Dynastream.Fit; -using Microsoft.VisualBasic; using Serilog; using System.IO; diff --git a/src/Conversion/IConverter.cs b/src/Conversion/IConverter.cs index 981b61c60..cf344f71f 100644 --- a/src/Conversion/IConverter.cs +++ b/src/Conversion/IConverter.cs @@ -52,7 +52,7 @@ public abstract class Converter : IConverter Name = "TacxTrainingAppWin", // Max 20 Chars ProductID = GarminProduct.TacxTrainingAppWin, UnitId = 1, - ManufacturerId = 1, // Garmin + ManufacturerId = 89, // Tacx Version = new GarminDeviceVersion() { VersionMajor = 1, @@ -113,7 +113,7 @@ public async Task ConvertAsync(P2GWorkout workoutData) // call internal convert method T converted = default; - var workoutTitle = WorkoutHelper.GetUniqueTitle(workoutData.Workout); + var workoutTitle = WorkoutHelper.GetUniqueTitle(workoutData.Workout, settings.Format); try { converted = await ConvertInternalAsync(workoutData, settings); @@ -194,7 +194,7 @@ protected void CopyToLocalSaveDir(string sourcePath, string workoutTitle, Settin var backupDest = Path.Join(localSaveDir, $"{workoutTitle}.{formatString}"); _fileHandler.Copy(sourcePath, backupDest, overwrite: true); - _logger.Information("[@Format] Backed up file {@File}", Format, backupDest); + _logger.Information("[{@Format}] Backed up file {@File}", Format, backupDest); } catch (Exception e) { @@ -565,17 +565,22 @@ protected static Metric GetMetric(string slug, WorkoutSamples workoutSamples) protected async Task GetDeviceInfoAsync(FitnessDiscipline sport, Settings settings) { - GarminDeviceInfo userProvidedDeviceInfo = await _settingsService.GetCustomDeviceInfoAsync(settings.Garmin.Email); - - if (userProvidedDeviceInfo is object) return userProvidedDeviceInfo; + GarminDeviceInfo deviceInfo = null; + deviceInfo = await _settingsService.GetCustomDeviceInfoAsync(settings.Garmin.Email); - if(sport == FitnessDiscipline.Cycling) - return CyclingDevice; + if (deviceInfo is null) + { + if (sport == FitnessDiscipline.Cycling) + deviceInfo = CyclingDevice; + else if (sport == FitnessDiscipline.Caesar) + deviceInfo = RowingDevice; + else + deviceInfo = DefaultDevice; + } - if (sport == FitnessDiscipline.Caesar) - return RowingDevice; + _logger.Debug("Using device: {@DeviceName}, {@DeviceProdId}, {@DeviceManufacturerId}, {@DeviceVersion}", deviceInfo.Name, deviceInfo.ProductID, deviceInfo.ManufacturerId, deviceInfo.Version); - return DefaultDevice; + return deviceInfo; } protected ushort? GetCyclingFtp(Workout workout, UserData userData) @@ -626,6 +631,7 @@ protected static Sport GetGarminSport(Workout workout) case FitnessDiscipline.Meditation: return Sport.Training; case FitnessDiscipline.Caesar: + case FitnessDiscipline.Caesar_Bootcamp: return Sport.Rowing; default: return Sport.Invalid; diff --git a/src/Garmin/ApiClient.cs b/src/Garmin/ApiClient.cs index f65c3af87..18d6f531e 100644 --- a/src/Garmin/ApiClient.cs +++ b/src/Garmin/ApiClient.cs @@ -4,6 +4,7 @@ using Flurl.Http; using Garmin.Auth; using Garmin.Dto; +using OAuth; using Serilog; using System.IO; using System.Linq; @@ -13,28 +14,37 @@ namespace Garmin { public interface IGarminApiClient { - Task InitSigninFlowAsync(object queryParams, string userAgent, out CookieJar jar); + Task InitCookieJarAsync(object queryParams, string userAgent, out CookieJar jar); + Task GetCsrfTokenAsync(GarminApiAuthentication auth, object queryParams, CookieJar jar); Task SendCredentialsAsync(GarminApiAuthentication auth, object queryParams, object loginData, CookieJar jar); Task SendMfaCodeAsync(string userAgent, object queryParams, object mfaData, CookieJar jar); - Task SendServiceTicketAsync(string userAgent, string serviceTicket, CookieJar jar); + Task GetOAuth1TokenAsync(GarminApiAuthentication auth, ConsumerCredentials credentials, string ticket); + Task GetOAuth2TokenAsync(GarminApiAuthentication auth, ConsumerCredentials credentials); + Task GetConsumerCredentialsAsync(); Task UploadActivity(string filePath, string format, GarminApiAuthentication auth); } public class ApiClient : IGarminApiClient { - private const string BASE_URL = "https://connect.garmin.com"; - private const string SSO_URL = "https://sso.garmin.com"; - private const string SIGNIN_URL = "https://sso.garmin.com/sso/signin"; + private const string SSO_SIGNIN_URL = "https://sso.garmin.com/sso/signin"; + private const string SSO_EMBED_URL = "https://sso.garmin.com/sso/embed"; - private static string UPLOAD_URL = $"{BASE_URL}/modern/proxy/upload-service/upload"; + private static string UPLOAD_URL = $"https://connectapi.garmin.com/upload-service/upload"; - private const string ORIGIN = SSO_URL; + private const string ORIGIN = "https://sso.garmin.com"; + private const string REFERER = "https://sso.garmin.com/sso/signin"; private static readonly ILogger _logger = LogContext.ForClass(); - public Task InitSigninFlowAsync(object queryParams, string userAgent, out CookieJar jar) + public Task GetConsumerCredentialsAsync() { - return SIGNIN_URL + return "https://thegarth.s3.amazonaws.com/oauth_consumer.json" + .GetJsonAsync(); + } + + public Task InitCookieJarAsync(object queryParams, string userAgent, out CookieJar jar) + { + return SSO_EMBED_URL .WithHeader("User-Agent", userAgent) .WithHeader("origin", ORIGIN) .SetQueryParams(queryParams) @@ -45,9 +55,11 @@ public Task InitSigninFlowAsync(object queryParams, string userAgent, out Cookie public async Task SendCredentialsAsync(GarminApiAuthentication auth, object queryParams, object loginData, CookieJar jar) { var result = new SendCredentialsResult(); - result.RawResponseBody = await SIGNIN_URL + result.RawResponseBody = await SSO_SIGNIN_URL .WithHeader("User-Agent", auth.UserAgent) .WithHeader("origin", ORIGIN) + .WithHeader("referer", REFERER) + .WithHeader("NK", "NT") .SetQueryParams(queryParams) .WithCookies(jar) .StripSensitiveDataFromLogging(auth.Email, auth.Password) @@ -58,6 +70,21 @@ public async Task SendCredentialsAsync(GarminApiAuthentic return result; } + public async Task GetCsrfTokenAsync(GarminApiAuthentication auth, object queryParams, CookieJar jar) + { + var result = new GarminResult(); + result.RawResponseBody = await SSO_SIGNIN_URL + .WithHeader("User-Agent", auth.UserAgent) + .WithHeader("origin", ORIGIN) + .SetQueryParams(queryParams) + .WithCookies(jar) + .StripSensitiveDataFromLogging(auth.Email, auth.Password) + .GetAsync() + .ReceiveString(); + + return result; + } + public Task SendMfaCodeAsync(string userAgent, object queryParams, object mfaData, CookieJar jar) { return "https://sso.garmin.com/sso/verifyMFA/loginEnterMfaCode" @@ -70,20 +97,33 @@ public Task SendMfaCodeAsync(string userAgent, object queryParams, objec .ReceiveString(); } - public Task SendServiceTicketAsync(string userAgent, string serviceTicket, CookieJar jar) + public Task GetOAuth1TokenAsync(GarminApiAuthentication auth, ConsumerCredentials credentials, string ticket) { - return $"{BASE_URL}/" - .WithHeader("User-Agent", userAgent) - .WithCookies(jar) - .SetQueryParam("ticket", serviceTicket) - .GetAsync(); + OAuthRequest oauthClient = OAuthRequest.ForRequestToken(credentials.Consumer_Key, credentials.Consumer_Secret); + oauthClient.RequestUrl = $"https://connectapi.garmin.com/oauth-service/oauth/preauthorized?ticket={ticket}&login-url=https://sso.garmin.com/sso/embed&accepts-mfa-tokens=true"; + return oauthClient.RequestUrl + .WithHeader("User-Agent", auth.UserAgent) + .WithHeader("Authorization", oauthClient.GetAuthorizationHeader()) + .GetStringAsync(); + } + public Task GetOAuth2TokenAsync(GarminApiAuthentication auth, ConsumerCredentials credentials) + { + OAuthRequest oauthClient2 = OAuthRequest.ForProtectedResource("POST", credentials.Consumer_Key, credentials.Consumer_Secret, auth.OAuth1Token.Token, auth.OAuth1Token.TokenSecret); + oauthClient2.RequestUrl = "https://connectapi.garmin.com/oauth-service/oauth/exchange/user/2.0"; + + return oauthClient2.RequestUrl + .WithHeader("User-Agent", auth.UserAgent) + .WithHeader("Authorization", oauthClient2.GetAuthorizationHeader()) + .WithHeader("Content-Type", "application/x-www-form-urlencoded") // this header is required, without it you get a 500 + .PostUrlEncodedAsync(new object()) // hack: PostAsync() will drop the content-type header, by posting empty object we trick flurl into leaving the header + .ReceiveJson(); } public async Task UploadActivity(string filePath, string format, GarminApiAuthentication auth) { var fileName = Path.GetFileName(filePath); var response = await $"{UPLOAD_URL}/{format}" - .WithCookies(auth.CookieJar) + .WithOAuthBearerToken(auth.OAuth2Token.Access_Token) .WithHeader("NK", "NT") .WithHeader("origin", ORIGIN) .WithHeader("User-Agent", auth.UserAgent) @@ -119,263 +159,5 @@ public async Task UploadActivity(string filePath, string format, return response; } - - //private const string URL_HOSTNAME = "https://connect.garmin.com/modern/auth/hostname"; - //private const string URL_LOGIN = "https://sso.garmin.com/sso/login"; - //private const string URL_POST_LOGIN = "https://connect.garmin.com/modern/"; - //private const string URL_HOST_SSO = "sso.garmin.com"; - //private const string URL_HOST_CONNECT = "connect.garmin.com"; - //private const string URL_SSO_SIGNIN = "https://sso.garmin.com/sso/signin"; - //private const string URL_ACTIVITY_BASE = "https://connect.garmin.com/modern/proxy/activity-service/activity"; - //private const string URL_ACTIVITY_TYPES = "https://connect.garmin.com/modern/proxy/activity-service/activity/activityTypes"; - /// - /// This is where the magic happens! - /// Straight from https://github.com/La0/garmin-uploader - /// - //public async Task InitAuth2() - //{ - // dynamic ssoHostResponse = null; - // try - // { - // ssoHostResponse = await URL_HOSTNAME - // .WithHeader("User-Agent", USERAGENT) - // .WithCookies(out _jar) - // .GetJsonAsync(); - // } - // catch (FlurlHttpException e) - // { - // Log.Error(e, "Failed to authenticate with Garmin. Invalid initial SO request."); - // throw; - // } - - // var ssoHostName = ssoHostResponse.host; - - // object queryParams = new - // { - // clientId = "GarminConnect", - // //connectLegalTerms = "true", - // consumeServiceTicket = "false", - // createAccountShown = "true", - // //cssUrl = "https://connect.garmin.com/gauth-custom-v1.2-min.css", - // cssUrl = "https://static.garmincdn.com/com.garmin.connect/ui/css/gauth-custom-v1.2-min.css", - // displayNameShown = "false", - // embedWidget = "false", - // gauthHost = "https://sso.garmin.com/sso", - // //generateExtraServiceTicket = "true", - // generateExtraServiceTicket = "false", - // //generateNoServiceTicket = "false", - // //generateTwoExtraServiceTickets = "true", - // //globalOptInChecked = "false", - // //globalOptInShown = "true", - // id = "gauth-widget", - // initialFocus = "true", - // //locale = "fr_FR", - // locale = "en_US", - // //locationPromptShown = "true", - // //mfaRequired = "false", - // //performMFACheck = "false", - // //mobile = "false", - // openCreateAccount = "false", - // //privacyStatementUrl = "https://www.garmin.com/fr-FR/privacy/connect/", - // //redirectAfterAccountCreationUrl = "https://connect.garmin.com/modern/", - // //redirectAfterAccountLoginUrl = "https://connect.garmin.com/modern/", - // redirectAfterAccountCreationUrl = "https://connect.garmin.com/", - // redirectAfterAccountLoginUrl = "https://connect.garmin.com/", - // rememberMeChecked = "false", - // rememberMeShown = "true", - // //rememberMyBrowserChecked = "false", - // //rememberMyBrowserShown = "false", - // //service = "https://connect.garmin.com/modern/", - // service = "https://connect.garmin.com", - // //showConnectLegalAge = "false", - // //showPassword = "true", - // //showPrivacyPolicy = "false", - // //showTermsOfUse = "false", - // //source = "https://connect.garmin.com/signin/", - // source = "https://connect.garmin.com", - // //useCustomHeader = "false", - // usernameShow = "false", - // //webhost = ssoHostName.ToString() - // //webhost = "https://connect.garmin.com/modern/" - // webhost = "https://connect.garmin.com" - // }; - - // string loginForm = null; - // try - // { - // loginForm = await URL_LOGIN - // .WithHeader("User-Agent", USERAGENT) - // .SetQueryParams(queryParams) - // .WithCookies(_jar) - // .GetStringAsync(); - - // } - // catch (FlurlHttpException e) - // { - // Log.Error(e, "No login form."); - // throw; - // } - - // // Lookup CSRF token - // var regex = new Regex(""); - // var csrfTokenMatch = regex.Match(loginForm); - - // if (!csrfTokenMatch.Success) - // { - // Log.Error("No CSRF token."); - // throw new Exception("Failed to find CSRF token from Garmin."); - // } - - // var csrfToken = csrfTokenMatch.Groups[1].Value; - - // object loginData = new - // { - // embed = "false", - // username = _config.Garmin.Email, - // password = _config.Garmin.Password, - // _csrf = csrfToken - // }; - - // string authResponse = null; - - // try - // { - // authResponse = await URL_LOGIN - // .WithHeader("Host", URL_HOST_SSO) - // .WithHeader("Referer", URL_SSO_SIGNIN) - // .WithHeader("User-Agent", USERAGENT) - // .SetQueryParams(queryParams) - // .WithCookies(_jar) - // .PostUrlEncodedAsync(loginData) - // .ReceiveString(); - // } - // catch (FlurlHttpException e) - // { - // Log.Error(e, "Authentication Failed."); - // throw; - // } - - // // Check we have SSO guid in the cookies - // if (!_jar.Any(c => c.Name == "GARMIN-SSO-GUID")) - // { - // Log.Error("Missing Garmin auth cookie."); - // throw new Exception("Failed to find Garmin auth cookie."); - // } - - // // Try to find the full post login url in response - // var regex2 = new Regex("var response_url(\\s+) = (\\\"|\\').*?ticket=(?[\\w\\-]+)(\\\"|\\')"); - // var match = regex2.Match(authResponse); - // if (!match.Success) - // { - // Log.Error("Missing service ticket."); - // throw new Exception("Failed to find service ticket."); - // } - - // var ticket = match.Groups.GetValueOrDefault("ticket").Value; - // if (string.IsNullOrEmpty(ticket)) - // { - // Log.Error("Failed to parse service ticket."); - // throw new Exception("Failed to parse service ticket."); - // } - - // queryParams = new - // { - // ticket = ticket - // }; - - // // Second Auth Step - // // Needs a service ticket from the previous step - // try - // { - // var authResponse2 = URL_POST_LOGIN - // .WithHeader("User-Agent", USERAGENT) - // .WithHeader("Host", URL_HOST_CONNECT) - // .SetQueryParams(queryParams) - // .WithCookies(_jar) - // .GetStringAsync(); - // } - // catch (FlurlHttpException e) - // { - // Log.Error(e, "Second auth step failed."); - // throw; - // } - - // // Check login - // try - // { - // var response = PROFILE_URL - // .WithHeader("User-Agent", USERAGENT) - // .WithCookies(_jar) - // .GetJsonAsync(); - // } - // catch (FlurlHttpException e) - // { - // Log.Error(e, "Login check failed."); - // throw; - // } - //} - - // TODO: I bet we can do multiple files at once - // https://github.com/tmenier/Flurl/issues/608 - - /// - /// Not quite working. Only uploads the first activity added. - /// - //public async Task UploadActivities(ICollection filePaths, string format) - //{ - // var auth = await InitAuth(); - - // var response = await $"{UPLOAD_URL}/{format}" - // .WithCookies(auth.CookieJar) - // .WithHeader("NK", "NT") - // .WithHeader("origin", ORIGIN) - // .WithHeader("User-Agent", auth.UserAgent) - // .AllowHttpStatus("2xx,409") - // .PostMultipartAsync((data) => - // { - // foreach (var path in filePaths) - // { - // var fileName = Path.GetFileName(path); - // data.AddFile("\"file\"", path: path, contentType: "application/octet-stream", fileName: $"\"{fileName}\""); - // } - // }) - // .ReceiveJson(); - - // var result = response.DetailedImportResult; - - // if (result.Failures.Any()) - // { - // foreach (var failure in result.Failures) - // { - // if (failure.Messages.Any()) - // { - // foreach (var message in failure.Messages) - // { - // if (message.Code == 202) - // { - // _logger.Information("Activity already uploaded {garminWorkout}", result.FileName); - // } - // else - // { - // _logger.Error("Failed to upload activity to Garmin. Message: {errorMessage}", message); - // } - // } - // } - // } - // } - - // return string.Empty; - //} - - //public async Task GetDeviceList() - //{ - // var auth = await InitAuth(); - - // var response = await $"https://connect.garmin.com/proxy/device-service/deviceregistration/devices" - // .WithCookies(auth.CookieJar) - // .WithHeader("User-Agent", auth.UserAgent) - // .WithHeader("origin", "https://sso.garmin.com") - // .GetJsonAsync(); - //} } } diff --git a/src/Garmin/Auth/ConsumerCredentials.cs b/src/Garmin/Auth/ConsumerCredentials.cs new file mode 100644 index 000000000..4ef1edd1a --- /dev/null +++ b/src/Garmin/Auth/ConsumerCredentials.cs @@ -0,0 +1,13 @@ +namespace Garmin.Auth; + +public record ConsumerCredentials +{ + public string Consumer_Key { get; set; } + public string Consumer_Secret { get; set;} +} + +// 10/01/23 +//{ +// "consumer_key": "fc3e99d2-118c-44b8-8ae3-03370dde24c0", +// "consumer_secret": "E08WAR897WEy2knn7aFBrvegVAf0AFdWBBF" +//} diff --git a/src/Garmin/Auth/GarminAuthContracts.cs b/src/Garmin/Auth/GarminAuthContracts.cs index a0c5b2bc8..d0f312390 100644 --- a/src/Garmin/Auth/GarminAuthContracts.cs +++ b/src/Garmin/Auth/GarminAuthContracts.cs @@ -5,6 +5,12 @@ public interface GarminResultWrapper string RawResponseBody { get; set; } } +public class GarminResult : GarminResultWrapper +{ + public string RawResponseBody { get; set; } +} + + public class SendCredentialsResult : GarminResultWrapper { public bool WasRedirected { get; set; } diff --git a/src/Garmin/Auth/GarminAuthenticationService.cs b/src/Garmin/Auth/GarminAuthenticationService.cs index cf9f0aada..2a5a6ef2a 100644 --- a/src/Garmin/Auth/GarminAuthenticationService.cs +++ b/src/Garmin/Auth/GarminAuthenticationService.cs @@ -5,10 +5,10 @@ using Serilog; using System; using System.Collections.Generic; -using System.Linq; using System.Net; using System.Text.RegularExpressions; using System.Threading.Tasks; +using System.Web; namespace Garmin.Auth; @@ -17,36 +17,20 @@ public interface IGarminAuthenticationService Task GetGarminAuthenticationAsync(); Task RefreshGarminAuthenticationAsync(); Task CompleteMFAAuthAsync(string mfaCode); - } public class GarminAuthenticationService : IGarminAuthenticationService { private static readonly ILogger _logger = LogContext.ForClass(); - private static readonly object QueryParams = new + private static readonly object CommonQueryParams = new { - clientId = "GarminConnect", - consumeServiceTicket = "false", - createAccountShown = "true", - cssUrl = "https://static.garmincdn.com/com.garmin.connect/ui/css/gauth-custom-v1.2-min.css", - displayNameShown = "false", - embedWidget = "false", - gauthHost = "https://sso.garmin.com/sso", - generateExtraServiceTicket = "true", - generateTwoExtraServiceTickets = "true", - generateNoServiceTicket = "false", id = "gauth-widget", - initialFocus = "true", - locale = "en_US", - openCreateAccount = "false", - redirectAfterAccountCreationUrl = "https://connect.garmin.com/", - redirectAfterAccountLoginUrl = "https://connect.garmin.com/", - rememberMeChecked = "false", - rememberMeShown = "true", - service = "https://connect.garmin.com", - source = "https://connect.garmin.com", - usernameShow = "false", - webhost = "https://connect.garmin.com" + embedWidget = "true", + gauthHost = "https://sso.garmin.com/sso/embed", + redirectAfterAccountCreationUrl = "https://sso.garmin.com/sso/embed", + redirectAfterAccountLoginUrl = "https://sso.garmin.com/sso/embed", + service = "https://sso.garmin.com/sso/embed", + source = "https://sso.garmin.com/sso/embed", }; private readonly ISettingsService _settingsService; @@ -72,6 +56,11 @@ public async Task GetGarminAuthenticationAsync() public async Task RefreshGarminAuthenticationAsync() { + ///////////////////////////////////////////////////////////////////////////// + // TODO: Implement refresh using OAuth tokens instead of re-using credentials + // Eventually remove need to store credentials locally + /////////////////////////////////////////////////////////////////////////////// + var settings = await _settingsService.GetSettingsAsync(); settings.Garmin.EnsureGarminCredentialsAreProvided(); @@ -92,30 +81,52 @@ public async Task RefreshGarminAuthenticationAsync() //////////////////////////////// try { - await _apiClient.InitSigninFlowAsync(QueryParams, auth.UserAgent, out jar); + await _apiClient.InitCookieJarAsync(CommonQueryParams, auth.UserAgent, out jar); } catch (FlurlHttpException e) { throw new GarminAuthenticationError("Failed to initialize sign in flow.", e) { Code = Code.FailedPriorToCredentialsUsed }; } - object loginData = new + ///////////////////////////////// + // Get CSRF token + //////////////////////////////// + object csrfRequest = new { - embed = "true", - username = auth.Email, - password = auth.Password, - lt = "e1s1", - _eventId = "submit", - displayNameRequired = "false", + id = "gauth-widget", + embedWidget = "true", + gauthHost = "https://sso.garmin.com/sso/embed", + service = "https://sso.garmin.com/sso/embed", + source = "https://sso.garmin.com/sso/embed", + redirectAfterAccountLoginUrl = "https://sso.garmin.com/sso/embed", + redirectAfterAccountCreationUrl = "https://sso.garmin.com/sso/embed", }; + string csrfToken = string.Empty; + try + { + var tokenResult = await _apiClient.GetCsrfTokenAsync(auth, csrfRequest, jar); + csrfToken = FindCsrfToken(tokenResult.RawResponseBody, failureStepCode: Code.FailedPriorToCredentialsUsed); + } + catch (FlurlHttpException e) + { + throw new GarminAuthenticationError("Failed to fetch csrf token from Garmin.", e) { Code = Code.FailedPriorToCredentialsUsed }; + } + ///////////////////////////////// // Send Credentials //////////////////////////////// + var sendCredentialsRequest = new + { + username = auth.Email, + password = auth.Password, + embed = "true", + _csrf = csrfToken + }; SendCredentialsResult sendCredentialsResult = null; try { - sendCredentialsResult = await _apiClient.SendCredentialsAsync(auth, QueryParams, loginData, jar); + sendCredentialsResult = await _apiClient.SendCredentialsAsync(auth, csrfRequest, sendCredentialsRequest, jar); } catch (FlurlHttpException e) when (e.StatusCode is (int)HttpStatusCode.Forbidden) { @@ -135,53 +146,52 @@ public async Task RefreshGarminAuthenticationAsync() if (!settings.Garmin.TwoStepVerificationEnabled) throw new GarminAuthenticationError("Detected Garmin TwoFactorAuthentication but TwoFactorAuthenctication is not enabled in P2G settings. Please enable TwoFactorAuthentication in your P2G Garmin settings.") { Code = Code.UnexpectedMfa }; - SetMFACsrfToken(auth, sendCredentialsResult.RawResponseBody); + var mfaCsrfToken = FindCsrfToken(sendCredentialsResult.RawResponseBody, failureStepCode: Code.FailedPriorToMfaUsed); + auth.AuthStage = AuthStage.NeedMfaToken; + auth.MFACsrfToken = mfaCsrfToken; auth.CookieJar = jar; _settingsService.SetGarminAuthentication(auth); return auth; } var loginResult = sendCredentialsResult?.RawResponseBody; - auth.CookieJar = jar; return await CompleteGarminAuthenticationAsync(loginResult, auth); } private async Task CompleteGarminAuthenticationAsync(string loginResult, GarminApiAuthentication auth) { - ////////////////////////////////////////////////////////// - // Ensure CookieJar looks good and we have Service Ticket - ////////////////////////////////////////////////////////// - // Check we have SSO guid in the cookies - if (!auth.CookieJar.Any(c => c.Name == "GARMIN-SSO-GUID")) - throw new GarminAuthenticationError("Auth appeared successful but failed to find Garmin auth cookie.") { Code = Code.AuthAppearedSuccessful }; - // Try to find the full post login ServiceTicket - var regex2 = new Regex("var response_url(\\s+) = (\\\"|\\').*?ticket=(?[\\w\\-]+)(\\\"|\\')"); - var match = regex2.Match(loginResult); - if (!match.Success) - throw new GarminAuthenticationError("Auth appeared successful but failed to find the service ticket.") { Code = Code.AuthAppearedSuccessful }; + var ticketRegex = new Regex("embed\\?ticket=(?[^\"]+)\""); + var ticketMatch = ticketRegex.Match(loginResult); + if (!ticketMatch.Success) + throw new GarminAuthenticationError("Auth appeared successful but failed to find regex match for service ticket.") { Code = Code.AuthAppearedSuccessful }; - var ticket = match.Groups.GetValueOrDefault("ticket")?.Value; + var ticket = ticketMatch.Groups.GetValueOrDefault("ticket").Value; _logger.Verbose($"Service Ticket: {ticket}"); + if (string.IsNullOrWhiteSpace(ticket)) throw new GarminAuthenticationError("Auth appeared successful, and found service ticket, but ticket was null or empty.") { Code = Code.AuthAppearedSuccessful }; //////////////////////////////////////////// - // Send the ServiceTicket - Completes Auth + // Get OAuth1 Tokens + /////////////////////////////////////////// + var consumerCredentials = await _apiClient.GetConsumerCredentialsAsync(); + await GetOAuth1Async(ticket, auth, consumerCredentials); + + //////////////////////////////////////////// + // Exchange for OAuth2 Token /////////////////////////////////////////// try { - var serviceTicketResponse = await _apiClient.SendServiceTicketAsync(auth.UserAgent, ticket, auth.CookieJar); - - if (serviceTicketResponse.StatusCode == (int)HttpStatusCode.Moved) - throw new GarminAuthenticationError("Auth appeared successful but Garmin did not accept service ticket.") { Code = Code.AuthAppearedSuccessful }; + auth.OAuth2Token = await _apiClient.GetOAuth2TokenAsync(auth, consumerCredentials); } - catch (FlurlHttpException e) + catch (Exception e) { - throw new GarminAuthenticationError("Auth appeared successful but there was an error sending the service ticket.", e) { Code = Code.AuthAppearedSuccessful }; + throw new GarminAuthenticationError("Auth appeared successful but failed to get the OAuth2 token.", e) { Code = Code.AuthAppearedSuccessful }; } auth.AuthStage = AuthStage.Completed; + auth.MFACsrfToken = string.Empty; _settingsService.SetGarminAuthentication(auth); return auth; } @@ -199,7 +209,7 @@ public async Task CompleteMFAAuthAsync(string mfaCode) var mfaData = new List>() { - new KeyValuePair("embed", "false"), + new KeyValuePair("embed", "true"), new KeyValuePair("mfa-code", mfaCode), new KeyValuePair("fromPage", "setupEnterMfaCode"), new KeyValuePair("_csrf", auth.MFACsrfToken) @@ -211,7 +221,7 @@ public async Task CompleteMFAAuthAsync(string mfaCode) try { SendMFAResult mfaResponse = new(); - mfaResponse.RawResponseBody = await _apiClient.SendMfaCodeAsync(auth.UserAgent, QueryParams, mfaData, auth.CookieJar); + mfaResponse.RawResponseBody = await _apiClient.SendMfaCodeAsync(auth.UserAgent, CommonQueryParams, mfaData, auth.CookieJar); return await CompleteGarminAuthenticationAsync(mfaResponse.RawResponseBody, auth); } catch (FlurlHttpException e) when (e.StatusCode is (int)HttpStatusCode.Forbidden) @@ -225,22 +235,57 @@ public async Task CompleteMFAAuthAsync(string mfaCode) } } - private void SetMFACsrfToken(GarminApiAuthentication auth, string sendCredentialsResponseBody) + private string FindCsrfToken(string rawResponseBody, Code failureStepCode) { - ///////////////////////////////// - // Try to find the csrf Token - //////////////////////////////// - var regex3 = new Regex("name=\"_csrf\"\\s+value=\"(?[A-Z0-9]+)"); - var match3 = regex3.Match(sendCredentialsResponseBody); - if (!match3.Success) - throw new GarminAuthenticationError("MFA: Failed to find csrf token.") { Code = Code.FailedPriorToMfaUsed }; - - var csrfToken = match3.Groups.GetValueOrDefault("csrf")?.Value; - _logger.Verbose($"_csrf Token: {csrfToken}"); - if (string.IsNullOrEmpty(csrfToken)) - throw new GarminAuthenticationError("MFA: Found csrf token but it was null or empty.") { Code = Code.FailedPriorToMfaUsed }; - - auth.AuthStage = AuthStage.NeedMfaToken; - auth.MFACsrfToken = csrfToken; + try + { + var tokenRegex = new Regex("name=\"_csrf\"\\s+value=\"(?.+?)\""); + var match = tokenRegex.Match(rawResponseBody); + if (!match.Success) + throw new GarminAuthenticationError($"Failed to find regex match for csrf token. tokenResult: {rawResponseBody}") { Code = failureStepCode }; + + var csrfToken = match.Groups.GetValueOrDefault("csrf")?.Value; + _logger.Verbose($"Csrf Token: {csrfToken}"); + + if (string.IsNullOrWhiteSpace(csrfToken)) + throw new GarminAuthenticationError("Found csrfToken but its null.") { Code = failureStepCode }; + + return csrfToken; + } catch (Exception e) + { + throw new GarminAuthenticationError("Failed to parse csrf token.", e) { Code = failureStepCode }; + } + } + + private async Task GetOAuth1Async(string ticket, GarminApiAuthentication auth, ConsumerCredentials credentials) + { + string oauth1Response = null; + try + { + oauth1Response = await _apiClient.GetOAuth1TokenAsync(auth, credentials, ticket); + } catch (Exception e) + { + throw new GarminAuthenticationError("Auth appeared successful but failed to get the OAuth1 token.", e) { Code = Code.AuthAppearedSuccessful }; + } + + if (string.IsNullOrWhiteSpace(oauth1Response)) + throw new GarminAuthenticationError("Auth appeared successful but returned OAuth1 Token response is null.") { Code = Code.AuthAppearedSuccessful }; + + var queryParams = HttpUtility.ParseQueryString(oauth1Response); + + var oAuthToken = queryParams.Get("oauth_token"); + var oAuthTokenSecret = queryParams.Get("oauth_token_secret"); + + if (string.IsNullOrWhiteSpace(oAuthToken)) + throw new GarminAuthenticationError($"Auth appeared successful but returned OAuth1 token is null. oauth1Response: {oauth1Response}") { Code = Code.AuthAppearedSuccessful }; + + if (string.IsNullOrWhiteSpace(oAuthTokenSecret)) + throw new GarminAuthenticationError($"Auth appeared successful but returned OAuth1 token secret is null. oauth1Response: {oauth1Response}") { Code = Code.AuthAppearedSuccessful }; + + auth.OAuth1Token = new OAuth1Token() + { + Token = oAuthToken, + TokenSecret = oAuthTokenSecret + }; } } diff --git a/src/Garmin/Extensions.cs b/src/Garmin/Extensions.cs index 60b83f0c3..a9bb67f3c 100644 --- a/src/Garmin/Extensions.cs +++ b/src/Garmin/Extensions.cs @@ -1,10 +1,11 @@ -using System; +using Common.Dto; +using System; namespace Garmin { public static class Extensions { - public static void EnsureGarminCredentialsAreProvided(this Common.Garmin settings) + public static void EnsureGarminCredentialsAreProvided(this GarminSettings settings) { if (string.IsNullOrEmpty(settings.Email)) throw new ArgumentException("Garmin Email must be set.", nameof(settings.Email)); diff --git a/src/Garmin/Garmin.csproj b/src/Garmin/Garmin.csproj index feaf35d9d..553883ff4 100644 --- a/src/Garmin/Garmin.csproj +++ b/src/Garmin/Garmin.csproj @@ -1,7 +1,7 @@  - net6.0 + net7.0 true $(NoWarn);1591 @@ -24,6 +24,10 @@ + + + + diff --git a/src/Garmin/GarminUploader.cs b/src/Garmin/GarminUploader.cs index 423b51f27..fd9d6f8f9 100644 --- a/src/Garmin/GarminUploader.cs +++ b/src/Garmin/GarminUploader.cs @@ -1,4 +1,5 @@ using Common; +using Common.Dto; using Common.Observe; using Common.Service; using Common.Stateful; @@ -6,7 +7,6 @@ using Prometheus; using Serilog; using System; -using System.Diagnostics; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -72,19 +72,8 @@ public async Task UploadToGarminAsync() using var metrics = WorkoutUploadDuration .WithLabels(files.Count().ToString()).NewTimer(); - switch (settings.Garmin.UploadStrategy) - { - case UploadStrategy.PythonAndGuploadInstalledLocally: - case UploadStrategy.WindowsExeBundledPython: - UploadViaPython(files, settings); - _logger.Information("Upload complete."); - return; - case UploadStrategy.NativeImplV1: - default: - await UploadAsync(files, settings); - _logger.Information("Upload complete."); - return; - } + await UploadAsync(files, settings); + _logger.Information("Upload complete."); } private async Task UploadAsync(string[] files, Settings settings) @@ -119,84 +108,11 @@ private async Task RateLimit() await Task.Delay(waitDuration); } - private void UploadViaPython(string[] files, Settings settings) - { - using var tracing = Tracing.Trace($"{nameof(GarminUploader)}.{nameof(UploadViaPython)}.UploadToGarminViaPython") - .WithTag(TagKey.Category, "gupload"); - - settings.Garmin.EnsureGarminCredentialsAreProvided(); - - ProcessStartInfo start = new ProcessStartInfo(); - var paths = String.Join(" ", files.Select(p => $"\"{p}\"")); - var cmd = string.Empty; - - if (settings.Garmin.UploadStrategy == UploadStrategy.PythonAndGuploadInstalledLocally) - { - start.FileName = "gupload"; - cmd = $"-u {settings.Garmin.Email} -p {settings.Garmin.Password} {paths}"; - } else - { - paths = String.Join(" ", files.Select(f => $"\"{Path.GetFullPath(f)}\"")); - start.FileName = Path.Join(Environment.CurrentDirectory, "python", "upload.exe"); - cmd = $"-ge {settings.Garmin.Email} -gp {settings.Garmin.Password} -f {paths}"; - } - - _logger.Information("Beginning Garmin Upload."); - _logger.Information("Uploading to Garmin with the following parameters: {@File} {@Command}", start.FileName, cmd.Replace(settings.Garmin.Email, "**email**").Replace(settings.Garmin.Password, "**password**")); - - start.Arguments = cmd; - start.UseShellExecute = false; - start.CreateNoWindow = true; - start.RedirectStandardOutput = true; - start.RedirectStandardError = true; - - FilesToUpload.Set(files.Length); - if (files.Length > 20) - _logger.Information("Detected large number of files for upload to Garmin. Please be patient, this could take a while."); - using var process = Process.Start(start); - process.WaitForExit(); - - var stderr = process.StandardError.ReadToEnd(); - var stdout = process.StandardOutput.ReadToEnd(); - - if (!string.IsNullOrEmpty(stdout)) - _logger.Information(stdout); - - // Despite coming from StandardError, this is not necessarily an error, just the output - if (!string.IsNullOrEmpty(stderr)) - _logger.Information("GUpload: {Output}", stderr); - - if (process.HasExited && process.ExitCode != 0) - { - FailedUploadAttemptsGauge.Inc(); - throw new GarminUploadException("GUpload returned an error code. Failed to upload workouts.", process.ExitCode); - } else - { - FailedUploadAttemptsGauge.Set(0); - FilesToUpload.Set(0); - } - } - public static void ValidateConfig(Settings config) { if (config.Garmin.Upload == false) return; config.Garmin.EnsureGarminCredentialsAreProvided(); - - if (config.App.EnablePolling && config.Garmin.TwoStepVerificationEnabled) - throw new ArgumentException("App.EnablePolling cannot be true when Garmin.TwoStepVerificationEnabled is true."); - - if (config.App.PythonAndGUploadInstalled.HasValue) - { - _logger.Warning("App.PythonAndGuploadInstalledLocally setting is deprecated and will be removed in a future release. Please swith to using Garmin.UploadStrategy config."); - - if (config.Garmin.UploadStrategy == UploadStrategy.PythonAndGuploadInstalledLocally - && config.App.PythonAndGUploadInstalled.Value == false) - { - config.Garmin.UploadStrategy = UploadStrategy.WindowsExeBundledPython; - _logger.Warning("Detected use of deprecated config App.PythonAndGuploadInstalledLocally, setting Garmin.UploadStrategy to WindowsExeBundledPython=1"); - } - } } } } diff --git a/src/Peloton/AnnualChallenge/AnnualChallengeProgress.cs b/src/Peloton/AnnualChallenge/AnnualChallengeProgress.cs index 4411e60b6..bbf709555 100644 --- a/src/Peloton/AnnualChallenge/AnnualChallengeProgress.cs +++ b/src/Peloton/AnnualChallenge/AnnualChallengeProgress.cs @@ -19,6 +19,21 @@ public record Tier public bool IsOnTrackToEarndByEndOfYear { get; set; } public double MinutesBehindPace { get; set; } public double MinutesAheadOfPace { get; set; } + + /// + /// Assuming working evenly throughout the whole year, this is the amount of time to plan to spend per day. + /// public double MinutesNeededPerDay { get; set; } + /// + /// Assuming working evenly throughout the whole year, this is the amount of time to plan to spend per week. + /// public double MinutesNeededPerWeek { get; set; } + /// + /// Assuming working evenly throughout the remainder of the year, this is the amount of time to plan to spend per day. + /// + public double MinutesNeededPerDayToFinishOnTime { get; set; } + /// + /// Assuming working evenly throughout the remainder of the year, this is the amount of time to plan to spend per week. + /// + public double MinutesNeededPerWeekToFinishOnTime { get; set; } } diff --git a/src/Peloton/AnnualChallenge/AnnualChallengeService.cs b/src/Peloton/AnnualChallenge/AnnualChallengeService.cs index 11fc44953..95bb33f84 100644 --- a/src/Peloton/AnnualChallenge/AnnualChallengeService.cs +++ b/src/Peloton/AnnualChallenge/AnnualChallengeService.cs @@ -12,7 +12,7 @@ public interface IAnnualChallengeService public class AnnualChallengeService : IAnnualChallengeService { - private const string AnnualChallengeId = "66863eacd9d04447979d5dba7bf0e766"; + private const string AnnualChallengeId = "5101dfaa50d441d682a432acd313c706"; private IPelotonApi _pelotonApi; @@ -30,7 +30,7 @@ public async Task> GetAnnualChallengeProg if (joinedChallenges == null || joinedChallenges.Challenges.Length <= 0) return result; - var annualChallenge = joinedChallenges.Challenges.FirstOrDefault(c => c.Challenge_Summary.Id == AnnualChallengeId || c.Challenge_Summary.Title == "The Annual 2023"); + var annualChallenge = joinedChallenges.Challenges.FirstOrDefault(c => c.Challenge_Summary.Id == AnnualChallengeId || c.Challenge_Summary.Title.StartsWith("The Annual")); if (annualChallenge is null) return result; @@ -65,6 +65,8 @@ public async Task> GetAnnualChallengeProg MinutesAheadOfPace = onTrackDetails.MinutesBehindPace * -1, MinutesNeededPerDay = onTrackDetails.MinutesNeededPerDay, MinutesNeededPerWeek = onTrackDetails.MinutesNeededPerDay * 7, + MinutesNeededPerDayToFinishOnTime = onTrackDetails.MinutesNeededPerDayToFinishOnTime, + MinutesNeededPerWeekToFinishOnTime = onTrackDetails.MinutesNeededPerDayToFinishOnTime * 7 }; }).ToList(); @@ -83,6 +85,9 @@ public static OnTrackDetails CalculateOnTrackDetails(DateTime now, DateTime star var neededMinutesToBeOnTrack = elapsedDays * minutesNeededPerDay; + var remainingDays = Math.Ceiling((endTimeUtc - now).TotalDays); + var minutesNeededPerDayToFinishOnTime = (requiredMinutes - earnedMinutes) / remainingDays; + return new OnTrackDetails() { IsOnTrackToEarnByEndOfYear = earnedMinutes >= neededMinutesToBeOnTrack, @@ -90,6 +95,7 @@ public static OnTrackDetails CalculateOnTrackDetails(DateTime now, DateTime star MinutesNeededPerDay = minutesNeededPerDay, HasEarned = earnedMinutes >= requiredMinutes, PercentComplete = earnedMinutes / requiredMinutes, + MinutesNeededPerDayToFinishOnTime = minutesNeededPerDayToFinishOnTime }; } @@ -100,5 +106,6 @@ public record OnTrackDetails public double MinutesNeededPerDay { get; init; } public bool HasEarned { get; init; } public double PercentComplete { get; init; } + public double MinutesNeededPerDayToFinishOnTime { get; init; } } } diff --git a/src/Peloton/ApiClient.cs b/src/Peloton/ApiClient.cs index 723c17992..3719d837b 100644 --- a/src/Peloton/ApiClient.cs +++ b/src/Peloton/ApiClient.cs @@ -99,7 +99,7 @@ public async Task> GetWorkoutsAsync(int pageSize, limit = pageSize, sort_by = "-created", page = page, - joins= "ride" + joins= "ride,ride.instructor" }) .StripSensitiveDataFromLogging(auth.Email, auth.Password) .GetJsonAsync>(); diff --git a/src/Peloton/Extensions.cs b/src/Peloton/Extensions.cs index 02cc2d30a..877034d6b 100644 --- a/src/Peloton/Extensions.cs +++ b/src/Peloton/Extensions.cs @@ -1,11 +1,12 @@ -using Flurl.Http; +using Common.Dto; +using Flurl.Http; using System; namespace Peloton; public static class Extensions { - public static void EnsurePelotonCredentialsAreProvided(this Common.Peloton settings) + public static void EnsurePelotonCredentialsAreProvided(this PelotonSettings settings) { if (string.IsNullOrEmpty(settings.Email)) throw new ArgumentException("Peloton Email must be set.", nameof(settings.Email)); diff --git a/src/Peloton/Peloton.csproj b/src/Peloton/Peloton.csproj index 71b8f4d36..25110eccb 100644 --- a/src/Peloton/Peloton.csproj +++ b/src/Peloton/Peloton.csproj @@ -1,7 +1,7 @@  - net6.0 + net7.0 true $(NoWarn);1591 diff --git a/src/Peloton/PelotonService.cs b/src/Peloton/PelotonService.cs index 58775042e..ca6c83813 100644 --- a/src/Peloton/PelotonService.cs +++ b/src/Peloton/PelotonService.cs @@ -60,7 +60,7 @@ public PelotonService(ISettingsService settingsService, IPelotonApi pelotonApi, _failedCount = 0; } - public static void ValidateConfig(Common.Peloton config) + public static void ValidateConfig(PelotonSettings config) { if (string.IsNullOrEmpty(config.Email)) { @@ -279,8 +279,17 @@ public async Task GetWorkoutDetailsAsync(string workoutId) if (!string.IsNullOrWhiteSpace(classId) && classId != "00000000000000000000000000000000") { - var workoutSegments = await _pelotonApi.GetClassSegmentsAsync(classId); - p2gWorkoutData.Exercises = P2GWorkoutExerciseMapper.GetWorkoutExercises(p2gWorkoutData.Workout, workoutSegments); + try + { + var workoutSegments = await _pelotonApi.GetClassSegmentsAsync(classId); + p2gWorkoutData.Exercises = P2GWorkoutExerciseMapper.GetWorkoutExercises(p2gWorkoutData.Workout, workoutSegments); + } catch (Exception ex) + { + // Known issue: Peloton Gym Segment data doesn't live at the same route as the other workout data + // have not yet been able to find where this data lives, may need to wait until Peloton adds a better + // web experience for viewing these workout details + _logger.Error(ex, "Failed to load class segment data for classId: {@classId}", classId); + } } return p2gWorkoutData; diff --git a/src/WebUI/App.razor b/src/SharedUI/App.razor similarity index 84% rename from src/WebUI/App.razor rename to src/SharedUI/App.razor index 7fb3fe935..ce58da50b 100644 --- a/src/WebUI/App.razor +++ b/src/SharedUI/App.razor @@ -1,11 +1,11 @@  - + Not found - +

Sorry, there's nothing at this address.

diff --git a/src/SharedUI/IApiClient.cs b/src/SharedUI/IApiClient.cs new file mode 100644 index 000000000..1549746d2 --- /dev/null +++ b/src/SharedUI/IApiClient.cs @@ -0,0 +1,39 @@ +using Api.Contract; +using Common.Dto; +using Flurl.Http; + +namespace SharedUI; +public interface IApiClient +{ + Task PelotonWorkoutsGetAsync(PelotonWorkoutsGetRequest request); + Task PelotonWorkoutsGetAsync(PelotonWorkoutsGetAllRequest request); + + Task SettingsGetAsync(); + Task SettingsAppPostAsync(Common.Dto.App appSettings); + Task SettingsFormatPostAsync(Format formatSettings); + Task SettingsPelotonPostAsync(SettingsPelotonPostRequest pelotonSettings); + Task SettingsGarminPostAsync(SettingsGarminPostRequest garminSettings); + + Task SyncGetAsync(); + Task SyncPostAsync(SyncPostRequest syncPostRequest); + + Task SystemInfoGetAsync(SystemInfoGetRequest systemInfoGetRequest); + Task SystemInfoGetLogsAsync(); + + Task GetAnnualProgressAsync(); + + Task GetGarminAuthenticationAsync(); + Task SignInToGarminAsync(); + Task SendGarminMfaTokenAsync(GarminAuthenticationMfaTokenPostRequest request); +} + +public class ApiClientException : Exception +{ + public ApiClientException(string? message, Exception innerException) : base(message, innerException) { } + public ApiClientException(ErrorResponse error) : base(error.Message, error.Exception) { } +} + +public class SyncTimeoutException : Exception +{ + public SyncTimeoutException(string? message, Exception innerException) : base(message, innerException) { } +} \ No newline at end of file diff --git a/src/SharedUI/Pages/About.razor b/src/SharedUI/Pages/About.razor new file mode 100644 index 000000000..f32d7ca95 --- /dev/null +++ b/src/SharedUI/Pages/About.razor @@ -0,0 +1,42 @@ +@page "/about" +@inherits TracingComponentBase +@inject IApiClient _apiClient + +About + +@if (systemInfo.NewerVersionAvailable.GetValueOrDefault()) +{ + A new version of P2G is available! Checkout the release notes to see whats new. +} + + + + +
+ +
+
+ + +
+ +
+
+
+ +@code { + private SystemInfoGetResponse systemInfo; + + public About() : base(nameof(About)) + { + systemInfo = new SystemInfoGetResponse(); + } + + protected override async Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(About)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + + var settings = await _apiClient.SettingsGetAsync(); + systemInfo = await _apiClient.SystemInfoGetAsync(new SystemInfoGetRequest() { CheckForUpdate = settings.App.CheckForUpdates}); + } +} diff --git a/src/WebUI/Pages/AnnualChallengeProgress.razor b/src/SharedUI/Pages/AnnualChallengeProgress.razor similarity index 69% rename from src/WebUI/Pages/AnnualChallengeProgress.razor rename to src/SharedUI/Pages/AnnualChallengeProgress.razor index 4dbedac55..777388023 100644 --- a/src/WebUI/Pages/AnnualChallengeProgress.razor +++ b/src/SharedUI/Pages/AnnualChallengeProgress.razor @@ -19,11 +19,12 @@ @if (!tier.HasEarned) {
    -
  • Badge requires averaging @Math.Round(tier.MinutesNeededPerDay, 2) min/day or @Math.Round(tier.MinutesNeededPerWeek, 2) min/week.
  • - @if (!tier.IsOnTrackToEarndByEndOfYear) - { -
  • You are @Math.Round(tier.MinutesBehindPace, 2) minutes behind pace.
  • - } +
  • Badge requires averaging @Math.Round(tier.MinutesNeededPerDay, 2) min/day or @Math.Round(tier.MinutesNeededPerWeek, 2) min/week.
  • + @if (!tier.IsOnTrackToEarndByEndOfYear) + { +
  • You are @Math.Round(tier.MinutesBehindPace, 2) minutes behind pace.
  • + } +
  • You need @Math.Round(tier.MinutesNeededPerDayToFinishOnTime, 2) min/day or @Math.Round(tier.MinutesNeededPerWeekToFinishOnTime, 2) min/week in order to finish in time.
} @@ -35,14 +36,15 @@
- @if (!annualProgress.Tiers.Any()) + @if (!loading && !annualProgress.Tiers.Any()) { - Looks like you haven't signed up for the Peloton Annual 2023 Challenge yet. Join the challenge on Peloton then check back here! + Looks like you haven't signed up for the Peloton Annual Challenge yet. Join the challenge on Peloton then check back here! }
@code { private ProgressGetResponse annualProgress; + private bool loading = true; public AnnualChallengeProgress() : base(nameof(AnnualChallengeProgress)) { @@ -56,10 +58,9 @@ { annualProgress = (await _apiClient.GetAnnualProgressAsync()) ?? new ProgressGetResponse() { Tiers = new List() }; } - catch (FlurlHttpException e) + catch (ApiClientException e) { - var error = await e.GetResponseJsonAsync(); - _toaster.AddError(error.Message); + _toaster.AddError(e.Message); Log.Error("UI - Failed to fetch Annual Challenge progress report.", e); annualProgress = new ProgressGetResponse() { Tiers = new List() }; } @@ -68,7 +69,10 @@ _toaster.AddError($"Failed to load Annual Challenge progress report - {e.Message} - See logs for details."); Log.Error("UI - Failed to load Annual Challenge progress report.", e); annualProgress = new ProgressGetResponse() { Tiers = new List() }; - } + } finally + { + loading = false; + } } public ThemeColor GetThemeColor(bool isOnTrack) diff --git a/src/WebUI/Pages/Index.razor b/src/SharedUI/Pages/Index.razor similarity index 94% rename from src/WebUI/Pages/Index.razor rename to src/SharedUI/Pages/Index.razor index eef7536b6..659cc5f1e 100644 --- a/src/WebUI/Pages/Index.razor +++ b/src/SharedUI/Pages/Index.razor @@ -1,4 +1,5 @@ @page "/" +@using SharedUI.Shared; @inherits TracingComponentBase @inject IApiClient _apiClient @inject IHxMessengerService _toaster; @@ -46,7 +47,7 @@ } - else if(!TodaysWorkouts.Any()) + else if (!TodaysWorkouts.Any()) { No workouts today. } @@ -54,21 +55,21 @@ {
Sync todays workouts -
+ } -@code { - +@code { + private bool TodaysWorkoutsAreLoading = true; private SyncGetResponse syncStatus; private SettingsGetResponse settings; private SystemInfoGetResponse systemInfo; - private ICollection TodaysWorkouts; - - private GarminMfaModal? _garminMfaModal; - + private ICollection TodaysWorkouts; + + private GarminMfaModal? _garminMfaModal; + public Index() : base(nameof(Index)) { syncStatus = new SyncGetResponse(); @@ -103,7 +104,8 @@ await getSyncStatusAsync; - } catch (Exception e) + } + catch (Exception e) { Log.Error("UI - Failed to fetch data for home page.", e); _toaster.AddError($"Failed to fetch data from P2G Api - {e.Message} - See logs for details."); @@ -123,7 +125,7 @@ try { syncStatus = await _apiClient.SyncGetAsync(); - } + } catch (Exception e) { Log.Error("UI - Failed to fetch Sync status.", e); @@ -137,14 +139,14 @@ try { - var startOfDayLocalTime = DateTime.Now.Date; - var today = startOfDayLocalTime.ToUniversalTime(); - var todaysWorkouts = await _apiClient.PelotonWorkoutsGetAsync(new PelotonWorkoutsGetAllRequest() - { - SinceDate = today, - WorkoutStatusFilter = WorkoutStatus.Completed, - ExcludeWorkoutTypes = settings.Peloton.ExcludeWorkoutTypes - }); + var startOfDayLocalTime = DateTime.Now.Date; + var today = startOfDayLocalTime.ToUniversalTime(); + var todaysWorkouts = await _apiClient.PelotonWorkoutsGetAsync(new PelotonWorkoutsGetAllRequest() + { + SinceDate = today, + WorkoutStatusFilter = WorkoutStatus.Completed, + ExcludeWorkoutTypes = settings.Peloton.ExcludeWorkoutTypes + }); return todaysWorkouts.Items; } @@ -171,24 +173,25 @@ { _toaster.AddInformation("No workouts to sync today."); return; - } - + } + await _garminMfaModal!.ShowAsync(ContinueSyncAsync); - } - - private async Task ContinueSyncAsync() - { - using var tracing = Tracing.ClientTrace($"{nameof(Index)}.{nameof(ContinueSyncAsync)}", kind: ActivityKind.Client); + } + + private async Task ContinueSyncAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(Index)}.{nameof(ContinueSyncAsync)}", kind: ActivityKind.Client); SyncPostResponse? syncResponse = null; try { - syncResponse = await _apiClient.SyncPostAsync(new SyncPostRequest() { WorkoutIds = TodaysWorkouts.Select(w => w.Id).ToList() }); + syncResponse = await _apiClient.SyncPostAsync(new SyncPostRequest() { WorkoutIds = TodaysWorkouts.Select(w => w!.Id!).ToList() }); } - catch (FlurlHttpTimeoutException te){ + catch (SyncTimeoutException te) + { _toaster.AddInformation("Long running sync will continue running in the background."); Log.Information("UI - Sync timeout reached.", te); - } - catch(Exception e) + } + catch (Exception e) { _toaster.AddError($"Failed to sync - {e.Message} - See logs for details."); Log.Error("UI - Failed to sync.", e); @@ -201,13 +204,13 @@ { _toaster.AddWarning($"Errors during sync - {error.Message}"); } - } + } + + if (syncResponse?.SyncSuccess ?? false) + _toaster.AddInformation("Success! Synced today's workouts."); + } + } - if (syncResponse?.SyncSuccess ?? false) - _toaster.AddInformation("Success! Synced today's workouts."); - } - } - private ThemeColor GetPillThemeColor(Common.Database.Status status) { switch (syncStatus.SyncStatus) diff --git a/src/SharedUI/Pages/Settings.razor b/src/SharedUI/Pages/Settings.razor new file mode 100644 index 000000000..f934f5f8d --- /dev/null +++ b/src/SharedUI/Pages/Settings.razor @@ -0,0 +1,65 @@ +@page "/settings" +@inherits TracingComponentBase +@inject IApiClient _apiClient +@inject IHxMessengerService _toaster; + +Settings + +

Settings

+Documentation +
+
+ + + + +
+ +
+
+ + +
+ +
+
+ + +
+ +
+
+ + +
+ +
+
+
+ +@code { + + private string configDocumentation; + + public Settings() : base(nameof(Settings)) + { + var settings = new SettingsGetResponse(); + configDocumentation = string.Empty; + } + + protected override Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(Settings)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + return LoadDataAsync(); + } + + private async Task LoadDataAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(Settings)}.{nameof(LoadDataAsync)}", kind: ActivityKind.Client); + + var settings = await _apiClient.SettingsGetAsync(); + var systemInfo = await _apiClient.SystemInfoGetAsync(new SystemInfoGetRequest() { CheckForUpdate = settings.App.CheckForUpdates }); + + configDocumentation = systemInfo.Documentation + "/configuration/json"; + } +} \ No newline at end of file diff --git a/src/WebUI/Pages/Sync.razor b/src/SharedUI/Pages/Sync.razor similarity index 76% rename from src/WebUI/Pages/Sync.razor rename to src/SharedUI/Pages/Sync.razor index 063af6f0e..fe2ac9ada 100644 --- a/src/WebUI/Pages/Sync.razor +++ b/src/SharedUI/Pages/Sync.razor @@ -1,4 +1,5 @@ @page "/sync" +@using SharedUI.Shared; @inherits TracingComponentBase @inject IApiClient _apiClient; @inject IHxMessengerService _toaster; @@ -15,7 +16,9 @@ - + + + @@ -38,39 +41,24 @@ base.Dispose(); } - protected override async Task OnInitializedAsync() - { - using var tracing = Tracing.ClientTrace($"{nameof(Index)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); - - try - { - var getSettingsTask = _apiClient.SettingsGetAsync(); - var settings = await getSettingsTask; - } - catch (Exception e) - { - Log.Error("UI - Failed to fetch data for sync page.", e); - _toaster.AddError($"Failed to fetch data from P2G Api - {e.Message} - See logs for details."); - } - } - private async Task> LoadDataAsync(GridDataProviderRequest request) { using var tracing = Tracing.ClientTrace($"{nameof(Sync)}.{nameof(LoadDataAsync)}", kind: ActivityKind.Client); _toaster.Clear(); - try + try { var pageIndex = request.StartIndex / PageSize; - var recentWorkouts = await _apiClient.PelotonWorkoutsGetAsync(new PelotonWorkoutsGetRequest() { PageSize = PageSize, PageIndex = pageIndex}); + var recentWorkouts = await _apiClient.PelotonWorkoutsGetAsync(new PelotonWorkoutsGetRequest() { PageSize = PageSize, PageIndex = pageIndex }); return new GridDataProviderResult() { Data = recentWorkouts.Items, TotalCount = recentWorkouts.TotalItems }; - } catch (FlurlHttpException e) when (e.StatusCode is StatusCodes.Status400BadRequest) + } + catch (ApiClientException e) { - var error = await e.GetResponseJsonAsync(); - _toaster.AddError(error.Message); + _toaster.AddError(e.Message); Log.Error("UI - Failed to load Peloton workouts.", e); - } catch (Exception e) + } + catch (Exception e) { _toaster.AddError($"Failed to load Peloton workouts - {e.Message} - See logs for details."); Log.Error("UI - Failed to load Peloton workouts.", e); @@ -94,7 +82,7 @@ try { - var result = await _apiClient.SyncPostAsync(new SyncPostRequest() { WorkoutIds = selectedItems.Select(i => i.Id).ToList() }); + var result = await _apiClient.SyncPostAsync(new SyncPostRequest() { WorkoutIds = selectedItems.Select(i => i.Id!).ToList() }); selectedItems.Clear(); if (result.SyncSuccess) @@ -114,15 +102,14 @@ } } - catch (FlurlHttpTimeoutException te) + catch (SyncTimeoutException te) { _toaster.AddInformation("Long running sync will continue running in the background."); Log.Information("UI - Sync timeout reached.", te); } - catch (FlurlHttpException e) when (e.StatusCode is StatusCodes.Status400BadRequest) + catch (ApiClientException e) { - var error = await e.GetResponseJsonAsync(); - _toaster.AddError(error.Message); + _toaster.AddError(e.Message); Log.Error("UI - Failed to sync Peloton workouts.", e); } catch (Exception e) @@ -136,4 +123,4 @@ { return selectedItems.Any(); } -} +} \ No newline at end of file diff --git a/src/SharedUI/Properties/launchSettings.json b/src/SharedUI/Properties/launchSettings.json new file mode 100644 index 000000000..4065c5608 --- /dev/null +++ b/src/SharedUI/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "SharedUI": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:54212;http://localhost:54213" + } + } +} \ No newline at end of file diff --git a/src/SharedUI/Shared/AppSettingsForm.razor b/src/SharedUI/Shared/AppSettingsForm.razor new file mode 100644 index 000000000..381c07156 --- /dev/null +++ b/src/SharedUI/Shared/AppSettingsForm.razor @@ -0,0 +1,84 @@ +@inject IApiClient _apiClient +@inject IHxMessengerService _toaster; + + +
+
+ + + + + ? + + + + + + + + +
+
+ +
+ +
+ Save + +
+ +@code { + private App appSettings; + private string configDocumentation; + + public AppSettingsForm() + { + var settings = new SettingsGetResponse(); + appSettings = settings.App; + } + + protected override Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(AppSettingsForm)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + return LoadDataAsync(); + } + + private async Task LoadDataAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(SettingsGetResponse)}.{nameof(LoadDataAsync)}", kind: ActivityKind.Client); + var settings = await _apiClient.SettingsGetAsync(); + + appSettings = settings.App; + + var systemInfo = await _apiClient.SystemInfoGetAsync(new SystemInfoGetRequest() { CheckForUpdate = settings.App.CheckForUpdates }); + configDocumentation = systemInfo.Documentation + "/configuration/json/#app-config"; + } + + protected async Task SaveAppSettings() + { + using var tracing = Tracing.ClientTrace($"{nameof(AppSettingsForm)}.{nameof(SaveAppSettings)}", kind: ActivityKind.Client); + + _toaster.Clear(); + + try + { + appSettings = await _apiClient.SettingsAppPostAsync(appSettings); + _toaster.AddInformation("App Settings Saved!"); + } + catch (FlurlHttpException e) when (e.StatusCode is StatusCodes.Status400BadRequest) + { + var error = await e.GetResponseJsonAsync(); + _toaster.AddError(error.Message); + } + catch (Exception e) + { + _toaster.AddError($"Failed to save App Settings - {e.Message} - See logs for details."); + Log.Error("UI - Failed to save App settings.", e); + } + } + + private string AutomaticSyncingDocumentation => $"P2G can periodically and automatically sync workouts. By enabling this setting, P2G will check for workouts every X seconds and sync them. The number of workouts that P2G will fetch per sync can be configured on the Peloton Settings tab.

WARNING: Setting this to a frequency of hourly or less may get you flagged by Peloton as a bad actor and they may reset your password. The default is set to Daily.

Documentation
(click the ? to pin this window)"; +} diff --git a/src/SharedUI/Shared/FormatSettingsForm.razor b/src/SharedUI/Shared/FormatSettingsForm.razor new file mode 100644 index 000000000..dda1bc3c4 --- /dev/null +++ b/src/SharedUI/Shared/FormatSettingsForm.razor @@ -0,0 +1,220 @@ +@using HandlebarsDotNet; +@inject IApiClient _apiClient +@inject IHxMessengerService _toaster; + + +
+
+ + + Format Types + + ? + + + + + + + + +
+
+
+
+
+ + + Workout Title + + ? + + + + + + +
+
+
+
+
+ + + Lap Types + + ? + + + +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+ + + Strength + + ? + + + + + + +
+
+
+
+ +
+ + + + Advanced + + ? + + + +
+ + + +
+
+
+
+
+
+ Save +
+ +@code { + private static ICollection lapTypes = Enum.GetValues(typeof(PreferredLapType)).Cast().ToList(); + + private Format formatSettings; + + private string workoutTemplateExample; + private string configDocumentation; + + public FormatSettingsForm() + { + var settings = new SettingsGetResponse(); + formatSettings = settings.Format; + + workoutTemplateExample = string.Empty; + configDocumentation = string.Empty; + } + + protected override Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(FormatSettingsForm)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + return LoadDataAsync(); + } + + private async Task LoadDataAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(FormatSettingsForm)}.{nameof(LoadDataAsync)}", kind: ActivityKind.Client); + + var settings = await _apiClient.SettingsGetAsync(); + formatSettings = settings.Format; + ValueChanged(formatSettings!.WorkoutTitleTemplate); + + var systemInfo = await _apiClient.SystemInfoGetAsync(new SystemInfoGetRequest() { CheckForUpdate = settings.App.CheckForUpdates }); + configDocumentation = systemInfo.Documentation + "/configuration/json/#format-config"; + } + + protected async Task SaveFormatSettings() + { + using var tracing = Tracing.ClientTrace($"{nameof(FormatSettingsForm)}.{nameof(SaveFormatSettings)}", kind: ActivityKind.Client); + + _toaster.Clear(); + try + { + formatSettings = await _apiClient.SettingsFormatPostAsync(formatSettings); + _toaster.AddInformation("Format Settings Saved!"); + } + catch (FlurlHttpException e) when (e.StatusCode is StatusCodes.Status400BadRequest) + { + var error = await e.GetResponseJsonAsync(); + _toaster.AddError(error.Message); + } + catch (Exception e) + { + _toaster.AddError($"Failed to save Format Settings - {e.Message} - See logs for details."); + Log.Error("UI - Failed to save Format settings.", e); + } + } + + protected void ValueChanged(string newValue) + { + formatSettings.WorkoutTitleTemplate = newValue; + + var template = formatSettings.WorkoutTitleTemplate; + var sampleData = new + { + PelotonWorkoutTitle = "15 minute HIIT Ride", + PelotonInstructorName = "Ally Love" + }; + + var compiledTemplate = Handlebars.Compile(template); + var titleExample = compiledTemplate(sampleData); + + foreach (var c in Path.GetInvalidFileNameChars()) + { + titleExample = titleExample.Replace(c, '-'); + } + + workoutTemplateExample = $"Example: {titleExample}"; + } + + private string FormatSettingsDocumentation => $"
  • FIT is the recommended format
  • FIT and TCX are the only types that can be uploaded to Garmin
  • If you enable JSON, you'll also need to enable saving a local copy in the Advanced settings below.

Documentation
(click the ? to pin this window)"; + private string WorkoutTitleDocumentation => $"Allows you to customize how your workout title will appear in Garmin Connect using Handlebars templates. Some characters are not allowed, these characters will automatically be replaced with `-`. Below are the data fields you can use in the template:

  • PelotonWorkoutTitle
  • PelotonInstructorName

Documentation
(click the ? to pin this window)"; + private string LapTypesDocumentation => $"Lap type defines how/when P2G will create a new Lap within a workout. This can be customized per Cardio type. To read more about each Lap Type please see the documentation.

Documentation
(click the ? to pin this window)"; + private string StrengthDocumentation => $"Some Strength workouts have you do an exercise for time rather than for a specific number of reps. This setting allows you to customize how P2G should estimate the number of reps that were done in a time based exercise.

Documentation
(click the ? to pin this window)"; + private string AdvancedDocumentation => $"Most users should not need to modify these settings. These settings should only be modified if you are trying to solve a specific problem. Please be sure you've read the documentation about these before modifying.

Documentation
(click the ? to pin this window)"; +} diff --git a/src/WebUI/Shared/GarminMfaModal.razor b/src/SharedUI/Shared/GarminMfaModal.razor similarity index 99% rename from src/WebUI/Shared/GarminMfaModal.razor rename to src/SharedUI/Shared/GarminMfaModal.razor index b1b0241a0..489b56edc 100644 --- a/src/WebUI/Shared/GarminMfaModal.razor +++ b/src/SharedUI/Shared/GarminMfaModal.razor @@ -107,7 +107,7 @@ await _successCallBack.Invoke(); _successCallBack = null; } - + await MfaModal!.HideAsync(); } catch (FlurlHttpException e) when (e.StatusCode is StatusCodes.Status400BadRequest) @@ -130,4 +130,4 @@ { _successCallBack = null; } -} +} \ No newline at end of file diff --git a/src/SharedUI/Shared/GarminSettingsForm.razor b/src/SharedUI/Shared/GarminSettingsForm.razor new file mode 100644 index 000000000..f01176448 --- /dev/null +++ b/src/SharedUI/Shared/GarminSettingsForm.razor @@ -0,0 +1,123 @@ +@inject IApiClient _apiClient +@inject IHxMessengerService _toaster; + + +
+
+ +
+ + +
+ + Auth + +
+
+ +
+
+ + + Password + @if (garminSettings.IsPasswordSet) + { + Password is set + } + + + @if (garminSettings.IsPasswordSet) + { + + } + + +
+
+
+ + + +
+
+ +
+ + + Advanced + +
+
+ +
+
+
+
+
+
+
+
+ Save +
+
+
+ +@code { + private static ICollection formatTypes = Enum.GetValues(typeof(FileFormat)).Cast().ToList(); + + private SettingsGarminGetResponse garminSettings; + + public GarminSettingsForm() + { + var settings = new SettingsGetResponse(); + garminSettings = settings.Garmin; + } + + protected override Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(GarminSettingsForm)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + return LoadDataAsync(); + } + + private async Task LoadDataAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(GarminSettingsForm)}.{nameof(LoadDataAsync)}", kind: ActivityKind.Client); + var settings = await _apiClient.SettingsGetAsync(); + + garminSettings = settings.Garmin; + } + + protected void ClearGarminPassword() + { + using var tracing = Tracing.ClientTrace($"{nameof(GarminSettingsForm)}.{nameof(ClearGarminPassword)}", kind: ActivityKind.Client); + garminSettings.Password = string.Empty; + garminSettings.IsPasswordSet = false; + } + + protected async Task SaveGarminSettings() + { + using var tracing = Tracing.ClientTrace($"{nameof(GarminSettingsForm)}.{nameof(SaveGarminSettings)}", kind: ActivityKind.Client); + + _toaster.Clear(); + + try + { + garminSettings = await _apiClient.SettingsGarminPostAsync(garminSettings.Map()); + _toaster.AddInformation("Garmin Settings Saved!"); + } + catch (FlurlHttpException e) when (e.StatusCode is StatusCodes.Status400BadRequest) + { + var error = await e.GetResponseJsonAsync(); + _toaster.AddError(error.Message); + } + catch (Exception e) + { + _toaster.AddError($"Failed to save Garmin Settings - {e.Message} - See logs for details."); + Log.Error("UI - Failed to save Garmin settings.", e); + } + } +} diff --git a/src/SharedUI/Shared/Logs.razor b/src/SharedUI/Shared/Logs.razor new file mode 100644 index 000000000..f7cdc2086 --- /dev/null +++ b/src/SharedUI/Shared/Logs.razor @@ -0,0 +1,30 @@ +@inherits TracingComponentBase +@inject IApiClient _apiClient +@inject IHxMessengerService _toaster; +@inject IJSRuntime JS + +

Logs

+ +
+
+        
+            @logs.LogText
+        
+    
+
+ +@code { + private SystemInfoLogsGetResponse logs; + + public Logs() : base(nameof(Logs)) + { + logs = new SystemInfoLogsGetResponse(); + } + + protected override async Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(Logs)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + + logs = await _apiClient.SystemInfoGetLogsAsync(); + } +} diff --git a/src/WebUI/Shared/MainLayout.razor b/src/SharedUI/Shared/MainLayout.razor similarity index 89% rename from src/WebUI/Shared/MainLayout.razor rename to src/SharedUI/Shared/MainLayout.razor index fd66ff9eb..eaa9a6671 100644 --- a/src/WebUI/Shared/MainLayout.razor +++ b/src/SharedUI/Shared/MainLayout.razor @@ -2,7 +2,7 @@
diff --git a/src/WebUI/Shared/MainLayout.razor.css b/src/SharedUI/Shared/MainLayout.razor.css similarity index 100% rename from src/WebUI/Shared/MainLayout.razor.css rename to src/SharedUI/Shared/MainLayout.razor.css diff --git a/src/WebUI/Shared/NavMenu.razor b/src/SharedUI/Shared/NavMenu.razor similarity index 100% rename from src/WebUI/Shared/NavMenu.razor rename to src/SharedUI/Shared/NavMenu.razor diff --git a/src/WebUI/Shared/NavMenu.razor.css b/src/SharedUI/Shared/NavMenu.razor.css similarity index 100% rename from src/WebUI/Shared/NavMenu.razor.css rename to src/SharedUI/Shared/NavMenu.razor.css diff --git a/src/SharedUI/Shared/PelotonSettingsForm.razor b/src/SharedUI/Shared/PelotonSettingsForm.razor new file mode 100644 index 000000000..3cf033d26 --- /dev/null +++ b/src/SharedUI/Shared/PelotonSettingsForm.razor @@ -0,0 +1,101 @@ +@inject IApiClient _apiClient +@inject IHxMessengerService _toaster; + + +
+
+ +
+
+ + + Password + @if (pelotonSettings.IsPasswordSet) + { + Password is set + } + + + @if (pelotonSettings.IsPasswordSet) + { + + } + + +
+
+ +
+
+ +
+
+
+ Save +
+ +@code { + private static ICollection workoutTypes = Enum.GetValues(typeof(WorkoutType)).Cast().ToList(); + + private SettingsPelotonGetResponse pelotonSettings; + + private List selectedWorkoutTypes = new List(); + + public PelotonSettingsForm() + { + var settings = new SettingsGetResponse(); + pelotonSettings = settings.Peloton; + } + + protected override Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(PelotonSettingsForm)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + return LoadDataAsync(); + } + + private async Task LoadDataAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(PelotonSettingsForm)}.{nameof(LoadDataAsync)}", kind: ActivityKind.Client); + var settings = await _apiClient.SettingsGetAsync(); + + pelotonSettings = settings.Peloton; + selectedWorkoutTypes = pelotonSettings.ExcludeWorkoutTypes.ToList(); + } + + protected void ClearPelotonPassword() + { + using var tracing = Tracing.ClientTrace($"{nameof(PelotonSettingsForm)}.{nameof(ClearPelotonPassword)}", kind: ActivityKind.Client); + pelotonSettings.Password = string.Empty; + pelotonSettings.IsPasswordSet = false; + } + + protected async Task SavePelotonSettings() + { + using var tracing = Tracing.ClientTrace($"{nameof(PelotonSettingsForm)}.{nameof(SavePelotonSettings)}", kind: ActivityKind.Client); + + _toaster.Clear(); + + try + { + pelotonSettings.ExcludeWorkoutTypes = selectedWorkoutTypes; + pelotonSettings = await _apiClient.SettingsPelotonPostAsync(pelotonSettings.Map()); + _toaster.AddInformation("Peloton Settings Saved!"); + } + catch (FlurlHttpException e) when (e.StatusCode is StatusCodes.Status400BadRequest) + { + var error = await e.GetResponseJsonAsync(); + _toaster.AddError(error.Message); + } + catch (Exception e) + { + _toaster.AddError($"Failed to save Peloton Settings - {e.Message} - See logs for details."); + Log.Error("UI - Failed to save Peloton settings.", e); + } + } +} diff --git a/src/SharedUI/Shared/SystemInfo.razor b/src/SharedUI/Shared/SystemInfo.razor new file mode 100644 index 000000000..a8d07bb51 --- /dev/null +++ b/src/SharedUI/Shared/SystemInfo.razor @@ -0,0 +1,67 @@ +@inherits TracingComponentBase +@inject IApiClient _apiClient + +
+ +
+ @systemInfo.Version @if (systemInfo.NewerVersionAvailable.GetValueOrDefault()) + { +

(newer version available: @systemInfo.LatestVersionInformation?.LatestVersion)

+ } +
+ + +
+ @systemInfo.OperatingSystem +
+ + +
+ @systemInfo.OperatingSystemVersion +
+ + +
+ @systemInfo.RunTimeVersion +
+ + +
+ @systemInfo.OutputDirectory +
+ + +
+ @systemInfo.TempDirectory +
+
+ + + + +@code { + private SystemInfoGetResponse systemInfo; + + public SystemInfo() : base(nameof(SystemInfo)) + { + systemInfo = new SystemInfoGetResponse(); + } + + protected override async Task OnInitializedAsync() + { + using var tracing = Tracing.ClientTrace($"{nameof(SystemInfo)}.{nameof(OnInitializedAsync)}", kind: ActivityKind.Client); + + var settings = await _apiClient.SettingsGetAsync(); + systemInfo = await _apiClient.SystemInfoGetAsync(new SystemInfoGetRequest() { CheckForUpdate = settings.App.CheckForUpdates }); + } +} diff --git a/src/SharedUI/SharedUI.csproj b/src/SharedUI/SharedUI.csproj new file mode 100644 index 000000000..997ffa7cd --- /dev/null +++ b/src/SharedUI/SharedUI.csproj @@ -0,0 +1,32 @@ + + + + net7.0 + enable + enable + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SharedUI/SharedUIStartup.cs b/src/SharedUI/SharedUIStartup.cs new file mode 100644 index 000000000..bf5165b51 --- /dev/null +++ b/src/SharedUI/SharedUIStartup.cs @@ -0,0 +1,13 @@ +using Havit.Blazor.Components.Web; +using Microsoft.Extensions.DependencyInjection; + +namespace SharedUI; + +public static class SharedUIStartup +{ + public static void ConfigureSharedUIServices(this IServiceCollection services) + { + services.AddHxServices(); + services.AddHxMessenger(); + } +} diff --git a/src/WebUI/TracingComponentBase.cs b/src/SharedUI/TracingComponentBase.cs similarity index 95% rename from src/WebUI/TracingComponentBase.cs rename to src/SharedUI/TracingComponentBase.cs index 58cd20c84..34192608c 100644 --- a/src/WebUI/TracingComponentBase.cs +++ b/src/SharedUI/TracingComponentBase.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Components; using System.Diagnostics; -namespace WebUI; +namespace SharedUI; public class TracingComponentBase : ComponentBase, IDisposable { diff --git a/src/SharedUI/_Imports.razor b/src/SharedUI/_Imports.razor new file mode 100644 index 000000000..2b4c31be6 --- /dev/null +++ b/src/SharedUI/_Imports.razor @@ -0,0 +1,18 @@ +@using System.Diagnostics +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Microsoft.AspNetCore.Http; +@using Api.Contract +@using Common +@using Common.Dto +@using Common.Observe +@using Flurl.Http; +@using Havit.Blazor.Components.Web +@using Havit.Blazor.Components.Web.Bootstrap +@using Serilog diff --git a/src/WebUI/libman.json b/src/SharedUI/libman.json similarity index 93% rename from src/WebUI/libman.json rename to src/SharedUI/libman.json index 5a7762e69..7f2112ebe 100644 --- a/src/WebUI/libman.json +++ b/src/SharedUI/libman.json @@ -7,7 +7,7 @@ "destination": "wwwroot/lib/font-awesome/" }, { - "library": "bootstrap@5.2.1", + "library": "bootstrap@5.3.0", "destination": "wwwroot/lib/bootstrap/" }, { diff --git a/src/SharedUI/wwwroot/background.png b/src/SharedUI/wwwroot/background.png new file mode 100644 index 000000000..e15a3bde6 Binary files /dev/null and b/src/SharedUI/wwwroot/background.png differ diff --git a/src/WebUI/wwwroot/css/bootstrap/bootstrap.min.css b/src/SharedUI/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from src/WebUI/wwwroot/css/bootstrap/bootstrap.min.css rename to src/SharedUI/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/src/WebUI/wwwroot/css/bootstrap/bootstrap.min.css.map b/src/SharedUI/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from src/WebUI/wwwroot/css/bootstrap/bootstrap.min.css.map rename to src/SharedUI/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/src/SharedUI/wwwroot/css/forms.css b/src/SharedUI/wwwroot/css/forms.css new file mode 100644 index 000000000..2c871770d --- /dev/null +++ b/src/SharedUI/wwwroot/css/forms.css @@ -0,0 +1,3 @@ +label.form-label { + color: rgb(108, 117, 125); +} diff --git a/src/WebUI/wwwroot/css/open-iconic/FONT-LICENSE b/src/SharedUI/wwwroot/css/open-iconic/FONT-LICENSE similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/FONT-LICENSE rename to src/SharedUI/wwwroot/css/open-iconic/FONT-LICENSE diff --git a/src/WebUI/wwwroot/css/open-iconic/ICON-LICENSE b/src/SharedUI/wwwroot/css/open-iconic/ICON-LICENSE similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/ICON-LICENSE rename to src/SharedUI/wwwroot/css/open-iconic/ICON-LICENSE diff --git a/src/WebUI/wwwroot/css/open-iconic/README.md b/src/SharedUI/wwwroot/css/open-iconic/README.md similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/README.md rename to src/SharedUI/wwwroot/css/open-iconic/README.md diff --git a/src/WebUI/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css b/src/SharedUI/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css rename to src/SharedUI/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css diff --git a/src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.eot b/src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.eot similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.eot rename to src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.eot diff --git a/src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.otf b/src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.otf similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.otf rename to src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.otf diff --git a/src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.svg b/src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.svg similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.svg rename to src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.svg diff --git a/src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf b/src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf rename to src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf diff --git a/src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.woff b/src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.woff similarity index 100% rename from src/WebUI/wwwroot/css/open-iconic/font/fonts/open-iconic.woff rename to src/SharedUI/wwwroot/css/open-iconic/font/fonts/open-iconic.woff diff --git a/src/WebUI/wwwroot/css/site.css b/src/SharedUI/wwwroot/css/site.css similarity index 88% rename from src/WebUI/wwwroot/css/site.css rename to src/SharedUI/wwwroot/css/site.css index fb936e195..90875d433 100644 --- a/src/WebUI/wwwroot/css/site.css +++ b/src/SharedUI/wwwroot/css/site.css @@ -1,5 +1,9 @@ @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); -@import url('../font-awesome/css/all.css'); +@import url('../lib/font-awesome/css/all.css'); +@import url('../lib/bootstrap/css/bootstrap.min.css'); +@import url('../lib/bootstrap-icons/font/bootstrap-icons.css'); +@import url('_content/Havit.Blazor.Components.Web.Bootstrap/defaults.css'); +@import url('forms.css'); html, body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; @@ -23,6 +27,10 @@ a, .btn-link { padding-top: 1.1rem; } +a.nav-link { + padding: .5rem 1rem !important; +} + .valid.modified:not([type=checkbox]) { outline: 1px solid #26b050; } @@ -63,3 +71,7 @@ a, .btn-link { .blazor-error-boundary::after { content: "An error has occurred." } + +.popover { + --bs-popover-max-width: 500px; +} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/exampleJsInterop.js b/src/SharedUI/wwwroot/exampleJsInterop.js new file mode 100644 index 000000000..ea8d76ad2 --- /dev/null +++ b/src/SharedUI/wwwroot/exampleJsInterop.js @@ -0,0 +1,6 @@ +// This is a JavaScript module that is loaded on demand. It can export any number of +// functions, and may import other JavaScript modules if required. + +export function showPrompt(message) { + return prompt(message, 'Type anything here'); +} diff --git a/src/WebUI/wwwroot/favicon.ico b/src/SharedUI/wwwroot/favicon.ico similarity index 100% rename from src/WebUI/wwwroot/favicon.ico rename to src/SharedUI/wwwroot/favicon.ico diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/LICENSE b/src/SharedUI/wwwroot/lib/bootstrap-icons/LICENSE new file mode 100644 index 000000000..3f97be60e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019-2023 The Bootstrap Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/LICENSE.md b/src/SharedUI/wwwroot/lib/bootstrap-icons/LICENSE.md new file mode 100644 index 000000000..47f06b69a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019-2021 The Bootstrap Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/README.md b/src/SharedUI/wwwroot/lib/bootstrap-icons/README.md new file mode 100644 index 000000000..bb558ee72 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/README.md @@ -0,0 +1,97 @@ +

+ + Bootstrap logo + +

+ +

Bootstrap Icons

+ +

+ Official open source SVG icon library for Bootstrap with over 1,800 icons. +
+ Explore Bootstrap Icons » +
+
+ Bootstrap + · + Themes + · + Blog +
+

+ +[![Bootstrap Icons preview](https://github.com/twbs/icons/blob/main/.github/preview.png)](https://icons.getbootstrap.com) + +## Install + +Bootstrap Icons are packaged up and published to npm. We only include the processed SVGs in this package—it's up to you and your team to implement. [Read our docs](https://icons.getbootstrap.com/) for usage instructions. + +```shell +npm i bootstrap-icons +``` + +For those [using Packagist](https://packagist.org/packages/twbs/bootstrap-icons), you can also install Bootstrap Icons via Composer: + +```shell +composer require twbs/bootstrap-icons +``` + +[Also available in Figma.](https://www.figma.com/community/file/1042482994486402696/Bootstrap-Icons) + +## Usage + +Depending on your setup, you can include Bootstrap Icons in a handful of ways. + +- Copy-paste SVGs as embedded HTML +- Reference via `` element +- Use the SVG sprite +- Include via CSS + +[See the docs for more information.](https://icons.getbootstrap.com/#usage) + +## Development + +[![Build Status](https://github.com/twbs/icons/workflows/Tests/badge.svg)](https://github.com/twbs/icons/actions?workflow=Tests) + +Clone the repo, install dependencies, and start the Hugo server locally. + +```shell +git clone https://github.com/twbs/icons/ +cd icons +npm i +npm start +``` + +Then open `http://localhost:4000` in your browser. + +### npm scripts + +Here are some key scripts you'll use during development. Be sure to look to our `package.json` for a complete list of scripts. + +| Script | Description | +| --- | --- | +| `start` | Alias for running `docs-serve` | +| `docs-serve` | Starts a local Hugo server | +| `pages` | Generates permalink pages for each icon with template Markdown | +| `icons` | Processes and optimizes SVGs in `icons` directory | + +## Adding SVGs + +Icons are typically only added by @mdo, but exceptions can be made. New glyphs are designed in Figma first on a 16x16px grid, then exported as flattened SVGs with `fill` (no stroke). Once a new SVG icon has been added to the `icons` directory, we use an npm script to: + +1. Optimize our SVGs with SVGO. +2. Modify the SVGs source HTML, removing all attributes before setting new attributes and values in our preferred order. + +Use `npm run icons` to run the script, run `npm run pages` to build permalink pages, complete those pages, and, finally, commit the results in a new branch for updating. + +## Publishing + +Documentation is published automatically when a new Git tag is published. See our [GitHub Actions](https://github.com/twbs/icons/tree/main/.github/workflows) and [`package.json`](https://github.com/twbs/icons/blob/main/package.json) for more information. + +## License + +MIT + +## Author + +[@mdo](https://github.com/mdo) diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/bootstrap-icons.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/bootstrap-icons.svg new file mode 100644 index 000000000..8104aeadb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/bootstrap-icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.css b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.css new file mode 100644 index 000000000..7f0bd54b1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.css @@ -0,0 +1,1876 @@ +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: url("./fonts/bootstrap-icons.woff2?8d200481aa7f02a2d63a331fc782cfaf") format("woff2"), +url("./fonts/bootstrap-icons.woff?8d200481aa7f02a2d63a331fc782cfaf") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-1::before { content: "\f2a5"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-1::before { content: "\f68a"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-1::before { content: "\f68d"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-1::before { content: "\f690"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-1::before { content: "\f695"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-1::before { content: "\f698"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-mortorboard-fill::before { content: "\f6a2"; } +.bi-mortorboard::before { content: "\f6a3"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-1::before { content: "\f6b6"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash-1::before { content: "\f6c2"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport-1::before { content: "\f6e0"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-ssd-fill::before { content: "\f6ed"; } +.bi-ssd::before { content: "\f6ee"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt-1::before { content: "\f759"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls-1::before { content: "\f769"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-1::before { content: "\f794"; } +.bi-1-circle-fill-1::before { content: "\f795"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-1::before { content: "\f79a"; } +.bi-2-circle-fill-1::before { content: "\f79b"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-1::before { content: "\f7a0"; } +.bi-3-circle-fill-1::before { content: "\f7a1"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-1::before { content: "\f7a6"; } +.bi-4-circle-fill-1::before { content: "\f7a7"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-1::before { content: "\f7ac"; } +.bi-5-circle-fill-1::before { content: "\f7ad"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-1::before { content: "\f7b2"; } +.bi-6-circle-fill-1::before { content: "\f7b3"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-1::before { content: "\f7b8"; } +.bi-7-circle-fill-1::before { content: "\f7b9"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-1::before { content: "\f7be"; } +.bi-8-circle-fill-1::before { content: "\f7bf"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-1::before { content: "\f7c4"; } +.bi-9-circle-fill-1::before { content: "\f7c5"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-1::before { content: "\f7d8"; } +.bi-c-circle-fill-1::before { content: "\f7d9"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-1::before { content: "\f7e4"; } +.bi-cc-circle-fill-1::before { content: "\f7e5"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-1::before { content: "\f7f8"; } +.bi-h-circle-fill-1::before { content: "\f7f9"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-1::before { content: "\f802"; } +.bi-p-circle-fill-1::before { content: "\f803"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-1::before { content: "\f80c"; } +.bi-r-circle-fill-1::before { content: "\f80d"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.json b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.json new file mode 100644 index 000000000..faa3b2ce7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.json @@ -0,0 +1,1856 @@ +{ + "123": 63103, + "alarm-fill": 61697, + "alarm": 61698, + "align-bottom": 61699, + "align-center": 61700, + "align-end": 61701, + "align-middle": 61702, + "align-start": 61703, + "align-top": 61704, + "alt": 61705, + "app-indicator": 61706, + "app": 61707, + "archive-fill": 61708, + "archive": 61709, + "arrow-90deg-down": 61710, + "arrow-90deg-left": 61711, + "arrow-90deg-right": 61712, + "arrow-90deg-up": 61713, + "arrow-bar-down": 61714, + "arrow-bar-left": 61715, + "arrow-bar-right": 61716, + "arrow-bar-up": 61717, + "arrow-clockwise": 61718, + "arrow-counterclockwise": 61719, + "arrow-down-circle-fill": 61720, + "arrow-down-circle": 61721, + "arrow-down-left-circle-fill": 61722, + "arrow-down-left-circle": 61723, + "arrow-down-left-square-fill": 61724, + "arrow-down-left-square": 61725, + "arrow-down-left": 61726, + "arrow-down-right-circle-fill": 61727, + "arrow-down-right-circle": 61728, + "arrow-down-right-square-fill": 61729, + "arrow-down-right-square": 61730, + "arrow-down-right": 61731, + "arrow-down-short": 61732, + "arrow-down-square-fill": 61733, + "arrow-down-square": 61734, + "arrow-down-up": 61735, + "arrow-down": 61736, + "arrow-left-circle-fill": 61737, + "arrow-left-circle": 61738, + "arrow-left-right": 61739, + "arrow-left-short": 61740, + "arrow-left-square-fill": 61741, + "arrow-left-square": 61742, + "arrow-left": 61743, + "arrow-repeat": 61744, + "arrow-return-left": 61745, + "arrow-return-right": 61746, + "arrow-right-circle-fill": 61747, + "arrow-right-circle": 61748, + "arrow-right-short": 61749, + "arrow-right-square-fill": 61750, + "arrow-right-square": 61751, + "arrow-right": 61752, + "arrow-up-circle-fill": 61753, + "arrow-up-circle": 61754, + "arrow-up-left-circle-fill": 61755, + "arrow-up-left-circle": 61756, + "arrow-up-left-square-fill": 61757, + "arrow-up-left-square": 61758, + "arrow-up-left": 61759, + "arrow-up-right-circle-fill": 61760, + "arrow-up-right-circle": 61761, + "arrow-up-right-square-fill": 61762, + "arrow-up-right-square": 61763, + "arrow-up-right": 61764, + "arrow-up-short": 61765, + "arrow-up-square-fill": 61766, + "arrow-up-square": 61767, + "arrow-up": 61768, + "arrows-angle-contract": 61769, + "arrows-angle-expand": 61770, + "arrows-collapse": 61771, + "arrows-expand": 61772, + "arrows-fullscreen": 61773, + "arrows-move": 61774, + "aspect-ratio-fill": 61775, + "aspect-ratio": 61776, + "asterisk": 61777, + "at": 61778, + "award-fill": 61779, + "award": 61780, + "back": 61781, + "backspace-fill": 61782, + "backspace-reverse-fill": 61783, + "backspace-reverse": 61784, + "backspace": 61785, + "badge-3d-fill": 61786, + "badge-3d": 61787, + "badge-4k-fill": 61788, + "badge-4k": 61789, + "badge-8k-fill": 61790, + "badge-8k": 61791, + "badge-ad-fill": 61792, + "badge-ad": 61793, + "badge-ar-fill": 61794, + "badge-ar": 61795, + "badge-cc-fill": 61796, + "badge-cc": 61797, + "badge-hd-fill": 61798, + "badge-hd": 61799, + "badge-tm-fill": 61800, + "badge-tm": 61801, + "badge-vo-fill": 61802, + "badge-vo": 61803, + "badge-vr-fill": 61804, + "badge-vr": 61805, + "badge-wc-fill": 61806, + "badge-wc": 61807, + "bag-check-fill": 61808, + "bag-check": 61809, + "bag-dash-fill": 61810, + "bag-dash": 61811, + "bag-fill": 61812, + "bag-plus-fill": 61813, + "bag-plus": 61814, + "bag-x-fill": 61815, + "bag-x": 61816, + "bag": 61817, + "bar-chart-fill": 61818, + "bar-chart-line-fill": 61819, + "bar-chart-line": 61820, + "bar-chart-steps": 61821, + "bar-chart": 61822, + "basket-fill": 61823, + "basket": 61824, + "basket2-fill": 61825, + "basket2": 61826, + "basket3-fill": 61827, + "basket3": 61828, + "battery-charging": 61829, + "battery-full": 61830, + "battery-half": 61831, + "battery": 61832, + "bell-fill": 61833, + "bell": 61834, + "bezier": 61835, + "bezier2": 61836, + "bicycle": 61837, + "binoculars-fill": 61838, + "binoculars": 61839, + "blockquote-left": 61840, + "blockquote-right": 61841, + "book-fill": 61842, + "book-half": 61843, + "book": 61844, + "bookmark-check-fill": 61845, + "bookmark-check": 61846, + "bookmark-dash-fill": 61847, + "bookmark-dash": 61848, + "bookmark-fill": 61849, + "bookmark-heart-fill": 61850, + "bookmark-heart": 61851, + "bookmark-plus-fill": 61852, + "bookmark-plus": 61853, + "bookmark-star-fill": 61854, + "bookmark-star": 61855, + "bookmark-x-fill": 61856, + "bookmark-x": 61857, + "bookmark": 61858, + "bookmarks-fill": 61859, + "bookmarks": 61860, + "bookshelf": 61861, + "bootstrap-fill": 61862, + "bootstrap-reboot": 61863, + "bootstrap": 61864, + "border-all": 61865, + "border-bottom": 61866, + "border-center": 61867, + "border-inner": 61868, + "border-left": 61869, + "border-middle": 61870, + "border-outer": 61871, + "border-right": 61872, + "border-style": 61873, + "border-top": 61874, + "border-width": 61875, + "border": 61876, + "bounding-box-circles": 61877, + "bounding-box": 61878, + "box-arrow-down-left": 61879, + "box-arrow-down-right": 61880, + "box-arrow-down": 61881, + "box-arrow-in-down-left": 61882, + "box-arrow-in-down-right": 61883, + "box-arrow-in-down": 61884, + "box-arrow-in-left": 61885, + "box-arrow-in-right": 61886, + "box-arrow-in-up-left": 61887, + "box-arrow-in-up-right": 61888, + "box-arrow-in-up": 61889, + "box-arrow-left": 61890, + "box-arrow-right": 61891, + "box-arrow-up-left": 61892, + "box-arrow-up-right": 61893, + "box-arrow-up": 61894, + "box-seam": 61895, + "box": 61896, + "braces": 61897, + "bricks": 61898, + "briefcase-fill": 61899, + "briefcase": 61900, + "brightness-alt-high-fill": 61901, + "brightness-alt-high": 61902, + "brightness-alt-low-fill": 61903, + "brightness-alt-low": 61904, + "brightness-high-fill": 61905, + "brightness-high": 61906, + "brightness-low-fill": 61907, + "brightness-low": 61908, + "broadcast-pin": 61909, + "broadcast": 61910, + "brush-fill": 61911, + "brush": 61912, + "bucket-fill": 61913, + "bucket": 61914, + "bug-fill": 61915, + "bug": 61916, + "building": 61917, + "bullseye": 61918, + "calculator-fill": 61919, + "calculator": 61920, + "calendar-check-fill": 61921, + "calendar-check": 61922, + "calendar-date-fill": 61923, + "calendar-date": 61924, + "calendar-day-fill": 61925, + "calendar-day": 61926, + "calendar-event-fill": 61927, + "calendar-event": 61928, + "calendar-fill": 61929, + "calendar-minus-fill": 61930, + "calendar-minus": 61931, + "calendar-month-fill": 61932, + "calendar-month": 61933, + "calendar-plus-fill": 61934, + "calendar-plus": 61935, + "calendar-range-fill": 61936, + "calendar-range": 61937, + "calendar-week-fill": 61938, + "calendar-week": 61939, + "calendar-x-fill": 61940, + "calendar-x": 61941, + "calendar": 61942, + "calendar2-check-fill": 61943, + "calendar2-check": 61944, + "calendar2-date-fill": 61945, + "calendar2-date": 61946, + "calendar2-day-fill": 61947, + "calendar2-day": 61948, + "calendar2-event-fill": 61949, + "calendar2-event": 61950, + "calendar2-fill": 61951, + "calendar2-minus-fill": 61952, + "calendar2-minus": 61953, + "calendar2-month-fill": 61954, + "calendar2-month": 61955, + "calendar2-plus-fill": 61956, + "calendar2-plus": 61957, + "calendar2-range-fill": 61958, + "calendar2-range": 61959, + "calendar2-week-fill": 61960, + "calendar2-week": 61961, + "calendar2-x-fill": 61962, + "calendar2-x": 61963, + "calendar2": 61964, + "calendar3-event-fill": 61965, + "calendar3-event": 61966, + "calendar3-fill": 61967, + "calendar3-range-fill": 61968, + "calendar3-range": 61969, + "calendar3-week-fill": 61970, + "calendar3-week": 61971, + "calendar3": 61972, + "calendar4-event": 61973, + "calendar4-range": 61974, + "calendar4-week": 61975, + "calendar4": 61976, + "camera-fill": 61977, + "camera-reels-fill": 61978, + "camera-reels": 61979, + "camera-video-fill": 61980, + "camera-video-off-fill": 61981, + "camera-video-off": 61982, + "camera-video": 61983, + "camera": 61984, + "camera2": 61985, + "capslock-fill": 61986, + "capslock": 61987, + "card-checklist": 61988, + "card-heading": 61989, + "card-image": 61990, + "card-list": 61991, + "card-text": 61992, + "caret-down-fill": 61993, + "caret-down-square-fill": 61994, + "caret-down-square": 61995, + "caret-down": 61996, + "caret-left-fill": 61997, + "caret-left-square-fill": 61998, + "caret-left-square": 61999, + "caret-left": 62000, + "caret-right-fill": 62001, + "caret-right-square-fill": 62002, + "caret-right-square": 62003, + "caret-right": 62004, + "caret-up-fill": 62005, + "caret-up-square-fill": 62006, + "caret-up-square": 62007, + "caret-up": 62008, + "cart-check-fill": 62009, + "cart-check": 62010, + "cart-dash-fill": 62011, + "cart-dash": 62012, + "cart-fill": 62013, + "cart-plus-fill": 62014, + "cart-plus": 62015, + "cart-x-fill": 62016, + "cart-x": 62017, + "cart": 62018, + "cart2": 62019, + "cart3": 62020, + "cart4": 62021, + "cash-stack": 62022, + "cash": 62023, + "cast": 62024, + "chat-dots-fill": 62025, + "chat-dots": 62026, + "chat-fill": 62027, + "chat-left-dots-fill": 62028, + "chat-left-dots": 62029, + "chat-left-fill": 62030, + "chat-left-quote-fill": 62031, + "chat-left-quote": 62032, + "chat-left-text-fill": 62033, + "chat-left-text": 62034, + "chat-left": 62035, + "chat-quote-fill": 62036, + "chat-quote": 62037, + "chat-right-dots-fill": 62038, + "chat-right-dots": 62039, + "chat-right-fill": 62040, + "chat-right-quote-fill": 62041, + "chat-right-quote": 62042, + "chat-right-text-fill": 62043, + "chat-right-text": 62044, + "chat-right": 62045, + "chat-square-dots-fill": 62046, + "chat-square-dots": 62047, + "chat-square-fill": 62048, + "chat-square-quote-fill": 62049, + "chat-square-quote": 62050, + "chat-square-text-fill": 62051, + "chat-square-text": 62052, + "chat-square": 62053, + "chat-text-fill": 62054, + "chat-text": 62055, + "chat": 62056, + "check-all": 62057, + "check-circle-fill": 62058, + "check-circle": 62059, + "check-square-fill": 62060, + "check-square": 62061, + "check": 62062, + "check2-all": 62063, + "check2-circle": 62064, + "check2-square": 62065, + "check2": 62066, + "chevron-bar-contract": 62067, + "chevron-bar-down": 62068, + "chevron-bar-expand": 62069, + "chevron-bar-left": 62070, + "chevron-bar-right": 62071, + "chevron-bar-up": 62072, + "chevron-compact-down": 62073, + "chevron-compact-left": 62074, + "chevron-compact-right": 62075, + "chevron-compact-up": 62076, + "chevron-contract": 62077, + "chevron-double-down": 62078, + "chevron-double-left": 62079, + "chevron-double-right": 62080, + "chevron-double-up": 62081, + "chevron-down": 62082, + "chevron-expand": 62083, + "chevron-left": 62084, + "chevron-right": 62085, + "chevron-up": 62086, + "circle-fill": 62087, + "circle-half": 62088, + "circle-square": 62089, + "circle": 62090, + "clipboard-check": 62091, + "clipboard-data": 62092, + "clipboard-minus": 62093, + "clipboard-plus": 62094, + "clipboard-x": 62095, + "clipboard": 62096, + "clock-fill": 62097, + "clock-history": 62098, + "clock": 62099, + "cloud-arrow-down-fill": 62100, + "cloud-arrow-down": 62101, + "cloud-arrow-up-fill": 62102, + "cloud-arrow-up": 62103, + "cloud-check-fill": 62104, + "cloud-check": 62105, + "cloud-download-fill": 62106, + "cloud-download": 62107, + "cloud-drizzle-fill": 62108, + "cloud-drizzle": 62109, + "cloud-fill": 62110, + "cloud-fog-fill": 62111, + "cloud-fog": 62112, + "cloud-fog2-fill": 62113, + "cloud-fog2": 62114, + "cloud-hail-fill": 62115, + "cloud-hail": 62116, + "cloud-haze-1": 62117, + "cloud-haze-fill": 62118, + "cloud-haze": 62119, + "cloud-haze2-fill": 62120, + "cloud-lightning-fill": 62121, + "cloud-lightning-rain-fill": 62122, + "cloud-lightning-rain": 62123, + "cloud-lightning": 62124, + "cloud-minus-fill": 62125, + "cloud-minus": 62126, + "cloud-moon-fill": 62127, + "cloud-moon": 62128, + "cloud-plus-fill": 62129, + "cloud-plus": 62130, + "cloud-rain-fill": 62131, + "cloud-rain-heavy-fill": 62132, + "cloud-rain-heavy": 62133, + "cloud-rain": 62134, + "cloud-slash-fill": 62135, + "cloud-slash": 62136, + "cloud-sleet-fill": 62137, + "cloud-sleet": 62138, + "cloud-snow-fill": 62139, + "cloud-snow": 62140, + "cloud-sun-fill": 62141, + "cloud-sun": 62142, + "cloud-upload-fill": 62143, + "cloud-upload": 62144, + "cloud": 62145, + "clouds-fill": 62146, + "clouds": 62147, + "cloudy-fill": 62148, + "cloudy": 62149, + "code-slash": 62150, + "code-square": 62151, + "code": 62152, + "collection-fill": 62153, + "collection-play-fill": 62154, + "collection-play": 62155, + "collection": 62156, + "columns-gap": 62157, + "columns": 62158, + "command": 62159, + "compass-fill": 62160, + "compass": 62161, + "cone-striped": 62162, + "cone": 62163, + "controller": 62164, + "cpu-fill": 62165, + "cpu": 62166, + "credit-card-2-back-fill": 62167, + "credit-card-2-back": 62168, + "credit-card-2-front-fill": 62169, + "credit-card-2-front": 62170, + "credit-card-fill": 62171, + "credit-card": 62172, + "crop": 62173, + "cup-fill": 62174, + "cup-straw": 62175, + "cup": 62176, + "cursor-fill": 62177, + "cursor-text": 62178, + "cursor": 62179, + "dash-circle-dotted": 62180, + "dash-circle-fill": 62181, + "dash-circle": 62182, + "dash-square-dotted": 62183, + "dash-square-fill": 62184, + "dash-square": 62185, + "dash": 62186, + "diagram-2-fill": 62187, + "diagram-2": 62188, + "diagram-3-fill": 62189, + "diagram-3": 62190, + "diamond-fill": 62191, + "diamond-half": 62192, + "diamond": 62193, + "dice-1-fill": 62194, + "dice-1": 62195, + "dice-2-fill": 62196, + "dice-2": 62197, + "dice-3-fill": 62198, + "dice-3": 62199, + "dice-4-fill": 62200, + "dice-4": 62201, + "dice-5-fill": 62202, + "dice-5": 62203, + "dice-6-fill": 62204, + "dice-6": 62205, + "disc-fill": 62206, + "disc": 62207, + "discord": 62208, + "display-fill": 62209, + "display": 62210, + "distribute-horizontal": 62211, + "distribute-vertical": 62212, + "door-closed-fill": 62213, + "door-closed": 62214, + "door-open-fill": 62215, + "door-open": 62216, + "dot": 62217, + "download": 62218, + "droplet-fill": 62219, + "droplet-half": 62220, + "droplet": 62221, + "earbuds": 62222, + "easel-fill": 62223, + "easel": 62224, + "egg-fill": 62225, + "egg-fried": 62226, + "egg": 62227, + "eject-fill": 62228, + "eject": 62229, + "emoji-angry-fill": 62230, + "emoji-angry": 62231, + "emoji-dizzy-fill": 62232, + "emoji-dizzy": 62233, + "emoji-expressionless-fill": 62234, + "emoji-expressionless": 62235, + "emoji-frown-fill": 62236, + "emoji-frown": 62237, + "emoji-heart-eyes-fill": 62238, + "emoji-heart-eyes": 62239, + "emoji-laughing-fill": 62240, + "emoji-laughing": 62241, + "emoji-neutral-fill": 62242, + "emoji-neutral": 62243, + "emoji-smile-fill": 62244, + "emoji-smile-upside-down-fill": 62245, + "emoji-smile-upside-down": 62246, + "emoji-smile": 62247, + "emoji-sunglasses-fill": 62248, + "emoji-sunglasses": 62249, + "emoji-wink-fill": 62250, + "emoji-wink": 62251, + "envelope-fill": 62252, + "envelope-open-fill": 62253, + "envelope-open": 62254, + "envelope": 62255, + "eraser-fill": 62256, + "eraser": 62257, + "exclamation-circle-fill": 62258, + "exclamation-circle": 62259, + "exclamation-diamond-fill": 62260, + "exclamation-diamond": 62261, + "exclamation-octagon-fill": 62262, + "exclamation-octagon": 62263, + "exclamation-square-fill": 62264, + "exclamation-square": 62265, + "exclamation-triangle-fill": 62266, + "exclamation-triangle": 62267, + "exclamation": 62268, + "exclude": 62269, + "eye-fill": 62270, + "eye-slash-fill": 62271, + "eye-slash": 62272, + "eye": 62273, + "eyedropper": 62274, + "eyeglasses": 62275, + "facebook": 62276, + "file-arrow-down-fill": 62277, + "file-arrow-down": 62278, + "file-arrow-up-fill": 62279, + "file-arrow-up": 62280, + "file-bar-graph-fill": 62281, + "file-bar-graph": 62282, + "file-binary-fill": 62283, + "file-binary": 62284, + "file-break-fill": 62285, + "file-break": 62286, + "file-check-fill": 62287, + "file-check": 62288, + "file-code-fill": 62289, + "file-code": 62290, + "file-diff-fill": 62291, + "file-diff": 62292, + "file-earmark-arrow-down-fill": 62293, + "file-earmark-arrow-down": 62294, + "file-earmark-arrow-up-fill": 62295, + "file-earmark-arrow-up": 62296, + "file-earmark-bar-graph-fill": 62297, + "file-earmark-bar-graph": 62298, + "file-earmark-binary-fill": 62299, + "file-earmark-binary": 62300, + "file-earmark-break-fill": 62301, + "file-earmark-break": 62302, + "file-earmark-check-fill": 62303, + "file-earmark-check": 62304, + "file-earmark-code-fill": 62305, + "file-earmark-code": 62306, + "file-earmark-diff-fill": 62307, + "file-earmark-diff": 62308, + "file-earmark-easel-fill": 62309, + "file-earmark-easel": 62310, + "file-earmark-excel-fill": 62311, + "file-earmark-excel": 62312, + "file-earmark-fill": 62313, + "file-earmark-font-fill": 62314, + "file-earmark-font": 62315, + "file-earmark-image-fill": 62316, + "file-earmark-image": 62317, + "file-earmark-lock-fill": 62318, + "file-earmark-lock": 62319, + "file-earmark-lock2-fill": 62320, + "file-earmark-lock2": 62321, + "file-earmark-medical-fill": 62322, + "file-earmark-medical": 62323, + "file-earmark-minus-fill": 62324, + "file-earmark-minus": 62325, + "file-earmark-music-fill": 62326, + "file-earmark-music": 62327, + "file-earmark-person-fill": 62328, + "file-earmark-person": 62329, + "file-earmark-play-fill": 62330, + "file-earmark-play": 62331, + "file-earmark-plus-fill": 62332, + "file-earmark-plus": 62333, + "file-earmark-post-fill": 62334, + "file-earmark-post": 62335, + "file-earmark-ppt-fill": 62336, + "file-earmark-ppt": 62337, + "file-earmark-richtext-fill": 62338, + "file-earmark-richtext": 62339, + "file-earmark-ruled-fill": 62340, + "file-earmark-ruled": 62341, + "file-earmark-slides-fill": 62342, + "file-earmark-slides": 62343, + "file-earmark-spreadsheet-fill": 62344, + "file-earmark-spreadsheet": 62345, + "file-earmark-text-fill": 62346, + "file-earmark-text": 62347, + "file-earmark-word-fill": 62348, + "file-earmark-word": 62349, + "file-earmark-x-fill": 62350, + "file-earmark-x": 62351, + "file-earmark-zip-fill": 62352, + "file-earmark-zip": 62353, + "file-earmark": 62354, + "file-easel-fill": 62355, + "file-easel": 62356, + "file-excel-fill": 62357, + "file-excel": 62358, + "file-fill": 62359, + "file-font-fill": 62360, + "file-font": 62361, + "file-image-fill": 62362, + "file-image": 62363, + "file-lock-fill": 62364, + "file-lock": 62365, + "file-lock2-fill": 62366, + "file-lock2": 62367, + "file-medical-fill": 62368, + "file-medical": 62369, + "file-minus-fill": 62370, + "file-minus": 62371, + "file-music-fill": 62372, + "file-music": 62373, + "file-person-fill": 62374, + "file-person": 62375, + "file-play-fill": 62376, + "file-play": 62377, + "file-plus-fill": 62378, + "file-plus": 62379, + "file-post-fill": 62380, + "file-post": 62381, + "file-ppt-fill": 62382, + "file-ppt": 62383, + "file-richtext-fill": 62384, + "file-richtext": 62385, + "file-ruled-fill": 62386, + "file-ruled": 62387, + "file-slides-fill": 62388, + "file-slides": 62389, + "file-spreadsheet-fill": 62390, + "file-spreadsheet": 62391, + "file-text-fill": 62392, + "file-text": 62393, + "file-word-fill": 62394, + "file-word": 62395, + "file-x-fill": 62396, + "file-x": 62397, + "file-zip-fill": 62398, + "file-zip": 62399, + "file": 62400, + "files-alt": 62401, + "files": 62402, + "film": 62403, + "filter-circle-fill": 62404, + "filter-circle": 62405, + "filter-left": 62406, + "filter-right": 62407, + "filter-square-fill": 62408, + "filter-square": 62409, + "filter": 62410, + "flag-fill": 62411, + "flag": 62412, + "flower1": 62413, + "flower2": 62414, + "flower3": 62415, + "folder-check": 62416, + "folder-fill": 62417, + "folder-minus": 62418, + "folder-plus": 62419, + "folder-symlink-fill": 62420, + "folder-symlink": 62421, + "folder-x": 62422, + "folder": 62423, + "folder2-open": 62424, + "folder2": 62425, + "fonts": 62426, + "forward-fill": 62427, + "forward": 62428, + "front": 62429, + "fullscreen-exit": 62430, + "fullscreen": 62431, + "funnel-fill": 62432, + "funnel": 62433, + "gear-fill": 62434, + "gear-wide-connected": 62435, + "gear-wide": 62436, + "gear": 62437, + "gem": 62438, + "geo-alt-fill": 62439, + "geo-alt": 62440, + "geo-fill": 62441, + "geo": 62442, + "gift-fill": 62443, + "gift": 62444, + "github": 62445, + "globe": 62446, + "globe2": 62447, + "google": 62448, + "graph-down": 62449, + "graph-up": 62450, + "grid-1x2-fill": 62451, + "grid-1x2": 62452, + "grid-3x2-gap-fill": 62453, + "grid-3x2-gap": 62454, + "grid-3x2": 62455, + "grid-3x3-gap-fill": 62456, + "grid-3x3-gap": 62457, + "grid-3x3": 62458, + "grid-fill": 62459, + "grid": 62460, + "grip-horizontal": 62461, + "grip-vertical": 62462, + "hammer": 62463, + "hand-index-fill": 62464, + "hand-index-thumb-fill": 62465, + "hand-index-thumb": 62466, + "hand-index": 62467, + "hand-thumbs-down-fill": 62468, + "hand-thumbs-down": 62469, + "hand-thumbs-up-fill": 62470, + "hand-thumbs-up": 62471, + "handbag-fill": 62472, + "handbag": 62473, + "hash": 62474, + "hdd-fill": 62475, + "hdd-network-fill": 62476, + "hdd-network": 62477, + "hdd-rack-fill": 62478, + "hdd-rack": 62479, + "hdd-stack-fill": 62480, + "hdd-stack": 62481, + "hdd": 62482, + "headphones": 62483, + "headset": 62484, + "heart-fill": 62485, + "heart-half": 62486, + "heart": 62487, + "heptagon-fill": 62488, + "heptagon-half": 62489, + "heptagon": 62490, + "hexagon-fill": 62491, + "hexagon-half": 62492, + "hexagon": 62493, + "hourglass-bottom": 62494, + "hourglass-split": 62495, + "hourglass-top": 62496, + "hourglass": 62497, + "house-door-fill": 62498, + "house-door": 62499, + "house-fill": 62500, + "house": 62501, + "hr": 62502, + "hurricane": 62503, + "image-alt": 62504, + "image-fill": 62505, + "image": 62506, + "images": 62507, + "inbox-fill": 62508, + "inbox": 62509, + "inboxes-fill": 62510, + "inboxes": 62511, + "info-circle-fill": 62512, + "info-circle": 62513, + "info-square-fill": 62514, + "info-square": 62515, + "info": 62516, + "input-cursor-text": 62517, + "input-cursor": 62518, + "instagram": 62519, + "intersect": 62520, + "journal-album": 62521, + "journal-arrow-down": 62522, + "journal-arrow-up": 62523, + "journal-bookmark-fill": 62524, + "journal-bookmark": 62525, + "journal-check": 62526, + "journal-code": 62527, + "journal-medical": 62528, + "journal-minus": 62529, + "journal-plus": 62530, + "journal-richtext": 62531, + "journal-text": 62532, + "journal-x": 62533, + "journal": 62534, + "journals": 62535, + "joystick": 62536, + "justify-left": 62537, + "justify-right": 62538, + "justify": 62539, + "kanban-fill": 62540, + "kanban": 62541, + "key-fill": 62542, + "key": 62543, + "keyboard-fill": 62544, + "keyboard": 62545, + "ladder": 62546, + "lamp-fill": 62547, + "lamp": 62548, + "laptop-fill": 62549, + "laptop": 62550, + "layer-backward": 62551, + "layer-forward": 62552, + "layers-fill": 62553, + "layers-half": 62554, + "layers": 62555, + "layout-sidebar-inset-reverse": 62556, + "layout-sidebar-inset": 62557, + "layout-sidebar-reverse": 62558, + "layout-sidebar": 62559, + "layout-split": 62560, + "layout-text-sidebar-reverse": 62561, + "layout-text-sidebar": 62562, + "layout-text-window-reverse": 62563, + "layout-text-window": 62564, + "layout-three-columns": 62565, + "layout-wtf": 62566, + "life-preserver": 62567, + "lightbulb-fill": 62568, + "lightbulb-off-fill": 62569, + "lightbulb-off": 62570, + "lightbulb": 62571, + "lightning-charge-fill": 62572, + "lightning-charge": 62573, + "lightning-fill": 62574, + "lightning": 62575, + "link-45deg": 62576, + "link": 62577, + "linkedin": 62578, + "list-check": 62579, + "list-nested": 62580, + "list-ol": 62581, + "list-stars": 62582, + "list-task": 62583, + "list-ul": 62584, + "list": 62585, + "lock-fill": 62586, + "lock": 62587, + "mailbox": 62588, + "mailbox2": 62589, + "map-fill": 62590, + "map": 62591, + "markdown-fill": 62592, + "markdown": 62593, + "mask": 62594, + "megaphone-fill": 62595, + "megaphone": 62596, + "menu-app-fill": 62597, + "menu-app": 62598, + "menu-button-fill": 62599, + "menu-button-wide-fill": 62600, + "menu-button-wide": 62601, + "menu-button": 62602, + "menu-down": 62603, + "menu-up": 62604, + "mic-fill": 62605, + "mic-mute-fill": 62606, + "mic-mute": 62607, + "mic": 62608, + "minecart-loaded": 62609, + "minecart": 62610, + "moisture": 62611, + "moon-fill": 62612, + "moon-stars-fill": 62613, + "moon-stars": 62614, + "moon": 62615, + "mouse-fill": 62616, + "mouse": 62617, + "mouse2-fill": 62618, + "mouse2": 62619, + "mouse3-fill": 62620, + "mouse3": 62621, + "music-note-beamed": 62622, + "music-note-list": 62623, + "music-note": 62624, + "music-player-fill": 62625, + "music-player": 62626, + "newspaper": 62627, + "node-minus-fill": 62628, + "node-minus": 62629, + "node-plus-fill": 62630, + "node-plus": 62631, + "nut-fill": 62632, + "nut": 62633, + "octagon-fill": 62634, + "octagon-half": 62635, + "octagon": 62636, + "option": 62637, + "outlet": 62638, + "paint-bucket": 62639, + "palette-fill": 62640, + "palette": 62641, + "palette2": 62642, + "paperclip": 62643, + "paragraph": 62644, + "patch-check-fill": 62645, + "patch-check": 62646, + "patch-exclamation-fill": 62647, + "patch-exclamation": 62648, + "patch-minus-fill": 62649, + "patch-minus": 62650, + "patch-plus-fill": 62651, + "patch-plus": 62652, + "patch-question-fill": 62653, + "patch-question": 62654, + "pause-btn-fill": 62655, + "pause-btn": 62656, + "pause-circle-fill": 62657, + "pause-circle": 62658, + "pause-fill": 62659, + "pause": 62660, + "peace-fill": 62661, + "peace": 62662, + "pen-fill": 62663, + "pen": 62664, + "pencil-fill": 62665, + "pencil-square": 62666, + "pencil": 62667, + "pentagon-fill": 62668, + "pentagon-half": 62669, + "pentagon": 62670, + "people-fill": 62671, + "people": 62672, + "percent": 62673, + "person-badge-fill": 62674, + "person-badge": 62675, + "person-bounding-box": 62676, + "person-check-fill": 62677, + "person-check": 62678, + "person-circle": 62679, + "person-dash-fill": 62680, + "person-dash": 62681, + "person-fill": 62682, + "person-lines-fill": 62683, + "person-plus-fill": 62684, + "person-plus": 62685, + "person-square": 62686, + "person-x-fill": 62687, + "person-x": 62688, + "person": 62689, + "phone-fill": 62690, + "phone-landscape-fill": 62691, + "phone-landscape": 62692, + "phone-vibrate-fill": 62693, + "phone-vibrate": 62694, + "phone": 62695, + "pie-chart-fill": 62696, + "pie-chart": 62697, + "pin-angle-fill": 62698, + "pin-angle": 62699, + "pin-fill": 62700, + "pin": 62701, + "pip-fill": 62702, + "pip": 62703, + "play-btn-fill": 62704, + "play-btn": 62705, + "play-circle-fill": 62706, + "play-circle": 62707, + "play-fill": 62708, + "play": 62709, + "plug-fill": 62710, + "plug": 62711, + "plus-circle-dotted": 62712, + "plus-circle-fill": 62713, + "plus-circle": 62714, + "plus-square-dotted": 62715, + "plus-square-fill": 62716, + "plus-square": 62717, + "plus": 62718, + "power": 62719, + "printer-fill": 62720, + "printer": 62721, + "puzzle-fill": 62722, + "puzzle": 62723, + "question-circle-fill": 62724, + "question-circle": 62725, + "question-diamond-fill": 62726, + "question-diamond": 62727, + "question-octagon-fill": 62728, + "question-octagon": 62729, + "question-square-fill": 62730, + "question-square": 62731, + "question": 62732, + "rainbow": 62733, + "receipt-cutoff": 62734, + "receipt": 62735, + "reception-0": 62736, + "reception-1": 62737, + "reception-2": 62738, + "reception-3": 62739, + "reception-4": 62740, + "record-btn-fill": 62741, + "record-btn": 62742, + "record-circle-fill": 62743, + "record-circle": 62744, + "record-fill": 62745, + "record": 62746, + "record2-fill": 62747, + "record2": 62748, + "reply-all-fill": 62749, + "reply-all": 62750, + "reply-fill": 62751, + "reply": 62752, + "rss-fill": 62753, + "rss": 62754, + "rulers": 62755, + "save-fill": 62756, + "save": 62757, + "save2-fill": 62758, + "save2": 62759, + "scissors": 62760, + "screwdriver": 62761, + "search": 62762, + "segmented-nav": 62763, + "server": 62764, + "share-fill": 62765, + "share": 62766, + "shield-check": 62767, + "shield-exclamation": 62768, + "shield-fill-check": 62769, + "shield-fill-exclamation": 62770, + "shield-fill-minus": 62771, + "shield-fill-plus": 62772, + "shield-fill-x": 62773, + "shield-fill": 62774, + "shield-lock-fill": 62775, + "shield-lock": 62776, + "shield-minus": 62777, + "shield-plus": 62778, + "shield-shaded": 62779, + "shield-slash-fill": 62780, + "shield-slash": 62781, + "shield-x": 62782, + "shield": 62783, + "shift-fill": 62784, + "shift": 62785, + "shop-window": 62786, + "shop": 62787, + "shuffle": 62788, + "signpost-2-fill": 62789, + "signpost-2": 62790, + "signpost-fill": 62791, + "signpost-split-fill": 62792, + "signpost-split": 62793, + "signpost": 62794, + "sim-fill": 62795, + "sim": 62796, + "skip-backward-btn-fill": 62797, + "skip-backward-btn": 62798, + "skip-backward-circle-fill": 62799, + "skip-backward-circle": 62800, + "skip-backward-fill": 62801, + "skip-backward": 62802, + "skip-end-btn-fill": 62803, + "skip-end-btn": 62804, + "skip-end-circle-fill": 62805, + "skip-end-circle": 62806, + "skip-end-fill": 62807, + "skip-end": 62808, + "skip-forward-btn-fill": 62809, + "skip-forward-btn": 62810, + "skip-forward-circle-fill": 62811, + "skip-forward-circle": 62812, + "skip-forward-fill": 62813, + "skip-forward": 62814, + "skip-start-btn-fill": 62815, + "skip-start-btn": 62816, + "skip-start-circle-fill": 62817, + "skip-start-circle": 62818, + "skip-start-fill": 62819, + "skip-start": 62820, + "slack": 62821, + "slash-circle-fill": 62822, + "slash-circle": 62823, + "slash-square-fill": 62824, + "slash-square": 62825, + "slash": 62826, + "sliders": 62827, + "smartwatch": 62828, + "snow": 62829, + "snow2": 62830, + "snow3": 62831, + "sort-alpha-down-alt": 62832, + "sort-alpha-down": 62833, + "sort-alpha-up-alt": 62834, + "sort-alpha-up": 62835, + "sort-down-alt": 62836, + "sort-down": 62837, + "sort-numeric-down-alt": 62838, + "sort-numeric-down": 62839, + "sort-numeric-up-alt": 62840, + "sort-numeric-up": 62841, + "sort-up-alt": 62842, + "sort-up": 62843, + "soundwave": 62844, + "speaker-fill": 62845, + "speaker": 62846, + "speedometer": 62847, + "speedometer2": 62848, + "spellcheck": 62849, + "square-fill": 62850, + "square-half": 62851, + "square": 62852, + "stack": 62853, + "star-fill": 62854, + "star-half": 62855, + "star": 62856, + "stars": 62857, + "stickies-fill": 62858, + "stickies": 62859, + "sticky-fill": 62860, + "sticky": 62861, + "stop-btn-fill": 62862, + "stop-btn": 62863, + "stop-circle-fill": 62864, + "stop-circle": 62865, + "stop-fill": 62866, + "stop": 62867, + "stoplights-fill": 62868, + "stoplights": 62869, + "stopwatch-fill": 62870, + "stopwatch": 62871, + "subtract": 62872, + "suit-club-fill": 62873, + "suit-club": 62874, + "suit-diamond-fill": 62875, + "suit-diamond": 62876, + "suit-heart-fill": 62877, + "suit-heart": 62878, + "suit-spade-fill": 62879, + "suit-spade": 62880, + "sun-fill": 62881, + "sun": 62882, + "sunglasses": 62883, + "sunrise-fill": 62884, + "sunrise": 62885, + "sunset-fill": 62886, + "sunset": 62887, + "symmetry-horizontal": 62888, + "symmetry-vertical": 62889, + "table": 62890, + "tablet-fill": 62891, + "tablet-landscape-fill": 62892, + "tablet-landscape": 62893, + "tablet": 62894, + "tag-fill": 62895, + "tag": 62896, + "tags-fill": 62897, + "tags": 62898, + "telegram": 62899, + "telephone-fill": 62900, + "telephone-forward-fill": 62901, + "telephone-forward": 62902, + "telephone-inbound-fill": 62903, + "telephone-inbound": 62904, + "telephone-minus-fill": 62905, + "telephone-minus": 62906, + "telephone-outbound-fill": 62907, + "telephone-outbound": 62908, + "telephone-plus-fill": 62909, + "telephone-plus": 62910, + "telephone-x-fill": 62911, + "telephone-x": 62912, + "telephone": 62913, + "terminal-fill": 62914, + "terminal": 62915, + "text-center": 62916, + "text-indent-left": 62917, + "text-indent-right": 62918, + "text-left": 62919, + "text-paragraph": 62920, + "text-right": 62921, + "textarea-resize": 62922, + "textarea-t": 62923, + "textarea": 62924, + "thermometer-half": 62925, + "thermometer-high": 62926, + "thermometer-low": 62927, + "thermometer-snow": 62928, + "thermometer-sun": 62929, + "thermometer": 62930, + "three-dots-vertical": 62931, + "three-dots": 62932, + "toggle-off": 62933, + "toggle-on": 62934, + "toggle2-off": 62935, + "toggle2-on": 62936, + "toggles": 62937, + "toggles2": 62938, + "tools": 62939, + "tornado": 62940, + "trash-fill": 62941, + "trash": 62942, + "trash2-fill": 62943, + "trash2": 62944, + "tree-fill": 62945, + "tree": 62946, + "triangle-fill": 62947, + "triangle-half": 62948, + "triangle": 62949, + "trophy-fill": 62950, + "trophy": 62951, + "tropical-storm": 62952, + "truck-flatbed": 62953, + "truck": 62954, + "tsunami": 62955, + "tv-fill": 62956, + "tv": 62957, + "twitch": 62958, + "twitter": 62959, + "type-bold": 62960, + "type-h1": 62961, + "type-h2": 62962, + "type-h3": 62963, + "type-italic": 62964, + "type-strikethrough": 62965, + "type-underline": 62966, + "type": 62967, + "ui-checks-grid": 62968, + "ui-checks": 62969, + "ui-radios-grid": 62970, + "ui-radios": 62971, + "umbrella-fill": 62972, + "umbrella": 62973, + "union": 62974, + "unlock-fill": 62975, + "unlock": 62976, + "upc-scan": 62977, + "upc": 62978, + "upload": 62979, + "vector-pen": 62980, + "view-list": 62981, + "view-stacked": 62982, + "vinyl-fill": 62983, + "vinyl": 62984, + "voicemail": 62985, + "volume-down-fill": 62986, + "volume-down": 62987, + "volume-mute-fill": 62988, + "volume-mute": 62989, + "volume-off-fill": 62990, + "volume-off": 62991, + "volume-up-fill": 62992, + "volume-up": 62993, + "vr": 62994, + "wallet-fill": 62995, + "wallet": 62996, + "wallet2": 62997, + "watch": 62998, + "water": 62999, + "whatsapp": 63000, + "wifi-1": 63001, + "wifi-2": 63002, + "wifi-off": 63003, + "wifi": 63004, + "wind": 63005, + "window-dock": 63006, + "window-sidebar": 63007, + "window": 63008, + "wrench": 63009, + "x-circle-fill": 63010, + "x-circle": 63011, + "x-diamond-fill": 63012, + "x-diamond": 63013, + "x-octagon-fill": 63014, + "x-octagon": 63015, + "x-square-fill": 63016, + "x-square": 63017, + "x": 63018, + "youtube": 63019, + "zoom-in": 63020, + "zoom-out": 63021, + "bank": 63022, + "bank2": 63023, + "bell-slash-fill": 63024, + "bell-slash": 63025, + "cash-coin": 63026, + "check-lg": 63027, + "coin": 63028, + "currency-bitcoin": 63029, + "currency-dollar": 63030, + "currency-euro": 63031, + "currency-exchange": 63032, + "currency-pound": 63033, + "currency-yen": 63034, + "dash-lg": 63035, + "exclamation-lg": 63036, + "file-earmark-pdf-fill": 63037, + "file-earmark-pdf": 63038, + "file-pdf-fill": 63039, + "file-pdf": 63040, + "gender-ambiguous": 63041, + "gender-female": 63042, + "gender-male": 63043, + "gender-trans": 63044, + "headset-vr": 63045, + "info-lg": 63046, + "mastodon": 63047, + "messenger": 63048, + "piggy-bank-fill": 63049, + "piggy-bank": 63050, + "pin-map-fill": 63051, + "pin-map": 63052, + "plus-lg": 63053, + "question-lg": 63054, + "recycle": 63055, + "reddit": 63056, + "safe-fill": 63057, + "safe2-fill": 63058, + "safe2": 63059, + "sd-card-fill": 63060, + "sd-card": 63061, + "skype": 63062, + "slash-lg": 63063, + "translate": 63064, + "x-lg": 63065, + "safe": 63066, + "apple": 63067, + "microsoft": 63069, + "windows": 63070, + "behance": 63068, + "dribbble": 63071, + "line": 63072, + "medium": 63073, + "paypal": 63074, + "pinterest": 63075, + "signal": 63076, + "snapchat": 63077, + "spotify": 63078, + "stack-overflow": 63079, + "strava": 63080, + "wordpress": 63081, + "vimeo": 63082, + "activity": 63083, + "easel2-fill": 63084, + "easel2": 63085, + "easel3-fill": 63086, + "easel3": 63087, + "fan": 63088, + "fingerprint": 63089, + "graph-down-arrow": 63090, + "graph-up-arrow": 63091, + "hypnotize": 63092, + "magic": 63093, + "person-rolodex": 63094, + "person-video": 63095, + "person-video2": 63096, + "person-video3": 63097, + "person-workspace": 63098, + "radioactive": 63099, + "webcam-fill": 63100, + "webcam": 63101, + "yin-yang": 63102, + "bandaid-fill": 63104, + "bandaid": 63105, + "bluetooth": 63106, + "body-text": 63107, + "boombox": 63108, + "boxes": 63109, + "dpad-fill": 63110, + "dpad": 63111, + "ear-fill": 63112, + "ear": 63113, + "envelope-check-1": 63114, + "envelope-check-fill": 63115, + "envelope-check": 63116, + "envelope-dash-1": 63117, + "envelope-dash-fill": 63118, + "envelope-dash": 63119, + "envelope-exclamation-1": 63120, + "envelope-exclamation-fill": 63121, + "envelope-exclamation": 63122, + "envelope-plus-fill": 63123, + "envelope-plus": 63124, + "envelope-slash-1": 63125, + "envelope-slash-fill": 63126, + "envelope-slash": 63127, + "envelope-x-1": 63128, + "envelope-x-fill": 63129, + "envelope-x": 63130, + "explicit-fill": 63131, + "explicit": 63132, + "git": 63133, + "infinity": 63134, + "list-columns-reverse": 63135, + "list-columns": 63136, + "meta": 63137, + "mortorboard-fill": 63138, + "mortorboard": 63139, + "nintendo-switch": 63140, + "pc-display-horizontal": 63141, + "pc-display": 63142, + "pc-horizontal": 63143, + "pc": 63144, + "playstation": 63145, + "plus-slash-minus": 63146, + "projector-fill": 63147, + "projector": 63148, + "qr-code-scan": 63149, + "qr-code": 63150, + "quora": 63151, + "quote": 63152, + "robot": 63153, + "send-check-fill": 63154, + "send-check": 63155, + "send-dash-fill": 63156, + "send-dash": 63157, + "send-exclamation-1": 63158, + "send-exclamation-fill": 63159, + "send-exclamation": 63160, + "send-fill": 63161, + "send-plus-fill": 63162, + "send-plus": 63163, + "send-slash-fill": 63164, + "send-slash": 63165, + "send-x-fill": 63166, + "send-x": 63167, + "send": 63168, + "steam": 63169, + "terminal-dash-1": 63170, + "terminal-dash": 63171, + "terminal-plus": 63172, + "terminal-split": 63173, + "ticket-detailed-fill": 63174, + "ticket-detailed": 63175, + "ticket-fill": 63176, + "ticket-perforated-fill": 63177, + "ticket-perforated": 63178, + "ticket": 63179, + "tiktok": 63180, + "window-dash": 63181, + "window-desktop": 63182, + "window-fullscreen": 63183, + "window-plus": 63184, + "window-split": 63185, + "window-stack": 63186, + "window-x": 63187, + "xbox": 63188, + "ethernet": 63189, + "hdmi-fill": 63190, + "hdmi": 63191, + "usb-c-fill": 63192, + "usb-c": 63193, + "usb-fill": 63194, + "usb-plug-fill": 63195, + "usb-plug": 63196, + "usb-symbol": 63197, + "usb": 63198, + "boombox-fill": 63199, + "displayport-1": 63200, + "displayport": 63201, + "gpu-card": 63202, + "memory": 63203, + "modem-fill": 63204, + "modem": 63205, + "motherboard-fill": 63206, + "motherboard": 63207, + "optical-audio-fill": 63208, + "optical-audio": 63209, + "pci-card": 63210, + "router-fill": 63211, + "router": 63212, + "ssd-fill": 63213, + "ssd": 63214, + "thunderbolt-fill": 63215, + "thunderbolt": 63216, + "usb-drive-fill": 63217, + "usb-drive": 63218, + "usb-micro-fill": 63219, + "usb-micro": 63220, + "usb-mini-fill": 63221, + "usb-mini": 63222, + "cloud-haze2": 63223, + "device-hdd-fill": 63224, + "device-hdd": 63225, + "device-ssd-fill": 63226, + "device-ssd": 63227, + "displayport-fill": 63228, + "mortarboard-fill": 63229, + "mortarboard": 63230, + "terminal-x": 63231, + "arrow-through-heart-fill": 63232, + "arrow-through-heart": 63233, + "badge-sd-fill": 63234, + "badge-sd": 63235, + "bag-heart-fill": 63236, + "bag-heart": 63237, + "balloon-fill": 63238, + "balloon-heart-fill": 63239, + "balloon-heart": 63240, + "balloon": 63241, + "box2-fill": 63242, + "box2-heart-fill": 63243, + "box2-heart": 63244, + "box2": 63245, + "braces-asterisk": 63246, + "calendar-heart-fill": 63247, + "calendar-heart": 63248, + "calendar2-heart-fill": 63249, + "calendar2-heart": 63250, + "chat-heart-fill": 63251, + "chat-heart": 63252, + "chat-left-heart-fill": 63253, + "chat-left-heart": 63254, + "chat-right-heart-fill": 63255, + "chat-right-heart": 63256, + "chat-square-heart-fill": 63257, + "chat-square-heart": 63258, + "clipboard-check-fill": 63259, + "clipboard-data-fill": 63260, + "clipboard-fill": 63261, + "clipboard-heart-fill": 63262, + "clipboard-heart": 63263, + "clipboard-minus-fill": 63264, + "clipboard-plus-fill": 63265, + "clipboard-pulse": 63266, + "clipboard-x-fill": 63267, + "clipboard2-check-fill": 63268, + "clipboard2-check": 63269, + "clipboard2-data-fill": 63270, + "clipboard2-data": 63271, + "clipboard2-fill": 63272, + "clipboard2-heart-fill": 63273, + "clipboard2-heart": 63274, + "clipboard2-minus-fill": 63275, + "clipboard2-minus": 63276, + "clipboard2-plus-fill": 63277, + "clipboard2-plus": 63278, + "clipboard2-pulse-fill": 63279, + "clipboard2-pulse": 63280, + "clipboard2-x-fill": 63281, + "clipboard2-x": 63282, + "clipboard2": 63283, + "emoji-kiss-fill": 63284, + "emoji-kiss": 63285, + "envelope-heart-fill": 63286, + "envelope-heart": 63287, + "envelope-open-heart-fill": 63288, + "envelope-open-heart": 63289, + "envelope-paper-fill": 63290, + "envelope-paper-heart-fill": 63291, + "envelope-paper-heart": 63292, + "envelope-paper": 63293, + "filetype-aac": 63294, + "filetype-ai": 63295, + "filetype-bmp": 63296, + "filetype-cs": 63297, + "filetype-css": 63298, + "filetype-csv": 63299, + "filetype-doc": 63300, + "filetype-docx": 63301, + "filetype-exe": 63302, + "filetype-gif": 63303, + "filetype-heic": 63304, + "filetype-html": 63305, + "filetype-java": 63306, + "filetype-jpg": 63307, + "filetype-js": 63308, + "filetype-jsx": 63309, + "filetype-key": 63310, + "filetype-m4p": 63311, + "filetype-md": 63312, + "filetype-mdx": 63313, + "filetype-mov": 63314, + "filetype-mp3": 63315, + "filetype-mp4": 63316, + "filetype-otf": 63317, + "filetype-pdf": 63318, + "filetype-php": 63319, + "filetype-png": 63320, + "filetype-ppt-1": 63321, + "filetype-ppt": 63322, + "filetype-psd": 63323, + "filetype-py": 63324, + "filetype-raw": 63325, + "filetype-rb": 63326, + "filetype-sass": 63327, + "filetype-scss": 63328, + "filetype-sh": 63329, + "filetype-svg": 63330, + "filetype-tiff": 63331, + "filetype-tsx": 63332, + "filetype-ttf": 63333, + "filetype-txt": 63334, + "filetype-wav": 63335, + "filetype-woff": 63336, + "filetype-xls-1": 63337, + "filetype-xls": 63338, + "filetype-xml": 63339, + "filetype-yml": 63340, + "heart-arrow": 63341, + "heart-pulse-fill": 63342, + "heart-pulse": 63343, + "heartbreak-fill": 63344, + "heartbreak": 63345, + "hearts": 63346, + "hospital-fill": 63347, + "hospital": 63348, + "house-heart-fill": 63349, + "house-heart": 63350, + "incognito": 63351, + "magnet-fill": 63352, + "magnet": 63353, + "person-heart": 63354, + "person-hearts": 63355, + "phone-flip": 63356, + "plugin": 63357, + "postage-fill": 63358, + "postage-heart-fill": 63359, + "postage-heart": 63360, + "postage": 63361, + "postcard-fill": 63362, + "postcard-heart-fill": 63363, + "postcard-heart": 63364, + "postcard": 63365, + "search-heart-fill": 63366, + "search-heart": 63367, + "sliders2-vertical": 63368, + "sliders2": 63369, + "trash3-fill": 63370, + "trash3": 63371, + "valentine": 63372, + "valentine2": 63373, + "wrench-adjustable-circle-fill": 63374, + "wrench-adjustable-circle": 63375, + "wrench-adjustable": 63376, + "filetype-json": 63377, + "filetype-pptx": 63378, + "filetype-xlsx": 63379, + "1-circle-1": 63380, + "1-circle-fill-1": 63381, + "1-circle-fill": 63382, + "1-circle": 63383, + "1-square-fill": 63384, + "1-square": 63385, + "2-circle-1": 63386, + "2-circle-fill-1": 63387, + "2-circle-fill": 63388, + "2-circle": 63389, + "2-square-fill": 63390, + "2-square": 63391, + "3-circle-1": 63392, + "3-circle-fill-1": 63393, + "3-circle-fill": 63394, + "3-circle": 63395, + "3-square-fill": 63396, + "3-square": 63397, + "4-circle-1": 63398, + "4-circle-fill-1": 63399, + "4-circle-fill": 63400, + "4-circle": 63401, + "4-square-fill": 63402, + "4-square": 63403, + "5-circle-1": 63404, + "5-circle-fill-1": 63405, + "5-circle-fill": 63406, + "5-circle": 63407, + "5-square-fill": 63408, + "5-square": 63409, + "6-circle-1": 63410, + "6-circle-fill-1": 63411, + "6-circle-fill": 63412, + "6-circle": 63413, + "6-square-fill": 63414, + "6-square": 63415, + "7-circle-1": 63416, + "7-circle-fill-1": 63417, + "7-circle-fill": 63418, + "7-circle": 63419, + "7-square-fill": 63420, + "7-square": 63421, + "8-circle-1": 63422, + "8-circle-fill-1": 63423, + "8-circle-fill": 63424, + "8-circle": 63425, + "8-square-fill": 63426, + "8-square": 63427, + "9-circle-1": 63428, + "9-circle-fill-1": 63429, + "9-circle-fill": 63430, + "9-circle": 63431, + "9-square-fill": 63432, + "9-square": 63433, + "airplane-engines-fill": 63434, + "airplane-engines": 63435, + "airplane-fill": 63436, + "airplane": 63437, + "alexa": 63438, + "alipay": 63439, + "android": 63440, + "android2": 63441, + "box-fill": 63442, + "box-seam-fill": 63443, + "browser-chrome": 63444, + "browser-edge": 63445, + "browser-firefox": 63446, + "browser-safari": 63447, + "c-circle-1": 63448, + "c-circle-fill-1": 63449, + "c-circle-fill": 63450, + "c-circle": 63451, + "c-square-fill": 63452, + "c-square": 63453, + "capsule-pill": 63454, + "capsule": 63455, + "car-front-fill": 63456, + "car-front": 63457, + "cassette-fill": 63458, + "cassette": 63459, + "cc-circle-1": 63460, + "cc-circle-fill-1": 63461, + "cc-circle-fill": 63462, + "cc-circle": 63463, + "cc-square-fill": 63464, + "cc-square": 63465, + "cup-hot-fill": 63466, + "cup-hot": 63467, + "currency-rupee": 63468, + "dropbox": 63469, + "escape": 63470, + "fast-forward-btn-fill": 63471, + "fast-forward-btn": 63472, + "fast-forward-circle-fill": 63473, + "fast-forward-circle": 63474, + "fast-forward-fill": 63475, + "fast-forward": 63476, + "filetype-sql": 63477, + "fire": 63478, + "google-play": 63479, + "h-circle-1": 63480, + "h-circle-fill-1": 63481, + "h-circle-fill": 63482, + "h-circle": 63483, + "h-square-fill": 63484, + "h-square": 63485, + "indent": 63486, + "lungs-fill": 63487, + "lungs": 63488, + "microsoft-teams": 63489, + "p-circle-1": 63490, + "p-circle-fill-1": 63491, + "p-circle-fill": 63492, + "p-circle": 63493, + "p-square-fill": 63494, + "p-square": 63495, + "pass-fill": 63496, + "pass": 63497, + "prescription": 63498, + "prescription2": 63499, + "r-circle-1": 63500, + "r-circle-fill-1": 63501, + "r-circle-fill": 63502, + "r-circle": 63503, + "r-square-fill": 63504, + "r-square": 63505, + "repeat-1": 63506, + "repeat": 63507, + "rewind-btn-fill": 63508, + "rewind-btn": 63509, + "rewind-circle-fill": 63510, + "rewind-circle": 63511, + "rewind-fill": 63512, + "rewind": 63513, + "train-freight-front-fill": 63514, + "train-freight-front": 63515, + "train-front-fill": 63516, + "train-front": 63517, + "train-lightrail-front-fill": 63518, + "train-lightrail-front": 63519, + "truck-front-fill": 63520, + "truck-front": 63521, + "ubuntu": 63522, + "unindent": 63523, + "unity": 63524, + "universal-access-circle": 63525, + "universal-access": 63526, + "virus": 63527, + "virus2": 63528, + "wechat": 63529, + "yelp": 63530, + "sign-stop-fill": 63531, + "sign-stop-lights-fill": 63532, + "sign-stop-lights": 63533, + "sign-stop": 63534, + "sign-turn-left-fill": 63535, + "sign-turn-left": 63536, + "sign-turn-right-fill": 63537, + "sign-turn-right": 63538, + "sign-turn-slight-left-fill": 63539, + "sign-turn-slight-left": 63540, + "sign-turn-slight-right-fill": 63541, + "sign-turn-slight-right": 63542, + "sign-yield-fill": 63543, + "sign-yield": 63544, + "ev-station-fill": 63545, + "ev-station": 63546, + "fuel-pump-diesel-fill": 63547, + "fuel-pump-diesel": 63548, + "fuel-pump-fill": 63549, + "fuel-pump": 63550 +} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.min.css b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.min.css new file mode 100644 index 000000000..617cbc561 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.min.css @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using clean-css v5.3.0. + * Original file: /npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +@font-face{font-display:block;font-family:bootstrap-icons;src:url("fonts/bootstrap-icons.woff2?8d200481aa7f02a2d63a331fc782cfaf") format("woff2"),url("fonts/bootstrap-icons.woff?8d200481aa7f02a2d63a331fc782cfaf") format("woff")}.bi::before,[class*=" bi-"]::before,[class^=bi-]::before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123::before{content:"\f67f"}.bi-alarm-fill::before{content:"\f101"}.bi-alarm::before{content:"\f102"}.bi-align-bottom::before{content:"\f103"}.bi-align-center::before{content:"\f104"}.bi-align-end::before{content:"\f105"}.bi-align-middle::before{content:"\f106"}.bi-align-start::before{content:"\f107"}.bi-align-top::before{content:"\f108"}.bi-alt::before{content:"\f109"}.bi-app-indicator::before{content:"\f10a"}.bi-app::before{content:"\f10b"}.bi-archive-fill::before{content:"\f10c"}.bi-archive::before{content:"\f10d"}.bi-arrow-90deg-down::before{content:"\f10e"}.bi-arrow-90deg-left::before{content:"\f10f"}.bi-arrow-90deg-right::before{content:"\f110"}.bi-arrow-90deg-up::before{content:"\f111"}.bi-arrow-bar-down::before{content:"\f112"}.bi-arrow-bar-left::before{content:"\f113"}.bi-arrow-bar-right::before{content:"\f114"}.bi-arrow-bar-up::before{content:"\f115"}.bi-arrow-clockwise::before{content:"\f116"}.bi-arrow-counterclockwise::before{content:"\f117"}.bi-arrow-down-circle-fill::before{content:"\f118"}.bi-arrow-down-circle::before{content:"\f119"}.bi-arrow-down-left-circle-fill::before{content:"\f11a"}.bi-arrow-down-left-circle::before{content:"\f11b"}.bi-arrow-down-left-square-fill::before{content:"\f11c"}.bi-arrow-down-left-square::before{content:"\f11d"}.bi-arrow-down-left::before{content:"\f11e"}.bi-arrow-down-right-circle-fill::before{content:"\f11f"}.bi-arrow-down-right-circle::before{content:"\f120"}.bi-arrow-down-right-square-fill::before{content:"\f121"}.bi-arrow-down-right-square::before{content:"\f122"}.bi-arrow-down-right::before{content:"\f123"}.bi-arrow-down-short::before{content:"\f124"}.bi-arrow-down-square-fill::before{content:"\f125"}.bi-arrow-down-square::before{content:"\f126"}.bi-arrow-down-up::before{content:"\f127"}.bi-arrow-down::before{content:"\f128"}.bi-arrow-left-circle-fill::before{content:"\f129"}.bi-arrow-left-circle::before{content:"\f12a"}.bi-arrow-left-right::before{content:"\f12b"}.bi-arrow-left-short::before{content:"\f12c"}.bi-arrow-left-square-fill::before{content:"\f12d"}.bi-arrow-left-square::before{content:"\f12e"}.bi-arrow-left::before{content:"\f12f"}.bi-arrow-repeat::before{content:"\f130"}.bi-arrow-return-left::before{content:"\f131"}.bi-arrow-return-right::before{content:"\f132"}.bi-arrow-right-circle-fill::before{content:"\f133"}.bi-arrow-right-circle::before{content:"\f134"}.bi-arrow-right-short::before{content:"\f135"}.bi-arrow-right-square-fill::before{content:"\f136"}.bi-arrow-right-square::before{content:"\f137"}.bi-arrow-right::before{content:"\f138"}.bi-arrow-up-circle-fill::before{content:"\f139"}.bi-arrow-up-circle::before{content:"\f13a"}.bi-arrow-up-left-circle-fill::before{content:"\f13b"}.bi-arrow-up-left-circle::before{content:"\f13c"}.bi-arrow-up-left-square-fill::before{content:"\f13d"}.bi-arrow-up-left-square::before{content:"\f13e"}.bi-arrow-up-left::before{content:"\f13f"}.bi-arrow-up-right-circle-fill::before{content:"\f140"}.bi-arrow-up-right-circle::before{content:"\f141"}.bi-arrow-up-right-square-fill::before{content:"\f142"}.bi-arrow-up-right-square::before{content:"\f143"}.bi-arrow-up-right::before{content:"\f144"}.bi-arrow-up-short::before{content:"\f145"}.bi-arrow-up-square-fill::before{content:"\f146"}.bi-arrow-up-square::before{content:"\f147"}.bi-arrow-up::before{content:"\f148"}.bi-arrows-angle-contract::before{content:"\f149"}.bi-arrows-angle-expand::before{content:"\f14a"}.bi-arrows-collapse::before{content:"\f14b"}.bi-arrows-expand::before{content:"\f14c"}.bi-arrows-fullscreen::before{content:"\f14d"}.bi-arrows-move::before{content:"\f14e"}.bi-aspect-ratio-fill::before{content:"\f14f"}.bi-aspect-ratio::before{content:"\f150"}.bi-asterisk::before{content:"\f151"}.bi-at::before{content:"\f152"}.bi-award-fill::before{content:"\f153"}.bi-award::before{content:"\f154"}.bi-back::before{content:"\f155"}.bi-backspace-fill::before{content:"\f156"}.bi-backspace-reverse-fill::before{content:"\f157"}.bi-backspace-reverse::before{content:"\f158"}.bi-backspace::before{content:"\f159"}.bi-badge-3d-fill::before{content:"\f15a"}.bi-badge-3d::before{content:"\f15b"}.bi-badge-4k-fill::before{content:"\f15c"}.bi-badge-4k::before{content:"\f15d"}.bi-badge-8k-fill::before{content:"\f15e"}.bi-badge-8k::before{content:"\f15f"}.bi-badge-ad-fill::before{content:"\f160"}.bi-badge-ad::before{content:"\f161"}.bi-badge-ar-fill::before{content:"\f162"}.bi-badge-ar::before{content:"\f163"}.bi-badge-cc-fill::before{content:"\f164"}.bi-badge-cc::before{content:"\f165"}.bi-badge-hd-fill::before{content:"\f166"}.bi-badge-hd::before{content:"\f167"}.bi-badge-tm-fill::before{content:"\f168"}.bi-badge-tm::before{content:"\f169"}.bi-badge-vo-fill::before{content:"\f16a"}.bi-badge-vo::before{content:"\f16b"}.bi-badge-vr-fill::before{content:"\f16c"}.bi-badge-vr::before{content:"\f16d"}.bi-badge-wc-fill::before{content:"\f16e"}.bi-badge-wc::before{content:"\f16f"}.bi-bag-check-fill::before{content:"\f170"}.bi-bag-check::before{content:"\f171"}.bi-bag-dash-fill::before{content:"\f172"}.bi-bag-dash::before{content:"\f173"}.bi-bag-fill::before{content:"\f174"}.bi-bag-plus-fill::before{content:"\f175"}.bi-bag-plus::before{content:"\f176"}.bi-bag-x-fill::before{content:"\f177"}.bi-bag-x::before{content:"\f178"}.bi-bag::before{content:"\f179"}.bi-bar-chart-fill::before{content:"\f17a"}.bi-bar-chart-line-fill::before{content:"\f17b"}.bi-bar-chart-line::before{content:"\f17c"}.bi-bar-chart-steps::before{content:"\f17d"}.bi-bar-chart::before{content:"\f17e"}.bi-basket-fill::before{content:"\f17f"}.bi-basket::before{content:"\f180"}.bi-basket2-fill::before{content:"\f181"}.bi-basket2::before{content:"\f182"}.bi-basket3-fill::before{content:"\f183"}.bi-basket3::before{content:"\f184"}.bi-battery-charging::before{content:"\f185"}.bi-battery-full::before{content:"\f186"}.bi-battery-half::before{content:"\f187"}.bi-battery::before{content:"\f188"}.bi-bell-fill::before{content:"\f189"}.bi-bell::before{content:"\f18a"}.bi-bezier::before{content:"\f18b"}.bi-bezier2::before{content:"\f18c"}.bi-bicycle::before{content:"\f18d"}.bi-binoculars-fill::before{content:"\f18e"}.bi-binoculars::before{content:"\f18f"}.bi-blockquote-left::before{content:"\f190"}.bi-blockquote-right::before{content:"\f191"}.bi-book-fill::before{content:"\f192"}.bi-book-half::before{content:"\f193"}.bi-book::before{content:"\f194"}.bi-bookmark-check-fill::before{content:"\f195"}.bi-bookmark-check::before{content:"\f196"}.bi-bookmark-dash-fill::before{content:"\f197"}.bi-bookmark-dash::before{content:"\f198"}.bi-bookmark-fill::before{content:"\f199"}.bi-bookmark-heart-fill::before{content:"\f19a"}.bi-bookmark-heart::before{content:"\f19b"}.bi-bookmark-plus-fill::before{content:"\f19c"}.bi-bookmark-plus::before{content:"\f19d"}.bi-bookmark-star-fill::before{content:"\f19e"}.bi-bookmark-star::before{content:"\f19f"}.bi-bookmark-x-fill::before{content:"\f1a0"}.bi-bookmark-x::before{content:"\f1a1"}.bi-bookmark::before{content:"\f1a2"}.bi-bookmarks-fill::before{content:"\f1a3"}.bi-bookmarks::before{content:"\f1a4"}.bi-bookshelf::before{content:"\f1a5"}.bi-bootstrap-fill::before{content:"\f1a6"}.bi-bootstrap-reboot::before{content:"\f1a7"}.bi-bootstrap::before{content:"\f1a8"}.bi-border-all::before{content:"\f1a9"}.bi-border-bottom::before{content:"\f1aa"}.bi-border-center::before{content:"\f1ab"}.bi-border-inner::before{content:"\f1ac"}.bi-border-left::before{content:"\f1ad"}.bi-border-middle::before{content:"\f1ae"}.bi-border-outer::before{content:"\f1af"}.bi-border-right::before{content:"\f1b0"}.bi-border-style::before{content:"\f1b1"}.bi-border-top::before{content:"\f1b2"}.bi-border-width::before{content:"\f1b3"}.bi-border::before{content:"\f1b4"}.bi-bounding-box-circles::before{content:"\f1b5"}.bi-bounding-box::before{content:"\f1b6"}.bi-box-arrow-down-left::before{content:"\f1b7"}.bi-box-arrow-down-right::before{content:"\f1b8"}.bi-box-arrow-down::before{content:"\f1b9"}.bi-box-arrow-in-down-left::before{content:"\f1ba"}.bi-box-arrow-in-down-right::before{content:"\f1bb"}.bi-box-arrow-in-down::before{content:"\f1bc"}.bi-box-arrow-in-left::before{content:"\f1bd"}.bi-box-arrow-in-right::before{content:"\f1be"}.bi-box-arrow-in-up-left::before{content:"\f1bf"}.bi-box-arrow-in-up-right::before{content:"\f1c0"}.bi-box-arrow-in-up::before{content:"\f1c1"}.bi-box-arrow-left::before{content:"\f1c2"}.bi-box-arrow-right::before{content:"\f1c3"}.bi-box-arrow-up-left::before{content:"\f1c4"}.bi-box-arrow-up-right::before{content:"\f1c5"}.bi-box-arrow-up::before{content:"\f1c6"}.bi-box-seam::before{content:"\f1c7"}.bi-box::before{content:"\f1c8"}.bi-braces::before{content:"\f1c9"}.bi-bricks::before{content:"\f1ca"}.bi-briefcase-fill::before{content:"\f1cb"}.bi-briefcase::before{content:"\f1cc"}.bi-brightness-alt-high-fill::before{content:"\f1cd"}.bi-brightness-alt-high::before{content:"\f1ce"}.bi-brightness-alt-low-fill::before{content:"\f1cf"}.bi-brightness-alt-low::before{content:"\f1d0"}.bi-brightness-high-fill::before{content:"\f1d1"}.bi-brightness-high::before{content:"\f1d2"}.bi-brightness-low-fill::before{content:"\f1d3"}.bi-brightness-low::before{content:"\f1d4"}.bi-broadcast-pin::before{content:"\f1d5"}.bi-broadcast::before{content:"\f1d6"}.bi-brush-fill::before{content:"\f1d7"}.bi-brush::before{content:"\f1d8"}.bi-bucket-fill::before{content:"\f1d9"}.bi-bucket::before{content:"\f1da"}.bi-bug-fill::before{content:"\f1db"}.bi-bug::before{content:"\f1dc"}.bi-building::before{content:"\f1dd"}.bi-bullseye::before{content:"\f1de"}.bi-calculator-fill::before{content:"\f1df"}.bi-calculator::before{content:"\f1e0"}.bi-calendar-check-fill::before{content:"\f1e1"}.bi-calendar-check::before{content:"\f1e2"}.bi-calendar-date-fill::before{content:"\f1e3"}.bi-calendar-date::before{content:"\f1e4"}.bi-calendar-day-fill::before{content:"\f1e5"}.bi-calendar-day::before{content:"\f1e6"}.bi-calendar-event-fill::before{content:"\f1e7"}.bi-calendar-event::before{content:"\f1e8"}.bi-calendar-fill::before{content:"\f1e9"}.bi-calendar-minus-fill::before{content:"\f1ea"}.bi-calendar-minus::before{content:"\f1eb"}.bi-calendar-month-fill::before{content:"\f1ec"}.bi-calendar-month::before{content:"\f1ed"}.bi-calendar-plus-fill::before{content:"\f1ee"}.bi-calendar-plus::before{content:"\f1ef"}.bi-calendar-range-fill::before{content:"\f1f0"}.bi-calendar-range::before{content:"\f1f1"}.bi-calendar-week-fill::before{content:"\f1f2"}.bi-calendar-week::before{content:"\f1f3"}.bi-calendar-x-fill::before{content:"\f1f4"}.bi-calendar-x::before{content:"\f1f5"}.bi-calendar::before{content:"\f1f6"}.bi-calendar2-check-fill::before{content:"\f1f7"}.bi-calendar2-check::before{content:"\f1f8"}.bi-calendar2-date-fill::before{content:"\f1f9"}.bi-calendar2-date::before{content:"\f1fa"}.bi-calendar2-day-fill::before{content:"\f1fb"}.bi-calendar2-day::before{content:"\f1fc"}.bi-calendar2-event-fill::before{content:"\f1fd"}.bi-calendar2-event::before{content:"\f1fe"}.bi-calendar2-fill::before{content:"\f1ff"}.bi-calendar2-minus-fill::before{content:"\f200"}.bi-calendar2-minus::before{content:"\f201"}.bi-calendar2-month-fill::before{content:"\f202"}.bi-calendar2-month::before{content:"\f203"}.bi-calendar2-plus-fill::before{content:"\f204"}.bi-calendar2-plus::before{content:"\f205"}.bi-calendar2-range-fill::before{content:"\f206"}.bi-calendar2-range::before{content:"\f207"}.bi-calendar2-week-fill::before{content:"\f208"}.bi-calendar2-week::before{content:"\f209"}.bi-calendar2-x-fill::before{content:"\f20a"}.bi-calendar2-x::before{content:"\f20b"}.bi-calendar2::before{content:"\f20c"}.bi-calendar3-event-fill::before{content:"\f20d"}.bi-calendar3-event::before{content:"\f20e"}.bi-calendar3-fill::before{content:"\f20f"}.bi-calendar3-range-fill::before{content:"\f210"}.bi-calendar3-range::before{content:"\f211"}.bi-calendar3-week-fill::before{content:"\f212"}.bi-calendar3-week::before{content:"\f213"}.bi-calendar3::before{content:"\f214"}.bi-calendar4-event::before{content:"\f215"}.bi-calendar4-range::before{content:"\f216"}.bi-calendar4-week::before{content:"\f217"}.bi-calendar4::before{content:"\f218"}.bi-camera-fill::before{content:"\f219"}.bi-camera-reels-fill::before{content:"\f21a"}.bi-camera-reels::before{content:"\f21b"}.bi-camera-video-fill::before{content:"\f21c"}.bi-camera-video-off-fill::before{content:"\f21d"}.bi-camera-video-off::before{content:"\f21e"}.bi-camera-video::before{content:"\f21f"}.bi-camera::before{content:"\f220"}.bi-camera2::before{content:"\f221"}.bi-capslock-fill::before{content:"\f222"}.bi-capslock::before{content:"\f223"}.bi-card-checklist::before{content:"\f224"}.bi-card-heading::before{content:"\f225"}.bi-card-image::before{content:"\f226"}.bi-card-list::before{content:"\f227"}.bi-card-text::before{content:"\f228"}.bi-caret-down-fill::before{content:"\f229"}.bi-caret-down-square-fill::before{content:"\f22a"}.bi-caret-down-square::before{content:"\f22b"}.bi-caret-down::before{content:"\f22c"}.bi-caret-left-fill::before{content:"\f22d"}.bi-caret-left-square-fill::before{content:"\f22e"}.bi-caret-left-square::before{content:"\f22f"}.bi-caret-left::before{content:"\f230"}.bi-caret-right-fill::before{content:"\f231"}.bi-caret-right-square-fill::before{content:"\f232"}.bi-caret-right-square::before{content:"\f233"}.bi-caret-right::before{content:"\f234"}.bi-caret-up-fill::before{content:"\f235"}.bi-caret-up-square-fill::before{content:"\f236"}.bi-caret-up-square::before{content:"\f237"}.bi-caret-up::before{content:"\f238"}.bi-cart-check-fill::before{content:"\f239"}.bi-cart-check::before{content:"\f23a"}.bi-cart-dash-fill::before{content:"\f23b"}.bi-cart-dash::before{content:"\f23c"}.bi-cart-fill::before{content:"\f23d"}.bi-cart-plus-fill::before{content:"\f23e"}.bi-cart-plus::before{content:"\f23f"}.bi-cart-x-fill::before{content:"\f240"}.bi-cart-x::before{content:"\f241"}.bi-cart::before{content:"\f242"}.bi-cart2::before{content:"\f243"}.bi-cart3::before{content:"\f244"}.bi-cart4::before{content:"\f245"}.bi-cash-stack::before{content:"\f246"}.bi-cash::before{content:"\f247"}.bi-cast::before{content:"\f248"}.bi-chat-dots-fill::before{content:"\f249"}.bi-chat-dots::before{content:"\f24a"}.bi-chat-fill::before{content:"\f24b"}.bi-chat-left-dots-fill::before{content:"\f24c"}.bi-chat-left-dots::before{content:"\f24d"}.bi-chat-left-fill::before{content:"\f24e"}.bi-chat-left-quote-fill::before{content:"\f24f"}.bi-chat-left-quote::before{content:"\f250"}.bi-chat-left-text-fill::before{content:"\f251"}.bi-chat-left-text::before{content:"\f252"}.bi-chat-left::before{content:"\f253"}.bi-chat-quote-fill::before{content:"\f254"}.bi-chat-quote::before{content:"\f255"}.bi-chat-right-dots-fill::before{content:"\f256"}.bi-chat-right-dots::before{content:"\f257"}.bi-chat-right-fill::before{content:"\f258"}.bi-chat-right-quote-fill::before{content:"\f259"}.bi-chat-right-quote::before{content:"\f25a"}.bi-chat-right-text-fill::before{content:"\f25b"}.bi-chat-right-text::before{content:"\f25c"}.bi-chat-right::before{content:"\f25d"}.bi-chat-square-dots-fill::before{content:"\f25e"}.bi-chat-square-dots::before{content:"\f25f"}.bi-chat-square-fill::before{content:"\f260"}.bi-chat-square-quote-fill::before{content:"\f261"}.bi-chat-square-quote::before{content:"\f262"}.bi-chat-square-text-fill::before{content:"\f263"}.bi-chat-square-text::before{content:"\f264"}.bi-chat-square::before{content:"\f265"}.bi-chat-text-fill::before{content:"\f266"}.bi-chat-text::before{content:"\f267"}.bi-chat::before{content:"\f268"}.bi-check-all::before{content:"\f269"}.bi-check-circle-fill::before{content:"\f26a"}.bi-check-circle::before{content:"\f26b"}.bi-check-square-fill::before{content:"\f26c"}.bi-check-square::before{content:"\f26d"}.bi-check::before{content:"\f26e"}.bi-check2-all::before{content:"\f26f"}.bi-check2-circle::before{content:"\f270"}.bi-check2-square::before{content:"\f271"}.bi-check2::before{content:"\f272"}.bi-chevron-bar-contract::before{content:"\f273"}.bi-chevron-bar-down::before{content:"\f274"}.bi-chevron-bar-expand::before{content:"\f275"}.bi-chevron-bar-left::before{content:"\f276"}.bi-chevron-bar-right::before{content:"\f277"}.bi-chevron-bar-up::before{content:"\f278"}.bi-chevron-compact-down::before{content:"\f279"}.bi-chevron-compact-left::before{content:"\f27a"}.bi-chevron-compact-right::before{content:"\f27b"}.bi-chevron-compact-up::before{content:"\f27c"}.bi-chevron-contract::before{content:"\f27d"}.bi-chevron-double-down::before{content:"\f27e"}.bi-chevron-double-left::before{content:"\f27f"}.bi-chevron-double-right::before{content:"\f280"}.bi-chevron-double-up::before{content:"\f281"}.bi-chevron-down::before{content:"\f282"}.bi-chevron-expand::before{content:"\f283"}.bi-chevron-left::before{content:"\f284"}.bi-chevron-right::before{content:"\f285"}.bi-chevron-up::before{content:"\f286"}.bi-circle-fill::before{content:"\f287"}.bi-circle-half::before{content:"\f288"}.bi-circle-square::before{content:"\f289"}.bi-circle::before{content:"\f28a"}.bi-clipboard-check::before{content:"\f28b"}.bi-clipboard-data::before{content:"\f28c"}.bi-clipboard-minus::before{content:"\f28d"}.bi-clipboard-plus::before{content:"\f28e"}.bi-clipboard-x::before{content:"\f28f"}.bi-clipboard::before{content:"\f290"}.bi-clock-fill::before{content:"\f291"}.bi-clock-history::before{content:"\f292"}.bi-clock::before{content:"\f293"}.bi-cloud-arrow-down-fill::before{content:"\f294"}.bi-cloud-arrow-down::before{content:"\f295"}.bi-cloud-arrow-up-fill::before{content:"\f296"}.bi-cloud-arrow-up::before{content:"\f297"}.bi-cloud-check-fill::before{content:"\f298"}.bi-cloud-check::before{content:"\f299"}.bi-cloud-download-fill::before{content:"\f29a"}.bi-cloud-download::before{content:"\f29b"}.bi-cloud-drizzle-fill::before{content:"\f29c"}.bi-cloud-drizzle::before{content:"\f29d"}.bi-cloud-fill::before{content:"\f29e"}.bi-cloud-fog-fill::before{content:"\f29f"}.bi-cloud-fog::before{content:"\f2a0"}.bi-cloud-fog2-fill::before{content:"\f2a1"}.bi-cloud-fog2::before{content:"\f2a2"}.bi-cloud-hail-fill::before{content:"\f2a3"}.bi-cloud-hail::before{content:"\f2a4"}.bi-cloud-haze-1::before{content:"\f2a5"}.bi-cloud-haze-fill::before{content:"\f2a6"}.bi-cloud-haze::before{content:"\f2a7"}.bi-cloud-haze2-fill::before{content:"\f2a8"}.bi-cloud-lightning-fill::before{content:"\f2a9"}.bi-cloud-lightning-rain-fill::before{content:"\f2aa"}.bi-cloud-lightning-rain::before{content:"\f2ab"}.bi-cloud-lightning::before{content:"\f2ac"}.bi-cloud-minus-fill::before{content:"\f2ad"}.bi-cloud-minus::before{content:"\f2ae"}.bi-cloud-moon-fill::before{content:"\f2af"}.bi-cloud-moon::before{content:"\f2b0"}.bi-cloud-plus-fill::before{content:"\f2b1"}.bi-cloud-plus::before{content:"\f2b2"}.bi-cloud-rain-fill::before{content:"\f2b3"}.bi-cloud-rain-heavy-fill::before{content:"\f2b4"}.bi-cloud-rain-heavy::before{content:"\f2b5"}.bi-cloud-rain::before{content:"\f2b6"}.bi-cloud-slash-fill::before{content:"\f2b7"}.bi-cloud-slash::before{content:"\f2b8"}.bi-cloud-sleet-fill::before{content:"\f2b9"}.bi-cloud-sleet::before{content:"\f2ba"}.bi-cloud-snow-fill::before{content:"\f2bb"}.bi-cloud-snow::before{content:"\f2bc"}.bi-cloud-sun-fill::before{content:"\f2bd"}.bi-cloud-sun::before{content:"\f2be"}.bi-cloud-upload-fill::before{content:"\f2bf"}.bi-cloud-upload::before{content:"\f2c0"}.bi-cloud::before{content:"\f2c1"}.bi-clouds-fill::before{content:"\f2c2"}.bi-clouds::before{content:"\f2c3"}.bi-cloudy-fill::before{content:"\f2c4"}.bi-cloudy::before{content:"\f2c5"}.bi-code-slash::before{content:"\f2c6"}.bi-code-square::before{content:"\f2c7"}.bi-code::before{content:"\f2c8"}.bi-collection-fill::before{content:"\f2c9"}.bi-collection-play-fill::before{content:"\f2ca"}.bi-collection-play::before{content:"\f2cb"}.bi-collection::before{content:"\f2cc"}.bi-columns-gap::before{content:"\f2cd"}.bi-columns::before{content:"\f2ce"}.bi-command::before{content:"\f2cf"}.bi-compass-fill::before{content:"\f2d0"}.bi-compass::before{content:"\f2d1"}.bi-cone-striped::before{content:"\f2d2"}.bi-cone::before{content:"\f2d3"}.bi-controller::before{content:"\f2d4"}.bi-cpu-fill::before{content:"\f2d5"}.bi-cpu::before{content:"\f2d6"}.bi-credit-card-2-back-fill::before{content:"\f2d7"}.bi-credit-card-2-back::before{content:"\f2d8"}.bi-credit-card-2-front-fill::before{content:"\f2d9"}.bi-credit-card-2-front::before{content:"\f2da"}.bi-credit-card-fill::before{content:"\f2db"}.bi-credit-card::before{content:"\f2dc"}.bi-crop::before{content:"\f2dd"}.bi-cup-fill::before{content:"\f2de"}.bi-cup-straw::before{content:"\f2df"}.bi-cup::before{content:"\f2e0"}.bi-cursor-fill::before{content:"\f2e1"}.bi-cursor-text::before{content:"\f2e2"}.bi-cursor::before{content:"\f2e3"}.bi-dash-circle-dotted::before{content:"\f2e4"}.bi-dash-circle-fill::before{content:"\f2e5"}.bi-dash-circle::before{content:"\f2e6"}.bi-dash-square-dotted::before{content:"\f2e7"}.bi-dash-square-fill::before{content:"\f2e8"}.bi-dash-square::before{content:"\f2e9"}.bi-dash::before{content:"\f2ea"}.bi-diagram-2-fill::before{content:"\f2eb"}.bi-diagram-2::before{content:"\f2ec"}.bi-diagram-3-fill::before{content:"\f2ed"}.bi-diagram-3::before{content:"\f2ee"}.bi-diamond-fill::before{content:"\f2ef"}.bi-diamond-half::before{content:"\f2f0"}.bi-diamond::before{content:"\f2f1"}.bi-dice-1-fill::before{content:"\f2f2"}.bi-dice-1::before{content:"\f2f3"}.bi-dice-2-fill::before{content:"\f2f4"}.bi-dice-2::before{content:"\f2f5"}.bi-dice-3-fill::before{content:"\f2f6"}.bi-dice-3::before{content:"\f2f7"}.bi-dice-4-fill::before{content:"\f2f8"}.bi-dice-4::before{content:"\f2f9"}.bi-dice-5-fill::before{content:"\f2fa"}.bi-dice-5::before{content:"\f2fb"}.bi-dice-6-fill::before{content:"\f2fc"}.bi-dice-6::before{content:"\f2fd"}.bi-disc-fill::before{content:"\f2fe"}.bi-disc::before{content:"\f2ff"}.bi-discord::before{content:"\f300"}.bi-display-fill::before{content:"\f301"}.bi-display::before{content:"\f302"}.bi-distribute-horizontal::before{content:"\f303"}.bi-distribute-vertical::before{content:"\f304"}.bi-door-closed-fill::before{content:"\f305"}.bi-door-closed::before{content:"\f306"}.bi-door-open-fill::before{content:"\f307"}.bi-door-open::before{content:"\f308"}.bi-dot::before{content:"\f309"}.bi-download::before{content:"\f30a"}.bi-droplet-fill::before{content:"\f30b"}.bi-droplet-half::before{content:"\f30c"}.bi-droplet::before{content:"\f30d"}.bi-earbuds::before{content:"\f30e"}.bi-easel-fill::before{content:"\f30f"}.bi-easel::before{content:"\f310"}.bi-egg-fill::before{content:"\f311"}.bi-egg-fried::before{content:"\f312"}.bi-egg::before{content:"\f313"}.bi-eject-fill::before{content:"\f314"}.bi-eject::before{content:"\f315"}.bi-emoji-angry-fill::before{content:"\f316"}.bi-emoji-angry::before{content:"\f317"}.bi-emoji-dizzy-fill::before{content:"\f318"}.bi-emoji-dizzy::before{content:"\f319"}.bi-emoji-expressionless-fill::before{content:"\f31a"}.bi-emoji-expressionless::before{content:"\f31b"}.bi-emoji-frown-fill::before{content:"\f31c"}.bi-emoji-frown::before{content:"\f31d"}.bi-emoji-heart-eyes-fill::before{content:"\f31e"}.bi-emoji-heart-eyes::before{content:"\f31f"}.bi-emoji-laughing-fill::before{content:"\f320"}.bi-emoji-laughing::before{content:"\f321"}.bi-emoji-neutral-fill::before{content:"\f322"}.bi-emoji-neutral::before{content:"\f323"}.bi-emoji-smile-fill::before{content:"\f324"}.bi-emoji-smile-upside-down-fill::before{content:"\f325"}.bi-emoji-smile-upside-down::before{content:"\f326"}.bi-emoji-smile::before{content:"\f327"}.bi-emoji-sunglasses-fill::before{content:"\f328"}.bi-emoji-sunglasses::before{content:"\f329"}.bi-emoji-wink-fill::before{content:"\f32a"}.bi-emoji-wink::before{content:"\f32b"}.bi-envelope-fill::before{content:"\f32c"}.bi-envelope-open-fill::before{content:"\f32d"}.bi-envelope-open::before{content:"\f32e"}.bi-envelope::before{content:"\f32f"}.bi-eraser-fill::before{content:"\f330"}.bi-eraser::before{content:"\f331"}.bi-exclamation-circle-fill::before{content:"\f332"}.bi-exclamation-circle::before{content:"\f333"}.bi-exclamation-diamond-fill::before{content:"\f334"}.bi-exclamation-diamond::before{content:"\f335"}.bi-exclamation-octagon-fill::before{content:"\f336"}.bi-exclamation-octagon::before{content:"\f337"}.bi-exclamation-square-fill::before{content:"\f338"}.bi-exclamation-square::before{content:"\f339"}.bi-exclamation-triangle-fill::before{content:"\f33a"}.bi-exclamation-triangle::before{content:"\f33b"}.bi-exclamation::before{content:"\f33c"}.bi-exclude::before{content:"\f33d"}.bi-eye-fill::before{content:"\f33e"}.bi-eye-slash-fill::before{content:"\f33f"}.bi-eye-slash::before{content:"\f340"}.bi-eye::before{content:"\f341"}.bi-eyedropper::before{content:"\f342"}.bi-eyeglasses::before{content:"\f343"}.bi-facebook::before{content:"\f344"}.bi-file-arrow-down-fill::before{content:"\f345"}.bi-file-arrow-down::before{content:"\f346"}.bi-file-arrow-up-fill::before{content:"\f347"}.bi-file-arrow-up::before{content:"\f348"}.bi-file-bar-graph-fill::before{content:"\f349"}.bi-file-bar-graph::before{content:"\f34a"}.bi-file-binary-fill::before{content:"\f34b"}.bi-file-binary::before{content:"\f34c"}.bi-file-break-fill::before{content:"\f34d"}.bi-file-break::before{content:"\f34e"}.bi-file-check-fill::before{content:"\f34f"}.bi-file-check::before{content:"\f350"}.bi-file-code-fill::before{content:"\f351"}.bi-file-code::before{content:"\f352"}.bi-file-diff-fill::before{content:"\f353"}.bi-file-diff::before{content:"\f354"}.bi-file-earmark-arrow-down-fill::before{content:"\f355"}.bi-file-earmark-arrow-down::before{content:"\f356"}.bi-file-earmark-arrow-up-fill::before{content:"\f357"}.bi-file-earmark-arrow-up::before{content:"\f358"}.bi-file-earmark-bar-graph-fill::before{content:"\f359"}.bi-file-earmark-bar-graph::before{content:"\f35a"}.bi-file-earmark-binary-fill::before{content:"\f35b"}.bi-file-earmark-binary::before{content:"\f35c"}.bi-file-earmark-break-fill::before{content:"\f35d"}.bi-file-earmark-break::before{content:"\f35e"}.bi-file-earmark-check-fill::before{content:"\f35f"}.bi-file-earmark-check::before{content:"\f360"}.bi-file-earmark-code-fill::before{content:"\f361"}.bi-file-earmark-code::before{content:"\f362"}.bi-file-earmark-diff-fill::before{content:"\f363"}.bi-file-earmark-diff::before{content:"\f364"}.bi-file-earmark-easel-fill::before{content:"\f365"}.bi-file-earmark-easel::before{content:"\f366"}.bi-file-earmark-excel-fill::before{content:"\f367"}.bi-file-earmark-excel::before{content:"\f368"}.bi-file-earmark-fill::before{content:"\f369"}.bi-file-earmark-font-fill::before{content:"\f36a"}.bi-file-earmark-font::before{content:"\f36b"}.bi-file-earmark-image-fill::before{content:"\f36c"}.bi-file-earmark-image::before{content:"\f36d"}.bi-file-earmark-lock-fill::before{content:"\f36e"}.bi-file-earmark-lock::before{content:"\f36f"}.bi-file-earmark-lock2-fill::before{content:"\f370"}.bi-file-earmark-lock2::before{content:"\f371"}.bi-file-earmark-medical-fill::before{content:"\f372"}.bi-file-earmark-medical::before{content:"\f373"}.bi-file-earmark-minus-fill::before{content:"\f374"}.bi-file-earmark-minus::before{content:"\f375"}.bi-file-earmark-music-fill::before{content:"\f376"}.bi-file-earmark-music::before{content:"\f377"}.bi-file-earmark-person-fill::before{content:"\f378"}.bi-file-earmark-person::before{content:"\f379"}.bi-file-earmark-play-fill::before{content:"\f37a"}.bi-file-earmark-play::before{content:"\f37b"}.bi-file-earmark-plus-fill::before{content:"\f37c"}.bi-file-earmark-plus::before{content:"\f37d"}.bi-file-earmark-post-fill::before{content:"\f37e"}.bi-file-earmark-post::before{content:"\f37f"}.bi-file-earmark-ppt-fill::before{content:"\f380"}.bi-file-earmark-ppt::before{content:"\f381"}.bi-file-earmark-richtext-fill::before{content:"\f382"}.bi-file-earmark-richtext::before{content:"\f383"}.bi-file-earmark-ruled-fill::before{content:"\f384"}.bi-file-earmark-ruled::before{content:"\f385"}.bi-file-earmark-slides-fill::before{content:"\f386"}.bi-file-earmark-slides::before{content:"\f387"}.bi-file-earmark-spreadsheet-fill::before{content:"\f388"}.bi-file-earmark-spreadsheet::before{content:"\f389"}.bi-file-earmark-text-fill::before{content:"\f38a"}.bi-file-earmark-text::before{content:"\f38b"}.bi-file-earmark-word-fill::before{content:"\f38c"}.bi-file-earmark-word::before{content:"\f38d"}.bi-file-earmark-x-fill::before{content:"\f38e"}.bi-file-earmark-x::before{content:"\f38f"}.bi-file-earmark-zip-fill::before{content:"\f390"}.bi-file-earmark-zip::before{content:"\f391"}.bi-file-earmark::before{content:"\f392"}.bi-file-easel-fill::before{content:"\f393"}.bi-file-easel::before{content:"\f394"}.bi-file-excel-fill::before{content:"\f395"}.bi-file-excel::before{content:"\f396"}.bi-file-fill::before{content:"\f397"}.bi-file-font-fill::before{content:"\f398"}.bi-file-font::before{content:"\f399"}.bi-file-image-fill::before{content:"\f39a"}.bi-file-image::before{content:"\f39b"}.bi-file-lock-fill::before{content:"\f39c"}.bi-file-lock::before{content:"\f39d"}.bi-file-lock2-fill::before{content:"\f39e"}.bi-file-lock2::before{content:"\f39f"}.bi-file-medical-fill::before{content:"\f3a0"}.bi-file-medical::before{content:"\f3a1"}.bi-file-minus-fill::before{content:"\f3a2"}.bi-file-minus::before{content:"\f3a3"}.bi-file-music-fill::before{content:"\f3a4"}.bi-file-music::before{content:"\f3a5"}.bi-file-person-fill::before{content:"\f3a6"}.bi-file-person::before{content:"\f3a7"}.bi-file-play-fill::before{content:"\f3a8"}.bi-file-play::before{content:"\f3a9"}.bi-file-plus-fill::before{content:"\f3aa"}.bi-file-plus::before{content:"\f3ab"}.bi-file-post-fill::before{content:"\f3ac"}.bi-file-post::before{content:"\f3ad"}.bi-file-ppt-fill::before{content:"\f3ae"}.bi-file-ppt::before{content:"\f3af"}.bi-file-richtext-fill::before{content:"\f3b0"}.bi-file-richtext::before{content:"\f3b1"}.bi-file-ruled-fill::before{content:"\f3b2"}.bi-file-ruled::before{content:"\f3b3"}.bi-file-slides-fill::before{content:"\f3b4"}.bi-file-slides::before{content:"\f3b5"}.bi-file-spreadsheet-fill::before{content:"\f3b6"}.bi-file-spreadsheet::before{content:"\f3b7"}.bi-file-text-fill::before{content:"\f3b8"}.bi-file-text::before{content:"\f3b9"}.bi-file-word-fill::before{content:"\f3ba"}.bi-file-word::before{content:"\f3bb"}.bi-file-x-fill::before{content:"\f3bc"}.bi-file-x::before{content:"\f3bd"}.bi-file-zip-fill::before{content:"\f3be"}.bi-file-zip::before{content:"\f3bf"}.bi-file::before{content:"\f3c0"}.bi-files-alt::before{content:"\f3c1"}.bi-files::before{content:"\f3c2"}.bi-film::before{content:"\f3c3"}.bi-filter-circle-fill::before{content:"\f3c4"}.bi-filter-circle::before{content:"\f3c5"}.bi-filter-left::before{content:"\f3c6"}.bi-filter-right::before{content:"\f3c7"}.bi-filter-square-fill::before{content:"\f3c8"}.bi-filter-square::before{content:"\f3c9"}.bi-filter::before{content:"\f3ca"}.bi-flag-fill::before{content:"\f3cb"}.bi-flag::before{content:"\f3cc"}.bi-flower1::before{content:"\f3cd"}.bi-flower2::before{content:"\f3ce"}.bi-flower3::before{content:"\f3cf"}.bi-folder-check::before{content:"\f3d0"}.bi-folder-fill::before{content:"\f3d1"}.bi-folder-minus::before{content:"\f3d2"}.bi-folder-plus::before{content:"\f3d3"}.bi-folder-symlink-fill::before{content:"\f3d4"}.bi-folder-symlink::before{content:"\f3d5"}.bi-folder-x::before{content:"\f3d6"}.bi-folder::before{content:"\f3d7"}.bi-folder2-open::before{content:"\f3d8"}.bi-folder2::before{content:"\f3d9"}.bi-fonts::before{content:"\f3da"}.bi-forward-fill::before{content:"\f3db"}.bi-forward::before{content:"\f3dc"}.bi-front::before{content:"\f3dd"}.bi-fullscreen-exit::before{content:"\f3de"}.bi-fullscreen::before{content:"\f3df"}.bi-funnel-fill::before{content:"\f3e0"}.bi-funnel::before{content:"\f3e1"}.bi-gear-fill::before{content:"\f3e2"}.bi-gear-wide-connected::before{content:"\f3e3"}.bi-gear-wide::before{content:"\f3e4"}.bi-gear::before{content:"\f3e5"}.bi-gem::before{content:"\f3e6"}.bi-geo-alt-fill::before{content:"\f3e7"}.bi-geo-alt::before{content:"\f3e8"}.bi-geo-fill::before{content:"\f3e9"}.bi-geo::before{content:"\f3ea"}.bi-gift-fill::before{content:"\f3eb"}.bi-gift::before{content:"\f3ec"}.bi-github::before{content:"\f3ed"}.bi-globe::before{content:"\f3ee"}.bi-globe2::before{content:"\f3ef"}.bi-google::before{content:"\f3f0"}.bi-graph-down::before{content:"\f3f1"}.bi-graph-up::before{content:"\f3f2"}.bi-grid-1x2-fill::before{content:"\f3f3"}.bi-grid-1x2::before{content:"\f3f4"}.bi-grid-3x2-gap-fill::before{content:"\f3f5"}.bi-grid-3x2-gap::before{content:"\f3f6"}.bi-grid-3x2::before{content:"\f3f7"}.bi-grid-3x3-gap-fill::before{content:"\f3f8"}.bi-grid-3x3-gap::before{content:"\f3f9"}.bi-grid-3x3::before{content:"\f3fa"}.bi-grid-fill::before{content:"\f3fb"}.bi-grid::before{content:"\f3fc"}.bi-grip-horizontal::before{content:"\f3fd"}.bi-grip-vertical::before{content:"\f3fe"}.bi-hammer::before{content:"\f3ff"}.bi-hand-index-fill::before{content:"\f400"}.bi-hand-index-thumb-fill::before{content:"\f401"}.bi-hand-index-thumb::before{content:"\f402"}.bi-hand-index::before{content:"\f403"}.bi-hand-thumbs-down-fill::before{content:"\f404"}.bi-hand-thumbs-down::before{content:"\f405"}.bi-hand-thumbs-up-fill::before{content:"\f406"}.bi-hand-thumbs-up::before{content:"\f407"}.bi-handbag-fill::before{content:"\f408"}.bi-handbag::before{content:"\f409"}.bi-hash::before{content:"\f40a"}.bi-hdd-fill::before{content:"\f40b"}.bi-hdd-network-fill::before{content:"\f40c"}.bi-hdd-network::before{content:"\f40d"}.bi-hdd-rack-fill::before{content:"\f40e"}.bi-hdd-rack::before{content:"\f40f"}.bi-hdd-stack-fill::before{content:"\f410"}.bi-hdd-stack::before{content:"\f411"}.bi-hdd::before{content:"\f412"}.bi-headphones::before{content:"\f413"}.bi-headset::before{content:"\f414"}.bi-heart-fill::before{content:"\f415"}.bi-heart-half::before{content:"\f416"}.bi-heart::before{content:"\f417"}.bi-heptagon-fill::before{content:"\f418"}.bi-heptagon-half::before{content:"\f419"}.bi-heptagon::before{content:"\f41a"}.bi-hexagon-fill::before{content:"\f41b"}.bi-hexagon-half::before{content:"\f41c"}.bi-hexagon::before{content:"\f41d"}.bi-hourglass-bottom::before{content:"\f41e"}.bi-hourglass-split::before{content:"\f41f"}.bi-hourglass-top::before{content:"\f420"}.bi-hourglass::before{content:"\f421"}.bi-house-door-fill::before{content:"\f422"}.bi-house-door::before{content:"\f423"}.bi-house-fill::before{content:"\f424"}.bi-house::before{content:"\f425"}.bi-hr::before{content:"\f426"}.bi-hurricane::before{content:"\f427"}.bi-image-alt::before{content:"\f428"}.bi-image-fill::before{content:"\f429"}.bi-image::before{content:"\f42a"}.bi-images::before{content:"\f42b"}.bi-inbox-fill::before{content:"\f42c"}.bi-inbox::before{content:"\f42d"}.bi-inboxes-fill::before{content:"\f42e"}.bi-inboxes::before{content:"\f42f"}.bi-info-circle-fill::before{content:"\f430"}.bi-info-circle::before{content:"\f431"}.bi-info-square-fill::before{content:"\f432"}.bi-info-square::before{content:"\f433"}.bi-info::before{content:"\f434"}.bi-input-cursor-text::before{content:"\f435"}.bi-input-cursor::before{content:"\f436"}.bi-instagram::before{content:"\f437"}.bi-intersect::before{content:"\f438"}.bi-journal-album::before{content:"\f439"}.bi-journal-arrow-down::before{content:"\f43a"}.bi-journal-arrow-up::before{content:"\f43b"}.bi-journal-bookmark-fill::before{content:"\f43c"}.bi-journal-bookmark::before{content:"\f43d"}.bi-journal-check::before{content:"\f43e"}.bi-journal-code::before{content:"\f43f"}.bi-journal-medical::before{content:"\f440"}.bi-journal-minus::before{content:"\f441"}.bi-journal-plus::before{content:"\f442"}.bi-journal-richtext::before{content:"\f443"}.bi-journal-text::before{content:"\f444"}.bi-journal-x::before{content:"\f445"}.bi-journal::before{content:"\f446"}.bi-journals::before{content:"\f447"}.bi-joystick::before{content:"\f448"}.bi-justify-left::before{content:"\f449"}.bi-justify-right::before{content:"\f44a"}.bi-justify::before{content:"\f44b"}.bi-kanban-fill::before{content:"\f44c"}.bi-kanban::before{content:"\f44d"}.bi-key-fill::before{content:"\f44e"}.bi-key::before{content:"\f44f"}.bi-keyboard-fill::before{content:"\f450"}.bi-keyboard::before{content:"\f451"}.bi-ladder::before{content:"\f452"}.bi-lamp-fill::before{content:"\f453"}.bi-lamp::before{content:"\f454"}.bi-laptop-fill::before{content:"\f455"}.bi-laptop::before{content:"\f456"}.bi-layer-backward::before{content:"\f457"}.bi-layer-forward::before{content:"\f458"}.bi-layers-fill::before{content:"\f459"}.bi-layers-half::before{content:"\f45a"}.bi-layers::before{content:"\f45b"}.bi-layout-sidebar-inset-reverse::before{content:"\f45c"}.bi-layout-sidebar-inset::before{content:"\f45d"}.bi-layout-sidebar-reverse::before{content:"\f45e"}.bi-layout-sidebar::before{content:"\f45f"}.bi-layout-split::before{content:"\f460"}.bi-layout-text-sidebar-reverse::before{content:"\f461"}.bi-layout-text-sidebar::before{content:"\f462"}.bi-layout-text-window-reverse::before{content:"\f463"}.bi-layout-text-window::before{content:"\f464"}.bi-layout-three-columns::before{content:"\f465"}.bi-layout-wtf::before{content:"\f466"}.bi-life-preserver::before{content:"\f467"}.bi-lightbulb-fill::before{content:"\f468"}.bi-lightbulb-off-fill::before{content:"\f469"}.bi-lightbulb-off::before{content:"\f46a"}.bi-lightbulb::before{content:"\f46b"}.bi-lightning-charge-fill::before{content:"\f46c"}.bi-lightning-charge::before{content:"\f46d"}.bi-lightning-fill::before{content:"\f46e"}.bi-lightning::before{content:"\f46f"}.bi-link-45deg::before{content:"\f470"}.bi-link::before{content:"\f471"}.bi-linkedin::before{content:"\f472"}.bi-list-check::before{content:"\f473"}.bi-list-nested::before{content:"\f474"}.bi-list-ol::before{content:"\f475"}.bi-list-stars::before{content:"\f476"}.bi-list-task::before{content:"\f477"}.bi-list-ul::before{content:"\f478"}.bi-list::before{content:"\f479"}.bi-lock-fill::before{content:"\f47a"}.bi-lock::before{content:"\f47b"}.bi-mailbox::before{content:"\f47c"}.bi-mailbox2::before{content:"\f47d"}.bi-map-fill::before{content:"\f47e"}.bi-map::before{content:"\f47f"}.bi-markdown-fill::before{content:"\f480"}.bi-markdown::before{content:"\f481"}.bi-mask::before{content:"\f482"}.bi-megaphone-fill::before{content:"\f483"}.bi-megaphone::before{content:"\f484"}.bi-menu-app-fill::before{content:"\f485"}.bi-menu-app::before{content:"\f486"}.bi-menu-button-fill::before{content:"\f487"}.bi-menu-button-wide-fill::before{content:"\f488"}.bi-menu-button-wide::before{content:"\f489"}.bi-menu-button::before{content:"\f48a"}.bi-menu-down::before{content:"\f48b"}.bi-menu-up::before{content:"\f48c"}.bi-mic-fill::before{content:"\f48d"}.bi-mic-mute-fill::before{content:"\f48e"}.bi-mic-mute::before{content:"\f48f"}.bi-mic::before{content:"\f490"}.bi-minecart-loaded::before{content:"\f491"}.bi-minecart::before{content:"\f492"}.bi-moisture::before{content:"\f493"}.bi-moon-fill::before{content:"\f494"}.bi-moon-stars-fill::before{content:"\f495"}.bi-moon-stars::before{content:"\f496"}.bi-moon::before{content:"\f497"}.bi-mouse-fill::before{content:"\f498"}.bi-mouse::before{content:"\f499"}.bi-mouse2-fill::before{content:"\f49a"}.bi-mouse2::before{content:"\f49b"}.bi-mouse3-fill::before{content:"\f49c"}.bi-mouse3::before{content:"\f49d"}.bi-music-note-beamed::before{content:"\f49e"}.bi-music-note-list::before{content:"\f49f"}.bi-music-note::before{content:"\f4a0"}.bi-music-player-fill::before{content:"\f4a1"}.bi-music-player::before{content:"\f4a2"}.bi-newspaper::before{content:"\f4a3"}.bi-node-minus-fill::before{content:"\f4a4"}.bi-node-minus::before{content:"\f4a5"}.bi-node-plus-fill::before{content:"\f4a6"}.bi-node-plus::before{content:"\f4a7"}.bi-nut-fill::before{content:"\f4a8"}.bi-nut::before{content:"\f4a9"}.bi-octagon-fill::before{content:"\f4aa"}.bi-octagon-half::before{content:"\f4ab"}.bi-octagon::before{content:"\f4ac"}.bi-option::before{content:"\f4ad"}.bi-outlet::before{content:"\f4ae"}.bi-paint-bucket::before{content:"\f4af"}.bi-palette-fill::before{content:"\f4b0"}.bi-palette::before{content:"\f4b1"}.bi-palette2::before{content:"\f4b2"}.bi-paperclip::before{content:"\f4b3"}.bi-paragraph::before{content:"\f4b4"}.bi-patch-check-fill::before{content:"\f4b5"}.bi-patch-check::before{content:"\f4b6"}.bi-patch-exclamation-fill::before{content:"\f4b7"}.bi-patch-exclamation::before{content:"\f4b8"}.bi-patch-minus-fill::before{content:"\f4b9"}.bi-patch-minus::before{content:"\f4ba"}.bi-patch-plus-fill::before{content:"\f4bb"}.bi-patch-plus::before{content:"\f4bc"}.bi-patch-question-fill::before{content:"\f4bd"}.bi-patch-question::before{content:"\f4be"}.bi-pause-btn-fill::before{content:"\f4bf"}.bi-pause-btn::before{content:"\f4c0"}.bi-pause-circle-fill::before{content:"\f4c1"}.bi-pause-circle::before{content:"\f4c2"}.bi-pause-fill::before{content:"\f4c3"}.bi-pause::before{content:"\f4c4"}.bi-peace-fill::before{content:"\f4c5"}.bi-peace::before{content:"\f4c6"}.bi-pen-fill::before{content:"\f4c7"}.bi-pen::before{content:"\f4c8"}.bi-pencil-fill::before{content:"\f4c9"}.bi-pencil-square::before{content:"\f4ca"}.bi-pencil::before{content:"\f4cb"}.bi-pentagon-fill::before{content:"\f4cc"}.bi-pentagon-half::before{content:"\f4cd"}.bi-pentagon::before{content:"\f4ce"}.bi-people-fill::before{content:"\f4cf"}.bi-people::before{content:"\f4d0"}.bi-percent::before{content:"\f4d1"}.bi-person-badge-fill::before{content:"\f4d2"}.bi-person-badge::before{content:"\f4d3"}.bi-person-bounding-box::before{content:"\f4d4"}.bi-person-check-fill::before{content:"\f4d5"}.bi-person-check::before{content:"\f4d6"}.bi-person-circle::before{content:"\f4d7"}.bi-person-dash-fill::before{content:"\f4d8"}.bi-person-dash::before{content:"\f4d9"}.bi-person-fill::before{content:"\f4da"}.bi-person-lines-fill::before{content:"\f4db"}.bi-person-plus-fill::before{content:"\f4dc"}.bi-person-plus::before{content:"\f4dd"}.bi-person-square::before{content:"\f4de"}.bi-person-x-fill::before{content:"\f4df"}.bi-person-x::before{content:"\f4e0"}.bi-person::before{content:"\f4e1"}.bi-phone-fill::before{content:"\f4e2"}.bi-phone-landscape-fill::before{content:"\f4e3"}.bi-phone-landscape::before{content:"\f4e4"}.bi-phone-vibrate-fill::before{content:"\f4e5"}.bi-phone-vibrate::before{content:"\f4e6"}.bi-phone::before{content:"\f4e7"}.bi-pie-chart-fill::before{content:"\f4e8"}.bi-pie-chart::before{content:"\f4e9"}.bi-pin-angle-fill::before{content:"\f4ea"}.bi-pin-angle::before{content:"\f4eb"}.bi-pin-fill::before{content:"\f4ec"}.bi-pin::before{content:"\f4ed"}.bi-pip-fill::before{content:"\f4ee"}.bi-pip::before{content:"\f4ef"}.bi-play-btn-fill::before{content:"\f4f0"}.bi-play-btn::before{content:"\f4f1"}.bi-play-circle-fill::before{content:"\f4f2"}.bi-play-circle::before{content:"\f4f3"}.bi-play-fill::before{content:"\f4f4"}.bi-play::before{content:"\f4f5"}.bi-plug-fill::before{content:"\f4f6"}.bi-plug::before{content:"\f4f7"}.bi-plus-circle-dotted::before{content:"\f4f8"}.bi-plus-circle-fill::before{content:"\f4f9"}.bi-plus-circle::before{content:"\f4fa"}.bi-plus-square-dotted::before{content:"\f4fb"}.bi-plus-square-fill::before{content:"\f4fc"}.bi-plus-square::before{content:"\f4fd"}.bi-plus::before{content:"\f4fe"}.bi-power::before{content:"\f4ff"}.bi-printer-fill::before{content:"\f500"}.bi-printer::before{content:"\f501"}.bi-puzzle-fill::before{content:"\f502"}.bi-puzzle::before{content:"\f503"}.bi-question-circle-fill::before{content:"\f504"}.bi-question-circle::before{content:"\f505"}.bi-question-diamond-fill::before{content:"\f506"}.bi-question-diamond::before{content:"\f507"}.bi-question-octagon-fill::before{content:"\f508"}.bi-question-octagon::before{content:"\f509"}.bi-question-square-fill::before{content:"\f50a"}.bi-question-square::before{content:"\f50b"}.bi-question::before{content:"\f50c"}.bi-rainbow::before{content:"\f50d"}.bi-receipt-cutoff::before{content:"\f50e"}.bi-receipt::before{content:"\f50f"}.bi-reception-0::before{content:"\f510"}.bi-reception-1::before{content:"\f511"}.bi-reception-2::before{content:"\f512"}.bi-reception-3::before{content:"\f513"}.bi-reception-4::before{content:"\f514"}.bi-record-btn-fill::before{content:"\f515"}.bi-record-btn::before{content:"\f516"}.bi-record-circle-fill::before{content:"\f517"}.bi-record-circle::before{content:"\f518"}.bi-record-fill::before{content:"\f519"}.bi-record::before{content:"\f51a"}.bi-record2-fill::before{content:"\f51b"}.bi-record2::before{content:"\f51c"}.bi-reply-all-fill::before{content:"\f51d"}.bi-reply-all::before{content:"\f51e"}.bi-reply-fill::before{content:"\f51f"}.bi-reply::before{content:"\f520"}.bi-rss-fill::before{content:"\f521"}.bi-rss::before{content:"\f522"}.bi-rulers::before{content:"\f523"}.bi-save-fill::before{content:"\f524"}.bi-save::before{content:"\f525"}.bi-save2-fill::before{content:"\f526"}.bi-save2::before{content:"\f527"}.bi-scissors::before{content:"\f528"}.bi-screwdriver::before{content:"\f529"}.bi-search::before{content:"\f52a"}.bi-segmented-nav::before{content:"\f52b"}.bi-server::before{content:"\f52c"}.bi-share-fill::before{content:"\f52d"}.bi-share::before{content:"\f52e"}.bi-shield-check::before{content:"\f52f"}.bi-shield-exclamation::before{content:"\f530"}.bi-shield-fill-check::before{content:"\f531"}.bi-shield-fill-exclamation::before{content:"\f532"}.bi-shield-fill-minus::before{content:"\f533"}.bi-shield-fill-plus::before{content:"\f534"}.bi-shield-fill-x::before{content:"\f535"}.bi-shield-fill::before{content:"\f536"}.bi-shield-lock-fill::before{content:"\f537"}.bi-shield-lock::before{content:"\f538"}.bi-shield-minus::before{content:"\f539"}.bi-shield-plus::before{content:"\f53a"}.bi-shield-shaded::before{content:"\f53b"}.bi-shield-slash-fill::before{content:"\f53c"}.bi-shield-slash::before{content:"\f53d"}.bi-shield-x::before{content:"\f53e"}.bi-shield::before{content:"\f53f"}.bi-shift-fill::before{content:"\f540"}.bi-shift::before{content:"\f541"}.bi-shop-window::before{content:"\f542"}.bi-shop::before{content:"\f543"}.bi-shuffle::before{content:"\f544"}.bi-signpost-2-fill::before{content:"\f545"}.bi-signpost-2::before{content:"\f546"}.bi-signpost-fill::before{content:"\f547"}.bi-signpost-split-fill::before{content:"\f548"}.bi-signpost-split::before{content:"\f549"}.bi-signpost::before{content:"\f54a"}.bi-sim-fill::before{content:"\f54b"}.bi-sim::before{content:"\f54c"}.bi-skip-backward-btn-fill::before{content:"\f54d"}.bi-skip-backward-btn::before{content:"\f54e"}.bi-skip-backward-circle-fill::before{content:"\f54f"}.bi-skip-backward-circle::before{content:"\f550"}.bi-skip-backward-fill::before{content:"\f551"}.bi-skip-backward::before{content:"\f552"}.bi-skip-end-btn-fill::before{content:"\f553"}.bi-skip-end-btn::before{content:"\f554"}.bi-skip-end-circle-fill::before{content:"\f555"}.bi-skip-end-circle::before{content:"\f556"}.bi-skip-end-fill::before{content:"\f557"}.bi-skip-end::before{content:"\f558"}.bi-skip-forward-btn-fill::before{content:"\f559"}.bi-skip-forward-btn::before{content:"\f55a"}.bi-skip-forward-circle-fill::before{content:"\f55b"}.bi-skip-forward-circle::before{content:"\f55c"}.bi-skip-forward-fill::before{content:"\f55d"}.bi-skip-forward::before{content:"\f55e"}.bi-skip-start-btn-fill::before{content:"\f55f"}.bi-skip-start-btn::before{content:"\f560"}.bi-skip-start-circle-fill::before{content:"\f561"}.bi-skip-start-circle::before{content:"\f562"}.bi-skip-start-fill::before{content:"\f563"}.bi-skip-start::before{content:"\f564"}.bi-slack::before{content:"\f565"}.bi-slash-circle-fill::before{content:"\f566"}.bi-slash-circle::before{content:"\f567"}.bi-slash-square-fill::before{content:"\f568"}.bi-slash-square::before{content:"\f569"}.bi-slash::before{content:"\f56a"}.bi-sliders::before{content:"\f56b"}.bi-smartwatch::before{content:"\f56c"}.bi-snow::before{content:"\f56d"}.bi-snow2::before{content:"\f56e"}.bi-snow3::before{content:"\f56f"}.bi-sort-alpha-down-alt::before{content:"\f570"}.bi-sort-alpha-down::before{content:"\f571"}.bi-sort-alpha-up-alt::before{content:"\f572"}.bi-sort-alpha-up::before{content:"\f573"}.bi-sort-down-alt::before{content:"\f574"}.bi-sort-down::before{content:"\f575"}.bi-sort-numeric-down-alt::before{content:"\f576"}.bi-sort-numeric-down::before{content:"\f577"}.bi-sort-numeric-up-alt::before{content:"\f578"}.bi-sort-numeric-up::before{content:"\f579"}.bi-sort-up-alt::before{content:"\f57a"}.bi-sort-up::before{content:"\f57b"}.bi-soundwave::before{content:"\f57c"}.bi-speaker-fill::before{content:"\f57d"}.bi-speaker::before{content:"\f57e"}.bi-speedometer::before{content:"\f57f"}.bi-speedometer2::before{content:"\f580"}.bi-spellcheck::before{content:"\f581"}.bi-square-fill::before{content:"\f582"}.bi-square-half::before{content:"\f583"}.bi-square::before{content:"\f584"}.bi-stack::before{content:"\f585"}.bi-star-fill::before{content:"\f586"}.bi-star-half::before{content:"\f587"}.bi-star::before{content:"\f588"}.bi-stars::before{content:"\f589"}.bi-stickies-fill::before{content:"\f58a"}.bi-stickies::before{content:"\f58b"}.bi-sticky-fill::before{content:"\f58c"}.bi-sticky::before{content:"\f58d"}.bi-stop-btn-fill::before{content:"\f58e"}.bi-stop-btn::before{content:"\f58f"}.bi-stop-circle-fill::before{content:"\f590"}.bi-stop-circle::before{content:"\f591"}.bi-stop-fill::before{content:"\f592"}.bi-stop::before{content:"\f593"}.bi-stoplights-fill::before{content:"\f594"}.bi-stoplights::before{content:"\f595"}.bi-stopwatch-fill::before{content:"\f596"}.bi-stopwatch::before{content:"\f597"}.bi-subtract::before{content:"\f598"}.bi-suit-club-fill::before{content:"\f599"}.bi-suit-club::before{content:"\f59a"}.bi-suit-diamond-fill::before{content:"\f59b"}.bi-suit-diamond::before{content:"\f59c"}.bi-suit-heart-fill::before{content:"\f59d"}.bi-suit-heart::before{content:"\f59e"}.bi-suit-spade-fill::before{content:"\f59f"}.bi-suit-spade::before{content:"\f5a0"}.bi-sun-fill::before{content:"\f5a1"}.bi-sun::before{content:"\f5a2"}.bi-sunglasses::before{content:"\f5a3"}.bi-sunrise-fill::before{content:"\f5a4"}.bi-sunrise::before{content:"\f5a5"}.bi-sunset-fill::before{content:"\f5a6"}.bi-sunset::before{content:"\f5a7"}.bi-symmetry-horizontal::before{content:"\f5a8"}.bi-symmetry-vertical::before{content:"\f5a9"}.bi-table::before{content:"\f5aa"}.bi-tablet-fill::before{content:"\f5ab"}.bi-tablet-landscape-fill::before{content:"\f5ac"}.bi-tablet-landscape::before{content:"\f5ad"}.bi-tablet::before{content:"\f5ae"}.bi-tag-fill::before{content:"\f5af"}.bi-tag::before{content:"\f5b0"}.bi-tags-fill::before{content:"\f5b1"}.bi-tags::before{content:"\f5b2"}.bi-telegram::before{content:"\f5b3"}.bi-telephone-fill::before{content:"\f5b4"}.bi-telephone-forward-fill::before{content:"\f5b5"}.bi-telephone-forward::before{content:"\f5b6"}.bi-telephone-inbound-fill::before{content:"\f5b7"}.bi-telephone-inbound::before{content:"\f5b8"}.bi-telephone-minus-fill::before{content:"\f5b9"}.bi-telephone-minus::before{content:"\f5ba"}.bi-telephone-outbound-fill::before{content:"\f5bb"}.bi-telephone-outbound::before{content:"\f5bc"}.bi-telephone-plus-fill::before{content:"\f5bd"}.bi-telephone-plus::before{content:"\f5be"}.bi-telephone-x-fill::before{content:"\f5bf"}.bi-telephone-x::before{content:"\f5c0"}.bi-telephone::before{content:"\f5c1"}.bi-terminal-fill::before{content:"\f5c2"}.bi-terminal::before{content:"\f5c3"}.bi-text-center::before{content:"\f5c4"}.bi-text-indent-left::before{content:"\f5c5"}.bi-text-indent-right::before{content:"\f5c6"}.bi-text-left::before{content:"\f5c7"}.bi-text-paragraph::before{content:"\f5c8"}.bi-text-right::before{content:"\f5c9"}.bi-textarea-resize::before{content:"\f5ca"}.bi-textarea-t::before{content:"\f5cb"}.bi-textarea::before{content:"\f5cc"}.bi-thermometer-half::before{content:"\f5cd"}.bi-thermometer-high::before{content:"\f5ce"}.bi-thermometer-low::before{content:"\f5cf"}.bi-thermometer-snow::before{content:"\f5d0"}.bi-thermometer-sun::before{content:"\f5d1"}.bi-thermometer::before{content:"\f5d2"}.bi-three-dots-vertical::before{content:"\f5d3"}.bi-three-dots::before{content:"\f5d4"}.bi-toggle-off::before{content:"\f5d5"}.bi-toggle-on::before{content:"\f5d6"}.bi-toggle2-off::before{content:"\f5d7"}.bi-toggle2-on::before{content:"\f5d8"}.bi-toggles::before{content:"\f5d9"}.bi-toggles2::before{content:"\f5da"}.bi-tools::before{content:"\f5db"}.bi-tornado::before{content:"\f5dc"}.bi-trash-fill::before{content:"\f5dd"}.bi-trash::before{content:"\f5de"}.bi-trash2-fill::before{content:"\f5df"}.bi-trash2::before{content:"\f5e0"}.bi-tree-fill::before{content:"\f5e1"}.bi-tree::before{content:"\f5e2"}.bi-triangle-fill::before{content:"\f5e3"}.bi-triangle-half::before{content:"\f5e4"}.bi-triangle::before{content:"\f5e5"}.bi-trophy-fill::before{content:"\f5e6"}.bi-trophy::before{content:"\f5e7"}.bi-tropical-storm::before{content:"\f5e8"}.bi-truck-flatbed::before{content:"\f5e9"}.bi-truck::before{content:"\f5ea"}.bi-tsunami::before{content:"\f5eb"}.bi-tv-fill::before{content:"\f5ec"}.bi-tv::before{content:"\f5ed"}.bi-twitch::before{content:"\f5ee"}.bi-twitter::before{content:"\f5ef"}.bi-type-bold::before{content:"\f5f0"}.bi-type-h1::before{content:"\f5f1"}.bi-type-h2::before{content:"\f5f2"}.bi-type-h3::before{content:"\f5f3"}.bi-type-italic::before{content:"\f5f4"}.bi-type-strikethrough::before{content:"\f5f5"}.bi-type-underline::before{content:"\f5f6"}.bi-type::before{content:"\f5f7"}.bi-ui-checks-grid::before{content:"\f5f8"}.bi-ui-checks::before{content:"\f5f9"}.bi-ui-radios-grid::before{content:"\f5fa"}.bi-ui-radios::before{content:"\f5fb"}.bi-umbrella-fill::before{content:"\f5fc"}.bi-umbrella::before{content:"\f5fd"}.bi-union::before{content:"\f5fe"}.bi-unlock-fill::before{content:"\f5ff"}.bi-unlock::before{content:"\f600"}.bi-upc-scan::before{content:"\f601"}.bi-upc::before{content:"\f602"}.bi-upload::before{content:"\f603"}.bi-vector-pen::before{content:"\f604"}.bi-view-list::before{content:"\f605"}.bi-view-stacked::before{content:"\f606"}.bi-vinyl-fill::before{content:"\f607"}.bi-vinyl::before{content:"\f608"}.bi-voicemail::before{content:"\f609"}.bi-volume-down-fill::before{content:"\f60a"}.bi-volume-down::before{content:"\f60b"}.bi-volume-mute-fill::before{content:"\f60c"}.bi-volume-mute::before{content:"\f60d"}.bi-volume-off-fill::before{content:"\f60e"}.bi-volume-off::before{content:"\f60f"}.bi-volume-up-fill::before{content:"\f610"}.bi-volume-up::before{content:"\f611"}.bi-vr::before{content:"\f612"}.bi-wallet-fill::before{content:"\f613"}.bi-wallet::before{content:"\f614"}.bi-wallet2::before{content:"\f615"}.bi-watch::before{content:"\f616"}.bi-water::before{content:"\f617"}.bi-whatsapp::before{content:"\f618"}.bi-wifi-1::before{content:"\f619"}.bi-wifi-2::before{content:"\f61a"}.bi-wifi-off::before{content:"\f61b"}.bi-wifi::before{content:"\f61c"}.bi-wind::before{content:"\f61d"}.bi-window-dock::before{content:"\f61e"}.bi-window-sidebar::before{content:"\f61f"}.bi-window::before{content:"\f620"}.bi-wrench::before{content:"\f621"}.bi-x-circle-fill::before{content:"\f622"}.bi-x-circle::before{content:"\f623"}.bi-x-diamond-fill::before{content:"\f624"}.bi-x-diamond::before{content:"\f625"}.bi-x-octagon-fill::before{content:"\f626"}.bi-x-octagon::before{content:"\f627"}.bi-x-square-fill::before{content:"\f628"}.bi-x-square::before{content:"\f629"}.bi-x::before{content:"\f62a"}.bi-youtube::before{content:"\f62b"}.bi-zoom-in::before{content:"\f62c"}.bi-zoom-out::before{content:"\f62d"}.bi-bank::before{content:"\f62e"}.bi-bank2::before{content:"\f62f"}.bi-bell-slash-fill::before{content:"\f630"}.bi-bell-slash::before{content:"\f631"}.bi-cash-coin::before{content:"\f632"}.bi-check-lg::before{content:"\f633"}.bi-coin::before{content:"\f634"}.bi-currency-bitcoin::before{content:"\f635"}.bi-currency-dollar::before{content:"\f636"}.bi-currency-euro::before{content:"\f637"}.bi-currency-exchange::before{content:"\f638"}.bi-currency-pound::before{content:"\f639"}.bi-currency-yen::before{content:"\f63a"}.bi-dash-lg::before{content:"\f63b"}.bi-exclamation-lg::before{content:"\f63c"}.bi-file-earmark-pdf-fill::before{content:"\f63d"}.bi-file-earmark-pdf::before{content:"\f63e"}.bi-file-pdf-fill::before{content:"\f63f"}.bi-file-pdf::before{content:"\f640"}.bi-gender-ambiguous::before{content:"\f641"}.bi-gender-female::before{content:"\f642"}.bi-gender-male::before{content:"\f643"}.bi-gender-trans::before{content:"\f644"}.bi-headset-vr::before{content:"\f645"}.bi-info-lg::before{content:"\f646"}.bi-mastodon::before{content:"\f647"}.bi-messenger::before{content:"\f648"}.bi-piggy-bank-fill::before{content:"\f649"}.bi-piggy-bank::before{content:"\f64a"}.bi-pin-map-fill::before{content:"\f64b"}.bi-pin-map::before{content:"\f64c"}.bi-plus-lg::before{content:"\f64d"}.bi-question-lg::before{content:"\f64e"}.bi-recycle::before{content:"\f64f"}.bi-reddit::before{content:"\f650"}.bi-safe-fill::before{content:"\f651"}.bi-safe2-fill::before{content:"\f652"}.bi-safe2::before{content:"\f653"}.bi-sd-card-fill::before{content:"\f654"}.bi-sd-card::before{content:"\f655"}.bi-skype::before{content:"\f656"}.bi-slash-lg::before{content:"\f657"}.bi-translate::before{content:"\f658"}.bi-x-lg::before{content:"\f659"}.bi-safe::before{content:"\f65a"}.bi-apple::before{content:"\f65b"}.bi-microsoft::before{content:"\f65d"}.bi-windows::before{content:"\f65e"}.bi-behance::before{content:"\f65c"}.bi-dribbble::before{content:"\f65f"}.bi-line::before{content:"\f660"}.bi-medium::before{content:"\f661"}.bi-paypal::before{content:"\f662"}.bi-pinterest::before{content:"\f663"}.bi-signal::before{content:"\f664"}.bi-snapchat::before{content:"\f665"}.bi-spotify::before{content:"\f666"}.bi-stack-overflow::before{content:"\f667"}.bi-strava::before{content:"\f668"}.bi-wordpress::before{content:"\f669"}.bi-vimeo::before{content:"\f66a"}.bi-activity::before{content:"\f66b"}.bi-easel2-fill::before{content:"\f66c"}.bi-easel2::before{content:"\f66d"}.bi-easel3-fill::before{content:"\f66e"}.bi-easel3::before{content:"\f66f"}.bi-fan::before{content:"\f670"}.bi-fingerprint::before{content:"\f671"}.bi-graph-down-arrow::before{content:"\f672"}.bi-graph-up-arrow::before{content:"\f673"}.bi-hypnotize::before{content:"\f674"}.bi-magic::before{content:"\f675"}.bi-person-rolodex::before{content:"\f676"}.bi-person-video::before{content:"\f677"}.bi-person-video2::before{content:"\f678"}.bi-person-video3::before{content:"\f679"}.bi-person-workspace::before{content:"\f67a"}.bi-radioactive::before{content:"\f67b"}.bi-webcam-fill::before{content:"\f67c"}.bi-webcam::before{content:"\f67d"}.bi-yin-yang::before{content:"\f67e"}.bi-bandaid-fill::before{content:"\f680"}.bi-bandaid::before{content:"\f681"}.bi-bluetooth::before{content:"\f682"}.bi-body-text::before{content:"\f683"}.bi-boombox::before{content:"\f684"}.bi-boxes::before{content:"\f685"}.bi-dpad-fill::before{content:"\f686"}.bi-dpad::before{content:"\f687"}.bi-ear-fill::before{content:"\f688"}.bi-ear::before{content:"\f689"}.bi-envelope-check-1::before{content:"\f68a"}.bi-envelope-check-fill::before{content:"\f68b"}.bi-envelope-check::before{content:"\f68c"}.bi-envelope-dash-1::before{content:"\f68d"}.bi-envelope-dash-fill::before{content:"\f68e"}.bi-envelope-dash::before{content:"\f68f"}.bi-envelope-exclamation-1::before{content:"\f690"}.bi-envelope-exclamation-fill::before{content:"\f691"}.bi-envelope-exclamation::before{content:"\f692"}.bi-envelope-plus-fill::before{content:"\f693"}.bi-envelope-plus::before{content:"\f694"}.bi-envelope-slash-1::before{content:"\f695"}.bi-envelope-slash-fill::before{content:"\f696"}.bi-envelope-slash::before{content:"\f697"}.bi-envelope-x-1::before{content:"\f698"}.bi-envelope-x-fill::before{content:"\f699"}.bi-envelope-x::before{content:"\f69a"}.bi-explicit-fill::before{content:"\f69b"}.bi-explicit::before{content:"\f69c"}.bi-git::before{content:"\f69d"}.bi-infinity::before{content:"\f69e"}.bi-list-columns-reverse::before{content:"\f69f"}.bi-list-columns::before{content:"\f6a0"}.bi-meta::before{content:"\f6a1"}.bi-mortorboard-fill::before{content:"\f6a2"}.bi-mortorboard::before{content:"\f6a3"}.bi-nintendo-switch::before{content:"\f6a4"}.bi-pc-display-horizontal::before{content:"\f6a5"}.bi-pc-display::before{content:"\f6a6"}.bi-pc-horizontal::before{content:"\f6a7"}.bi-pc::before{content:"\f6a8"}.bi-playstation::before{content:"\f6a9"}.bi-plus-slash-minus::before{content:"\f6aa"}.bi-projector-fill::before{content:"\f6ab"}.bi-projector::before{content:"\f6ac"}.bi-qr-code-scan::before{content:"\f6ad"}.bi-qr-code::before{content:"\f6ae"}.bi-quora::before{content:"\f6af"}.bi-quote::before{content:"\f6b0"}.bi-robot::before{content:"\f6b1"}.bi-send-check-fill::before{content:"\f6b2"}.bi-send-check::before{content:"\f6b3"}.bi-send-dash-fill::before{content:"\f6b4"}.bi-send-dash::before{content:"\f6b5"}.bi-send-exclamation-1::before{content:"\f6b6"}.bi-send-exclamation-fill::before{content:"\f6b7"}.bi-send-exclamation::before{content:"\f6b8"}.bi-send-fill::before{content:"\f6b9"}.bi-send-plus-fill::before{content:"\f6ba"}.bi-send-plus::before{content:"\f6bb"}.bi-send-slash-fill::before{content:"\f6bc"}.bi-send-slash::before{content:"\f6bd"}.bi-send-x-fill::before{content:"\f6be"}.bi-send-x::before{content:"\f6bf"}.bi-send::before{content:"\f6c0"}.bi-steam::before{content:"\f6c1"}.bi-terminal-dash-1::before{content:"\f6c2"}.bi-terminal-dash::before{content:"\f6c3"}.bi-terminal-plus::before{content:"\f6c4"}.bi-terminal-split::before{content:"\f6c5"}.bi-ticket-detailed-fill::before{content:"\f6c6"}.bi-ticket-detailed::before{content:"\f6c7"}.bi-ticket-fill::before{content:"\f6c8"}.bi-ticket-perforated-fill::before{content:"\f6c9"}.bi-ticket-perforated::before{content:"\f6ca"}.bi-ticket::before{content:"\f6cb"}.bi-tiktok::before{content:"\f6cc"}.bi-window-dash::before{content:"\f6cd"}.bi-window-desktop::before{content:"\f6ce"}.bi-window-fullscreen::before{content:"\f6cf"}.bi-window-plus::before{content:"\f6d0"}.bi-window-split::before{content:"\f6d1"}.bi-window-stack::before{content:"\f6d2"}.bi-window-x::before{content:"\f6d3"}.bi-xbox::before{content:"\f6d4"}.bi-ethernet::before{content:"\f6d5"}.bi-hdmi-fill::before{content:"\f6d6"}.bi-hdmi::before{content:"\f6d7"}.bi-usb-c-fill::before{content:"\f6d8"}.bi-usb-c::before{content:"\f6d9"}.bi-usb-fill::before{content:"\f6da"}.bi-usb-plug-fill::before{content:"\f6db"}.bi-usb-plug::before{content:"\f6dc"}.bi-usb-symbol::before{content:"\f6dd"}.bi-usb::before{content:"\f6de"}.bi-boombox-fill::before{content:"\f6df"}.bi-displayport-1::before{content:"\f6e0"}.bi-displayport::before{content:"\f6e1"}.bi-gpu-card::before{content:"\f6e2"}.bi-memory::before{content:"\f6e3"}.bi-modem-fill::before{content:"\f6e4"}.bi-modem::before{content:"\f6e5"}.bi-motherboard-fill::before{content:"\f6e6"}.bi-motherboard::before{content:"\f6e7"}.bi-optical-audio-fill::before{content:"\f6e8"}.bi-optical-audio::before{content:"\f6e9"}.bi-pci-card::before{content:"\f6ea"}.bi-router-fill::before{content:"\f6eb"}.bi-router::before{content:"\f6ec"}.bi-ssd-fill::before{content:"\f6ed"}.bi-ssd::before{content:"\f6ee"}.bi-thunderbolt-fill::before{content:"\f6ef"}.bi-thunderbolt::before{content:"\f6f0"}.bi-usb-drive-fill::before{content:"\f6f1"}.bi-usb-drive::before{content:"\f6f2"}.bi-usb-micro-fill::before{content:"\f6f3"}.bi-usb-micro::before{content:"\f6f4"}.bi-usb-mini-fill::before{content:"\f6f5"}.bi-usb-mini::before{content:"\f6f6"}.bi-cloud-haze2::before{content:"\f6f7"}.bi-device-hdd-fill::before{content:"\f6f8"}.bi-device-hdd::before{content:"\f6f9"}.bi-device-ssd-fill::before{content:"\f6fa"}.bi-device-ssd::before{content:"\f6fb"}.bi-displayport-fill::before{content:"\f6fc"}.bi-mortarboard-fill::before{content:"\f6fd"}.bi-mortarboard::before{content:"\f6fe"}.bi-terminal-x::before{content:"\f6ff"}.bi-arrow-through-heart-fill::before{content:"\f700"}.bi-arrow-through-heart::before{content:"\f701"}.bi-badge-sd-fill::before{content:"\f702"}.bi-badge-sd::before{content:"\f703"}.bi-bag-heart-fill::before{content:"\f704"}.bi-bag-heart::before{content:"\f705"}.bi-balloon-fill::before{content:"\f706"}.bi-balloon-heart-fill::before{content:"\f707"}.bi-balloon-heart::before{content:"\f708"}.bi-balloon::before{content:"\f709"}.bi-box2-fill::before{content:"\f70a"}.bi-box2-heart-fill::before{content:"\f70b"}.bi-box2-heart::before{content:"\f70c"}.bi-box2::before{content:"\f70d"}.bi-braces-asterisk::before{content:"\f70e"}.bi-calendar-heart-fill::before{content:"\f70f"}.bi-calendar-heart::before{content:"\f710"}.bi-calendar2-heart-fill::before{content:"\f711"}.bi-calendar2-heart::before{content:"\f712"}.bi-chat-heart-fill::before{content:"\f713"}.bi-chat-heart::before{content:"\f714"}.bi-chat-left-heart-fill::before{content:"\f715"}.bi-chat-left-heart::before{content:"\f716"}.bi-chat-right-heart-fill::before{content:"\f717"}.bi-chat-right-heart::before{content:"\f718"}.bi-chat-square-heart-fill::before{content:"\f719"}.bi-chat-square-heart::before{content:"\f71a"}.bi-clipboard-check-fill::before{content:"\f71b"}.bi-clipboard-data-fill::before{content:"\f71c"}.bi-clipboard-fill::before{content:"\f71d"}.bi-clipboard-heart-fill::before{content:"\f71e"}.bi-clipboard-heart::before{content:"\f71f"}.bi-clipboard-minus-fill::before{content:"\f720"}.bi-clipboard-plus-fill::before{content:"\f721"}.bi-clipboard-pulse::before{content:"\f722"}.bi-clipboard-x-fill::before{content:"\f723"}.bi-clipboard2-check-fill::before{content:"\f724"}.bi-clipboard2-check::before{content:"\f725"}.bi-clipboard2-data-fill::before{content:"\f726"}.bi-clipboard2-data::before{content:"\f727"}.bi-clipboard2-fill::before{content:"\f728"}.bi-clipboard2-heart-fill::before{content:"\f729"}.bi-clipboard2-heart::before{content:"\f72a"}.bi-clipboard2-minus-fill::before{content:"\f72b"}.bi-clipboard2-minus::before{content:"\f72c"}.bi-clipboard2-plus-fill::before{content:"\f72d"}.bi-clipboard2-plus::before{content:"\f72e"}.bi-clipboard2-pulse-fill::before{content:"\f72f"}.bi-clipboard2-pulse::before{content:"\f730"}.bi-clipboard2-x-fill::before{content:"\f731"}.bi-clipboard2-x::before{content:"\f732"}.bi-clipboard2::before{content:"\f733"}.bi-emoji-kiss-fill::before{content:"\f734"}.bi-emoji-kiss::before{content:"\f735"}.bi-envelope-heart-fill::before{content:"\f736"}.bi-envelope-heart::before{content:"\f737"}.bi-envelope-open-heart-fill::before{content:"\f738"}.bi-envelope-open-heart::before{content:"\f739"}.bi-envelope-paper-fill::before{content:"\f73a"}.bi-envelope-paper-heart-fill::before{content:"\f73b"}.bi-envelope-paper-heart::before{content:"\f73c"}.bi-envelope-paper::before{content:"\f73d"}.bi-filetype-aac::before{content:"\f73e"}.bi-filetype-ai::before{content:"\f73f"}.bi-filetype-bmp::before{content:"\f740"}.bi-filetype-cs::before{content:"\f741"}.bi-filetype-css::before{content:"\f742"}.bi-filetype-csv::before{content:"\f743"}.bi-filetype-doc::before{content:"\f744"}.bi-filetype-docx::before{content:"\f745"}.bi-filetype-exe::before{content:"\f746"}.bi-filetype-gif::before{content:"\f747"}.bi-filetype-heic::before{content:"\f748"}.bi-filetype-html::before{content:"\f749"}.bi-filetype-java::before{content:"\f74a"}.bi-filetype-jpg::before{content:"\f74b"}.bi-filetype-js::before{content:"\f74c"}.bi-filetype-jsx::before{content:"\f74d"}.bi-filetype-key::before{content:"\f74e"}.bi-filetype-m4p::before{content:"\f74f"}.bi-filetype-md::before{content:"\f750"}.bi-filetype-mdx::before{content:"\f751"}.bi-filetype-mov::before{content:"\f752"}.bi-filetype-mp3::before{content:"\f753"}.bi-filetype-mp4::before{content:"\f754"}.bi-filetype-otf::before{content:"\f755"}.bi-filetype-pdf::before{content:"\f756"}.bi-filetype-php::before{content:"\f757"}.bi-filetype-png::before{content:"\f758"}.bi-filetype-ppt-1::before{content:"\f759"}.bi-filetype-ppt::before{content:"\f75a"}.bi-filetype-psd::before{content:"\f75b"}.bi-filetype-py::before{content:"\f75c"}.bi-filetype-raw::before{content:"\f75d"}.bi-filetype-rb::before{content:"\f75e"}.bi-filetype-sass::before{content:"\f75f"}.bi-filetype-scss::before{content:"\f760"}.bi-filetype-sh::before{content:"\f761"}.bi-filetype-svg::before{content:"\f762"}.bi-filetype-tiff::before{content:"\f763"}.bi-filetype-tsx::before{content:"\f764"}.bi-filetype-ttf::before{content:"\f765"}.bi-filetype-txt::before{content:"\f766"}.bi-filetype-wav::before{content:"\f767"}.bi-filetype-woff::before{content:"\f768"}.bi-filetype-xls-1::before{content:"\f769"}.bi-filetype-xls::before{content:"\f76a"}.bi-filetype-xml::before{content:"\f76b"}.bi-filetype-yml::before{content:"\f76c"}.bi-heart-arrow::before{content:"\f76d"}.bi-heart-pulse-fill::before{content:"\f76e"}.bi-heart-pulse::before{content:"\f76f"}.bi-heartbreak-fill::before{content:"\f770"}.bi-heartbreak::before{content:"\f771"}.bi-hearts::before{content:"\f772"}.bi-hospital-fill::before{content:"\f773"}.bi-hospital::before{content:"\f774"}.bi-house-heart-fill::before{content:"\f775"}.bi-house-heart::before{content:"\f776"}.bi-incognito::before{content:"\f777"}.bi-magnet-fill::before{content:"\f778"}.bi-magnet::before{content:"\f779"}.bi-person-heart::before{content:"\f77a"}.bi-person-hearts::before{content:"\f77b"}.bi-phone-flip::before{content:"\f77c"}.bi-plugin::before{content:"\f77d"}.bi-postage-fill::before{content:"\f77e"}.bi-postage-heart-fill::before{content:"\f77f"}.bi-postage-heart::before{content:"\f780"}.bi-postage::before{content:"\f781"}.bi-postcard-fill::before{content:"\f782"}.bi-postcard-heart-fill::before{content:"\f783"}.bi-postcard-heart::before{content:"\f784"}.bi-postcard::before{content:"\f785"}.bi-search-heart-fill::before{content:"\f786"}.bi-search-heart::before{content:"\f787"}.bi-sliders2-vertical::before{content:"\f788"}.bi-sliders2::before{content:"\f789"}.bi-trash3-fill::before{content:"\f78a"}.bi-trash3::before{content:"\f78b"}.bi-valentine::before{content:"\f78c"}.bi-valentine2::before{content:"\f78d"}.bi-wrench-adjustable-circle-fill::before{content:"\f78e"}.bi-wrench-adjustable-circle::before{content:"\f78f"}.bi-wrench-adjustable::before{content:"\f790"}.bi-filetype-json::before{content:"\f791"}.bi-filetype-pptx::before{content:"\f792"}.bi-filetype-xlsx::before{content:"\f793"}.bi-1-circle-1::before{content:"\f794"}.bi-1-circle-fill-1::before{content:"\f795"}.bi-1-circle-fill::before{content:"\f796"}.bi-1-circle::before{content:"\f797"}.bi-1-square-fill::before{content:"\f798"}.bi-1-square::before{content:"\f799"}.bi-2-circle-1::before{content:"\f79a"}.bi-2-circle-fill-1::before{content:"\f79b"}.bi-2-circle-fill::before{content:"\f79c"}.bi-2-circle::before{content:"\f79d"}.bi-2-square-fill::before{content:"\f79e"}.bi-2-square::before{content:"\f79f"}.bi-3-circle-1::before{content:"\f7a0"}.bi-3-circle-fill-1::before{content:"\f7a1"}.bi-3-circle-fill::before{content:"\f7a2"}.bi-3-circle::before{content:"\f7a3"}.bi-3-square-fill::before{content:"\f7a4"}.bi-3-square::before{content:"\f7a5"}.bi-4-circle-1::before{content:"\f7a6"}.bi-4-circle-fill-1::before{content:"\f7a7"}.bi-4-circle-fill::before{content:"\f7a8"}.bi-4-circle::before{content:"\f7a9"}.bi-4-square-fill::before{content:"\f7aa"}.bi-4-square::before{content:"\f7ab"}.bi-5-circle-1::before{content:"\f7ac"}.bi-5-circle-fill-1::before{content:"\f7ad"}.bi-5-circle-fill::before{content:"\f7ae"}.bi-5-circle::before{content:"\f7af"}.bi-5-square-fill::before{content:"\f7b0"}.bi-5-square::before{content:"\f7b1"}.bi-6-circle-1::before{content:"\f7b2"}.bi-6-circle-fill-1::before{content:"\f7b3"}.bi-6-circle-fill::before{content:"\f7b4"}.bi-6-circle::before{content:"\f7b5"}.bi-6-square-fill::before{content:"\f7b6"}.bi-6-square::before{content:"\f7b7"}.bi-7-circle-1::before{content:"\f7b8"}.bi-7-circle-fill-1::before{content:"\f7b9"}.bi-7-circle-fill::before{content:"\f7ba"}.bi-7-circle::before{content:"\f7bb"}.bi-7-square-fill::before{content:"\f7bc"}.bi-7-square::before{content:"\f7bd"}.bi-8-circle-1::before{content:"\f7be"}.bi-8-circle-fill-1::before{content:"\f7bf"}.bi-8-circle-fill::before{content:"\f7c0"}.bi-8-circle::before{content:"\f7c1"}.bi-8-square-fill::before{content:"\f7c2"}.bi-8-square::before{content:"\f7c3"}.bi-9-circle-1::before{content:"\f7c4"}.bi-9-circle-fill-1::before{content:"\f7c5"}.bi-9-circle-fill::before{content:"\f7c6"}.bi-9-circle::before{content:"\f7c7"}.bi-9-square-fill::before{content:"\f7c8"}.bi-9-square::before{content:"\f7c9"}.bi-airplane-engines-fill::before{content:"\f7ca"}.bi-airplane-engines::before{content:"\f7cb"}.bi-airplane-fill::before{content:"\f7cc"}.bi-airplane::before{content:"\f7cd"}.bi-alexa::before{content:"\f7ce"}.bi-alipay::before{content:"\f7cf"}.bi-android::before{content:"\f7d0"}.bi-android2::before{content:"\f7d1"}.bi-box-fill::before{content:"\f7d2"}.bi-box-seam-fill::before{content:"\f7d3"}.bi-browser-chrome::before{content:"\f7d4"}.bi-browser-edge::before{content:"\f7d5"}.bi-browser-firefox::before{content:"\f7d6"}.bi-browser-safari::before{content:"\f7d7"}.bi-c-circle-1::before{content:"\f7d8"}.bi-c-circle-fill-1::before{content:"\f7d9"}.bi-c-circle-fill::before{content:"\f7da"}.bi-c-circle::before{content:"\f7db"}.bi-c-square-fill::before{content:"\f7dc"}.bi-c-square::before{content:"\f7dd"}.bi-capsule-pill::before{content:"\f7de"}.bi-capsule::before{content:"\f7df"}.bi-car-front-fill::before{content:"\f7e0"}.bi-car-front::before{content:"\f7e1"}.bi-cassette-fill::before{content:"\f7e2"}.bi-cassette::before{content:"\f7e3"}.bi-cc-circle-1::before{content:"\f7e4"}.bi-cc-circle-fill-1::before{content:"\f7e5"}.bi-cc-circle-fill::before{content:"\f7e6"}.bi-cc-circle::before{content:"\f7e7"}.bi-cc-square-fill::before{content:"\f7e8"}.bi-cc-square::before{content:"\f7e9"}.bi-cup-hot-fill::before{content:"\f7ea"}.bi-cup-hot::before{content:"\f7eb"}.bi-currency-rupee::before{content:"\f7ec"}.bi-dropbox::before{content:"\f7ed"}.bi-escape::before{content:"\f7ee"}.bi-fast-forward-btn-fill::before{content:"\f7ef"}.bi-fast-forward-btn::before{content:"\f7f0"}.bi-fast-forward-circle-fill::before{content:"\f7f1"}.bi-fast-forward-circle::before{content:"\f7f2"}.bi-fast-forward-fill::before{content:"\f7f3"}.bi-fast-forward::before{content:"\f7f4"}.bi-filetype-sql::before{content:"\f7f5"}.bi-fire::before{content:"\f7f6"}.bi-google-play::before{content:"\f7f7"}.bi-h-circle-1::before{content:"\f7f8"}.bi-h-circle-fill-1::before{content:"\f7f9"}.bi-h-circle-fill::before{content:"\f7fa"}.bi-h-circle::before{content:"\f7fb"}.bi-h-square-fill::before{content:"\f7fc"}.bi-h-square::before{content:"\f7fd"}.bi-indent::before{content:"\f7fe"}.bi-lungs-fill::before{content:"\f7ff"}.bi-lungs::before{content:"\f800"}.bi-microsoft-teams::before{content:"\f801"}.bi-p-circle-1::before{content:"\f802"}.bi-p-circle-fill-1::before{content:"\f803"}.bi-p-circle-fill::before{content:"\f804"}.bi-p-circle::before{content:"\f805"}.bi-p-square-fill::before{content:"\f806"}.bi-p-square::before{content:"\f807"}.bi-pass-fill::before{content:"\f808"}.bi-pass::before{content:"\f809"}.bi-prescription::before{content:"\f80a"}.bi-prescription2::before{content:"\f80b"}.bi-r-circle-1::before{content:"\f80c"}.bi-r-circle-fill-1::before{content:"\f80d"}.bi-r-circle-fill::before{content:"\f80e"}.bi-r-circle::before{content:"\f80f"}.bi-r-square-fill::before{content:"\f810"}.bi-r-square::before{content:"\f811"}.bi-repeat-1::before{content:"\f812"}.bi-repeat::before{content:"\f813"}.bi-rewind-btn-fill::before{content:"\f814"}.bi-rewind-btn::before{content:"\f815"}.bi-rewind-circle-fill::before{content:"\f816"}.bi-rewind-circle::before{content:"\f817"}.bi-rewind-fill::before{content:"\f818"}.bi-rewind::before{content:"\f819"}.bi-train-freight-front-fill::before{content:"\f81a"}.bi-train-freight-front::before{content:"\f81b"}.bi-train-front-fill::before{content:"\f81c"}.bi-train-front::before{content:"\f81d"}.bi-train-lightrail-front-fill::before{content:"\f81e"}.bi-train-lightrail-front::before{content:"\f81f"}.bi-truck-front-fill::before{content:"\f820"}.bi-truck-front::before{content:"\f821"}.bi-ubuntu::before{content:"\f822"}.bi-unindent::before{content:"\f823"}.bi-unity::before{content:"\f824"}.bi-universal-access-circle::before{content:"\f825"}.bi-universal-access::before{content:"\f826"}.bi-virus::before{content:"\f827"}.bi-virus2::before{content:"\f828"}.bi-wechat::before{content:"\f829"}.bi-yelp::before{content:"\f82a"}.bi-sign-stop-fill::before{content:"\f82b"}.bi-sign-stop-lights-fill::before{content:"\f82c"}.bi-sign-stop-lights::before{content:"\f82d"}.bi-sign-stop::before{content:"\f82e"}.bi-sign-turn-left-fill::before{content:"\f82f"}.bi-sign-turn-left::before{content:"\f830"}.bi-sign-turn-right-fill::before{content:"\f831"}.bi-sign-turn-right::before{content:"\f832"}.bi-sign-turn-slight-left-fill::before{content:"\f833"}.bi-sign-turn-slight-left::before{content:"\f834"}.bi-sign-turn-slight-right-fill::before{content:"\f835"}.bi-sign-turn-slight-right::before{content:"\f836"}.bi-sign-yield-fill::before{content:"\f837"}.bi-sign-yield::before{content:"\f838"}.bi-ev-station-fill::before{content:"\f839"}.bi-ev-station::before{content:"\f83a"}.bi-fuel-pump-diesel-fill::before{content:"\f83b"}.bi-fuel-pump-diesel::before{content:"\f83c"}.bi-fuel-pump-fill::before{content:"\f83d"}.bi-fuel-pump::before{content:"\f83e"} +/*# sourceMappingURL=/sm/d206ec34385c8521671a1967f920c286a45bf739842d26fd53d751161e52d8f9.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.scss b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.scss new file mode 100644 index 000000000..99770d07d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/bootstrap-icons.scss @@ -0,0 +1,3738 @@ +$bootstrap-icons-font: "bootstrap-icons" !default; +$bootstrap-icons-font-dir: "./fonts" !default; +$bootstrap-icons-font-file: #{$bootstrap-icons-font-dir}/#{$bootstrap-icons-font} !default; +$bootstrap-icons-font-hash: "8d200481aa7f02a2d63a331fc782cfaf" !default; +$bootstrap-icons-font-src: url("#{$bootstrap-icons-font-file}.woff2?#{$bootstrap-icons-font-hash}") format("woff2"), url("#{$bootstrap-icons-font-file}.woff?#{$bootstrap-icons-font-hash}") format("woff") !default; + +@font-face { + font-display: block; + font-family: $bootstrap-icons-font; + src: $bootstrap-icons-font-src; +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: $bootstrap-icons-font !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +$bootstrap-icons-map: ( + "123": "\f67f", + "alarm-fill": "\f101", + "alarm": "\f102", + "align-bottom": "\f103", + "align-center": "\f104", + "align-end": "\f105", + "align-middle": "\f106", + "align-start": "\f107", + "align-top": "\f108", + "alt": "\f109", + "app-indicator": "\f10a", + "app": "\f10b", + "archive-fill": "\f10c", + "archive": "\f10d", + "arrow-90deg-down": "\f10e", + "arrow-90deg-left": "\f10f", + "arrow-90deg-right": "\f110", + "arrow-90deg-up": "\f111", + "arrow-bar-down": "\f112", + "arrow-bar-left": "\f113", + "arrow-bar-right": "\f114", + "arrow-bar-up": "\f115", + "arrow-clockwise": "\f116", + "arrow-counterclockwise": "\f117", + "arrow-down-circle-fill": "\f118", + "arrow-down-circle": "\f119", + "arrow-down-left-circle-fill": "\f11a", + "arrow-down-left-circle": "\f11b", + "arrow-down-left-square-fill": "\f11c", + "arrow-down-left-square": "\f11d", + "arrow-down-left": "\f11e", + "arrow-down-right-circle-fill": "\f11f", + "arrow-down-right-circle": "\f120", + "arrow-down-right-square-fill": "\f121", + "arrow-down-right-square": "\f122", + "arrow-down-right": "\f123", + "arrow-down-short": "\f124", + "arrow-down-square-fill": "\f125", + "arrow-down-square": "\f126", + "arrow-down-up": "\f127", + "arrow-down": "\f128", + "arrow-left-circle-fill": "\f129", + "arrow-left-circle": "\f12a", + "arrow-left-right": "\f12b", + "arrow-left-short": "\f12c", + "arrow-left-square-fill": "\f12d", + "arrow-left-square": "\f12e", + "arrow-left": "\f12f", + "arrow-repeat": "\f130", + "arrow-return-left": "\f131", + "arrow-return-right": "\f132", + "arrow-right-circle-fill": "\f133", + "arrow-right-circle": "\f134", + "arrow-right-short": "\f135", + "arrow-right-square-fill": "\f136", + "arrow-right-square": "\f137", + "arrow-right": "\f138", + "arrow-up-circle-fill": "\f139", + "arrow-up-circle": "\f13a", + "arrow-up-left-circle-fill": "\f13b", + "arrow-up-left-circle": "\f13c", + "arrow-up-left-square-fill": "\f13d", + "arrow-up-left-square": "\f13e", + "arrow-up-left": "\f13f", + "arrow-up-right-circle-fill": "\f140", + "arrow-up-right-circle": "\f141", + "arrow-up-right-square-fill": "\f142", + "arrow-up-right-square": "\f143", + "arrow-up-right": "\f144", + "arrow-up-short": "\f145", + "arrow-up-square-fill": "\f146", + "arrow-up-square": "\f147", + "arrow-up": "\f148", + "arrows-angle-contract": "\f149", + "arrows-angle-expand": "\f14a", + "arrows-collapse": "\f14b", + "arrows-expand": "\f14c", + "arrows-fullscreen": "\f14d", + "arrows-move": "\f14e", + "aspect-ratio-fill": "\f14f", + "aspect-ratio": "\f150", + "asterisk": "\f151", + "at": "\f152", + "award-fill": "\f153", + "award": "\f154", + "back": "\f155", + "backspace-fill": "\f156", + "backspace-reverse-fill": "\f157", + "backspace-reverse": "\f158", + "backspace": "\f159", + "badge-3d-fill": "\f15a", + "badge-3d": "\f15b", + "badge-4k-fill": "\f15c", + "badge-4k": "\f15d", + "badge-8k-fill": "\f15e", + "badge-8k": "\f15f", + "badge-ad-fill": "\f160", + "badge-ad": "\f161", + "badge-ar-fill": "\f162", + "badge-ar": "\f163", + "badge-cc-fill": "\f164", + "badge-cc": "\f165", + "badge-hd-fill": "\f166", + "badge-hd": "\f167", + "badge-tm-fill": "\f168", + "badge-tm": "\f169", + "badge-vo-fill": "\f16a", + "badge-vo": "\f16b", + "badge-vr-fill": "\f16c", + "badge-vr": "\f16d", + "badge-wc-fill": "\f16e", + "badge-wc": "\f16f", + "bag-check-fill": "\f170", + "bag-check": "\f171", + "bag-dash-fill": "\f172", + "bag-dash": "\f173", + "bag-fill": "\f174", + "bag-plus-fill": "\f175", + "bag-plus": "\f176", + "bag-x-fill": "\f177", + "bag-x": "\f178", + "bag": "\f179", + "bar-chart-fill": "\f17a", + "bar-chart-line-fill": "\f17b", + "bar-chart-line": "\f17c", + "bar-chart-steps": "\f17d", + "bar-chart": "\f17e", + "basket-fill": "\f17f", + "basket": "\f180", + "basket2-fill": "\f181", + "basket2": "\f182", + "basket3-fill": "\f183", + "basket3": "\f184", + "battery-charging": "\f185", + "battery-full": "\f186", + "battery-half": "\f187", + "battery": "\f188", + "bell-fill": "\f189", + "bell": "\f18a", + "bezier": "\f18b", + "bezier2": "\f18c", + "bicycle": "\f18d", + "binoculars-fill": "\f18e", + "binoculars": "\f18f", + "blockquote-left": "\f190", + "blockquote-right": "\f191", + "book-fill": "\f192", + "book-half": "\f193", + "book": "\f194", + "bookmark-check-fill": "\f195", + "bookmark-check": "\f196", + "bookmark-dash-fill": "\f197", + "bookmark-dash": "\f198", + "bookmark-fill": "\f199", + "bookmark-heart-fill": "\f19a", + "bookmark-heart": "\f19b", + "bookmark-plus-fill": "\f19c", + "bookmark-plus": "\f19d", + "bookmark-star-fill": "\f19e", + "bookmark-star": "\f19f", + "bookmark-x-fill": "\f1a0", + "bookmark-x": "\f1a1", + "bookmark": "\f1a2", + "bookmarks-fill": "\f1a3", + "bookmarks": "\f1a4", + "bookshelf": "\f1a5", + "bootstrap-fill": "\f1a6", + "bootstrap-reboot": "\f1a7", + "bootstrap": "\f1a8", + "border-all": "\f1a9", + "border-bottom": "\f1aa", + "border-center": "\f1ab", + "border-inner": "\f1ac", + "border-left": "\f1ad", + "border-middle": "\f1ae", + "border-outer": "\f1af", + "border-right": "\f1b0", + "border-style": "\f1b1", + "border-top": "\f1b2", + "border-width": "\f1b3", + "border": "\f1b4", + "bounding-box-circles": "\f1b5", + "bounding-box": "\f1b6", + "box-arrow-down-left": "\f1b7", + "box-arrow-down-right": "\f1b8", + "box-arrow-down": "\f1b9", + "box-arrow-in-down-left": "\f1ba", + "box-arrow-in-down-right": "\f1bb", + "box-arrow-in-down": "\f1bc", + "box-arrow-in-left": "\f1bd", + "box-arrow-in-right": "\f1be", + "box-arrow-in-up-left": "\f1bf", + "box-arrow-in-up-right": "\f1c0", + "box-arrow-in-up": "\f1c1", + "box-arrow-left": "\f1c2", + "box-arrow-right": "\f1c3", + "box-arrow-up-left": "\f1c4", + "box-arrow-up-right": "\f1c5", + "box-arrow-up": "\f1c6", + "box-seam": "\f1c7", + "box": "\f1c8", + "braces": "\f1c9", + "bricks": "\f1ca", + "briefcase-fill": "\f1cb", + "briefcase": "\f1cc", + "brightness-alt-high-fill": "\f1cd", + "brightness-alt-high": "\f1ce", + "brightness-alt-low-fill": "\f1cf", + "brightness-alt-low": "\f1d0", + "brightness-high-fill": "\f1d1", + "brightness-high": "\f1d2", + "brightness-low-fill": "\f1d3", + "brightness-low": "\f1d4", + "broadcast-pin": "\f1d5", + "broadcast": "\f1d6", + "brush-fill": "\f1d7", + "brush": "\f1d8", + "bucket-fill": "\f1d9", + "bucket": "\f1da", + "bug-fill": "\f1db", + "bug": "\f1dc", + "building": "\f1dd", + "bullseye": "\f1de", + "calculator-fill": "\f1df", + "calculator": "\f1e0", + "calendar-check-fill": "\f1e1", + "calendar-check": "\f1e2", + "calendar-date-fill": "\f1e3", + "calendar-date": "\f1e4", + "calendar-day-fill": "\f1e5", + "calendar-day": "\f1e6", + "calendar-event-fill": "\f1e7", + "calendar-event": "\f1e8", + "calendar-fill": "\f1e9", + "calendar-minus-fill": "\f1ea", + "calendar-minus": "\f1eb", + "calendar-month-fill": "\f1ec", + "calendar-month": "\f1ed", + "calendar-plus-fill": "\f1ee", + "calendar-plus": "\f1ef", + "calendar-range-fill": "\f1f0", + "calendar-range": "\f1f1", + "calendar-week-fill": "\f1f2", + "calendar-week": "\f1f3", + "calendar-x-fill": "\f1f4", + "calendar-x": "\f1f5", + "calendar": "\f1f6", + "calendar2-check-fill": "\f1f7", + "calendar2-check": "\f1f8", + "calendar2-date-fill": "\f1f9", + "calendar2-date": "\f1fa", + "calendar2-day-fill": "\f1fb", + "calendar2-day": "\f1fc", + "calendar2-event-fill": "\f1fd", + "calendar2-event": "\f1fe", + "calendar2-fill": "\f1ff", + "calendar2-minus-fill": "\f200", + "calendar2-minus": "\f201", + "calendar2-month-fill": "\f202", + "calendar2-month": "\f203", + "calendar2-plus-fill": "\f204", + "calendar2-plus": "\f205", + "calendar2-range-fill": "\f206", + "calendar2-range": "\f207", + "calendar2-week-fill": "\f208", + "calendar2-week": "\f209", + "calendar2-x-fill": "\f20a", + "calendar2-x": "\f20b", + "calendar2": "\f20c", + "calendar3-event-fill": "\f20d", + "calendar3-event": "\f20e", + "calendar3-fill": "\f20f", + "calendar3-range-fill": "\f210", + "calendar3-range": "\f211", + "calendar3-week-fill": "\f212", + "calendar3-week": "\f213", + "calendar3": "\f214", + "calendar4-event": "\f215", + "calendar4-range": "\f216", + "calendar4-week": "\f217", + "calendar4": "\f218", + "camera-fill": "\f219", + "camera-reels-fill": "\f21a", + "camera-reels": "\f21b", + "camera-video-fill": "\f21c", + "camera-video-off-fill": "\f21d", + "camera-video-off": "\f21e", + "camera-video": "\f21f", + "camera": "\f220", + "camera2": "\f221", + "capslock-fill": "\f222", + "capslock": "\f223", + "card-checklist": "\f224", + "card-heading": "\f225", + "card-image": "\f226", + "card-list": "\f227", + "card-text": "\f228", + "caret-down-fill": "\f229", + "caret-down-square-fill": "\f22a", + "caret-down-square": "\f22b", + "caret-down": "\f22c", + "caret-left-fill": "\f22d", + "caret-left-square-fill": "\f22e", + "caret-left-square": "\f22f", + "caret-left": "\f230", + "caret-right-fill": "\f231", + "caret-right-square-fill": "\f232", + "caret-right-square": "\f233", + "caret-right": "\f234", + "caret-up-fill": "\f235", + "caret-up-square-fill": "\f236", + "caret-up-square": "\f237", + "caret-up": "\f238", + "cart-check-fill": "\f239", + "cart-check": "\f23a", + "cart-dash-fill": "\f23b", + "cart-dash": "\f23c", + "cart-fill": "\f23d", + "cart-plus-fill": "\f23e", + "cart-plus": "\f23f", + "cart-x-fill": "\f240", + "cart-x": "\f241", + "cart": "\f242", + "cart2": "\f243", + "cart3": "\f244", + "cart4": "\f245", + "cash-stack": "\f246", + "cash": "\f247", + "cast": "\f248", + "chat-dots-fill": "\f249", + "chat-dots": "\f24a", + "chat-fill": "\f24b", + "chat-left-dots-fill": "\f24c", + "chat-left-dots": "\f24d", + "chat-left-fill": "\f24e", + "chat-left-quote-fill": "\f24f", + "chat-left-quote": "\f250", + "chat-left-text-fill": "\f251", + "chat-left-text": "\f252", + "chat-left": "\f253", + "chat-quote-fill": "\f254", + "chat-quote": "\f255", + "chat-right-dots-fill": "\f256", + "chat-right-dots": "\f257", + "chat-right-fill": "\f258", + "chat-right-quote-fill": "\f259", + "chat-right-quote": "\f25a", + "chat-right-text-fill": "\f25b", + "chat-right-text": "\f25c", + "chat-right": "\f25d", + "chat-square-dots-fill": "\f25e", + "chat-square-dots": "\f25f", + "chat-square-fill": "\f260", + "chat-square-quote-fill": "\f261", + "chat-square-quote": "\f262", + "chat-square-text-fill": "\f263", + "chat-square-text": "\f264", + "chat-square": "\f265", + "chat-text-fill": "\f266", + "chat-text": "\f267", + "chat": "\f268", + "check-all": "\f269", + "check-circle-fill": "\f26a", + "check-circle": "\f26b", + "check-square-fill": "\f26c", + "check-square": "\f26d", + "check": "\f26e", + "check2-all": "\f26f", + "check2-circle": "\f270", + "check2-square": "\f271", + "check2": "\f272", + "chevron-bar-contract": "\f273", + "chevron-bar-down": "\f274", + "chevron-bar-expand": "\f275", + "chevron-bar-left": "\f276", + "chevron-bar-right": "\f277", + "chevron-bar-up": "\f278", + "chevron-compact-down": "\f279", + "chevron-compact-left": "\f27a", + "chevron-compact-right": "\f27b", + "chevron-compact-up": "\f27c", + "chevron-contract": "\f27d", + "chevron-double-down": "\f27e", + "chevron-double-left": "\f27f", + "chevron-double-right": "\f280", + "chevron-double-up": "\f281", + "chevron-down": "\f282", + "chevron-expand": "\f283", + "chevron-left": "\f284", + "chevron-right": "\f285", + "chevron-up": "\f286", + "circle-fill": "\f287", + "circle-half": "\f288", + "circle-square": "\f289", + "circle": "\f28a", + "clipboard-check": "\f28b", + "clipboard-data": "\f28c", + "clipboard-minus": "\f28d", + "clipboard-plus": "\f28e", + "clipboard-x": "\f28f", + "clipboard": "\f290", + "clock-fill": "\f291", + "clock-history": "\f292", + "clock": "\f293", + "cloud-arrow-down-fill": "\f294", + "cloud-arrow-down": "\f295", + "cloud-arrow-up-fill": "\f296", + "cloud-arrow-up": "\f297", + "cloud-check-fill": "\f298", + "cloud-check": "\f299", + "cloud-download-fill": "\f29a", + "cloud-download": "\f29b", + "cloud-drizzle-fill": "\f29c", + "cloud-drizzle": "\f29d", + "cloud-fill": "\f29e", + "cloud-fog-fill": "\f29f", + "cloud-fog": "\f2a0", + "cloud-fog2-fill": "\f2a1", + "cloud-fog2": "\f2a2", + "cloud-hail-fill": "\f2a3", + "cloud-hail": "\f2a4", + "cloud-haze-1": "\f2a5", + "cloud-haze-fill": "\f2a6", + "cloud-haze": "\f2a7", + "cloud-haze2-fill": "\f2a8", + "cloud-lightning-fill": "\f2a9", + "cloud-lightning-rain-fill": "\f2aa", + "cloud-lightning-rain": "\f2ab", + "cloud-lightning": "\f2ac", + "cloud-minus-fill": "\f2ad", + "cloud-minus": "\f2ae", + "cloud-moon-fill": "\f2af", + "cloud-moon": "\f2b0", + "cloud-plus-fill": "\f2b1", + "cloud-plus": "\f2b2", + "cloud-rain-fill": "\f2b3", + "cloud-rain-heavy-fill": "\f2b4", + "cloud-rain-heavy": "\f2b5", + "cloud-rain": "\f2b6", + "cloud-slash-fill": "\f2b7", + "cloud-slash": "\f2b8", + "cloud-sleet-fill": "\f2b9", + "cloud-sleet": "\f2ba", + "cloud-snow-fill": "\f2bb", + "cloud-snow": "\f2bc", + "cloud-sun-fill": "\f2bd", + "cloud-sun": "\f2be", + "cloud-upload-fill": "\f2bf", + "cloud-upload": "\f2c0", + "cloud": "\f2c1", + "clouds-fill": "\f2c2", + "clouds": "\f2c3", + "cloudy-fill": "\f2c4", + "cloudy": "\f2c5", + "code-slash": "\f2c6", + "code-square": "\f2c7", + "code": "\f2c8", + "collection-fill": "\f2c9", + "collection-play-fill": "\f2ca", + "collection-play": "\f2cb", + "collection": "\f2cc", + "columns-gap": "\f2cd", + "columns": "\f2ce", + "command": "\f2cf", + "compass-fill": "\f2d0", + "compass": "\f2d1", + "cone-striped": "\f2d2", + "cone": "\f2d3", + "controller": "\f2d4", + "cpu-fill": "\f2d5", + "cpu": "\f2d6", + "credit-card-2-back-fill": "\f2d7", + "credit-card-2-back": "\f2d8", + "credit-card-2-front-fill": "\f2d9", + "credit-card-2-front": "\f2da", + "credit-card-fill": "\f2db", + "credit-card": "\f2dc", + "crop": "\f2dd", + "cup-fill": "\f2de", + "cup-straw": "\f2df", + "cup": "\f2e0", + "cursor-fill": "\f2e1", + "cursor-text": "\f2e2", + "cursor": "\f2e3", + "dash-circle-dotted": "\f2e4", + "dash-circle-fill": "\f2e5", + "dash-circle": "\f2e6", + "dash-square-dotted": "\f2e7", + "dash-square-fill": "\f2e8", + "dash-square": "\f2e9", + "dash": "\f2ea", + "diagram-2-fill": "\f2eb", + "diagram-2": "\f2ec", + "diagram-3-fill": "\f2ed", + "diagram-3": "\f2ee", + "diamond-fill": "\f2ef", + "diamond-half": "\f2f0", + "diamond": "\f2f1", + "dice-1-fill": "\f2f2", + "dice-1": "\f2f3", + "dice-2-fill": "\f2f4", + "dice-2": "\f2f5", + "dice-3-fill": "\f2f6", + "dice-3": "\f2f7", + "dice-4-fill": "\f2f8", + "dice-4": "\f2f9", + "dice-5-fill": "\f2fa", + "dice-5": "\f2fb", + "dice-6-fill": "\f2fc", + "dice-6": "\f2fd", + "disc-fill": "\f2fe", + "disc": "\f2ff", + "discord": "\f300", + "display-fill": "\f301", + "display": "\f302", + "distribute-horizontal": "\f303", + "distribute-vertical": "\f304", + "door-closed-fill": "\f305", + "door-closed": "\f306", + "door-open-fill": "\f307", + "door-open": "\f308", + "dot": "\f309", + "download": "\f30a", + "droplet-fill": "\f30b", + "droplet-half": "\f30c", + "droplet": "\f30d", + "earbuds": "\f30e", + "easel-fill": "\f30f", + "easel": "\f310", + "egg-fill": "\f311", + "egg-fried": "\f312", + "egg": "\f313", + "eject-fill": "\f314", + "eject": "\f315", + "emoji-angry-fill": "\f316", + "emoji-angry": "\f317", + "emoji-dizzy-fill": "\f318", + "emoji-dizzy": "\f319", + "emoji-expressionless-fill": "\f31a", + "emoji-expressionless": "\f31b", + "emoji-frown-fill": "\f31c", + "emoji-frown": "\f31d", + "emoji-heart-eyes-fill": "\f31e", + "emoji-heart-eyes": "\f31f", + "emoji-laughing-fill": "\f320", + "emoji-laughing": "\f321", + "emoji-neutral-fill": "\f322", + "emoji-neutral": "\f323", + "emoji-smile-fill": "\f324", + "emoji-smile-upside-down-fill": "\f325", + "emoji-smile-upside-down": "\f326", + "emoji-smile": "\f327", + "emoji-sunglasses-fill": "\f328", + "emoji-sunglasses": "\f329", + "emoji-wink-fill": "\f32a", + "emoji-wink": "\f32b", + "envelope-fill": "\f32c", + "envelope-open-fill": "\f32d", + "envelope-open": "\f32e", + "envelope": "\f32f", + "eraser-fill": "\f330", + "eraser": "\f331", + "exclamation-circle-fill": "\f332", + "exclamation-circle": "\f333", + "exclamation-diamond-fill": "\f334", + "exclamation-diamond": "\f335", + "exclamation-octagon-fill": "\f336", + "exclamation-octagon": "\f337", + "exclamation-square-fill": "\f338", + "exclamation-square": "\f339", + "exclamation-triangle-fill": "\f33a", + "exclamation-triangle": "\f33b", + "exclamation": "\f33c", + "exclude": "\f33d", + "eye-fill": "\f33e", + "eye-slash-fill": "\f33f", + "eye-slash": "\f340", + "eye": "\f341", + "eyedropper": "\f342", + "eyeglasses": "\f343", + "facebook": "\f344", + "file-arrow-down-fill": "\f345", + "file-arrow-down": "\f346", + "file-arrow-up-fill": "\f347", + "file-arrow-up": "\f348", + "file-bar-graph-fill": "\f349", + "file-bar-graph": "\f34a", + "file-binary-fill": "\f34b", + "file-binary": "\f34c", + "file-break-fill": "\f34d", + "file-break": "\f34e", + "file-check-fill": "\f34f", + "file-check": "\f350", + "file-code-fill": "\f351", + "file-code": "\f352", + "file-diff-fill": "\f353", + "file-diff": "\f354", + "file-earmark-arrow-down-fill": "\f355", + "file-earmark-arrow-down": "\f356", + "file-earmark-arrow-up-fill": "\f357", + "file-earmark-arrow-up": "\f358", + "file-earmark-bar-graph-fill": "\f359", + "file-earmark-bar-graph": "\f35a", + "file-earmark-binary-fill": "\f35b", + "file-earmark-binary": "\f35c", + "file-earmark-break-fill": "\f35d", + "file-earmark-break": "\f35e", + "file-earmark-check-fill": "\f35f", + "file-earmark-check": "\f360", + "file-earmark-code-fill": "\f361", + "file-earmark-code": "\f362", + "file-earmark-diff-fill": "\f363", + "file-earmark-diff": "\f364", + "file-earmark-easel-fill": "\f365", + "file-earmark-easel": "\f366", + "file-earmark-excel-fill": "\f367", + "file-earmark-excel": "\f368", + "file-earmark-fill": "\f369", + "file-earmark-font-fill": "\f36a", + "file-earmark-font": "\f36b", + "file-earmark-image-fill": "\f36c", + "file-earmark-image": "\f36d", + "file-earmark-lock-fill": "\f36e", + "file-earmark-lock": "\f36f", + "file-earmark-lock2-fill": "\f370", + "file-earmark-lock2": "\f371", + "file-earmark-medical-fill": "\f372", + "file-earmark-medical": "\f373", + "file-earmark-minus-fill": "\f374", + "file-earmark-minus": "\f375", + "file-earmark-music-fill": "\f376", + "file-earmark-music": "\f377", + "file-earmark-person-fill": "\f378", + "file-earmark-person": "\f379", + "file-earmark-play-fill": "\f37a", + "file-earmark-play": "\f37b", + "file-earmark-plus-fill": "\f37c", + "file-earmark-plus": "\f37d", + "file-earmark-post-fill": "\f37e", + "file-earmark-post": "\f37f", + "file-earmark-ppt-fill": "\f380", + "file-earmark-ppt": "\f381", + "file-earmark-richtext-fill": "\f382", + "file-earmark-richtext": "\f383", + "file-earmark-ruled-fill": "\f384", + "file-earmark-ruled": "\f385", + "file-earmark-slides-fill": "\f386", + "file-earmark-slides": "\f387", + "file-earmark-spreadsheet-fill": "\f388", + "file-earmark-spreadsheet": "\f389", + "file-earmark-text-fill": "\f38a", + "file-earmark-text": "\f38b", + "file-earmark-word-fill": "\f38c", + "file-earmark-word": "\f38d", + "file-earmark-x-fill": "\f38e", + "file-earmark-x": "\f38f", + "file-earmark-zip-fill": "\f390", + "file-earmark-zip": "\f391", + "file-earmark": "\f392", + "file-easel-fill": "\f393", + "file-easel": "\f394", + "file-excel-fill": "\f395", + "file-excel": "\f396", + "file-fill": "\f397", + "file-font-fill": "\f398", + "file-font": "\f399", + "file-image-fill": "\f39a", + "file-image": "\f39b", + "file-lock-fill": "\f39c", + "file-lock": "\f39d", + "file-lock2-fill": "\f39e", + "file-lock2": "\f39f", + "file-medical-fill": "\f3a0", + "file-medical": "\f3a1", + "file-minus-fill": "\f3a2", + "file-minus": "\f3a3", + "file-music-fill": "\f3a4", + "file-music": "\f3a5", + "file-person-fill": "\f3a6", + "file-person": "\f3a7", + "file-play-fill": "\f3a8", + "file-play": "\f3a9", + "file-plus-fill": "\f3aa", + "file-plus": "\f3ab", + "file-post-fill": "\f3ac", + "file-post": "\f3ad", + "file-ppt-fill": "\f3ae", + "file-ppt": "\f3af", + "file-richtext-fill": "\f3b0", + "file-richtext": "\f3b1", + "file-ruled-fill": "\f3b2", + "file-ruled": "\f3b3", + "file-slides-fill": "\f3b4", + "file-slides": "\f3b5", + "file-spreadsheet-fill": "\f3b6", + "file-spreadsheet": "\f3b7", + "file-text-fill": "\f3b8", + "file-text": "\f3b9", + "file-word-fill": "\f3ba", + "file-word": "\f3bb", + "file-x-fill": "\f3bc", + "file-x": "\f3bd", + "file-zip-fill": "\f3be", + "file-zip": "\f3bf", + "file": "\f3c0", + "files-alt": "\f3c1", + "files": "\f3c2", + "film": "\f3c3", + "filter-circle-fill": "\f3c4", + "filter-circle": "\f3c5", + "filter-left": "\f3c6", + "filter-right": "\f3c7", + "filter-square-fill": "\f3c8", + "filter-square": "\f3c9", + "filter": "\f3ca", + "flag-fill": "\f3cb", + "flag": "\f3cc", + "flower1": "\f3cd", + "flower2": "\f3ce", + "flower3": "\f3cf", + "folder-check": "\f3d0", + "folder-fill": "\f3d1", + "folder-minus": "\f3d2", + "folder-plus": "\f3d3", + "folder-symlink-fill": "\f3d4", + "folder-symlink": "\f3d5", + "folder-x": "\f3d6", + "folder": "\f3d7", + "folder2-open": "\f3d8", + "folder2": "\f3d9", + "fonts": "\f3da", + "forward-fill": "\f3db", + "forward": "\f3dc", + "front": "\f3dd", + "fullscreen-exit": "\f3de", + "fullscreen": "\f3df", + "funnel-fill": "\f3e0", + "funnel": "\f3e1", + "gear-fill": "\f3e2", + "gear-wide-connected": "\f3e3", + "gear-wide": "\f3e4", + "gear": "\f3e5", + "gem": "\f3e6", + "geo-alt-fill": "\f3e7", + "geo-alt": "\f3e8", + "geo-fill": "\f3e9", + "geo": "\f3ea", + "gift-fill": "\f3eb", + "gift": "\f3ec", + "github": "\f3ed", + "globe": "\f3ee", + "globe2": "\f3ef", + "google": "\f3f0", + "graph-down": "\f3f1", + "graph-up": "\f3f2", + "grid-1x2-fill": "\f3f3", + "grid-1x2": "\f3f4", + "grid-3x2-gap-fill": "\f3f5", + "grid-3x2-gap": "\f3f6", + "grid-3x2": "\f3f7", + "grid-3x3-gap-fill": "\f3f8", + "grid-3x3-gap": "\f3f9", + "grid-3x3": "\f3fa", + "grid-fill": "\f3fb", + "grid": "\f3fc", + "grip-horizontal": "\f3fd", + "grip-vertical": "\f3fe", + "hammer": "\f3ff", + "hand-index-fill": "\f400", + "hand-index-thumb-fill": "\f401", + "hand-index-thumb": "\f402", + "hand-index": "\f403", + "hand-thumbs-down-fill": "\f404", + "hand-thumbs-down": "\f405", + "hand-thumbs-up-fill": "\f406", + "hand-thumbs-up": "\f407", + "handbag-fill": "\f408", + "handbag": "\f409", + "hash": "\f40a", + "hdd-fill": "\f40b", + "hdd-network-fill": "\f40c", + "hdd-network": "\f40d", + "hdd-rack-fill": "\f40e", + "hdd-rack": "\f40f", + "hdd-stack-fill": "\f410", + "hdd-stack": "\f411", + "hdd": "\f412", + "headphones": "\f413", + "headset": "\f414", + "heart-fill": "\f415", + "heart-half": "\f416", + "heart": "\f417", + "heptagon-fill": "\f418", + "heptagon-half": "\f419", + "heptagon": "\f41a", + "hexagon-fill": "\f41b", + "hexagon-half": "\f41c", + "hexagon": "\f41d", + "hourglass-bottom": "\f41e", + "hourglass-split": "\f41f", + "hourglass-top": "\f420", + "hourglass": "\f421", + "house-door-fill": "\f422", + "house-door": "\f423", + "house-fill": "\f424", + "house": "\f425", + "hr": "\f426", + "hurricane": "\f427", + "image-alt": "\f428", + "image-fill": "\f429", + "image": "\f42a", + "images": "\f42b", + "inbox-fill": "\f42c", + "inbox": "\f42d", + "inboxes-fill": "\f42e", + "inboxes": "\f42f", + "info-circle-fill": "\f430", + "info-circle": "\f431", + "info-square-fill": "\f432", + "info-square": "\f433", + "info": "\f434", + "input-cursor-text": "\f435", + "input-cursor": "\f436", + "instagram": "\f437", + "intersect": "\f438", + "journal-album": "\f439", + "journal-arrow-down": "\f43a", + "journal-arrow-up": "\f43b", + "journal-bookmark-fill": "\f43c", + "journal-bookmark": "\f43d", + "journal-check": "\f43e", + "journal-code": "\f43f", + "journal-medical": "\f440", + "journal-minus": "\f441", + "journal-plus": "\f442", + "journal-richtext": "\f443", + "journal-text": "\f444", + "journal-x": "\f445", + "journal": "\f446", + "journals": "\f447", + "joystick": "\f448", + "justify-left": "\f449", + "justify-right": "\f44a", + "justify": "\f44b", + "kanban-fill": "\f44c", + "kanban": "\f44d", + "key-fill": "\f44e", + "key": "\f44f", + "keyboard-fill": "\f450", + "keyboard": "\f451", + "ladder": "\f452", + "lamp-fill": "\f453", + "lamp": "\f454", + "laptop-fill": "\f455", + "laptop": "\f456", + "layer-backward": "\f457", + "layer-forward": "\f458", + "layers-fill": "\f459", + "layers-half": "\f45a", + "layers": "\f45b", + "layout-sidebar-inset-reverse": "\f45c", + "layout-sidebar-inset": "\f45d", + "layout-sidebar-reverse": "\f45e", + "layout-sidebar": "\f45f", + "layout-split": "\f460", + "layout-text-sidebar-reverse": "\f461", + "layout-text-sidebar": "\f462", + "layout-text-window-reverse": "\f463", + "layout-text-window": "\f464", + "layout-three-columns": "\f465", + "layout-wtf": "\f466", + "life-preserver": "\f467", + "lightbulb-fill": "\f468", + "lightbulb-off-fill": "\f469", + "lightbulb-off": "\f46a", + "lightbulb": "\f46b", + "lightning-charge-fill": "\f46c", + "lightning-charge": "\f46d", + "lightning-fill": "\f46e", + "lightning": "\f46f", + "link-45deg": "\f470", + "link": "\f471", + "linkedin": "\f472", + "list-check": "\f473", + "list-nested": "\f474", + "list-ol": "\f475", + "list-stars": "\f476", + "list-task": "\f477", + "list-ul": "\f478", + "list": "\f479", + "lock-fill": "\f47a", + "lock": "\f47b", + "mailbox": "\f47c", + "mailbox2": "\f47d", + "map-fill": "\f47e", + "map": "\f47f", + "markdown-fill": "\f480", + "markdown": "\f481", + "mask": "\f482", + "megaphone-fill": "\f483", + "megaphone": "\f484", + "menu-app-fill": "\f485", + "menu-app": "\f486", + "menu-button-fill": "\f487", + "menu-button-wide-fill": "\f488", + "menu-button-wide": "\f489", + "menu-button": "\f48a", + "menu-down": "\f48b", + "menu-up": "\f48c", + "mic-fill": "\f48d", + "mic-mute-fill": "\f48e", + "mic-mute": "\f48f", + "mic": "\f490", + "minecart-loaded": "\f491", + "minecart": "\f492", + "moisture": "\f493", + "moon-fill": "\f494", + "moon-stars-fill": "\f495", + "moon-stars": "\f496", + "moon": "\f497", + "mouse-fill": "\f498", + "mouse": "\f499", + "mouse2-fill": "\f49a", + "mouse2": "\f49b", + "mouse3-fill": "\f49c", + "mouse3": "\f49d", + "music-note-beamed": "\f49e", + "music-note-list": "\f49f", + "music-note": "\f4a0", + "music-player-fill": "\f4a1", + "music-player": "\f4a2", + "newspaper": "\f4a3", + "node-minus-fill": "\f4a4", + "node-minus": "\f4a5", + "node-plus-fill": "\f4a6", + "node-plus": "\f4a7", + "nut-fill": "\f4a8", + "nut": "\f4a9", + "octagon-fill": "\f4aa", + "octagon-half": "\f4ab", + "octagon": "\f4ac", + "option": "\f4ad", + "outlet": "\f4ae", + "paint-bucket": "\f4af", + "palette-fill": "\f4b0", + "palette": "\f4b1", + "palette2": "\f4b2", + "paperclip": "\f4b3", + "paragraph": "\f4b4", + "patch-check-fill": "\f4b5", + "patch-check": "\f4b6", + "patch-exclamation-fill": "\f4b7", + "patch-exclamation": "\f4b8", + "patch-minus-fill": "\f4b9", + "patch-minus": "\f4ba", + "patch-plus-fill": "\f4bb", + "patch-plus": "\f4bc", + "patch-question-fill": "\f4bd", + "patch-question": "\f4be", + "pause-btn-fill": "\f4bf", + "pause-btn": "\f4c0", + "pause-circle-fill": "\f4c1", + "pause-circle": "\f4c2", + "pause-fill": "\f4c3", + "pause": "\f4c4", + "peace-fill": "\f4c5", + "peace": "\f4c6", + "pen-fill": "\f4c7", + "pen": "\f4c8", + "pencil-fill": "\f4c9", + "pencil-square": "\f4ca", + "pencil": "\f4cb", + "pentagon-fill": "\f4cc", + "pentagon-half": "\f4cd", + "pentagon": "\f4ce", + "people-fill": "\f4cf", + "people": "\f4d0", + "percent": "\f4d1", + "person-badge-fill": "\f4d2", + "person-badge": "\f4d3", + "person-bounding-box": "\f4d4", + "person-check-fill": "\f4d5", + "person-check": "\f4d6", + "person-circle": "\f4d7", + "person-dash-fill": "\f4d8", + "person-dash": "\f4d9", + "person-fill": "\f4da", + "person-lines-fill": "\f4db", + "person-plus-fill": "\f4dc", + "person-plus": "\f4dd", + "person-square": "\f4de", + "person-x-fill": "\f4df", + "person-x": "\f4e0", + "person": "\f4e1", + "phone-fill": "\f4e2", + "phone-landscape-fill": "\f4e3", + "phone-landscape": "\f4e4", + "phone-vibrate-fill": "\f4e5", + "phone-vibrate": "\f4e6", + "phone": "\f4e7", + "pie-chart-fill": "\f4e8", + "pie-chart": "\f4e9", + "pin-angle-fill": "\f4ea", + "pin-angle": "\f4eb", + "pin-fill": "\f4ec", + "pin": "\f4ed", + "pip-fill": "\f4ee", + "pip": "\f4ef", + "play-btn-fill": "\f4f0", + "play-btn": "\f4f1", + "play-circle-fill": "\f4f2", + "play-circle": "\f4f3", + "play-fill": "\f4f4", + "play": "\f4f5", + "plug-fill": "\f4f6", + "plug": "\f4f7", + "plus-circle-dotted": "\f4f8", + "plus-circle-fill": "\f4f9", + "plus-circle": "\f4fa", + "plus-square-dotted": "\f4fb", + "plus-square-fill": "\f4fc", + "plus-square": "\f4fd", + "plus": "\f4fe", + "power": "\f4ff", + "printer-fill": "\f500", + "printer": "\f501", + "puzzle-fill": "\f502", + "puzzle": "\f503", + "question-circle-fill": "\f504", + "question-circle": "\f505", + "question-diamond-fill": "\f506", + "question-diamond": "\f507", + "question-octagon-fill": "\f508", + "question-octagon": "\f509", + "question-square-fill": "\f50a", + "question-square": "\f50b", + "question": "\f50c", + "rainbow": "\f50d", + "receipt-cutoff": "\f50e", + "receipt": "\f50f", + "reception-0": "\f510", + "reception-1": "\f511", + "reception-2": "\f512", + "reception-3": "\f513", + "reception-4": "\f514", + "record-btn-fill": "\f515", + "record-btn": "\f516", + "record-circle-fill": "\f517", + "record-circle": "\f518", + "record-fill": "\f519", + "record": "\f51a", + "record2-fill": "\f51b", + "record2": "\f51c", + "reply-all-fill": "\f51d", + "reply-all": "\f51e", + "reply-fill": "\f51f", + "reply": "\f520", + "rss-fill": "\f521", + "rss": "\f522", + "rulers": "\f523", + "save-fill": "\f524", + "save": "\f525", + "save2-fill": "\f526", + "save2": "\f527", + "scissors": "\f528", + "screwdriver": "\f529", + "search": "\f52a", + "segmented-nav": "\f52b", + "server": "\f52c", + "share-fill": "\f52d", + "share": "\f52e", + "shield-check": "\f52f", + "shield-exclamation": "\f530", + "shield-fill-check": "\f531", + "shield-fill-exclamation": "\f532", + "shield-fill-minus": "\f533", + "shield-fill-plus": "\f534", + "shield-fill-x": "\f535", + "shield-fill": "\f536", + "shield-lock-fill": "\f537", + "shield-lock": "\f538", + "shield-minus": "\f539", + "shield-plus": "\f53a", + "shield-shaded": "\f53b", + "shield-slash-fill": "\f53c", + "shield-slash": "\f53d", + "shield-x": "\f53e", + "shield": "\f53f", + "shift-fill": "\f540", + "shift": "\f541", + "shop-window": "\f542", + "shop": "\f543", + "shuffle": "\f544", + "signpost-2-fill": "\f545", + "signpost-2": "\f546", + "signpost-fill": "\f547", + "signpost-split-fill": "\f548", + "signpost-split": "\f549", + "signpost": "\f54a", + "sim-fill": "\f54b", + "sim": "\f54c", + "skip-backward-btn-fill": "\f54d", + "skip-backward-btn": "\f54e", + "skip-backward-circle-fill": "\f54f", + "skip-backward-circle": "\f550", + "skip-backward-fill": "\f551", + "skip-backward": "\f552", + "skip-end-btn-fill": "\f553", + "skip-end-btn": "\f554", + "skip-end-circle-fill": "\f555", + "skip-end-circle": "\f556", + "skip-end-fill": "\f557", + "skip-end": "\f558", + "skip-forward-btn-fill": "\f559", + "skip-forward-btn": "\f55a", + "skip-forward-circle-fill": "\f55b", + "skip-forward-circle": "\f55c", + "skip-forward-fill": "\f55d", + "skip-forward": "\f55e", + "skip-start-btn-fill": "\f55f", + "skip-start-btn": "\f560", + "skip-start-circle-fill": "\f561", + "skip-start-circle": "\f562", + "skip-start-fill": "\f563", + "skip-start": "\f564", + "slack": "\f565", + "slash-circle-fill": "\f566", + "slash-circle": "\f567", + "slash-square-fill": "\f568", + "slash-square": "\f569", + "slash": "\f56a", + "sliders": "\f56b", + "smartwatch": "\f56c", + "snow": "\f56d", + "snow2": "\f56e", + "snow3": "\f56f", + "sort-alpha-down-alt": "\f570", + "sort-alpha-down": "\f571", + "sort-alpha-up-alt": "\f572", + "sort-alpha-up": "\f573", + "sort-down-alt": "\f574", + "sort-down": "\f575", + "sort-numeric-down-alt": "\f576", + "sort-numeric-down": "\f577", + "sort-numeric-up-alt": "\f578", + "sort-numeric-up": "\f579", + "sort-up-alt": "\f57a", + "sort-up": "\f57b", + "soundwave": "\f57c", + "speaker-fill": "\f57d", + "speaker": "\f57e", + "speedometer": "\f57f", + "speedometer2": "\f580", + "spellcheck": "\f581", + "square-fill": "\f582", + "square-half": "\f583", + "square": "\f584", + "stack": "\f585", + "star-fill": "\f586", + "star-half": "\f587", + "star": "\f588", + "stars": "\f589", + "stickies-fill": "\f58a", + "stickies": "\f58b", + "sticky-fill": "\f58c", + "sticky": "\f58d", + "stop-btn-fill": "\f58e", + "stop-btn": "\f58f", + "stop-circle-fill": "\f590", + "stop-circle": "\f591", + "stop-fill": "\f592", + "stop": "\f593", + "stoplights-fill": "\f594", + "stoplights": "\f595", + "stopwatch-fill": "\f596", + "stopwatch": "\f597", + "subtract": "\f598", + "suit-club-fill": "\f599", + "suit-club": "\f59a", + "suit-diamond-fill": "\f59b", + "suit-diamond": "\f59c", + "suit-heart-fill": "\f59d", + "suit-heart": "\f59e", + "suit-spade-fill": "\f59f", + "suit-spade": "\f5a0", + "sun-fill": "\f5a1", + "sun": "\f5a2", + "sunglasses": "\f5a3", + "sunrise-fill": "\f5a4", + "sunrise": "\f5a5", + "sunset-fill": "\f5a6", + "sunset": "\f5a7", + "symmetry-horizontal": "\f5a8", + "symmetry-vertical": "\f5a9", + "table": "\f5aa", + "tablet-fill": "\f5ab", + "tablet-landscape-fill": "\f5ac", + "tablet-landscape": "\f5ad", + "tablet": "\f5ae", + "tag-fill": "\f5af", + "tag": "\f5b0", + "tags-fill": "\f5b1", + "tags": "\f5b2", + "telegram": "\f5b3", + "telephone-fill": "\f5b4", + "telephone-forward-fill": "\f5b5", + "telephone-forward": "\f5b6", + "telephone-inbound-fill": "\f5b7", + "telephone-inbound": "\f5b8", + "telephone-minus-fill": "\f5b9", + "telephone-minus": "\f5ba", + "telephone-outbound-fill": "\f5bb", + "telephone-outbound": "\f5bc", + "telephone-plus-fill": "\f5bd", + "telephone-plus": "\f5be", + "telephone-x-fill": "\f5bf", + "telephone-x": "\f5c0", + "telephone": "\f5c1", + "terminal-fill": "\f5c2", + "terminal": "\f5c3", + "text-center": "\f5c4", + "text-indent-left": "\f5c5", + "text-indent-right": "\f5c6", + "text-left": "\f5c7", + "text-paragraph": "\f5c8", + "text-right": "\f5c9", + "textarea-resize": "\f5ca", + "textarea-t": "\f5cb", + "textarea": "\f5cc", + "thermometer-half": "\f5cd", + "thermometer-high": "\f5ce", + "thermometer-low": "\f5cf", + "thermometer-snow": "\f5d0", + "thermometer-sun": "\f5d1", + "thermometer": "\f5d2", + "three-dots-vertical": "\f5d3", + "three-dots": "\f5d4", + "toggle-off": "\f5d5", + "toggle-on": "\f5d6", + "toggle2-off": "\f5d7", + "toggle2-on": "\f5d8", + "toggles": "\f5d9", + "toggles2": "\f5da", + "tools": "\f5db", + "tornado": "\f5dc", + "trash-fill": "\f5dd", + "trash": "\f5de", + "trash2-fill": "\f5df", + "trash2": "\f5e0", + "tree-fill": "\f5e1", + "tree": "\f5e2", + "triangle-fill": "\f5e3", + "triangle-half": "\f5e4", + "triangle": "\f5e5", + "trophy-fill": "\f5e6", + "trophy": "\f5e7", + "tropical-storm": "\f5e8", + "truck-flatbed": "\f5e9", + "truck": "\f5ea", + "tsunami": "\f5eb", + "tv-fill": "\f5ec", + "tv": "\f5ed", + "twitch": "\f5ee", + "twitter": "\f5ef", + "type-bold": "\f5f0", + "type-h1": "\f5f1", + "type-h2": "\f5f2", + "type-h3": "\f5f3", + "type-italic": "\f5f4", + "type-strikethrough": "\f5f5", + "type-underline": "\f5f6", + "type": "\f5f7", + "ui-checks-grid": "\f5f8", + "ui-checks": "\f5f9", + "ui-radios-grid": "\f5fa", + "ui-radios": "\f5fb", + "umbrella-fill": "\f5fc", + "umbrella": "\f5fd", + "union": "\f5fe", + "unlock-fill": "\f5ff", + "unlock": "\f600", + "upc-scan": "\f601", + "upc": "\f602", + "upload": "\f603", + "vector-pen": "\f604", + "view-list": "\f605", + "view-stacked": "\f606", + "vinyl-fill": "\f607", + "vinyl": "\f608", + "voicemail": "\f609", + "volume-down-fill": "\f60a", + "volume-down": "\f60b", + "volume-mute-fill": "\f60c", + "volume-mute": "\f60d", + "volume-off-fill": "\f60e", + "volume-off": "\f60f", + "volume-up-fill": "\f610", + "volume-up": "\f611", + "vr": "\f612", + "wallet-fill": "\f613", + "wallet": "\f614", + "wallet2": "\f615", + "watch": "\f616", + "water": "\f617", + "whatsapp": "\f618", + "wifi-1": "\f619", + "wifi-2": "\f61a", + "wifi-off": "\f61b", + "wifi": "\f61c", + "wind": "\f61d", + "window-dock": "\f61e", + "window-sidebar": "\f61f", + "window": "\f620", + "wrench": "\f621", + "x-circle-fill": "\f622", + "x-circle": "\f623", + "x-diamond-fill": "\f624", + "x-diamond": "\f625", + "x-octagon-fill": "\f626", + "x-octagon": "\f627", + "x-square-fill": "\f628", + "x-square": "\f629", + "x": "\f62a", + "youtube": "\f62b", + "zoom-in": "\f62c", + "zoom-out": "\f62d", + "bank": "\f62e", + "bank2": "\f62f", + "bell-slash-fill": "\f630", + "bell-slash": "\f631", + "cash-coin": "\f632", + "check-lg": "\f633", + "coin": "\f634", + "currency-bitcoin": "\f635", + "currency-dollar": "\f636", + "currency-euro": "\f637", + "currency-exchange": "\f638", + "currency-pound": "\f639", + "currency-yen": "\f63a", + "dash-lg": "\f63b", + "exclamation-lg": "\f63c", + "file-earmark-pdf-fill": "\f63d", + "file-earmark-pdf": "\f63e", + "file-pdf-fill": "\f63f", + "file-pdf": "\f640", + "gender-ambiguous": "\f641", + "gender-female": "\f642", + "gender-male": "\f643", + "gender-trans": "\f644", + "headset-vr": "\f645", + "info-lg": "\f646", + "mastodon": "\f647", + "messenger": "\f648", + "piggy-bank-fill": "\f649", + "piggy-bank": "\f64a", + "pin-map-fill": "\f64b", + "pin-map": "\f64c", + "plus-lg": "\f64d", + "question-lg": "\f64e", + "recycle": "\f64f", + "reddit": "\f650", + "safe-fill": "\f651", + "safe2-fill": "\f652", + "safe2": "\f653", + "sd-card-fill": "\f654", + "sd-card": "\f655", + "skype": "\f656", + "slash-lg": "\f657", + "translate": "\f658", + "x-lg": "\f659", + "safe": "\f65a", + "apple": "\f65b", + "microsoft": "\f65d", + "windows": "\f65e", + "behance": "\f65c", + "dribbble": "\f65f", + "line": "\f660", + "medium": "\f661", + "paypal": "\f662", + "pinterest": "\f663", + "signal": "\f664", + "snapchat": "\f665", + "spotify": "\f666", + "stack-overflow": "\f667", + "strava": "\f668", + "wordpress": "\f669", + "vimeo": "\f66a", + "activity": "\f66b", + "easel2-fill": "\f66c", + "easel2": "\f66d", + "easel3-fill": "\f66e", + "easel3": "\f66f", + "fan": "\f670", + "fingerprint": "\f671", + "graph-down-arrow": "\f672", + "graph-up-arrow": "\f673", + "hypnotize": "\f674", + "magic": "\f675", + "person-rolodex": "\f676", + "person-video": "\f677", + "person-video2": "\f678", + "person-video3": "\f679", + "person-workspace": "\f67a", + "radioactive": "\f67b", + "webcam-fill": "\f67c", + "webcam": "\f67d", + "yin-yang": "\f67e", + "bandaid-fill": "\f680", + "bandaid": "\f681", + "bluetooth": "\f682", + "body-text": "\f683", + "boombox": "\f684", + "boxes": "\f685", + "dpad-fill": "\f686", + "dpad": "\f687", + "ear-fill": "\f688", + "ear": "\f689", + "envelope-check-1": "\f68a", + "envelope-check-fill": "\f68b", + "envelope-check": "\f68c", + "envelope-dash-1": "\f68d", + "envelope-dash-fill": "\f68e", + "envelope-dash": "\f68f", + "envelope-exclamation-1": "\f690", + "envelope-exclamation-fill": "\f691", + "envelope-exclamation": "\f692", + "envelope-plus-fill": "\f693", + "envelope-plus": "\f694", + "envelope-slash-1": "\f695", + "envelope-slash-fill": "\f696", + "envelope-slash": "\f697", + "envelope-x-1": "\f698", + "envelope-x-fill": "\f699", + "envelope-x": "\f69a", + "explicit-fill": "\f69b", + "explicit": "\f69c", + "git": "\f69d", + "infinity": "\f69e", + "list-columns-reverse": "\f69f", + "list-columns": "\f6a0", + "meta": "\f6a1", + "mortorboard-fill": "\f6a2", + "mortorboard": "\f6a3", + "nintendo-switch": "\f6a4", + "pc-display-horizontal": "\f6a5", + "pc-display": "\f6a6", + "pc-horizontal": "\f6a7", + "pc": "\f6a8", + "playstation": "\f6a9", + "plus-slash-minus": "\f6aa", + "projector-fill": "\f6ab", + "projector": "\f6ac", + "qr-code-scan": "\f6ad", + "qr-code": "\f6ae", + "quora": "\f6af", + "quote": "\f6b0", + "robot": "\f6b1", + "send-check-fill": "\f6b2", + "send-check": "\f6b3", + "send-dash-fill": "\f6b4", + "send-dash": "\f6b5", + "send-exclamation-1": "\f6b6", + "send-exclamation-fill": "\f6b7", + "send-exclamation": "\f6b8", + "send-fill": "\f6b9", + "send-plus-fill": "\f6ba", + "send-plus": "\f6bb", + "send-slash-fill": "\f6bc", + "send-slash": "\f6bd", + "send-x-fill": "\f6be", + "send-x": "\f6bf", + "send": "\f6c0", + "steam": "\f6c1", + "terminal-dash-1": "\f6c2", + "terminal-dash": "\f6c3", + "terminal-plus": "\f6c4", + "terminal-split": "\f6c5", + "ticket-detailed-fill": "\f6c6", + "ticket-detailed": "\f6c7", + "ticket-fill": "\f6c8", + "ticket-perforated-fill": "\f6c9", + "ticket-perforated": "\f6ca", + "ticket": "\f6cb", + "tiktok": "\f6cc", + "window-dash": "\f6cd", + "window-desktop": "\f6ce", + "window-fullscreen": "\f6cf", + "window-plus": "\f6d0", + "window-split": "\f6d1", + "window-stack": "\f6d2", + "window-x": "\f6d3", + "xbox": "\f6d4", + "ethernet": "\f6d5", + "hdmi-fill": "\f6d6", + "hdmi": "\f6d7", + "usb-c-fill": "\f6d8", + "usb-c": "\f6d9", + "usb-fill": "\f6da", + "usb-plug-fill": "\f6db", + "usb-plug": "\f6dc", + "usb-symbol": "\f6dd", + "usb": "\f6de", + "boombox-fill": "\f6df", + "displayport-1": "\f6e0", + "displayport": "\f6e1", + "gpu-card": "\f6e2", + "memory": "\f6e3", + "modem-fill": "\f6e4", + "modem": "\f6e5", + "motherboard-fill": "\f6e6", + "motherboard": "\f6e7", + "optical-audio-fill": "\f6e8", + "optical-audio": "\f6e9", + "pci-card": "\f6ea", + "router-fill": "\f6eb", + "router": "\f6ec", + "ssd-fill": "\f6ed", + "ssd": "\f6ee", + "thunderbolt-fill": "\f6ef", + "thunderbolt": "\f6f0", + "usb-drive-fill": "\f6f1", + "usb-drive": "\f6f2", + "usb-micro-fill": "\f6f3", + "usb-micro": "\f6f4", + "usb-mini-fill": "\f6f5", + "usb-mini": "\f6f6", + "cloud-haze2": "\f6f7", + "device-hdd-fill": "\f6f8", + "device-hdd": "\f6f9", + "device-ssd-fill": "\f6fa", + "device-ssd": "\f6fb", + "displayport-fill": "\f6fc", + "mortarboard-fill": "\f6fd", + "mortarboard": "\f6fe", + "terminal-x": "\f6ff", + "arrow-through-heart-fill": "\f700", + "arrow-through-heart": "\f701", + "badge-sd-fill": "\f702", + "badge-sd": "\f703", + "bag-heart-fill": "\f704", + "bag-heart": "\f705", + "balloon-fill": "\f706", + "balloon-heart-fill": "\f707", + "balloon-heart": "\f708", + "balloon": "\f709", + "box2-fill": "\f70a", + "box2-heart-fill": "\f70b", + "box2-heart": "\f70c", + "box2": "\f70d", + "braces-asterisk": "\f70e", + "calendar-heart-fill": "\f70f", + "calendar-heart": "\f710", + "calendar2-heart-fill": "\f711", + "calendar2-heart": "\f712", + "chat-heart-fill": "\f713", + "chat-heart": "\f714", + "chat-left-heart-fill": "\f715", + "chat-left-heart": "\f716", + "chat-right-heart-fill": "\f717", + "chat-right-heart": "\f718", + "chat-square-heart-fill": "\f719", + "chat-square-heart": "\f71a", + "clipboard-check-fill": "\f71b", + "clipboard-data-fill": "\f71c", + "clipboard-fill": "\f71d", + "clipboard-heart-fill": "\f71e", + "clipboard-heart": "\f71f", + "clipboard-minus-fill": "\f720", + "clipboard-plus-fill": "\f721", + "clipboard-pulse": "\f722", + "clipboard-x-fill": "\f723", + "clipboard2-check-fill": "\f724", + "clipboard2-check": "\f725", + "clipboard2-data-fill": "\f726", + "clipboard2-data": "\f727", + "clipboard2-fill": "\f728", + "clipboard2-heart-fill": "\f729", + "clipboard2-heart": "\f72a", + "clipboard2-minus-fill": "\f72b", + "clipboard2-minus": "\f72c", + "clipboard2-plus-fill": "\f72d", + "clipboard2-plus": "\f72e", + "clipboard2-pulse-fill": "\f72f", + "clipboard2-pulse": "\f730", + "clipboard2-x-fill": "\f731", + "clipboard2-x": "\f732", + "clipboard2": "\f733", + "emoji-kiss-fill": "\f734", + "emoji-kiss": "\f735", + "envelope-heart-fill": "\f736", + "envelope-heart": "\f737", + "envelope-open-heart-fill": "\f738", + "envelope-open-heart": "\f739", + "envelope-paper-fill": "\f73a", + "envelope-paper-heart-fill": "\f73b", + "envelope-paper-heart": "\f73c", + "envelope-paper": "\f73d", + "filetype-aac": "\f73e", + "filetype-ai": "\f73f", + "filetype-bmp": "\f740", + "filetype-cs": "\f741", + "filetype-css": "\f742", + "filetype-csv": "\f743", + "filetype-doc": "\f744", + "filetype-docx": "\f745", + "filetype-exe": "\f746", + "filetype-gif": "\f747", + "filetype-heic": "\f748", + "filetype-html": "\f749", + "filetype-java": "\f74a", + "filetype-jpg": "\f74b", + "filetype-js": "\f74c", + "filetype-jsx": "\f74d", + "filetype-key": "\f74e", + "filetype-m4p": "\f74f", + "filetype-md": "\f750", + "filetype-mdx": "\f751", + "filetype-mov": "\f752", + "filetype-mp3": "\f753", + "filetype-mp4": "\f754", + "filetype-otf": "\f755", + "filetype-pdf": "\f756", + "filetype-php": "\f757", + "filetype-png": "\f758", + "filetype-ppt-1": "\f759", + "filetype-ppt": "\f75a", + "filetype-psd": "\f75b", + "filetype-py": "\f75c", + "filetype-raw": "\f75d", + "filetype-rb": "\f75e", + "filetype-sass": "\f75f", + "filetype-scss": "\f760", + "filetype-sh": "\f761", + "filetype-svg": "\f762", + "filetype-tiff": "\f763", + "filetype-tsx": "\f764", + "filetype-ttf": "\f765", + "filetype-txt": "\f766", + "filetype-wav": "\f767", + "filetype-woff": "\f768", + "filetype-xls-1": "\f769", + "filetype-xls": "\f76a", + "filetype-xml": "\f76b", + "filetype-yml": "\f76c", + "heart-arrow": "\f76d", + "heart-pulse-fill": "\f76e", + "heart-pulse": "\f76f", + "heartbreak-fill": "\f770", + "heartbreak": "\f771", + "hearts": "\f772", + "hospital-fill": "\f773", + "hospital": "\f774", + "house-heart-fill": "\f775", + "house-heart": "\f776", + "incognito": "\f777", + "magnet-fill": "\f778", + "magnet": "\f779", + "person-heart": "\f77a", + "person-hearts": "\f77b", + "phone-flip": "\f77c", + "plugin": "\f77d", + "postage-fill": "\f77e", + "postage-heart-fill": "\f77f", + "postage-heart": "\f780", + "postage": "\f781", + "postcard-fill": "\f782", + "postcard-heart-fill": "\f783", + "postcard-heart": "\f784", + "postcard": "\f785", + "search-heart-fill": "\f786", + "search-heart": "\f787", + "sliders2-vertical": "\f788", + "sliders2": "\f789", + "trash3-fill": "\f78a", + "trash3": "\f78b", + "valentine": "\f78c", + "valentine2": "\f78d", + "wrench-adjustable-circle-fill": "\f78e", + "wrench-adjustable-circle": "\f78f", + "wrench-adjustable": "\f790", + "filetype-json": "\f791", + "filetype-pptx": "\f792", + "filetype-xlsx": "\f793", + "1-circle-1": "\f794", + "1-circle-fill-1": "\f795", + "1-circle-fill": "\f796", + "1-circle": "\f797", + "1-square-fill": "\f798", + "1-square": "\f799", + "2-circle-1": "\f79a", + "2-circle-fill-1": "\f79b", + "2-circle-fill": "\f79c", + "2-circle": "\f79d", + "2-square-fill": "\f79e", + "2-square": "\f79f", + "3-circle-1": "\f7a0", + "3-circle-fill-1": "\f7a1", + "3-circle-fill": "\f7a2", + "3-circle": "\f7a3", + "3-square-fill": "\f7a4", + "3-square": "\f7a5", + "4-circle-1": "\f7a6", + "4-circle-fill-1": "\f7a7", + "4-circle-fill": "\f7a8", + "4-circle": "\f7a9", + "4-square-fill": "\f7aa", + "4-square": "\f7ab", + "5-circle-1": "\f7ac", + "5-circle-fill-1": "\f7ad", + "5-circle-fill": "\f7ae", + "5-circle": "\f7af", + "5-square-fill": "\f7b0", + "5-square": "\f7b1", + "6-circle-1": "\f7b2", + "6-circle-fill-1": "\f7b3", + "6-circle-fill": "\f7b4", + "6-circle": "\f7b5", + "6-square-fill": "\f7b6", + "6-square": "\f7b7", + "7-circle-1": "\f7b8", + "7-circle-fill-1": "\f7b9", + "7-circle-fill": "\f7ba", + "7-circle": "\f7bb", + "7-square-fill": "\f7bc", + "7-square": "\f7bd", + "8-circle-1": "\f7be", + "8-circle-fill-1": "\f7bf", + "8-circle-fill": "\f7c0", + "8-circle": "\f7c1", + "8-square-fill": "\f7c2", + "8-square": "\f7c3", + "9-circle-1": "\f7c4", + "9-circle-fill-1": "\f7c5", + "9-circle-fill": "\f7c6", + "9-circle": "\f7c7", + "9-square-fill": "\f7c8", + "9-square": "\f7c9", + "airplane-engines-fill": "\f7ca", + "airplane-engines": "\f7cb", + "airplane-fill": "\f7cc", + "airplane": "\f7cd", + "alexa": "\f7ce", + "alipay": "\f7cf", + "android": "\f7d0", + "android2": "\f7d1", + "box-fill": "\f7d2", + "box-seam-fill": "\f7d3", + "browser-chrome": "\f7d4", + "browser-edge": "\f7d5", + "browser-firefox": "\f7d6", + "browser-safari": "\f7d7", + "c-circle-1": "\f7d8", + "c-circle-fill-1": "\f7d9", + "c-circle-fill": "\f7da", + "c-circle": "\f7db", + "c-square-fill": "\f7dc", + "c-square": "\f7dd", + "capsule-pill": "\f7de", + "capsule": "\f7df", + "car-front-fill": "\f7e0", + "car-front": "\f7e1", + "cassette-fill": "\f7e2", + "cassette": "\f7e3", + "cc-circle-1": "\f7e4", + "cc-circle-fill-1": "\f7e5", + "cc-circle-fill": "\f7e6", + "cc-circle": "\f7e7", + "cc-square-fill": "\f7e8", + "cc-square": "\f7e9", + "cup-hot-fill": "\f7ea", + "cup-hot": "\f7eb", + "currency-rupee": "\f7ec", + "dropbox": "\f7ed", + "escape": "\f7ee", + "fast-forward-btn-fill": "\f7ef", + "fast-forward-btn": "\f7f0", + "fast-forward-circle-fill": "\f7f1", + "fast-forward-circle": "\f7f2", + "fast-forward-fill": "\f7f3", + "fast-forward": "\f7f4", + "filetype-sql": "\f7f5", + "fire": "\f7f6", + "google-play": "\f7f7", + "h-circle-1": "\f7f8", + "h-circle-fill-1": "\f7f9", + "h-circle-fill": "\f7fa", + "h-circle": "\f7fb", + "h-square-fill": "\f7fc", + "h-square": "\f7fd", + "indent": "\f7fe", + "lungs-fill": "\f7ff", + "lungs": "\f800", + "microsoft-teams": "\f801", + "p-circle-1": "\f802", + "p-circle-fill-1": "\f803", + "p-circle-fill": "\f804", + "p-circle": "\f805", + "p-square-fill": "\f806", + "p-square": "\f807", + "pass-fill": "\f808", + "pass": "\f809", + "prescription": "\f80a", + "prescription2": "\f80b", + "r-circle-1": "\f80c", + "r-circle-fill-1": "\f80d", + "r-circle-fill": "\f80e", + "r-circle": "\f80f", + "r-square-fill": "\f810", + "r-square": "\f811", + "repeat-1": "\f812", + "repeat": "\f813", + "rewind-btn-fill": "\f814", + "rewind-btn": "\f815", + "rewind-circle-fill": "\f816", + "rewind-circle": "\f817", + "rewind-fill": "\f818", + "rewind": "\f819", + "train-freight-front-fill": "\f81a", + "train-freight-front": "\f81b", + "train-front-fill": "\f81c", + "train-front": "\f81d", + "train-lightrail-front-fill": "\f81e", + "train-lightrail-front": "\f81f", + "truck-front-fill": "\f820", + "truck-front": "\f821", + "ubuntu": "\f822", + "unindent": "\f823", + "unity": "\f824", + "universal-access-circle": "\f825", + "universal-access": "\f826", + "virus": "\f827", + "virus2": "\f828", + "wechat": "\f829", + "yelp": "\f82a", + "sign-stop-fill": "\f82b", + "sign-stop-lights-fill": "\f82c", + "sign-stop-lights": "\f82d", + "sign-stop": "\f82e", + "sign-turn-left-fill": "\f82f", + "sign-turn-left": "\f830", + "sign-turn-right-fill": "\f831", + "sign-turn-right": "\f832", + "sign-turn-slight-left-fill": "\f833", + "sign-turn-slight-left": "\f834", + "sign-turn-slight-right-fill": "\f835", + "sign-turn-slight-right": "\f836", + "sign-yield-fill": "\f837", + "sign-yield": "\f838", + "ev-station-fill": "\f839", + "ev-station": "\f83a", + "fuel-pump-diesel-fill": "\f83b", + "fuel-pump-diesel": "\f83c", + "fuel-pump-fill": "\f83d", + "fuel-pump": "\f83e", +); + +.bi-123::before { content: map-get($bootstrap-icons-map, "123"); } +.bi-alarm-fill::before { content: map-get($bootstrap-icons-map, "alarm-fill"); } +.bi-alarm::before { content: map-get($bootstrap-icons-map, "alarm"); } +.bi-align-bottom::before { content: map-get($bootstrap-icons-map, "align-bottom"); } +.bi-align-center::before { content: map-get($bootstrap-icons-map, "align-center"); } +.bi-align-end::before { content: map-get($bootstrap-icons-map, "align-end"); } +.bi-align-middle::before { content: map-get($bootstrap-icons-map, "align-middle"); } +.bi-align-start::before { content: map-get($bootstrap-icons-map, "align-start"); } +.bi-align-top::before { content: map-get($bootstrap-icons-map, "align-top"); } +.bi-alt::before { content: map-get($bootstrap-icons-map, "alt"); } +.bi-app-indicator::before { content: map-get($bootstrap-icons-map, "app-indicator"); } +.bi-app::before { content: map-get($bootstrap-icons-map, "app"); } +.bi-archive-fill::before { content: map-get($bootstrap-icons-map, "archive-fill"); } +.bi-archive::before { content: map-get($bootstrap-icons-map, "archive"); } +.bi-arrow-90deg-down::before { content: map-get($bootstrap-icons-map, "arrow-90deg-down"); } +.bi-arrow-90deg-left::before { content: map-get($bootstrap-icons-map, "arrow-90deg-left"); } +.bi-arrow-90deg-right::before { content: map-get($bootstrap-icons-map, "arrow-90deg-right"); } +.bi-arrow-90deg-up::before { content: map-get($bootstrap-icons-map, "arrow-90deg-up"); } +.bi-arrow-bar-down::before { content: map-get($bootstrap-icons-map, "arrow-bar-down"); } +.bi-arrow-bar-left::before { content: map-get($bootstrap-icons-map, "arrow-bar-left"); } +.bi-arrow-bar-right::before { content: map-get($bootstrap-icons-map, "arrow-bar-right"); } +.bi-arrow-bar-up::before { content: map-get($bootstrap-icons-map, "arrow-bar-up"); } +.bi-arrow-clockwise::before { content: map-get($bootstrap-icons-map, "arrow-clockwise"); } +.bi-arrow-counterclockwise::before { content: map-get($bootstrap-icons-map, "arrow-counterclockwise"); } +.bi-arrow-down-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-circle-fill"); } +.bi-arrow-down-circle::before { content: map-get($bootstrap-icons-map, "arrow-down-circle"); } +.bi-arrow-down-left-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-left-circle-fill"); } +.bi-arrow-down-left-circle::before { content: map-get($bootstrap-icons-map, "arrow-down-left-circle"); } +.bi-arrow-down-left-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-left-square-fill"); } +.bi-arrow-down-left-square::before { content: map-get($bootstrap-icons-map, "arrow-down-left-square"); } +.bi-arrow-down-left::before { content: map-get($bootstrap-icons-map, "arrow-down-left"); } +.bi-arrow-down-right-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-right-circle-fill"); } +.bi-arrow-down-right-circle::before { content: map-get($bootstrap-icons-map, "arrow-down-right-circle"); } +.bi-arrow-down-right-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-right-square-fill"); } +.bi-arrow-down-right-square::before { content: map-get($bootstrap-icons-map, "arrow-down-right-square"); } +.bi-arrow-down-right::before { content: map-get($bootstrap-icons-map, "arrow-down-right"); } +.bi-arrow-down-short::before { content: map-get($bootstrap-icons-map, "arrow-down-short"); } +.bi-arrow-down-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-square-fill"); } +.bi-arrow-down-square::before { content: map-get($bootstrap-icons-map, "arrow-down-square"); } +.bi-arrow-down-up::before { content: map-get($bootstrap-icons-map, "arrow-down-up"); } +.bi-arrow-down::before { content: map-get($bootstrap-icons-map, "arrow-down"); } +.bi-arrow-left-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-left-circle-fill"); } +.bi-arrow-left-circle::before { content: map-get($bootstrap-icons-map, "arrow-left-circle"); } +.bi-arrow-left-right::before { content: map-get($bootstrap-icons-map, "arrow-left-right"); } +.bi-arrow-left-short::before { content: map-get($bootstrap-icons-map, "arrow-left-short"); } +.bi-arrow-left-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-left-square-fill"); } +.bi-arrow-left-square::before { content: map-get($bootstrap-icons-map, "arrow-left-square"); } +.bi-arrow-left::before { content: map-get($bootstrap-icons-map, "arrow-left"); } +.bi-arrow-repeat::before { content: map-get($bootstrap-icons-map, "arrow-repeat"); } +.bi-arrow-return-left::before { content: map-get($bootstrap-icons-map, "arrow-return-left"); } +.bi-arrow-return-right::before { content: map-get($bootstrap-icons-map, "arrow-return-right"); } +.bi-arrow-right-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-right-circle-fill"); } +.bi-arrow-right-circle::before { content: map-get($bootstrap-icons-map, "arrow-right-circle"); } +.bi-arrow-right-short::before { content: map-get($bootstrap-icons-map, "arrow-right-short"); } +.bi-arrow-right-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-right-square-fill"); } +.bi-arrow-right-square::before { content: map-get($bootstrap-icons-map, "arrow-right-square"); } +.bi-arrow-right::before { content: map-get($bootstrap-icons-map, "arrow-right"); } +.bi-arrow-up-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-circle-fill"); } +.bi-arrow-up-circle::before { content: map-get($bootstrap-icons-map, "arrow-up-circle"); } +.bi-arrow-up-left-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-left-circle-fill"); } +.bi-arrow-up-left-circle::before { content: map-get($bootstrap-icons-map, "arrow-up-left-circle"); } +.bi-arrow-up-left-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-left-square-fill"); } +.bi-arrow-up-left-square::before { content: map-get($bootstrap-icons-map, "arrow-up-left-square"); } +.bi-arrow-up-left::before { content: map-get($bootstrap-icons-map, "arrow-up-left"); } +.bi-arrow-up-right-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-right-circle-fill"); } +.bi-arrow-up-right-circle::before { content: map-get($bootstrap-icons-map, "arrow-up-right-circle"); } +.bi-arrow-up-right-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-right-square-fill"); } +.bi-arrow-up-right-square::before { content: map-get($bootstrap-icons-map, "arrow-up-right-square"); } +.bi-arrow-up-right::before { content: map-get($bootstrap-icons-map, "arrow-up-right"); } +.bi-arrow-up-short::before { content: map-get($bootstrap-icons-map, "arrow-up-short"); } +.bi-arrow-up-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-square-fill"); } +.bi-arrow-up-square::before { content: map-get($bootstrap-icons-map, "arrow-up-square"); } +.bi-arrow-up::before { content: map-get($bootstrap-icons-map, "arrow-up"); } +.bi-arrows-angle-contract::before { content: map-get($bootstrap-icons-map, "arrows-angle-contract"); } +.bi-arrows-angle-expand::before { content: map-get($bootstrap-icons-map, "arrows-angle-expand"); } +.bi-arrows-collapse::before { content: map-get($bootstrap-icons-map, "arrows-collapse"); } +.bi-arrows-expand::before { content: map-get($bootstrap-icons-map, "arrows-expand"); } +.bi-arrows-fullscreen::before { content: map-get($bootstrap-icons-map, "arrows-fullscreen"); } +.bi-arrows-move::before { content: map-get($bootstrap-icons-map, "arrows-move"); } +.bi-aspect-ratio-fill::before { content: map-get($bootstrap-icons-map, "aspect-ratio-fill"); } +.bi-aspect-ratio::before { content: map-get($bootstrap-icons-map, "aspect-ratio"); } +.bi-asterisk::before { content: map-get($bootstrap-icons-map, "asterisk"); } +.bi-at::before { content: map-get($bootstrap-icons-map, "at"); } +.bi-award-fill::before { content: map-get($bootstrap-icons-map, "award-fill"); } +.bi-award::before { content: map-get($bootstrap-icons-map, "award"); } +.bi-back::before { content: map-get($bootstrap-icons-map, "back"); } +.bi-backspace-fill::before { content: map-get($bootstrap-icons-map, "backspace-fill"); } +.bi-backspace-reverse-fill::before { content: map-get($bootstrap-icons-map, "backspace-reverse-fill"); } +.bi-backspace-reverse::before { content: map-get($bootstrap-icons-map, "backspace-reverse"); } +.bi-backspace::before { content: map-get($bootstrap-icons-map, "backspace"); } +.bi-badge-3d-fill::before { content: map-get($bootstrap-icons-map, "badge-3d-fill"); } +.bi-badge-3d::before { content: map-get($bootstrap-icons-map, "badge-3d"); } +.bi-badge-4k-fill::before { content: map-get($bootstrap-icons-map, "badge-4k-fill"); } +.bi-badge-4k::before { content: map-get($bootstrap-icons-map, "badge-4k"); } +.bi-badge-8k-fill::before { content: map-get($bootstrap-icons-map, "badge-8k-fill"); } +.bi-badge-8k::before { content: map-get($bootstrap-icons-map, "badge-8k"); } +.bi-badge-ad-fill::before { content: map-get($bootstrap-icons-map, "badge-ad-fill"); } +.bi-badge-ad::before { content: map-get($bootstrap-icons-map, "badge-ad"); } +.bi-badge-ar-fill::before { content: map-get($bootstrap-icons-map, "badge-ar-fill"); } +.bi-badge-ar::before { content: map-get($bootstrap-icons-map, "badge-ar"); } +.bi-badge-cc-fill::before { content: map-get($bootstrap-icons-map, "badge-cc-fill"); } +.bi-badge-cc::before { content: map-get($bootstrap-icons-map, "badge-cc"); } +.bi-badge-hd-fill::before { content: map-get($bootstrap-icons-map, "badge-hd-fill"); } +.bi-badge-hd::before { content: map-get($bootstrap-icons-map, "badge-hd"); } +.bi-badge-tm-fill::before { content: map-get($bootstrap-icons-map, "badge-tm-fill"); } +.bi-badge-tm::before { content: map-get($bootstrap-icons-map, "badge-tm"); } +.bi-badge-vo-fill::before { content: map-get($bootstrap-icons-map, "badge-vo-fill"); } +.bi-badge-vo::before { content: map-get($bootstrap-icons-map, "badge-vo"); } +.bi-badge-vr-fill::before { content: map-get($bootstrap-icons-map, "badge-vr-fill"); } +.bi-badge-vr::before { content: map-get($bootstrap-icons-map, "badge-vr"); } +.bi-badge-wc-fill::before { content: map-get($bootstrap-icons-map, "badge-wc-fill"); } +.bi-badge-wc::before { content: map-get($bootstrap-icons-map, "badge-wc"); } +.bi-bag-check-fill::before { content: map-get($bootstrap-icons-map, "bag-check-fill"); } +.bi-bag-check::before { content: map-get($bootstrap-icons-map, "bag-check"); } +.bi-bag-dash-fill::before { content: map-get($bootstrap-icons-map, "bag-dash-fill"); } +.bi-bag-dash::before { content: map-get($bootstrap-icons-map, "bag-dash"); } +.bi-bag-fill::before { content: map-get($bootstrap-icons-map, "bag-fill"); } +.bi-bag-plus-fill::before { content: map-get($bootstrap-icons-map, "bag-plus-fill"); } +.bi-bag-plus::before { content: map-get($bootstrap-icons-map, "bag-plus"); } +.bi-bag-x-fill::before { content: map-get($bootstrap-icons-map, "bag-x-fill"); } +.bi-bag-x::before { content: map-get($bootstrap-icons-map, "bag-x"); } +.bi-bag::before { content: map-get($bootstrap-icons-map, "bag"); } +.bi-bar-chart-fill::before { content: map-get($bootstrap-icons-map, "bar-chart-fill"); } +.bi-bar-chart-line-fill::before { content: map-get($bootstrap-icons-map, "bar-chart-line-fill"); } +.bi-bar-chart-line::before { content: map-get($bootstrap-icons-map, "bar-chart-line"); } +.bi-bar-chart-steps::before { content: map-get($bootstrap-icons-map, "bar-chart-steps"); } +.bi-bar-chart::before { content: map-get($bootstrap-icons-map, "bar-chart"); } +.bi-basket-fill::before { content: map-get($bootstrap-icons-map, "basket-fill"); } +.bi-basket::before { content: map-get($bootstrap-icons-map, "basket"); } +.bi-basket2-fill::before { content: map-get($bootstrap-icons-map, "basket2-fill"); } +.bi-basket2::before { content: map-get($bootstrap-icons-map, "basket2"); } +.bi-basket3-fill::before { content: map-get($bootstrap-icons-map, "basket3-fill"); } +.bi-basket3::before { content: map-get($bootstrap-icons-map, "basket3"); } +.bi-battery-charging::before { content: map-get($bootstrap-icons-map, "battery-charging"); } +.bi-battery-full::before { content: map-get($bootstrap-icons-map, "battery-full"); } +.bi-battery-half::before { content: map-get($bootstrap-icons-map, "battery-half"); } +.bi-battery::before { content: map-get($bootstrap-icons-map, "battery"); } +.bi-bell-fill::before { content: map-get($bootstrap-icons-map, "bell-fill"); } +.bi-bell::before { content: map-get($bootstrap-icons-map, "bell"); } +.bi-bezier::before { content: map-get($bootstrap-icons-map, "bezier"); } +.bi-bezier2::before { content: map-get($bootstrap-icons-map, "bezier2"); } +.bi-bicycle::before { content: map-get($bootstrap-icons-map, "bicycle"); } +.bi-binoculars-fill::before { content: map-get($bootstrap-icons-map, "binoculars-fill"); } +.bi-binoculars::before { content: map-get($bootstrap-icons-map, "binoculars"); } +.bi-blockquote-left::before { content: map-get($bootstrap-icons-map, "blockquote-left"); } +.bi-blockquote-right::before { content: map-get($bootstrap-icons-map, "blockquote-right"); } +.bi-book-fill::before { content: map-get($bootstrap-icons-map, "book-fill"); } +.bi-book-half::before { content: map-get($bootstrap-icons-map, "book-half"); } +.bi-book::before { content: map-get($bootstrap-icons-map, "book"); } +.bi-bookmark-check-fill::before { content: map-get($bootstrap-icons-map, "bookmark-check-fill"); } +.bi-bookmark-check::before { content: map-get($bootstrap-icons-map, "bookmark-check"); } +.bi-bookmark-dash-fill::before { content: map-get($bootstrap-icons-map, "bookmark-dash-fill"); } +.bi-bookmark-dash::before { content: map-get($bootstrap-icons-map, "bookmark-dash"); } +.bi-bookmark-fill::before { content: map-get($bootstrap-icons-map, "bookmark-fill"); } +.bi-bookmark-heart-fill::before { content: map-get($bootstrap-icons-map, "bookmark-heart-fill"); } +.bi-bookmark-heart::before { content: map-get($bootstrap-icons-map, "bookmark-heart"); } +.bi-bookmark-plus-fill::before { content: map-get($bootstrap-icons-map, "bookmark-plus-fill"); } +.bi-bookmark-plus::before { content: map-get($bootstrap-icons-map, "bookmark-plus"); } +.bi-bookmark-star-fill::before { content: map-get($bootstrap-icons-map, "bookmark-star-fill"); } +.bi-bookmark-star::before { content: map-get($bootstrap-icons-map, "bookmark-star"); } +.bi-bookmark-x-fill::before { content: map-get($bootstrap-icons-map, "bookmark-x-fill"); } +.bi-bookmark-x::before { content: map-get($bootstrap-icons-map, "bookmark-x"); } +.bi-bookmark::before { content: map-get($bootstrap-icons-map, "bookmark"); } +.bi-bookmarks-fill::before { content: map-get($bootstrap-icons-map, "bookmarks-fill"); } +.bi-bookmarks::before { content: map-get($bootstrap-icons-map, "bookmarks"); } +.bi-bookshelf::before { content: map-get($bootstrap-icons-map, "bookshelf"); } +.bi-bootstrap-fill::before { content: map-get($bootstrap-icons-map, "bootstrap-fill"); } +.bi-bootstrap-reboot::before { content: map-get($bootstrap-icons-map, "bootstrap-reboot"); } +.bi-bootstrap::before { content: map-get($bootstrap-icons-map, "bootstrap"); } +.bi-border-all::before { content: map-get($bootstrap-icons-map, "border-all"); } +.bi-border-bottom::before { content: map-get($bootstrap-icons-map, "border-bottom"); } +.bi-border-center::before { content: map-get($bootstrap-icons-map, "border-center"); } +.bi-border-inner::before { content: map-get($bootstrap-icons-map, "border-inner"); } +.bi-border-left::before { content: map-get($bootstrap-icons-map, "border-left"); } +.bi-border-middle::before { content: map-get($bootstrap-icons-map, "border-middle"); } +.bi-border-outer::before { content: map-get($bootstrap-icons-map, "border-outer"); } +.bi-border-right::before { content: map-get($bootstrap-icons-map, "border-right"); } +.bi-border-style::before { content: map-get($bootstrap-icons-map, "border-style"); } +.bi-border-top::before { content: map-get($bootstrap-icons-map, "border-top"); } +.bi-border-width::before { content: map-get($bootstrap-icons-map, "border-width"); } +.bi-border::before { content: map-get($bootstrap-icons-map, "border"); } +.bi-bounding-box-circles::before { content: map-get($bootstrap-icons-map, "bounding-box-circles"); } +.bi-bounding-box::before { content: map-get($bootstrap-icons-map, "bounding-box"); } +.bi-box-arrow-down-left::before { content: map-get($bootstrap-icons-map, "box-arrow-down-left"); } +.bi-box-arrow-down-right::before { content: map-get($bootstrap-icons-map, "box-arrow-down-right"); } +.bi-box-arrow-down::before { content: map-get($bootstrap-icons-map, "box-arrow-down"); } +.bi-box-arrow-in-down-left::before { content: map-get($bootstrap-icons-map, "box-arrow-in-down-left"); } +.bi-box-arrow-in-down-right::before { content: map-get($bootstrap-icons-map, "box-arrow-in-down-right"); } +.bi-box-arrow-in-down::before { content: map-get($bootstrap-icons-map, "box-arrow-in-down"); } +.bi-box-arrow-in-left::before { content: map-get($bootstrap-icons-map, "box-arrow-in-left"); } +.bi-box-arrow-in-right::before { content: map-get($bootstrap-icons-map, "box-arrow-in-right"); } +.bi-box-arrow-in-up-left::before { content: map-get($bootstrap-icons-map, "box-arrow-in-up-left"); } +.bi-box-arrow-in-up-right::before { content: map-get($bootstrap-icons-map, "box-arrow-in-up-right"); } +.bi-box-arrow-in-up::before { content: map-get($bootstrap-icons-map, "box-arrow-in-up"); } +.bi-box-arrow-left::before { content: map-get($bootstrap-icons-map, "box-arrow-left"); } +.bi-box-arrow-right::before { content: map-get($bootstrap-icons-map, "box-arrow-right"); } +.bi-box-arrow-up-left::before { content: map-get($bootstrap-icons-map, "box-arrow-up-left"); } +.bi-box-arrow-up-right::before { content: map-get($bootstrap-icons-map, "box-arrow-up-right"); } +.bi-box-arrow-up::before { content: map-get($bootstrap-icons-map, "box-arrow-up"); } +.bi-box-seam::before { content: map-get($bootstrap-icons-map, "box-seam"); } +.bi-box::before { content: map-get($bootstrap-icons-map, "box"); } +.bi-braces::before { content: map-get($bootstrap-icons-map, "braces"); } +.bi-bricks::before { content: map-get($bootstrap-icons-map, "bricks"); } +.bi-briefcase-fill::before { content: map-get($bootstrap-icons-map, "briefcase-fill"); } +.bi-briefcase::before { content: map-get($bootstrap-icons-map, "briefcase"); } +.bi-brightness-alt-high-fill::before { content: map-get($bootstrap-icons-map, "brightness-alt-high-fill"); } +.bi-brightness-alt-high::before { content: map-get($bootstrap-icons-map, "brightness-alt-high"); } +.bi-brightness-alt-low-fill::before { content: map-get($bootstrap-icons-map, "brightness-alt-low-fill"); } +.bi-brightness-alt-low::before { content: map-get($bootstrap-icons-map, "brightness-alt-low"); } +.bi-brightness-high-fill::before { content: map-get($bootstrap-icons-map, "brightness-high-fill"); } +.bi-brightness-high::before { content: map-get($bootstrap-icons-map, "brightness-high"); } +.bi-brightness-low-fill::before { content: map-get($bootstrap-icons-map, "brightness-low-fill"); } +.bi-brightness-low::before { content: map-get($bootstrap-icons-map, "brightness-low"); } +.bi-broadcast-pin::before { content: map-get($bootstrap-icons-map, "broadcast-pin"); } +.bi-broadcast::before { content: map-get($bootstrap-icons-map, "broadcast"); } +.bi-brush-fill::before { content: map-get($bootstrap-icons-map, "brush-fill"); } +.bi-brush::before { content: map-get($bootstrap-icons-map, "brush"); } +.bi-bucket-fill::before { content: map-get($bootstrap-icons-map, "bucket-fill"); } +.bi-bucket::before { content: map-get($bootstrap-icons-map, "bucket"); } +.bi-bug-fill::before { content: map-get($bootstrap-icons-map, "bug-fill"); } +.bi-bug::before { content: map-get($bootstrap-icons-map, "bug"); } +.bi-building::before { content: map-get($bootstrap-icons-map, "building"); } +.bi-bullseye::before { content: map-get($bootstrap-icons-map, "bullseye"); } +.bi-calculator-fill::before { content: map-get($bootstrap-icons-map, "calculator-fill"); } +.bi-calculator::before { content: map-get($bootstrap-icons-map, "calculator"); } +.bi-calendar-check-fill::before { content: map-get($bootstrap-icons-map, "calendar-check-fill"); } +.bi-calendar-check::before { content: map-get($bootstrap-icons-map, "calendar-check"); } +.bi-calendar-date-fill::before { content: map-get($bootstrap-icons-map, "calendar-date-fill"); } +.bi-calendar-date::before { content: map-get($bootstrap-icons-map, "calendar-date"); } +.bi-calendar-day-fill::before { content: map-get($bootstrap-icons-map, "calendar-day-fill"); } +.bi-calendar-day::before { content: map-get($bootstrap-icons-map, "calendar-day"); } +.bi-calendar-event-fill::before { content: map-get($bootstrap-icons-map, "calendar-event-fill"); } +.bi-calendar-event::before { content: map-get($bootstrap-icons-map, "calendar-event"); } +.bi-calendar-fill::before { content: map-get($bootstrap-icons-map, "calendar-fill"); } +.bi-calendar-minus-fill::before { content: map-get($bootstrap-icons-map, "calendar-minus-fill"); } +.bi-calendar-minus::before { content: map-get($bootstrap-icons-map, "calendar-minus"); } +.bi-calendar-month-fill::before { content: map-get($bootstrap-icons-map, "calendar-month-fill"); } +.bi-calendar-month::before { content: map-get($bootstrap-icons-map, "calendar-month"); } +.bi-calendar-plus-fill::before { content: map-get($bootstrap-icons-map, "calendar-plus-fill"); } +.bi-calendar-plus::before { content: map-get($bootstrap-icons-map, "calendar-plus"); } +.bi-calendar-range-fill::before { content: map-get($bootstrap-icons-map, "calendar-range-fill"); } +.bi-calendar-range::before { content: map-get($bootstrap-icons-map, "calendar-range"); } +.bi-calendar-week-fill::before { content: map-get($bootstrap-icons-map, "calendar-week-fill"); } +.bi-calendar-week::before { content: map-get($bootstrap-icons-map, "calendar-week"); } +.bi-calendar-x-fill::before { content: map-get($bootstrap-icons-map, "calendar-x-fill"); } +.bi-calendar-x::before { content: map-get($bootstrap-icons-map, "calendar-x"); } +.bi-calendar::before { content: map-get($bootstrap-icons-map, "calendar"); } +.bi-calendar2-check-fill::before { content: map-get($bootstrap-icons-map, "calendar2-check-fill"); } +.bi-calendar2-check::before { content: map-get($bootstrap-icons-map, "calendar2-check"); } +.bi-calendar2-date-fill::before { content: map-get($bootstrap-icons-map, "calendar2-date-fill"); } +.bi-calendar2-date::before { content: map-get($bootstrap-icons-map, "calendar2-date"); } +.bi-calendar2-day-fill::before { content: map-get($bootstrap-icons-map, "calendar2-day-fill"); } +.bi-calendar2-day::before { content: map-get($bootstrap-icons-map, "calendar2-day"); } +.bi-calendar2-event-fill::before { content: map-get($bootstrap-icons-map, "calendar2-event-fill"); } +.bi-calendar2-event::before { content: map-get($bootstrap-icons-map, "calendar2-event"); } +.bi-calendar2-fill::before { content: map-get($bootstrap-icons-map, "calendar2-fill"); } +.bi-calendar2-minus-fill::before { content: map-get($bootstrap-icons-map, "calendar2-minus-fill"); } +.bi-calendar2-minus::before { content: map-get($bootstrap-icons-map, "calendar2-minus"); } +.bi-calendar2-month-fill::before { content: map-get($bootstrap-icons-map, "calendar2-month-fill"); } +.bi-calendar2-month::before { content: map-get($bootstrap-icons-map, "calendar2-month"); } +.bi-calendar2-plus-fill::before { content: map-get($bootstrap-icons-map, "calendar2-plus-fill"); } +.bi-calendar2-plus::before { content: map-get($bootstrap-icons-map, "calendar2-plus"); } +.bi-calendar2-range-fill::before { content: map-get($bootstrap-icons-map, "calendar2-range-fill"); } +.bi-calendar2-range::before { content: map-get($bootstrap-icons-map, "calendar2-range"); } +.bi-calendar2-week-fill::before { content: map-get($bootstrap-icons-map, "calendar2-week-fill"); } +.bi-calendar2-week::before { content: map-get($bootstrap-icons-map, "calendar2-week"); } +.bi-calendar2-x-fill::before { content: map-get($bootstrap-icons-map, "calendar2-x-fill"); } +.bi-calendar2-x::before { content: map-get($bootstrap-icons-map, "calendar2-x"); } +.bi-calendar2::before { content: map-get($bootstrap-icons-map, "calendar2"); } +.bi-calendar3-event-fill::before { content: map-get($bootstrap-icons-map, "calendar3-event-fill"); } +.bi-calendar3-event::before { content: map-get($bootstrap-icons-map, "calendar3-event"); } +.bi-calendar3-fill::before { content: map-get($bootstrap-icons-map, "calendar3-fill"); } +.bi-calendar3-range-fill::before { content: map-get($bootstrap-icons-map, "calendar3-range-fill"); } +.bi-calendar3-range::before { content: map-get($bootstrap-icons-map, "calendar3-range"); } +.bi-calendar3-week-fill::before { content: map-get($bootstrap-icons-map, "calendar3-week-fill"); } +.bi-calendar3-week::before { content: map-get($bootstrap-icons-map, "calendar3-week"); } +.bi-calendar3::before { content: map-get($bootstrap-icons-map, "calendar3"); } +.bi-calendar4-event::before { content: map-get($bootstrap-icons-map, "calendar4-event"); } +.bi-calendar4-range::before { content: map-get($bootstrap-icons-map, "calendar4-range"); } +.bi-calendar4-week::before { content: map-get($bootstrap-icons-map, "calendar4-week"); } +.bi-calendar4::before { content: map-get($bootstrap-icons-map, "calendar4"); } +.bi-camera-fill::before { content: map-get($bootstrap-icons-map, "camera-fill"); } +.bi-camera-reels-fill::before { content: map-get($bootstrap-icons-map, "camera-reels-fill"); } +.bi-camera-reels::before { content: map-get($bootstrap-icons-map, "camera-reels"); } +.bi-camera-video-fill::before { content: map-get($bootstrap-icons-map, "camera-video-fill"); } +.bi-camera-video-off-fill::before { content: map-get($bootstrap-icons-map, "camera-video-off-fill"); } +.bi-camera-video-off::before { content: map-get($bootstrap-icons-map, "camera-video-off"); } +.bi-camera-video::before { content: map-get($bootstrap-icons-map, "camera-video"); } +.bi-camera::before { content: map-get($bootstrap-icons-map, "camera"); } +.bi-camera2::before { content: map-get($bootstrap-icons-map, "camera2"); } +.bi-capslock-fill::before { content: map-get($bootstrap-icons-map, "capslock-fill"); } +.bi-capslock::before { content: map-get($bootstrap-icons-map, "capslock"); } +.bi-card-checklist::before { content: map-get($bootstrap-icons-map, "card-checklist"); } +.bi-card-heading::before { content: map-get($bootstrap-icons-map, "card-heading"); } +.bi-card-image::before { content: map-get($bootstrap-icons-map, "card-image"); } +.bi-card-list::before { content: map-get($bootstrap-icons-map, "card-list"); } +.bi-card-text::before { content: map-get($bootstrap-icons-map, "card-text"); } +.bi-caret-down-fill::before { content: map-get($bootstrap-icons-map, "caret-down-fill"); } +.bi-caret-down-square-fill::before { content: map-get($bootstrap-icons-map, "caret-down-square-fill"); } +.bi-caret-down-square::before { content: map-get($bootstrap-icons-map, "caret-down-square"); } +.bi-caret-down::before { content: map-get($bootstrap-icons-map, "caret-down"); } +.bi-caret-left-fill::before { content: map-get($bootstrap-icons-map, "caret-left-fill"); } +.bi-caret-left-square-fill::before { content: map-get($bootstrap-icons-map, "caret-left-square-fill"); } +.bi-caret-left-square::before { content: map-get($bootstrap-icons-map, "caret-left-square"); } +.bi-caret-left::before { content: map-get($bootstrap-icons-map, "caret-left"); } +.bi-caret-right-fill::before { content: map-get($bootstrap-icons-map, "caret-right-fill"); } +.bi-caret-right-square-fill::before { content: map-get($bootstrap-icons-map, "caret-right-square-fill"); } +.bi-caret-right-square::before { content: map-get($bootstrap-icons-map, "caret-right-square"); } +.bi-caret-right::before { content: map-get($bootstrap-icons-map, "caret-right"); } +.bi-caret-up-fill::before { content: map-get($bootstrap-icons-map, "caret-up-fill"); } +.bi-caret-up-square-fill::before { content: map-get($bootstrap-icons-map, "caret-up-square-fill"); } +.bi-caret-up-square::before { content: map-get($bootstrap-icons-map, "caret-up-square"); } +.bi-caret-up::before { content: map-get($bootstrap-icons-map, "caret-up"); } +.bi-cart-check-fill::before { content: map-get($bootstrap-icons-map, "cart-check-fill"); } +.bi-cart-check::before { content: map-get($bootstrap-icons-map, "cart-check"); } +.bi-cart-dash-fill::before { content: map-get($bootstrap-icons-map, "cart-dash-fill"); } +.bi-cart-dash::before { content: map-get($bootstrap-icons-map, "cart-dash"); } +.bi-cart-fill::before { content: map-get($bootstrap-icons-map, "cart-fill"); } +.bi-cart-plus-fill::before { content: map-get($bootstrap-icons-map, "cart-plus-fill"); } +.bi-cart-plus::before { content: map-get($bootstrap-icons-map, "cart-plus"); } +.bi-cart-x-fill::before { content: map-get($bootstrap-icons-map, "cart-x-fill"); } +.bi-cart-x::before { content: map-get($bootstrap-icons-map, "cart-x"); } +.bi-cart::before { content: map-get($bootstrap-icons-map, "cart"); } +.bi-cart2::before { content: map-get($bootstrap-icons-map, "cart2"); } +.bi-cart3::before { content: map-get($bootstrap-icons-map, "cart3"); } +.bi-cart4::before { content: map-get($bootstrap-icons-map, "cart4"); } +.bi-cash-stack::before { content: map-get($bootstrap-icons-map, "cash-stack"); } +.bi-cash::before { content: map-get($bootstrap-icons-map, "cash"); } +.bi-cast::before { content: map-get($bootstrap-icons-map, "cast"); } +.bi-chat-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-dots-fill"); } +.bi-chat-dots::before { content: map-get($bootstrap-icons-map, "chat-dots"); } +.bi-chat-fill::before { content: map-get($bootstrap-icons-map, "chat-fill"); } +.bi-chat-left-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-left-dots-fill"); } +.bi-chat-left-dots::before { content: map-get($bootstrap-icons-map, "chat-left-dots"); } +.bi-chat-left-fill::before { content: map-get($bootstrap-icons-map, "chat-left-fill"); } +.bi-chat-left-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-left-quote-fill"); } +.bi-chat-left-quote::before { content: map-get($bootstrap-icons-map, "chat-left-quote"); } +.bi-chat-left-text-fill::before { content: map-get($bootstrap-icons-map, "chat-left-text-fill"); } +.bi-chat-left-text::before { content: map-get($bootstrap-icons-map, "chat-left-text"); } +.bi-chat-left::before { content: map-get($bootstrap-icons-map, "chat-left"); } +.bi-chat-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-quote-fill"); } +.bi-chat-quote::before { content: map-get($bootstrap-icons-map, "chat-quote"); } +.bi-chat-right-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-right-dots-fill"); } +.bi-chat-right-dots::before { content: map-get($bootstrap-icons-map, "chat-right-dots"); } +.bi-chat-right-fill::before { content: map-get($bootstrap-icons-map, "chat-right-fill"); } +.bi-chat-right-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-right-quote-fill"); } +.bi-chat-right-quote::before { content: map-get($bootstrap-icons-map, "chat-right-quote"); } +.bi-chat-right-text-fill::before { content: map-get($bootstrap-icons-map, "chat-right-text-fill"); } +.bi-chat-right-text::before { content: map-get($bootstrap-icons-map, "chat-right-text"); } +.bi-chat-right::before { content: map-get($bootstrap-icons-map, "chat-right"); } +.bi-chat-square-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-square-dots-fill"); } +.bi-chat-square-dots::before { content: map-get($bootstrap-icons-map, "chat-square-dots"); } +.bi-chat-square-fill::before { content: map-get($bootstrap-icons-map, "chat-square-fill"); } +.bi-chat-square-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-square-quote-fill"); } +.bi-chat-square-quote::before { content: map-get($bootstrap-icons-map, "chat-square-quote"); } +.bi-chat-square-text-fill::before { content: map-get($bootstrap-icons-map, "chat-square-text-fill"); } +.bi-chat-square-text::before { content: map-get($bootstrap-icons-map, "chat-square-text"); } +.bi-chat-square::before { content: map-get($bootstrap-icons-map, "chat-square"); } +.bi-chat-text-fill::before { content: map-get($bootstrap-icons-map, "chat-text-fill"); } +.bi-chat-text::before { content: map-get($bootstrap-icons-map, "chat-text"); } +.bi-chat::before { content: map-get($bootstrap-icons-map, "chat"); } +.bi-check-all::before { content: map-get($bootstrap-icons-map, "check-all"); } +.bi-check-circle-fill::before { content: map-get($bootstrap-icons-map, "check-circle-fill"); } +.bi-check-circle::before { content: map-get($bootstrap-icons-map, "check-circle"); } +.bi-check-square-fill::before { content: map-get($bootstrap-icons-map, "check-square-fill"); } +.bi-check-square::before { content: map-get($bootstrap-icons-map, "check-square"); } +.bi-check::before { content: map-get($bootstrap-icons-map, "check"); } +.bi-check2-all::before { content: map-get($bootstrap-icons-map, "check2-all"); } +.bi-check2-circle::before { content: map-get($bootstrap-icons-map, "check2-circle"); } +.bi-check2-square::before { content: map-get($bootstrap-icons-map, "check2-square"); } +.bi-check2::before { content: map-get($bootstrap-icons-map, "check2"); } +.bi-chevron-bar-contract::before { content: map-get($bootstrap-icons-map, "chevron-bar-contract"); } +.bi-chevron-bar-down::before { content: map-get($bootstrap-icons-map, "chevron-bar-down"); } +.bi-chevron-bar-expand::before { content: map-get($bootstrap-icons-map, "chevron-bar-expand"); } +.bi-chevron-bar-left::before { content: map-get($bootstrap-icons-map, "chevron-bar-left"); } +.bi-chevron-bar-right::before { content: map-get($bootstrap-icons-map, "chevron-bar-right"); } +.bi-chevron-bar-up::before { content: map-get($bootstrap-icons-map, "chevron-bar-up"); } +.bi-chevron-compact-down::before { content: map-get($bootstrap-icons-map, "chevron-compact-down"); } +.bi-chevron-compact-left::before { content: map-get($bootstrap-icons-map, "chevron-compact-left"); } +.bi-chevron-compact-right::before { content: map-get($bootstrap-icons-map, "chevron-compact-right"); } +.bi-chevron-compact-up::before { content: map-get($bootstrap-icons-map, "chevron-compact-up"); } +.bi-chevron-contract::before { content: map-get($bootstrap-icons-map, "chevron-contract"); } +.bi-chevron-double-down::before { content: map-get($bootstrap-icons-map, "chevron-double-down"); } +.bi-chevron-double-left::before { content: map-get($bootstrap-icons-map, "chevron-double-left"); } +.bi-chevron-double-right::before { content: map-get($bootstrap-icons-map, "chevron-double-right"); } +.bi-chevron-double-up::before { content: map-get($bootstrap-icons-map, "chevron-double-up"); } +.bi-chevron-down::before { content: map-get($bootstrap-icons-map, "chevron-down"); } +.bi-chevron-expand::before { content: map-get($bootstrap-icons-map, "chevron-expand"); } +.bi-chevron-left::before { content: map-get($bootstrap-icons-map, "chevron-left"); } +.bi-chevron-right::before { content: map-get($bootstrap-icons-map, "chevron-right"); } +.bi-chevron-up::before { content: map-get($bootstrap-icons-map, "chevron-up"); } +.bi-circle-fill::before { content: map-get($bootstrap-icons-map, "circle-fill"); } +.bi-circle-half::before { content: map-get($bootstrap-icons-map, "circle-half"); } +.bi-circle-square::before { content: map-get($bootstrap-icons-map, "circle-square"); } +.bi-circle::before { content: map-get($bootstrap-icons-map, "circle"); } +.bi-clipboard-check::before { content: map-get($bootstrap-icons-map, "clipboard-check"); } +.bi-clipboard-data::before { content: map-get($bootstrap-icons-map, "clipboard-data"); } +.bi-clipboard-minus::before { content: map-get($bootstrap-icons-map, "clipboard-minus"); } +.bi-clipboard-plus::before { content: map-get($bootstrap-icons-map, "clipboard-plus"); } +.bi-clipboard-x::before { content: map-get($bootstrap-icons-map, "clipboard-x"); } +.bi-clipboard::before { content: map-get($bootstrap-icons-map, "clipboard"); } +.bi-clock-fill::before { content: map-get($bootstrap-icons-map, "clock-fill"); } +.bi-clock-history::before { content: map-get($bootstrap-icons-map, "clock-history"); } +.bi-clock::before { content: map-get($bootstrap-icons-map, "clock"); } +.bi-cloud-arrow-down-fill::before { content: map-get($bootstrap-icons-map, "cloud-arrow-down-fill"); } +.bi-cloud-arrow-down::before { content: map-get($bootstrap-icons-map, "cloud-arrow-down"); } +.bi-cloud-arrow-up-fill::before { content: map-get($bootstrap-icons-map, "cloud-arrow-up-fill"); } +.bi-cloud-arrow-up::before { content: map-get($bootstrap-icons-map, "cloud-arrow-up"); } +.bi-cloud-check-fill::before { content: map-get($bootstrap-icons-map, "cloud-check-fill"); } +.bi-cloud-check::before { content: map-get($bootstrap-icons-map, "cloud-check"); } +.bi-cloud-download-fill::before { content: map-get($bootstrap-icons-map, "cloud-download-fill"); } +.bi-cloud-download::before { content: map-get($bootstrap-icons-map, "cloud-download"); } +.bi-cloud-drizzle-fill::before { content: map-get($bootstrap-icons-map, "cloud-drizzle-fill"); } +.bi-cloud-drizzle::before { content: map-get($bootstrap-icons-map, "cloud-drizzle"); } +.bi-cloud-fill::before { content: map-get($bootstrap-icons-map, "cloud-fill"); } +.bi-cloud-fog-fill::before { content: map-get($bootstrap-icons-map, "cloud-fog-fill"); } +.bi-cloud-fog::before { content: map-get($bootstrap-icons-map, "cloud-fog"); } +.bi-cloud-fog2-fill::before { content: map-get($bootstrap-icons-map, "cloud-fog2-fill"); } +.bi-cloud-fog2::before { content: map-get($bootstrap-icons-map, "cloud-fog2"); } +.bi-cloud-hail-fill::before { content: map-get($bootstrap-icons-map, "cloud-hail-fill"); } +.bi-cloud-hail::before { content: map-get($bootstrap-icons-map, "cloud-hail"); } +.bi-cloud-haze-1::before { content: map-get($bootstrap-icons-map, "cloud-haze-1"); } +.bi-cloud-haze-fill::before { content: map-get($bootstrap-icons-map, "cloud-haze-fill"); } +.bi-cloud-haze::before { content: map-get($bootstrap-icons-map, "cloud-haze"); } +.bi-cloud-haze2-fill::before { content: map-get($bootstrap-icons-map, "cloud-haze2-fill"); } +.bi-cloud-lightning-fill::before { content: map-get($bootstrap-icons-map, "cloud-lightning-fill"); } +.bi-cloud-lightning-rain-fill::before { content: map-get($bootstrap-icons-map, "cloud-lightning-rain-fill"); } +.bi-cloud-lightning-rain::before { content: map-get($bootstrap-icons-map, "cloud-lightning-rain"); } +.bi-cloud-lightning::before { content: map-get($bootstrap-icons-map, "cloud-lightning"); } +.bi-cloud-minus-fill::before { content: map-get($bootstrap-icons-map, "cloud-minus-fill"); } +.bi-cloud-minus::before { content: map-get($bootstrap-icons-map, "cloud-minus"); } +.bi-cloud-moon-fill::before { content: map-get($bootstrap-icons-map, "cloud-moon-fill"); } +.bi-cloud-moon::before { content: map-get($bootstrap-icons-map, "cloud-moon"); } +.bi-cloud-plus-fill::before { content: map-get($bootstrap-icons-map, "cloud-plus-fill"); } +.bi-cloud-plus::before { content: map-get($bootstrap-icons-map, "cloud-plus"); } +.bi-cloud-rain-fill::before { content: map-get($bootstrap-icons-map, "cloud-rain-fill"); } +.bi-cloud-rain-heavy-fill::before { content: map-get($bootstrap-icons-map, "cloud-rain-heavy-fill"); } +.bi-cloud-rain-heavy::before { content: map-get($bootstrap-icons-map, "cloud-rain-heavy"); } +.bi-cloud-rain::before { content: map-get($bootstrap-icons-map, "cloud-rain"); } +.bi-cloud-slash-fill::before { content: map-get($bootstrap-icons-map, "cloud-slash-fill"); } +.bi-cloud-slash::before { content: map-get($bootstrap-icons-map, "cloud-slash"); } +.bi-cloud-sleet-fill::before { content: map-get($bootstrap-icons-map, "cloud-sleet-fill"); } +.bi-cloud-sleet::before { content: map-get($bootstrap-icons-map, "cloud-sleet"); } +.bi-cloud-snow-fill::before { content: map-get($bootstrap-icons-map, "cloud-snow-fill"); } +.bi-cloud-snow::before { content: map-get($bootstrap-icons-map, "cloud-snow"); } +.bi-cloud-sun-fill::before { content: map-get($bootstrap-icons-map, "cloud-sun-fill"); } +.bi-cloud-sun::before { content: map-get($bootstrap-icons-map, "cloud-sun"); } +.bi-cloud-upload-fill::before { content: map-get($bootstrap-icons-map, "cloud-upload-fill"); } +.bi-cloud-upload::before { content: map-get($bootstrap-icons-map, "cloud-upload"); } +.bi-cloud::before { content: map-get($bootstrap-icons-map, "cloud"); } +.bi-clouds-fill::before { content: map-get($bootstrap-icons-map, "clouds-fill"); } +.bi-clouds::before { content: map-get($bootstrap-icons-map, "clouds"); } +.bi-cloudy-fill::before { content: map-get($bootstrap-icons-map, "cloudy-fill"); } +.bi-cloudy::before { content: map-get($bootstrap-icons-map, "cloudy"); } +.bi-code-slash::before { content: map-get($bootstrap-icons-map, "code-slash"); } +.bi-code-square::before { content: map-get($bootstrap-icons-map, "code-square"); } +.bi-code::before { content: map-get($bootstrap-icons-map, "code"); } +.bi-collection-fill::before { content: map-get($bootstrap-icons-map, "collection-fill"); } +.bi-collection-play-fill::before { content: map-get($bootstrap-icons-map, "collection-play-fill"); } +.bi-collection-play::before { content: map-get($bootstrap-icons-map, "collection-play"); } +.bi-collection::before { content: map-get($bootstrap-icons-map, "collection"); } +.bi-columns-gap::before { content: map-get($bootstrap-icons-map, "columns-gap"); } +.bi-columns::before { content: map-get($bootstrap-icons-map, "columns"); } +.bi-command::before { content: map-get($bootstrap-icons-map, "command"); } +.bi-compass-fill::before { content: map-get($bootstrap-icons-map, "compass-fill"); } +.bi-compass::before { content: map-get($bootstrap-icons-map, "compass"); } +.bi-cone-striped::before { content: map-get($bootstrap-icons-map, "cone-striped"); } +.bi-cone::before { content: map-get($bootstrap-icons-map, "cone"); } +.bi-controller::before { content: map-get($bootstrap-icons-map, "controller"); } +.bi-cpu-fill::before { content: map-get($bootstrap-icons-map, "cpu-fill"); } +.bi-cpu::before { content: map-get($bootstrap-icons-map, "cpu"); } +.bi-credit-card-2-back-fill::before { content: map-get($bootstrap-icons-map, "credit-card-2-back-fill"); } +.bi-credit-card-2-back::before { content: map-get($bootstrap-icons-map, "credit-card-2-back"); } +.bi-credit-card-2-front-fill::before { content: map-get($bootstrap-icons-map, "credit-card-2-front-fill"); } +.bi-credit-card-2-front::before { content: map-get($bootstrap-icons-map, "credit-card-2-front"); } +.bi-credit-card-fill::before { content: map-get($bootstrap-icons-map, "credit-card-fill"); } +.bi-credit-card::before { content: map-get($bootstrap-icons-map, "credit-card"); } +.bi-crop::before { content: map-get($bootstrap-icons-map, "crop"); } +.bi-cup-fill::before { content: map-get($bootstrap-icons-map, "cup-fill"); } +.bi-cup-straw::before { content: map-get($bootstrap-icons-map, "cup-straw"); } +.bi-cup::before { content: map-get($bootstrap-icons-map, "cup"); } +.bi-cursor-fill::before { content: map-get($bootstrap-icons-map, "cursor-fill"); } +.bi-cursor-text::before { content: map-get($bootstrap-icons-map, "cursor-text"); } +.bi-cursor::before { content: map-get($bootstrap-icons-map, "cursor"); } +.bi-dash-circle-dotted::before { content: map-get($bootstrap-icons-map, "dash-circle-dotted"); } +.bi-dash-circle-fill::before { content: map-get($bootstrap-icons-map, "dash-circle-fill"); } +.bi-dash-circle::before { content: map-get($bootstrap-icons-map, "dash-circle"); } +.bi-dash-square-dotted::before { content: map-get($bootstrap-icons-map, "dash-square-dotted"); } +.bi-dash-square-fill::before { content: map-get($bootstrap-icons-map, "dash-square-fill"); } +.bi-dash-square::before { content: map-get($bootstrap-icons-map, "dash-square"); } +.bi-dash::before { content: map-get($bootstrap-icons-map, "dash"); } +.bi-diagram-2-fill::before { content: map-get($bootstrap-icons-map, "diagram-2-fill"); } +.bi-diagram-2::before { content: map-get($bootstrap-icons-map, "diagram-2"); } +.bi-diagram-3-fill::before { content: map-get($bootstrap-icons-map, "diagram-3-fill"); } +.bi-diagram-3::before { content: map-get($bootstrap-icons-map, "diagram-3"); } +.bi-diamond-fill::before { content: map-get($bootstrap-icons-map, "diamond-fill"); } +.bi-diamond-half::before { content: map-get($bootstrap-icons-map, "diamond-half"); } +.bi-diamond::before { content: map-get($bootstrap-icons-map, "diamond"); } +.bi-dice-1-fill::before { content: map-get($bootstrap-icons-map, "dice-1-fill"); } +.bi-dice-1::before { content: map-get($bootstrap-icons-map, "dice-1"); } +.bi-dice-2-fill::before { content: map-get($bootstrap-icons-map, "dice-2-fill"); } +.bi-dice-2::before { content: map-get($bootstrap-icons-map, "dice-2"); } +.bi-dice-3-fill::before { content: map-get($bootstrap-icons-map, "dice-3-fill"); } +.bi-dice-3::before { content: map-get($bootstrap-icons-map, "dice-3"); } +.bi-dice-4-fill::before { content: map-get($bootstrap-icons-map, "dice-4-fill"); } +.bi-dice-4::before { content: map-get($bootstrap-icons-map, "dice-4"); } +.bi-dice-5-fill::before { content: map-get($bootstrap-icons-map, "dice-5-fill"); } +.bi-dice-5::before { content: map-get($bootstrap-icons-map, "dice-5"); } +.bi-dice-6-fill::before { content: map-get($bootstrap-icons-map, "dice-6-fill"); } +.bi-dice-6::before { content: map-get($bootstrap-icons-map, "dice-6"); } +.bi-disc-fill::before { content: map-get($bootstrap-icons-map, "disc-fill"); } +.bi-disc::before { content: map-get($bootstrap-icons-map, "disc"); } +.bi-discord::before { content: map-get($bootstrap-icons-map, "discord"); } +.bi-display-fill::before { content: map-get($bootstrap-icons-map, "display-fill"); } +.bi-display::before { content: map-get($bootstrap-icons-map, "display"); } +.bi-distribute-horizontal::before { content: map-get($bootstrap-icons-map, "distribute-horizontal"); } +.bi-distribute-vertical::before { content: map-get($bootstrap-icons-map, "distribute-vertical"); } +.bi-door-closed-fill::before { content: map-get($bootstrap-icons-map, "door-closed-fill"); } +.bi-door-closed::before { content: map-get($bootstrap-icons-map, "door-closed"); } +.bi-door-open-fill::before { content: map-get($bootstrap-icons-map, "door-open-fill"); } +.bi-door-open::before { content: map-get($bootstrap-icons-map, "door-open"); } +.bi-dot::before { content: map-get($bootstrap-icons-map, "dot"); } +.bi-download::before { content: map-get($bootstrap-icons-map, "download"); } +.bi-droplet-fill::before { content: map-get($bootstrap-icons-map, "droplet-fill"); } +.bi-droplet-half::before { content: map-get($bootstrap-icons-map, "droplet-half"); } +.bi-droplet::before { content: map-get($bootstrap-icons-map, "droplet"); } +.bi-earbuds::before { content: map-get($bootstrap-icons-map, "earbuds"); } +.bi-easel-fill::before { content: map-get($bootstrap-icons-map, "easel-fill"); } +.bi-easel::before { content: map-get($bootstrap-icons-map, "easel"); } +.bi-egg-fill::before { content: map-get($bootstrap-icons-map, "egg-fill"); } +.bi-egg-fried::before { content: map-get($bootstrap-icons-map, "egg-fried"); } +.bi-egg::before { content: map-get($bootstrap-icons-map, "egg"); } +.bi-eject-fill::before { content: map-get($bootstrap-icons-map, "eject-fill"); } +.bi-eject::before { content: map-get($bootstrap-icons-map, "eject"); } +.bi-emoji-angry-fill::before { content: map-get($bootstrap-icons-map, "emoji-angry-fill"); } +.bi-emoji-angry::before { content: map-get($bootstrap-icons-map, "emoji-angry"); } +.bi-emoji-dizzy-fill::before { content: map-get($bootstrap-icons-map, "emoji-dizzy-fill"); } +.bi-emoji-dizzy::before { content: map-get($bootstrap-icons-map, "emoji-dizzy"); } +.bi-emoji-expressionless-fill::before { content: map-get($bootstrap-icons-map, "emoji-expressionless-fill"); } +.bi-emoji-expressionless::before { content: map-get($bootstrap-icons-map, "emoji-expressionless"); } +.bi-emoji-frown-fill::before { content: map-get($bootstrap-icons-map, "emoji-frown-fill"); } +.bi-emoji-frown::before { content: map-get($bootstrap-icons-map, "emoji-frown"); } +.bi-emoji-heart-eyes-fill::before { content: map-get($bootstrap-icons-map, "emoji-heart-eyes-fill"); } +.bi-emoji-heart-eyes::before { content: map-get($bootstrap-icons-map, "emoji-heart-eyes"); } +.bi-emoji-laughing-fill::before { content: map-get($bootstrap-icons-map, "emoji-laughing-fill"); } +.bi-emoji-laughing::before { content: map-get($bootstrap-icons-map, "emoji-laughing"); } +.bi-emoji-neutral-fill::before { content: map-get($bootstrap-icons-map, "emoji-neutral-fill"); } +.bi-emoji-neutral::before { content: map-get($bootstrap-icons-map, "emoji-neutral"); } +.bi-emoji-smile-fill::before { content: map-get($bootstrap-icons-map, "emoji-smile-fill"); } +.bi-emoji-smile-upside-down-fill::before { content: map-get($bootstrap-icons-map, "emoji-smile-upside-down-fill"); } +.bi-emoji-smile-upside-down::before { content: map-get($bootstrap-icons-map, "emoji-smile-upside-down"); } +.bi-emoji-smile::before { content: map-get($bootstrap-icons-map, "emoji-smile"); } +.bi-emoji-sunglasses-fill::before { content: map-get($bootstrap-icons-map, "emoji-sunglasses-fill"); } +.bi-emoji-sunglasses::before { content: map-get($bootstrap-icons-map, "emoji-sunglasses"); } +.bi-emoji-wink-fill::before { content: map-get($bootstrap-icons-map, "emoji-wink-fill"); } +.bi-emoji-wink::before { content: map-get($bootstrap-icons-map, "emoji-wink"); } +.bi-envelope-fill::before { content: map-get($bootstrap-icons-map, "envelope-fill"); } +.bi-envelope-open-fill::before { content: map-get($bootstrap-icons-map, "envelope-open-fill"); } +.bi-envelope-open::before { content: map-get($bootstrap-icons-map, "envelope-open"); } +.bi-envelope::before { content: map-get($bootstrap-icons-map, "envelope"); } +.bi-eraser-fill::before { content: map-get($bootstrap-icons-map, "eraser-fill"); } +.bi-eraser::before { content: map-get($bootstrap-icons-map, "eraser"); } +.bi-exclamation-circle-fill::before { content: map-get($bootstrap-icons-map, "exclamation-circle-fill"); } +.bi-exclamation-circle::before { content: map-get($bootstrap-icons-map, "exclamation-circle"); } +.bi-exclamation-diamond-fill::before { content: map-get($bootstrap-icons-map, "exclamation-diamond-fill"); } +.bi-exclamation-diamond::before { content: map-get($bootstrap-icons-map, "exclamation-diamond"); } +.bi-exclamation-octagon-fill::before { content: map-get($bootstrap-icons-map, "exclamation-octagon-fill"); } +.bi-exclamation-octagon::before { content: map-get($bootstrap-icons-map, "exclamation-octagon"); } +.bi-exclamation-square-fill::before { content: map-get($bootstrap-icons-map, "exclamation-square-fill"); } +.bi-exclamation-square::before { content: map-get($bootstrap-icons-map, "exclamation-square"); } +.bi-exclamation-triangle-fill::before { content: map-get($bootstrap-icons-map, "exclamation-triangle-fill"); } +.bi-exclamation-triangle::before { content: map-get($bootstrap-icons-map, "exclamation-triangle"); } +.bi-exclamation::before { content: map-get($bootstrap-icons-map, "exclamation"); } +.bi-exclude::before { content: map-get($bootstrap-icons-map, "exclude"); } +.bi-eye-fill::before { content: map-get($bootstrap-icons-map, "eye-fill"); } +.bi-eye-slash-fill::before { content: map-get($bootstrap-icons-map, "eye-slash-fill"); } +.bi-eye-slash::before { content: map-get($bootstrap-icons-map, "eye-slash"); } +.bi-eye::before { content: map-get($bootstrap-icons-map, "eye"); } +.bi-eyedropper::before { content: map-get($bootstrap-icons-map, "eyedropper"); } +.bi-eyeglasses::before { content: map-get($bootstrap-icons-map, "eyeglasses"); } +.bi-facebook::before { content: map-get($bootstrap-icons-map, "facebook"); } +.bi-file-arrow-down-fill::before { content: map-get($bootstrap-icons-map, "file-arrow-down-fill"); } +.bi-file-arrow-down::before { content: map-get($bootstrap-icons-map, "file-arrow-down"); } +.bi-file-arrow-up-fill::before { content: map-get($bootstrap-icons-map, "file-arrow-up-fill"); } +.bi-file-arrow-up::before { content: map-get($bootstrap-icons-map, "file-arrow-up"); } +.bi-file-bar-graph-fill::before { content: map-get($bootstrap-icons-map, "file-bar-graph-fill"); } +.bi-file-bar-graph::before { content: map-get($bootstrap-icons-map, "file-bar-graph"); } +.bi-file-binary-fill::before { content: map-get($bootstrap-icons-map, "file-binary-fill"); } +.bi-file-binary::before { content: map-get($bootstrap-icons-map, "file-binary"); } +.bi-file-break-fill::before { content: map-get($bootstrap-icons-map, "file-break-fill"); } +.bi-file-break::before { content: map-get($bootstrap-icons-map, "file-break"); } +.bi-file-check-fill::before { content: map-get($bootstrap-icons-map, "file-check-fill"); } +.bi-file-check::before { content: map-get($bootstrap-icons-map, "file-check"); } +.bi-file-code-fill::before { content: map-get($bootstrap-icons-map, "file-code-fill"); } +.bi-file-code::before { content: map-get($bootstrap-icons-map, "file-code"); } +.bi-file-diff-fill::before { content: map-get($bootstrap-icons-map, "file-diff-fill"); } +.bi-file-diff::before { content: map-get($bootstrap-icons-map, "file-diff"); } +.bi-file-earmark-arrow-down-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-down-fill"); } +.bi-file-earmark-arrow-down::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-down"); } +.bi-file-earmark-arrow-up-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-up-fill"); } +.bi-file-earmark-arrow-up::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-up"); } +.bi-file-earmark-bar-graph-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-bar-graph-fill"); } +.bi-file-earmark-bar-graph::before { content: map-get($bootstrap-icons-map, "file-earmark-bar-graph"); } +.bi-file-earmark-binary-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-binary-fill"); } +.bi-file-earmark-binary::before { content: map-get($bootstrap-icons-map, "file-earmark-binary"); } +.bi-file-earmark-break-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-break-fill"); } +.bi-file-earmark-break::before { content: map-get($bootstrap-icons-map, "file-earmark-break"); } +.bi-file-earmark-check-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-check-fill"); } +.bi-file-earmark-check::before { content: map-get($bootstrap-icons-map, "file-earmark-check"); } +.bi-file-earmark-code-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-code-fill"); } +.bi-file-earmark-code::before { content: map-get($bootstrap-icons-map, "file-earmark-code"); } +.bi-file-earmark-diff-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-diff-fill"); } +.bi-file-earmark-diff::before { content: map-get($bootstrap-icons-map, "file-earmark-diff"); } +.bi-file-earmark-easel-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-easel-fill"); } +.bi-file-earmark-easel::before { content: map-get($bootstrap-icons-map, "file-earmark-easel"); } +.bi-file-earmark-excel-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-excel-fill"); } +.bi-file-earmark-excel::before { content: map-get($bootstrap-icons-map, "file-earmark-excel"); } +.bi-file-earmark-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-fill"); } +.bi-file-earmark-font-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-font-fill"); } +.bi-file-earmark-font::before { content: map-get($bootstrap-icons-map, "file-earmark-font"); } +.bi-file-earmark-image-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-image-fill"); } +.bi-file-earmark-image::before { content: map-get($bootstrap-icons-map, "file-earmark-image"); } +.bi-file-earmark-lock-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-lock-fill"); } +.bi-file-earmark-lock::before { content: map-get($bootstrap-icons-map, "file-earmark-lock"); } +.bi-file-earmark-lock2-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-lock2-fill"); } +.bi-file-earmark-lock2::before { content: map-get($bootstrap-icons-map, "file-earmark-lock2"); } +.bi-file-earmark-medical-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-medical-fill"); } +.bi-file-earmark-medical::before { content: map-get($bootstrap-icons-map, "file-earmark-medical"); } +.bi-file-earmark-minus-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-minus-fill"); } +.bi-file-earmark-minus::before { content: map-get($bootstrap-icons-map, "file-earmark-minus"); } +.bi-file-earmark-music-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-music-fill"); } +.bi-file-earmark-music::before { content: map-get($bootstrap-icons-map, "file-earmark-music"); } +.bi-file-earmark-person-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-person-fill"); } +.bi-file-earmark-person::before { content: map-get($bootstrap-icons-map, "file-earmark-person"); } +.bi-file-earmark-play-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-play-fill"); } +.bi-file-earmark-play::before { content: map-get($bootstrap-icons-map, "file-earmark-play"); } +.bi-file-earmark-plus-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-plus-fill"); } +.bi-file-earmark-plus::before { content: map-get($bootstrap-icons-map, "file-earmark-plus"); } +.bi-file-earmark-post-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-post-fill"); } +.bi-file-earmark-post::before { content: map-get($bootstrap-icons-map, "file-earmark-post"); } +.bi-file-earmark-ppt-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-ppt-fill"); } +.bi-file-earmark-ppt::before { content: map-get($bootstrap-icons-map, "file-earmark-ppt"); } +.bi-file-earmark-richtext-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-richtext-fill"); } +.bi-file-earmark-richtext::before { content: map-get($bootstrap-icons-map, "file-earmark-richtext"); } +.bi-file-earmark-ruled-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-ruled-fill"); } +.bi-file-earmark-ruled::before { content: map-get($bootstrap-icons-map, "file-earmark-ruled"); } +.bi-file-earmark-slides-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-slides-fill"); } +.bi-file-earmark-slides::before { content: map-get($bootstrap-icons-map, "file-earmark-slides"); } +.bi-file-earmark-spreadsheet-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-spreadsheet-fill"); } +.bi-file-earmark-spreadsheet::before { content: map-get($bootstrap-icons-map, "file-earmark-spreadsheet"); } +.bi-file-earmark-text-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-text-fill"); } +.bi-file-earmark-text::before { content: map-get($bootstrap-icons-map, "file-earmark-text"); } +.bi-file-earmark-word-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-word-fill"); } +.bi-file-earmark-word::before { content: map-get($bootstrap-icons-map, "file-earmark-word"); } +.bi-file-earmark-x-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-x-fill"); } +.bi-file-earmark-x::before { content: map-get($bootstrap-icons-map, "file-earmark-x"); } +.bi-file-earmark-zip-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-zip-fill"); } +.bi-file-earmark-zip::before { content: map-get($bootstrap-icons-map, "file-earmark-zip"); } +.bi-file-earmark::before { content: map-get($bootstrap-icons-map, "file-earmark"); } +.bi-file-easel-fill::before { content: map-get($bootstrap-icons-map, "file-easel-fill"); } +.bi-file-easel::before { content: map-get($bootstrap-icons-map, "file-easel"); } +.bi-file-excel-fill::before { content: map-get($bootstrap-icons-map, "file-excel-fill"); } +.bi-file-excel::before { content: map-get($bootstrap-icons-map, "file-excel"); } +.bi-file-fill::before { content: map-get($bootstrap-icons-map, "file-fill"); } +.bi-file-font-fill::before { content: map-get($bootstrap-icons-map, "file-font-fill"); } +.bi-file-font::before { content: map-get($bootstrap-icons-map, "file-font"); } +.bi-file-image-fill::before { content: map-get($bootstrap-icons-map, "file-image-fill"); } +.bi-file-image::before { content: map-get($bootstrap-icons-map, "file-image"); } +.bi-file-lock-fill::before { content: map-get($bootstrap-icons-map, "file-lock-fill"); } +.bi-file-lock::before { content: map-get($bootstrap-icons-map, "file-lock"); } +.bi-file-lock2-fill::before { content: map-get($bootstrap-icons-map, "file-lock2-fill"); } +.bi-file-lock2::before { content: map-get($bootstrap-icons-map, "file-lock2"); } +.bi-file-medical-fill::before { content: map-get($bootstrap-icons-map, "file-medical-fill"); } +.bi-file-medical::before { content: map-get($bootstrap-icons-map, "file-medical"); } +.bi-file-minus-fill::before { content: map-get($bootstrap-icons-map, "file-minus-fill"); } +.bi-file-minus::before { content: map-get($bootstrap-icons-map, "file-minus"); } +.bi-file-music-fill::before { content: map-get($bootstrap-icons-map, "file-music-fill"); } +.bi-file-music::before { content: map-get($bootstrap-icons-map, "file-music"); } +.bi-file-person-fill::before { content: map-get($bootstrap-icons-map, "file-person-fill"); } +.bi-file-person::before { content: map-get($bootstrap-icons-map, "file-person"); } +.bi-file-play-fill::before { content: map-get($bootstrap-icons-map, "file-play-fill"); } +.bi-file-play::before { content: map-get($bootstrap-icons-map, "file-play"); } +.bi-file-plus-fill::before { content: map-get($bootstrap-icons-map, "file-plus-fill"); } +.bi-file-plus::before { content: map-get($bootstrap-icons-map, "file-plus"); } +.bi-file-post-fill::before { content: map-get($bootstrap-icons-map, "file-post-fill"); } +.bi-file-post::before { content: map-get($bootstrap-icons-map, "file-post"); } +.bi-file-ppt-fill::before { content: map-get($bootstrap-icons-map, "file-ppt-fill"); } +.bi-file-ppt::before { content: map-get($bootstrap-icons-map, "file-ppt"); } +.bi-file-richtext-fill::before { content: map-get($bootstrap-icons-map, "file-richtext-fill"); } +.bi-file-richtext::before { content: map-get($bootstrap-icons-map, "file-richtext"); } +.bi-file-ruled-fill::before { content: map-get($bootstrap-icons-map, "file-ruled-fill"); } +.bi-file-ruled::before { content: map-get($bootstrap-icons-map, "file-ruled"); } +.bi-file-slides-fill::before { content: map-get($bootstrap-icons-map, "file-slides-fill"); } +.bi-file-slides::before { content: map-get($bootstrap-icons-map, "file-slides"); } +.bi-file-spreadsheet-fill::before { content: map-get($bootstrap-icons-map, "file-spreadsheet-fill"); } +.bi-file-spreadsheet::before { content: map-get($bootstrap-icons-map, "file-spreadsheet"); } +.bi-file-text-fill::before { content: map-get($bootstrap-icons-map, "file-text-fill"); } +.bi-file-text::before { content: map-get($bootstrap-icons-map, "file-text"); } +.bi-file-word-fill::before { content: map-get($bootstrap-icons-map, "file-word-fill"); } +.bi-file-word::before { content: map-get($bootstrap-icons-map, "file-word"); } +.bi-file-x-fill::before { content: map-get($bootstrap-icons-map, "file-x-fill"); } +.bi-file-x::before { content: map-get($bootstrap-icons-map, "file-x"); } +.bi-file-zip-fill::before { content: map-get($bootstrap-icons-map, "file-zip-fill"); } +.bi-file-zip::before { content: map-get($bootstrap-icons-map, "file-zip"); } +.bi-file::before { content: map-get($bootstrap-icons-map, "file"); } +.bi-files-alt::before { content: map-get($bootstrap-icons-map, "files-alt"); } +.bi-files::before { content: map-get($bootstrap-icons-map, "files"); } +.bi-film::before { content: map-get($bootstrap-icons-map, "film"); } +.bi-filter-circle-fill::before { content: map-get($bootstrap-icons-map, "filter-circle-fill"); } +.bi-filter-circle::before { content: map-get($bootstrap-icons-map, "filter-circle"); } +.bi-filter-left::before { content: map-get($bootstrap-icons-map, "filter-left"); } +.bi-filter-right::before { content: map-get($bootstrap-icons-map, "filter-right"); } +.bi-filter-square-fill::before { content: map-get($bootstrap-icons-map, "filter-square-fill"); } +.bi-filter-square::before { content: map-get($bootstrap-icons-map, "filter-square"); } +.bi-filter::before { content: map-get($bootstrap-icons-map, "filter"); } +.bi-flag-fill::before { content: map-get($bootstrap-icons-map, "flag-fill"); } +.bi-flag::before { content: map-get($bootstrap-icons-map, "flag"); } +.bi-flower1::before { content: map-get($bootstrap-icons-map, "flower1"); } +.bi-flower2::before { content: map-get($bootstrap-icons-map, "flower2"); } +.bi-flower3::before { content: map-get($bootstrap-icons-map, "flower3"); } +.bi-folder-check::before { content: map-get($bootstrap-icons-map, "folder-check"); } +.bi-folder-fill::before { content: map-get($bootstrap-icons-map, "folder-fill"); } +.bi-folder-minus::before { content: map-get($bootstrap-icons-map, "folder-minus"); } +.bi-folder-plus::before { content: map-get($bootstrap-icons-map, "folder-plus"); } +.bi-folder-symlink-fill::before { content: map-get($bootstrap-icons-map, "folder-symlink-fill"); } +.bi-folder-symlink::before { content: map-get($bootstrap-icons-map, "folder-symlink"); } +.bi-folder-x::before { content: map-get($bootstrap-icons-map, "folder-x"); } +.bi-folder::before { content: map-get($bootstrap-icons-map, "folder"); } +.bi-folder2-open::before { content: map-get($bootstrap-icons-map, "folder2-open"); } +.bi-folder2::before { content: map-get($bootstrap-icons-map, "folder2"); } +.bi-fonts::before { content: map-get($bootstrap-icons-map, "fonts"); } +.bi-forward-fill::before { content: map-get($bootstrap-icons-map, "forward-fill"); } +.bi-forward::before { content: map-get($bootstrap-icons-map, "forward"); } +.bi-front::before { content: map-get($bootstrap-icons-map, "front"); } +.bi-fullscreen-exit::before { content: map-get($bootstrap-icons-map, "fullscreen-exit"); } +.bi-fullscreen::before { content: map-get($bootstrap-icons-map, "fullscreen"); } +.bi-funnel-fill::before { content: map-get($bootstrap-icons-map, "funnel-fill"); } +.bi-funnel::before { content: map-get($bootstrap-icons-map, "funnel"); } +.bi-gear-fill::before { content: map-get($bootstrap-icons-map, "gear-fill"); } +.bi-gear-wide-connected::before { content: map-get($bootstrap-icons-map, "gear-wide-connected"); } +.bi-gear-wide::before { content: map-get($bootstrap-icons-map, "gear-wide"); } +.bi-gear::before { content: map-get($bootstrap-icons-map, "gear"); } +.bi-gem::before { content: map-get($bootstrap-icons-map, "gem"); } +.bi-geo-alt-fill::before { content: map-get($bootstrap-icons-map, "geo-alt-fill"); } +.bi-geo-alt::before { content: map-get($bootstrap-icons-map, "geo-alt"); } +.bi-geo-fill::before { content: map-get($bootstrap-icons-map, "geo-fill"); } +.bi-geo::before { content: map-get($bootstrap-icons-map, "geo"); } +.bi-gift-fill::before { content: map-get($bootstrap-icons-map, "gift-fill"); } +.bi-gift::before { content: map-get($bootstrap-icons-map, "gift"); } +.bi-github::before { content: map-get($bootstrap-icons-map, "github"); } +.bi-globe::before { content: map-get($bootstrap-icons-map, "globe"); } +.bi-globe2::before { content: map-get($bootstrap-icons-map, "globe2"); } +.bi-google::before { content: map-get($bootstrap-icons-map, "google"); } +.bi-graph-down::before { content: map-get($bootstrap-icons-map, "graph-down"); } +.bi-graph-up::before { content: map-get($bootstrap-icons-map, "graph-up"); } +.bi-grid-1x2-fill::before { content: map-get($bootstrap-icons-map, "grid-1x2-fill"); } +.bi-grid-1x2::before { content: map-get($bootstrap-icons-map, "grid-1x2"); } +.bi-grid-3x2-gap-fill::before { content: map-get($bootstrap-icons-map, "grid-3x2-gap-fill"); } +.bi-grid-3x2-gap::before { content: map-get($bootstrap-icons-map, "grid-3x2-gap"); } +.bi-grid-3x2::before { content: map-get($bootstrap-icons-map, "grid-3x2"); } +.bi-grid-3x3-gap-fill::before { content: map-get($bootstrap-icons-map, "grid-3x3-gap-fill"); } +.bi-grid-3x3-gap::before { content: map-get($bootstrap-icons-map, "grid-3x3-gap"); } +.bi-grid-3x3::before { content: map-get($bootstrap-icons-map, "grid-3x3"); } +.bi-grid-fill::before { content: map-get($bootstrap-icons-map, "grid-fill"); } +.bi-grid::before { content: map-get($bootstrap-icons-map, "grid"); } +.bi-grip-horizontal::before { content: map-get($bootstrap-icons-map, "grip-horizontal"); } +.bi-grip-vertical::before { content: map-get($bootstrap-icons-map, "grip-vertical"); } +.bi-hammer::before { content: map-get($bootstrap-icons-map, "hammer"); } +.bi-hand-index-fill::before { content: map-get($bootstrap-icons-map, "hand-index-fill"); } +.bi-hand-index-thumb-fill::before { content: map-get($bootstrap-icons-map, "hand-index-thumb-fill"); } +.bi-hand-index-thumb::before { content: map-get($bootstrap-icons-map, "hand-index-thumb"); } +.bi-hand-index::before { content: map-get($bootstrap-icons-map, "hand-index"); } +.bi-hand-thumbs-down-fill::before { content: map-get($bootstrap-icons-map, "hand-thumbs-down-fill"); } +.bi-hand-thumbs-down::before { content: map-get($bootstrap-icons-map, "hand-thumbs-down"); } +.bi-hand-thumbs-up-fill::before { content: map-get($bootstrap-icons-map, "hand-thumbs-up-fill"); } +.bi-hand-thumbs-up::before { content: map-get($bootstrap-icons-map, "hand-thumbs-up"); } +.bi-handbag-fill::before { content: map-get($bootstrap-icons-map, "handbag-fill"); } +.bi-handbag::before { content: map-get($bootstrap-icons-map, "handbag"); } +.bi-hash::before { content: map-get($bootstrap-icons-map, "hash"); } +.bi-hdd-fill::before { content: map-get($bootstrap-icons-map, "hdd-fill"); } +.bi-hdd-network-fill::before { content: map-get($bootstrap-icons-map, "hdd-network-fill"); } +.bi-hdd-network::before { content: map-get($bootstrap-icons-map, "hdd-network"); } +.bi-hdd-rack-fill::before { content: map-get($bootstrap-icons-map, "hdd-rack-fill"); } +.bi-hdd-rack::before { content: map-get($bootstrap-icons-map, "hdd-rack"); } +.bi-hdd-stack-fill::before { content: map-get($bootstrap-icons-map, "hdd-stack-fill"); } +.bi-hdd-stack::before { content: map-get($bootstrap-icons-map, "hdd-stack"); } +.bi-hdd::before { content: map-get($bootstrap-icons-map, "hdd"); } +.bi-headphones::before { content: map-get($bootstrap-icons-map, "headphones"); } +.bi-headset::before { content: map-get($bootstrap-icons-map, "headset"); } +.bi-heart-fill::before { content: map-get($bootstrap-icons-map, "heart-fill"); } +.bi-heart-half::before { content: map-get($bootstrap-icons-map, "heart-half"); } +.bi-heart::before { content: map-get($bootstrap-icons-map, "heart"); } +.bi-heptagon-fill::before { content: map-get($bootstrap-icons-map, "heptagon-fill"); } +.bi-heptagon-half::before { content: map-get($bootstrap-icons-map, "heptagon-half"); } +.bi-heptagon::before { content: map-get($bootstrap-icons-map, "heptagon"); } +.bi-hexagon-fill::before { content: map-get($bootstrap-icons-map, "hexagon-fill"); } +.bi-hexagon-half::before { content: map-get($bootstrap-icons-map, "hexagon-half"); } +.bi-hexagon::before { content: map-get($bootstrap-icons-map, "hexagon"); } +.bi-hourglass-bottom::before { content: map-get($bootstrap-icons-map, "hourglass-bottom"); } +.bi-hourglass-split::before { content: map-get($bootstrap-icons-map, "hourglass-split"); } +.bi-hourglass-top::before { content: map-get($bootstrap-icons-map, "hourglass-top"); } +.bi-hourglass::before { content: map-get($bootstrap-icons-map, "hourglass"); } +.bi-house-door-fill::before { content: map-get($bootstrap-icons-map, "house-door-fill"); } +.bi-house-door::before { content: map-get($bootstrap-icons-map, "house-door"); } +.bi-house-fill::before { content: map-get($bootstrap-icons-map, "house-fill"); } +.bi-house::before { content: map-get($bootstrap-icons-map, "house"); } +.bi-hr::before { content: map-get($bootstrap-icons-map, "hr"); } +.bi-hurricane::before { content: map-get($bootstrap-icons-map, "hurricane"); } +.bi-image-alt::before { content: map-get($bootstrap-icons-map, "image-alt"); } +.bi-image-fill::before { content: map-get($bootstrap-icons-map, "image-fill"); } +.bi-image::before { content: map-get($bootstrap-icons-map, "image"); } +.bi-images::before { content: map-get($bootstrap-icons-map, "images"); } +.bi-inbox-fill::before { content: map-get($bootstrap-icons-map, "inbox-fill"); } +.bi-inbox::before { content: map-get($bootstrap-icons-map, "inbox"); } +.bi-inboxes-fill::before { content: map-get($bootstrap-icons-map, "inboxes-fill"); } +.bi-inboxes::before { content: map-get($bootstrap-icons-map, "inboxes"); } +.bi-info-circle-fill::before { content: map-get($bootstrap-icons-map, "info-circle-fill"); } +.bi-info-circle::before { content: map-get($bootstrap-icons-map, "info-circle"); } +.bi-info-square-fill::before { content: map-get($bootstrap-icons-map, "info-square-fill"); } +.bi-info-square::before { content: map-get($bootstrap-icons-map, "info-square"); } +.bi-info::before { content: map-get($bootstrap-icons-map, "info"); } +.bi-input-cursor-text::before { content: map-get($bootstrap-icons-map, "input-cursor-text"); } +.bi-input-cursor::before { content: map-get($bootstrap-icons-map, "input-cursor"); } +.bi-instagram::before { content: map-get($bootstrap-icons-map, "instagram"); } +.bi-intersect::before { content: map-get($bootstrap-icons-map, "intersect"); } +.bi-journal-album::before { content: map-get($bootstrap-icons-map, "journal-album"); } +.bi-journal-arrow-down::before { content: map-get($bootstrap-icons-map, "journal-arrow-down"); } +.bi-journal-arrow-up::before { content: map-get($bootstrap-icons-map, "journal-arrow-up"); } +.bi-journal-bookmark-fill::before { content: map-get($bootstrap-icons-map, "journal-bookmark-fill"); } +.bi-journal-bookmark::before { content: map-get($bootstrap-icons-map, "journal-bookmark"); } +.bi-journal-check::before { content: map-get($bootstrap-icons-map, "journal-check"); } +.bi-journal-code::before { content: map-get($bootstrap-icons-map, "journal-code"); } +.bi-journal-medical::before { content: map-get($bootstrap-icons-map, "journal-medical"); } +.bi-journal-minus::before { content: map-get($bootstrap-icons-map, "journal-minus"); } +.bi-journal-plus::before { content: map-get($bootstrap-icons-map, "journal-plus"); } +.bi-journal-richtext::before { content: map-get($bootstrap-icons-map, "journal-richtext"); } +.bi-journal-text::before { content: map-get($bootstrap-icons-map, "journal-text"); } +.bi-journal-x::before { content: map-get($bootstrap-icons-map, "journal-x"); } +.bi-journal::before { content: map-get($bootstrap-icons-map, "journal"); } +.bi-journals::before { content: map-get($bootstrap-icons-map, "journals"); } +.bi-joystick::before { content: map-get($bootstrap-icons-map, "joystick"); } +.bi-justify-left::before { content: map-get($bootstrap-icons-map, "justify-left"); } +.bi-justify-right::before { content: map-get($bootstrap-icons-map, "justify-right"); } +.bi-justify::before { content: map-get($bootstrap-icons-map, "justify"); } +.bi-kanban-fill::before { content: map-get($bootstrap-icons-map, "kanban-fill"); } +.bi-kanban::before { content: map-get($bootstrap-icons-map, "kanban"); } +.bi-key-fill::before { content: map-get($bootstrap-icons-map, "key-fill"); } +.bi-key::before { content: map-get($bootstrap-icons-map, "key"); } +.bi-keyboard-fill::before { content: map-get($bootstrap-icons-map, "keyboard-fill"); } +.bi-keyboard::before { content: map-get($bootstrap-icons-map, "keyboard"); } +.bi-ladder::before { content: map-get($bootstrap-icons-map, "ladder"); } +.bi-lamp-fill::before { content: map-get($bootstrap-icons-map, "lamp-fill"); } +.bi-lamp::before { content: map-get($bootstrap-icons-map, "lamp"); } +.bi-laptop-fill::before { content: map-get($bootstrap-icons-map, "laptop-fill"); } +.bi-laptop::before { content: map-get($bootstrap-icons-map, "laptop"); } +.bi-layer-backward::before { content: map-get($bootstrap-icons-map, "layer-backward"); } +.bi-layer-forward::before { content: map-get($bootstrap-icons-map, "layer-forward"); } +.bi-layers-fill::before { content: map-get($bootstrap-icons-map, "layers-fill"); } +.bi-layers-half::before { content: map-get($bootstrap-icons-map, "layers-half"); } +.bi-layers::before { content: map-get($bootstrap-icons-map, "layers"); } +.bi-layout-sidebar-inset-reverse::before { content: map-get($bootstrap-icons-map, "layout-sidebar-inset-reverse"); } +.bi-layout-sidebar-inset::before { content: map-get($bootstrap-icons-map, "layout-sidebar-inset"); } +.bi-layout-sidebar-reverse::before { content: map-get($bootstrap-icons-map, "layout-sidebar-reverse"); } +.bi-layout-sidebar::before { content: map-get($bootstrap-icons-map, "layout-sidebar"); } +.bi-layout-split::before { content: map-get($bootstrap-icons-map, "layout-split"); } +.bi-layout-text-sidebar-reverse::before { content: map-get($bootstrap-icons-map, "layout-text-sidebar-reverse"); } +.bi-layout-text-sidebar::before { content: map-get($bootstrap-icons-map, "layout-text-sidebar"); } +.bi-layout-text-window-reverse::before { content: map-get($bootstrap-icons-map, "layout-text-window-reverse"); } +.bi-layout-text-window::before { content: map-get($bootstrap-icons-map, "layout-text-window"); } +.bi-layout-three-columns::before { content: map-get($bootstrap-icons-map, "layout-three-columns"); } +.bi-layout-wtf::before { content: map-get($bootstrap-icons-map, "layout-wtf"); } +.bi-life-preserver::before { content: map-get($bootstrap-icons-map, "life-preserver"); } +.bi-lightbulb-fill::before { content: map-get($bootstrap-icons-map, "lightbulb-fill"); } +.bi-lightbulb-off-fill::before { content: map-get($bootstrap-icons-map, "lightbulb-off-fill"); } +.bi-lightbulb-off::before { content: map-get($bootstrap-icons-map, "lightbulb-off"); } +.bi-lightbulb::before { content: map-get($bootstrap-icons-map, "lightbulb"); } +.bi-lightning-charge-fill::before { content: map-get($bootstrap-icons-map, "lightning-charge-fill"); } +.bi-lightning-charge::before { content: map-get($bootstrap-icons-map, "lightning-charge"); } +.bi-lightning-fill::before { content: map-get($bootstrap-icons-map, "lightning-fill"); } +.bi-lightning::before { content: map-get($bootstrap-icons-map, "lightning"); } +.bi-link-45deg::before { content: map-get($bootstrap-icons-map, "link-45deg"); } +.bi-link::before { content: map-get($bootstrap-icons-map, "link"); } +.bi-linkedin::before { content: map-get($bootstrap-icons-map, "linkedin"); } +.bi-list-check::before { content: map-get($bootstrap-icons-map, "list-check"); } +.bi-list-nested::before { content: map-get($bootstrap-icons-map, "list-nested"); } +.bi-list-ol::before { content: map-get($bootstrap-icons-map, "list-ol"); } +.bi-list-stars::before { content: map-get($bootstrap-icons-map, "list-stars"); } +.bi-list-task::before { content: map-get($bootstrap-icons-map, "list-task"); } +.bi-list-ul::before { content: map-get($bootstrap-icons-map, "list-ul"); } +.bi-list::before { content: map-get($bootstrap-icons-map, "list"); } +.bi-lock-fill::before { content: map-get($bootstrap-icons-map, "lock-fill"); } +.bi-lock::before { content: map-get($bootstrap-icons-map, "lock"); } +.bi-mailbox::before { content: map-get($bootstrap-icons-map, "mailbox"); } +.bi-mailbox2::before { content: map-get($bootstrap-icons-map, "mailbox2"); } +.bi-map-fill::before { content: map-get($bootstrap-icons-map, "map-fill"); } +.bi-map::before { content: map-get($bootstrap-icons-map, "map"); } +.bi-markdown-fill::before { content: map-get($bootstrap-icons-map, "markdown-fill"); } +.bi-markdown::before { content: map-get($bootstrap-icons-map, "markdown"); } +.bi-mask::before { content: map-get($bootstrap-icons-map, "mask"); } +.bi-megaphone-fill::before { content: map-get($bootstrap-icons-map, "megaphone-fill"); } +.bi-megaphone::before { content: map-get($bootstrap-icons-map, "megaphone"); } +.bi-menu-app-fill::before { content: map-get($bootstrap-icons-map, "menu-app-fill"); } +.bi-menu-app::before { content: map-get($bootstrap-icons-map, "menu-app"); } +.bi-menu-button-fill::before { content: map-get($bootstrap-icons-map, "menu-button-fill"); } +.bi-menu-button-wide-fill::before { content: map-get($bootstrap-icons-map, "menu-button-wide-fill"); } +.bi-menu-button-wide::before { content: map-get($bootstrap-icons-map, "menu-button-wide"); } +.bi-menu-button::before { content: map-get($bootstrap-icons-map, "menu-button"); } +.bi-menu-down::before { content: map-get($bootstrap-icons-map, "menu-down"); } +.bi-menu-up::before { content: map-get($bootstrap-icons-map, "menu-up"); } +.bi-mic-fill::before { content: map-get($bootstrap-icons-map, "mic-fill"); } +.bi-mic-mute-fill::before { content: map-get($bootstrap-icons-map, "mic-mute-fill"); } +.bi-mic-mute::before { content: map-get($bootstrap-icons-map, "mic-mute"); } +.bi-mic::before { content: map-get($bootstrap-icons-map, "mic"); } +.bi-minecart-loaded::before { content: map-get($bootstrap-icons-map, "minecart-loaded"); } +.bi-minecart::before { content: map-get($bootstrap-icons-map, "minecart"); } +.bi-moisture::before { content: map-get($bootstrap-icons-map, "moisture"); } +.bi-moon-fill::before { content: map-get($bootstrap-icons-map, "moon-fill"); } +.bi-moon-stars-fill::before { content: map-get($bootstrap-icons-map, "moon-stars-fill"); } +.bi-moon-stars::before { content: map-get($bootstrap-icons-map, "moon-stars"); } +.bi-moon::before { content: map-get($bootstrap-icons-map, "moon"); } +.bi-mouse-fill::before { content: map-get($bootstrap-icons-map, "mouse-fill"); } +.bi-mouse::before { content: map-get($bootstrap-icons-map, "mouse"); } +.bi-mouse2-fill::before { content: map-get($bootstrap-icons-map, "mouse2-fill"); } +.bi-mouse2::before { content: map-get($bootstrap-icons-map, "mouse2"); } +.bi-mouse3-fill::before { content: map-get($bootstrap-icons-map, "mouse3-fill"); } +.bi-mouse3::before { content: map-get($bootstrap-icons-map, "mouse3"); } +.bi-music-note-beamed::before { content: map-get($bootstrap-icons-map, "music-note-beamed"); } +.bi-music-note-list::before { content: map-get($bootstrap-icons-map, "music-note-list"); } +.bi-music-note::before { content: map-get($bootstrap-icons-map, "music-note"); } +.bi-music-player-fill::before { content: map-get($bootstrap-icons-map, "music-player-fill"); } +.bi-music-player::before { content: map-get($bootstrap-icons-map, "music-player"); } +.bi-newspaper::before { content: map-get($bootstrap-icons-map, "newspaper"); } +.bi-node-minus-fill::before { content: map-get($bootstrap-icons-map, "node-minus-fill"); } +.bi-node-minus::before { content: map-get($bootstrap-icons-map, "node-minus"); } +.bi-node-plus-fill::before { content: map-get($bootstrap-icons-map, "node-plus-fill"); } +.bi-node-plus::before { content: map-get($bootstrap-icons-map, "node-plus"); } +.bi-nut-fill::before { content: map-get($bootstrap-icons-map, "nut-fill"); } +.bi-nut::before { content: map-get($bootstrap-icons-map, "nut"); } +.bi-octagon-fill::before { content: map-get($bootstrap-icons-map, "octagon-fill"); } +.bi-octagon-half::before { content: map-get($bootstrap-icons-map, "octagon-half"); } +.bi-octagon::before { content: map-get($bootstrap-icons-map, "octagon"); } +.bi-option::before { content: map-get($bootstrap-icons-map, "option"); } +.bi-outlet::before { content: map-get($bootstrap-icons-map, "outlet"); } +.bi-paint-bucket::before { content: map-get($bootstrap-icons-map, "paint-bucket"); } +.bi-palette-fill::before { content: map-get($bootstrap-icons-map, "palette-fill"); } +.bi-palette::before { content: map-get($bootstrap-icons-map, "palette"); } +.bi-palette2::before { content: map-get($bootstrap-icons-map, "palette2"); } +.bi-paperclip::before { content: map-get($bootstrap-icons-map, "paperclip"); } +.bi-paragraph::before { content: map-get($bootstrap-icons-map, "paragraph"); } +.bi-patch-check-fill::before { content: map-get($bootstrap-icons-map, "patch-check-fill"); } +.bi-patch-check::before { content: map-get($bootstrap-icons-map, "patch-check"); } +.bi-patch-exclamation-fill::before { content: map-get($bootstrap-icons-map, "patch-exclamation-fill"); } +.bi-patch-exclamation::before { content: map-get($bootstrap-icons-map, "patch-exclamation"); } +.bi-patch-minus-fill::before { content: map-get($bootstrap-icons-map, "patch-minus-fill"); } +.bi-patch-minus::before { content: map-get($bootstrap-icons-map, "patch-minus"); } +.bi-patch-plus-fill::before { content: map-get($bootstrap-icons-map, "patch-plus-fill"); } +.bi-patch-plus::before { content: map-get($bootstrap-icons-map, "patch-plus"); } +.bi-patch-question-fill::before { content: map-get($bootstrap-icons-map, "patch-question-fill"); } +.bi-patch-question::before { content: map-get($bootstrap-icons-map, "patch-question"); } +.bi-pause-btn-fill::before { content: map-get($bootstrap-icons-map, "pause-btn-fill"); } +.bi-pause-btn::before { content: map-get($bootstrap-icons-map, "pause-btn"); } +.bi-pause-circle-fill::before { content: map-get($bootstrap-icons-map, "pause-circle-fill"); } +.bi-pause-circle::before { content: map-get($bootstrap-icons-map, "pause-circle"); } +.bi-pause-fill::before { content: map-get($bootstrap-icons-map, "pause-fill"); } +.bi-pause::before { content: map-get($bootstrap-icons-map, "pause"); } +.bi-peace-fill::before { content: map-get($bootstrap-icons-map, "peace-fill"); } +.bi-peace::before { content: map-get($bootstrap-icons-map, "peace"); } +.bi-pen-fill::before { content: map-get($bootstrap-icons-map, "pen-fill"); } +.bi-pen::before { content: map-get($bootstrap-icons-map, "pen"); } +.bi-pencil-fill::before { content: map-get($bootstrap-icons-map, "pencil-fill"); } +.bi-pencil-square::before { content: map-get($bootstrap-icons-map, "pencil-square"); } +.bi-pencil::before { content: map-get($bootstrap-icons-map, "pencil"); } +.bi-pentagon-fill::before { content: map-get($bootstrap-icons-map, "pentagon-fill"); } +.bi-pentagon-half::before { content: map-get($bootstrap-icons-map, "pentagon-half"); } +.bi-pentagon::before { content: map-get($bootstrap-icons-map, "pentagon"); } +.bi-people-fill::before { content: map-get($bootstrap-icons-map, "people-fill"); } +.bi-people::before { content: map-get($bootstrap-icons-map, "people"); } +.bi-percent::before { content: map-get($bootstrap-icons-map, "percent"); } +.bi-person-badge-fill::before { content: map-get($bootstrap-icons-map, "person-badge-fill"); } +.bi-person-badge::before { content: map-get($bootstrap-icons-map, "person-badge"); } +.bi-person-bounding-box::before { content: map-get($bootstrap-icons-map, "person-bounding-box"); } +.bi-person-check-fill::before { content: map-get($bootstrap-icons-map, "person-check-fill"); } +.bi-person-check::before { content: map-get($bootstrap-icons-map, "person-check"); } +.bi-person-circle::before { content: map-get($bootstrap-icons-map, "person-circle"); } +.bi-person-dash-fill::before { content: map-get($bootstrap-icons-map, "person-dash-fill"); } +.bi-person-dash::before { content: map-get($bootstrap-icons-map, "person-dash"); } +.bi-person-fill::before { content: map-get($bootstrap-icons-map, "person-fill"); } +.bi-person-lines-fill::before { content: map-get($bootstrap-icons-map, "person-lines-fill"); } +.bi-person-plus-fill::before { content: map-get($bootstrap-icons-map, "person-plus-fill"); } +.bi-person-plus::before { content: map-get($bootstrap-icons-map, "person-plus"); } +.bi-person-square::before { content: map-get($bootstrap-icons-map, "person-square"); } +.bi-person-x-fill::before { content: map-get($bootstrap-icons-map, "person-x-fill"); } +.bi-person-x::before { content: map-get($bootstrap-icons-map, "person-x"); } +.bi-person::before { content: map-get($bootstrap-icons-map, "person"); } +.bi-phone-fill::before { content: map-get($bootstrap-icons-map, "phone-fill"); } +.bi-phone-landscape-fill::before { content: map-get($bootstrap-icons-map, "phone-landscape-fill"); } +.bi-phone-landscape::before { content: map-get($bootstrap-icons-map, "phone-landscape"); } +.bi-phone-vibrate-fill::before { content: map-get($bootstrap-icons-map, "phone-vibrate-fill"); } +.bi-phone-vibrate::before { content: map-get($bootstrap-icons-map, "phone-vibrate"); } +.bi-phone::before { content: map-get($bootstrap-icons-map, "phone"); } +.bi-pie-chart-fill::before { content: map-get($bootstrap-icons-map, "pie-chart-fill"); } +.bi-pie-chart::before { content: map-get($bootstrap-icons-map, "pie-chart"); } +.bi-pin-angle-fill::before { content: map-get($bootstrap-icons-map, "pin-angle-fill"); } +.bi-pin-angle::before { content: map-get($bootstrap-icons-map, "pin-angle"); } +.bi-pin-fill::before { content: map-get($bootstrap-icons-map, "pin-fill"); } +.bi-pin::before { content: map-get($bootstrap-icons-map, "pin"); } +.bi-pip-fill::before { content: map-get($bootstrap-icons-map, "pip-fill"); } +.bi-pip::before { content: map-get($bootstrap-icons-map, "pip"); } +.bi-play-btn-fill::before { content: map-get($bootstrap-icons-map, "play-btn-fill"); } +.bi-play-btn::before { content: map-get($bootstrap-icons-map, "play-btn"); } +.bi-play-circle-fill::before { content: map-get($bootstrap-icons-map, "play-circle-fill"); } +.bi-play-circle::before { content: map-get($bootstrap-icons-map, "play-circle"); } +.bi-play-fill::before { content: map-get($bootstrap-icons-map, "play-fill"); } +.bi-play::before { content: map-get($bootstrap-icons-map, "play"); } +.bi-plug-fill::before { content: map-get($bootstrap-icons-map, "plug-fill"); } +.bi-plug::before { content: map-get($bootstrap-icons-map, "plug"); } +.bi-plus-circle-dotted::before { content: map-get($bootstrap-icons-map, "plus-circle-dotted"); } +.bi-plus-circle-fill::before { content: map-get($bootstrap-icons-map, "plus-circle-fill"); } +.bi-plus-circle::before { content: map-get($bootstrap-icons-map, "plus-circle"); } +.bi-plus-square-dotted::before { content: map-get($bootstrap-icons-map, "plus-square-dotted"); } +.bi-plus-square-fill::before { content: map-get($bootstrap-icons-map, "plus-square-fill"); } +.bi-plus-square::before { content: map-get($bootstrap-icons-map, "plus-square"); } +.bi-plus::before { content: map-get($bootstrap-icons-map, "plus"); } +.bi-power::before { content: map-get($bootstrap-icons-map, "power"); } +.bi-printer-fill::before { content: map-get($bootstrap-icons-map, "printer-fill"); } +.bi-printer::before { content: map-get($bootstrap-icons-map, "printer"); } +.bi-puzzle-fill::before { content: map-get($bootstrap-icons-map, "puzzle-fill"); } +.bi-puzzle::before { content: map-get($bootstrap-icons-map, "puzzle"); } +.bi-question-circle-fill::before { content: map-get($bootstrap-icons-map, "question-circle-fill"); } +.bi-question-circle::before { content: map-get($bootstrap-icons-map, "question-circle"); } +.bi-question-diamond-fill::before { content: map-get($bootstrap-icons-map, "question-diamond-fill"); } +.bi-question-diamond::before { content: map-get($bootstrap-icons-map, "question-diamond"); } +.bi-question-octagon-fill::before { content: map-get($bootstrap-icons-map, "question-octagon-fill"); } +.bi-question-octagon::before { content: map-get($bootstrap-icons-map, "question-octagon"); } +.bi-question-square-fill::before { content: map-get($bootstrap-icons-map, "question-square-fill"); } +.bi-question-square::before { content: map-get($bootstrap-icons-map, "question-square"); } +.bi-question::before { content: map-get($bootstrap-icons-map, "question"); } +.bi-rainbow::before { content: map-get($bootstrap-icons-map, "rainbow"); } +.bi-receipt-cutoff::before { content: map-get($bootstrap-icons-map, "receipt-cutoff"); } +.bi-receipt::before { content: map-get($bootstrap-icons-map, "receipt"); } +.bi-reception-0::before { content: map-get($bootstrap-icons-map, "reception-0"); } +.bi-reception-1::before { content: map-get($bootstrap-icons-map, "reception-1"); } +.bi-reception-2::before { content: map-get($bootstrap-icons-map, "reception-2"); } +.bi-reception-3::before { content: map-get($bootstrap-icons-map, "reception-3"); } +.bi-reception-4::before { content: map-get($bootstrap-icons-map, "reception-4"); } +.bi-record-btn-fill::before { content: map-get($bootstrap-icons-map, "record-btn-fill"); } +.bi-record-btn::before { content: map-get($bootstrap-icons-map, "record-btn"); } +.bi-record-circle-fill::before { content: map-get($bootstrap-icons-map, "record-circle-fill"); } +.bi-record-circle::before { content: map-get($bootstrap-icons-map, "record-circle"); } +.bi-record-fill::before { content: map-get($bootstrap-icons-map, "record-fill"); } +.bi-record::before { content: map-get($bootstrap-icons-map, "record"); } +.bi-record2-fill::before { content: map-get($bootstrap-icons-map, "record2-fill"); } +.bi-record2::before { content: map-get($bootstrap-icons-map, "record2"); } +.bi-reply-all-fill::before { content: map-get($bootstrap-icons-map, "reply-all-fill"); } +.bi-reply-all::before { content: map-get($bootstrap-icons-map, "reply-all"); } +.bi-reply-fill::before { content: map-get($bootstrap-icons-map, "reply-fill"); } +.bi-reply::before { content: map-get($bootstrap-icons-map, "reply"); } +.bi-rss-fill::before { content: map-get($bootstrap-icons-map, "rss-fill"); } +.bi-rss::before { content: map-get($bootstrap-icons-map, "rss"); } +.bi-rulers::before { content: map-get($bootstrap-icons-map, "rulers"); } +.bi-save-fill::before { content: map-get($bootstrap-icons-map, "save-fill"); } +.bi-save::before { content: map-get($bootstrap-icons-map, "save"); } +.bi-save2-fill::before { content: map-get($bootstrap-icons-map, "save2-fill"); } +.bi-save2::before { content: map-get($bootstrap-icons-map, "save2"); } +.bi-scissors::before { content: map-get($bootstrap-icons-map, "scissors"); } +.bi-screwdriver::before { content: map-get($bootstrap-icons-map, "screwdriver"); } +.bi-search::before { content: map-get($bootstrap-icons-map, "search"); } +.bi-segmented-nav::before { content: map-get($bootstrap-icons-map, "segmented-nav"); } +.bi-server::before { content: map-get($bootstrap-icons-map, "server"); } +.bi-share-fill::before { content: map-get($bootstrap-icons-map, "share-fill"); } +.bi-share::before { content: map-get($bootstrap-icons-map, "share"); } +.bi-shield-check::before { content: map-get($bootstrap-icons-map, "shield-check"); } +.bi-shield-exclamation::before { content: map-get($bootstrap-icons-map, "shield-exclamation"); } +.bi-shield-fill-check::before { content: map-get($bootstrap-icons-map, "shield-fill-check"); } +.bi-shield-fill-exclamation::before { content: map-get($bootstrap-icons-map, "shield-fill-exclamation"); } +.bi-shield-fill-minus::before { content: map-get($bootstrap-icons-map, "shield-fill-minus"); } +.bi-shield-fill-plus::before { content: map-get($bootstrap-icons-map, "shield-fill-plus"); } +.bi-shield-fill-x::before { content: map-get($bootstrap-icons-map, "shield-fill-x"); } +.bi-shield-fill::before { content: map-get($bootstrap-icons-map, "shield-fill"); } +.bi-shield-lock-fill::before { content: map-get($bootstrap-icons-map, "shield-lock-fill"); } +.bi-shield-lock::before { content: map-get($bootstrap-icons-map, "shield-lock"); } +.bi-shield-minus::before { content: map-get($bootstrap-icons-map, "shield-minus"); } +.bi-shield-plus::before { content: map-get($bootstrap-icons-map, "shield-plus"); } +.bi-shield-shaded::before { content: map-get($bootstrap-icons-map, "shield-shaded"); } +.bi-shield-slash-fill::before { content: map-get($bootstrap-icons-map, "shield-slash-fill"); } +.bi-shield-slash::before { content: map-get($bootstrap-icons-map, "shield-slash"); } +.bi-shield-x::before { content: map-get($bootstrap-icons-map, "shield-x"); } +.bi-shield::before { content: map-get($bootstrap-icons-map, "shield"); } +.bi-shift-fill::before { content: map-get($bootstrap-icons-map, "shift-fill"); } +.bi-shift::before { content: map-get($bootstrap-icons-map, "shift"); } +.bi-shop-window::before { content: map-get($bootstrap-icons-map, "shop-window"); } +.bi-shop::before { content: map-get($bootstrap-icons-map, "shop"); } +.bi-shuffle::before { content: map-get($bootstrap-icons-map, "shuffle"); } +.bi-signpost-2-fill::before { content: map-get($bootstrap-icons-map, "signpost-2-fill"); } +.bi-signpost-2::before { content: map-get($bootstrap-icons-map, "signpost-2"); } +.bi-signpost-fill::before { content: map-get($bootstrap-icons-map, "signpost-fill"); } +.bi-signpost-split-fill::before { content: map-get($bootstrap-icons-map, "signpost-split-fill"); } +.bi-signpost-split::before { content: map-get($bootstrap-icons-map, "signpost-split"); } +.bi-signpost::before { content: map-get($bootstrap-icons-map, "signpost"); } +.bi-sim-fill::before { content: map-get($bootstrap-icons-map, "sim-fill"); } +.bi-sim::before { content: map-get($bootstrap-icons-map, "sim"); } +.bi-skip-backward-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-backward-btn-fill"); } +.bi-skip-backward-btn::before { content: map-get($bootstrap-icons-map, "skip-backward-btn"); } +.bi-skip-backward-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-backward-circle-fill"); } +.bi-skip-backward-circle::before { content: map-get($bootstrap-icons-map, "skip-backward-circle"); } +.bi-skip-backward-fill::before { content: map-get($bootstrap-icons-map, "skip-backward-fill"); } +.bi-skip-backward::before { content: map-get($bootstrap-icons-map, "skip-backward"); } +.bi-skip-end-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-end-btn-fill"); } +.bi-skip-end-btn::before { content: map-get($bootstrap-icons-map, "skip-end-btn"); } +.bi-skip-end-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-end-circle-fill"); } +.bi-skip-end-circle::before { content: map-get($bootstrap-icons-map, "skip-end-circle"); } +.bi-skip-end-fill::before { content: map-get($bootstrap-icons-map, "skip-end-fill"); } +.bi-skip-end::before { content: map-get($bootstrap-icons-map, "skip-end"); } +.bi-skip-forward-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-forward-btn-fill"); } +.bi-skip-forward-btn::before { content: map-get($bootstrap-icons-map, "skip-forward-btn"); } +.bi-skip-forward-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-forward-circle-fill"); } +.bi-skip-forward-circle::before { content: map-get($bootstrap-icons-map, "skip-forward-circle"); } +.bi-skip-forward-fill::before { content: map-get($bootstrap-icons-map, "skip-forward-fill"); } +.bi-skip-forward::before { content: map-get($bootstrap-icons-map, "skip-forward"); } +.bi-skip-start-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-start-btn-fill"); } +.bi-skip-start-btn::before { content: map-get($bootstrap-icons-map, "skip-start-btn"); } +.bi-skip-start-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-start-circle-fill"); } +.bi-skip-start-circle::before { content: map-get($bootstrap-icons-map, "skip-start-circle"); } +.bi-skip-start-fill::before { content: map-get($bootstrap-icons-map, "skip-start-fill"); } +.bi-skip-start::before { content: map-get($bootstrap-icons-map, "skip-start"); } +.bi-slack::before { content: map-get($bootstrap-icons-map, "slack"); } +.bi-slash-circle-fill::before { content: map-get($bootstrap-icons-map, "slash-circle-fill"); } +.bi-slash-circle::before { content: map-get($bootstrap-icons-map, "slash-circle"); } +.bi-slash-square-fill::before { content: map-get($bootstrap-icons-map, "slash-square-fill"); } +.bi-slash-square::before { content: map-get($bootstrap-icons-map, "slash-square"); } +.bi-slash::before { content: map-get($bootstrap-icons-map, "slash"); } +.bi-sliders::before { content: map-get($bootstrap-icons-map, "sliders"); } +.bi-smartwatch::before { content: map-get($bootstrap-icons-map, "smartwatch"); } +.bi-snow::before { content: map-get($bootstrap-icons-map, "snow"); } +.bi-snow2::before { content: map-get($bootstrap-icons-map, "snow2"); } +.bi-snow3::before { content: map-get($bootstrap-icons-map, "snow3"); } +.bi-sort-alpha-down-alt::before { content: map-get($bootstrap-icons-map, "sort-alpha-down-alt"); } +.bi-sort-alpha-down::before { content: map-get($bootstrap-icons-map, "sort-alpha-down"); } +.bi-sort-alpha-up-alt::before { content: map-get($bootstrap-icons-map, "sort-alpha-up-alt"); } +.bi-sort-alpha-up::before { content: map-get($bootstrap-icons-map, "sort-alpha-up"); } +.bi-sort-down-alt::before { content: map-get($bootstrap-icons-map, "sort-down-alt"); } +.bi-sort-down::before { content: map-get($bootstrap-icons-map, "sort-down"); } +.bi-sort-numeric-down-alt::before { content: map-get($bootstrap-icons-map, "sort-numeric-down-alt"); } +.bi-sort-numeric-down::before { content: map-get($bootstrap-icons-map, "sort-numeric-down"); } +.bi-sort-numeric-up-alt::before { content: map-get($bootstrap-icons-map, "sort-numeric-up-alt"); } +.bi-sort-numeric-up::before { content: map-get($bootstrap-icons-map, "sort-numeric-up"); } +.bi-sort-up-alt::before { content: map-get($bootstrap-icons-map, "sort-up-alt"); } +.bi-sort-up::before { content: map-get($bootstrap-icons-map, "sort-up"); } +.bi-soundwave::before { content: map-get($bootstrap-icons-map, "soundwave"); } +.bi-speaker-fill::before { content: map-get($bootstrap-icons-map, "speaker-fill"); } +.bi-speaker::before { content: map-get($bootstrap-icons-map, "speaker"); } +.bi-speedometer::before { content: map-get($bootstrap-icons-map, "speedometer"); } +.bi-speedometer2::before { content: map-get($bootstrap-icons-map, "speedometer2"); } +.bi-spellcheck::before { content: map-get($bootstrap-icons-map, "spellcheck"); } +.bi-square-fill::before { content: map-get($bootstrap-icons-map, "square-fill"); } +.bi-square-half::before { content: map-get($bootstrap-icons-map, "square-half"); } +.bi-square::before { content: map-get($bootstrap-icons-map, "square"); } +.bi-stack::before { content: map-get($bootstrap-icons-map, "stack"); } +.bi-star-fill::before { content: map-get($bootstrap-icons-map, "star-fill"); } +.bi-star-half::before { content: map-get($bootstrap-icons-map, "star-half"); } +.bi-star::before { content: map-get($bootstrap-icons-map, "star"); } +.bi-stars::before { content: map-get($bootstrap-icons-map, "stars"); } +.bi-stickies-fill::before { content: map-get($bootstrap-icons-map, "stickies-fill"); } +.bi-stickies::before { content: map-get($bootstrap-icons-map, "stickies"); } +.bi-sticky-fill::before { content: map-get($bootstrap-icons-map, "sticky-fill"); } +.bi-sticky::before { content: map-get($bootstrap-icons-map, "sticky"); } +.bi-stop-btn-fill::before { content: map-get($bootstrap-icons-map, "stop-btn-fill"); } +.bi-stop-btn::before { content: map-get($bootstrap-icons-map, "stop-btn"); } +.bi-stop-circle-fill::before { content: map-get($bootstrap-icons-map, "stop-circle-fill"); } +.bi-stop-circle::before { content: map-get($bootstrap-icons-map, "stop-circle"); } +.bi-stop-fill::before { content: map-get($bootstrap-icons-map, "stop-fill"); } +.bi-stop::before { content: map-get($bootstrap-icons-map, "stop"); } +.bi-stoplights-fill::before { content: map-get($bootstrap-icons-map, "stoplights-fill"); } +.bi-stoplights::before { content: map-get($bootstrap-icons-map, "stoplights"); } +.bi-stopwatch-fill::before { content: map-get($bootstrap-icons-map, "stopwatch-fill"); } +.bi-stopwatch::before { content: map-get($bootstrap-icons-map, "stopwatch"); } +.bi-subtract::before { content: map-get($bootstrap-icons-map, "subtract"); } +.bi-suit-club-fill::before { content: map-get($bootstrap-icons-map, "suit-club-fill"); } +.bi-suit-club::before { content: map-get($bootstrap-icons-map, "suit-club"); } +.bi-suit-diamond-fill::before { content: map-get($bootstrap-icons-map, "suit-diamond-fill"); } +.bi-suit-diamond::before { content: map-get($bootstrap-icons-map, "suit-diamond"); } +.bi-suit-heart-fill::before { content: map-get($bootstrap-icons-map, "suit-heart-fill"); } +.bi-suit-heart::before { content: map-get($bootstrap-icons-map, "suit-heart"); } +.bi-suit-spade-fill::before { content: map-get($bootstrap-icons-map, "suit-spade-fill"); } +.bi-suit-spade::before { content: map-get($bootstrap-icons-map, "suit-spade"); } +.bi-sun-fill::before { content: map-get($bootstrap-icons-map, "sun-fill"); } +.bi-sun::before { content: map-get($bootstrap-icons-map, "sun"); } +.bi-sunglasses::before { content: map-get($bootstrap-icons-map, "sunglasses"); } +.bi-sunrise-fill::before { content: map-get($bootstrap-icons-map, "sunrise-fill"); } +.bi-sunrise::before { content: map-get($bootstrap-icons-map, "sunrise"); } +.bi-sunset-fill::before { content: map-get($bootstrap-icons-map, "sunset-fill"); } +.bi-sunset::before { content: map-get($bootstrap-icons-map, "sunset"); } +.bi-symmetry-horizontal::before { content: map-get($bootstrap-icons-map, "symmetry-horizontal"); } +.bi-symmetry-vertical::before { content: map-get($bootstrap-icons-map, "symmetry-vertical"); } +.bi-table::before { content: map-get($bootstrap-icons-map, "table"); } +.bi-tablet-fill::before { content: map-get($bootstrap-icons-map, "tablet-fill"); } +.bi-tablet-landscape-fill::before { content: map-get($bootstrap-icons-map, "tablet-landscape-fill"); } +.bi-tablet-landscape::before { content: map-get($bootstrap-icons-map, "tablet-landscape"); } +.bi-tablet::before { content: map-get($bootstrap-icons-map, "tablet"); } +.bi-tag-fill::before { content: map-get($bootstrap-icons-map, "tag-fill"); } +.bi-tag::before { content: map-get($bootstrap-icons-map, "tag"); } +.bi-tags-fill::before { content: map-get($bootstrap-icons-map, "tags-fill"); } +.bi-tags::before { content: map-get($bootstrap-icons-map, "tags"); } +.bi-telegram::before { content: map-get($bootstrap-icons-map, "telegram"); } +.bi-telephone-fill::before { content: map-get($bootstrap-icons-map, "telephone-fill"); } +.bi-telephone-forward-fill::before { content: map-get($bootstrap-icons-map, "telephone-forward-fill"); } +.bi-telephone-forward::before { content: map-get($bootstrap-icons-map, "telephone-forward"); } +.bi-telephone-inbound-fill::before { content: map-get($bootstrap-icons-map, "telephone-inbound-fill"); } +.bi-telephone-inbound::before { content: map-get($bootstrap-icons-map, "telephone-inbound"); } +.bi-telephone-minus-fill::before { content: map-get($bootstrap-icons-map, "telephone-minus-fill"); } +.bi-telephone-minus::before { content: map-get($bootstrap-icons-map, "telephone-minus"); } +.bi-telephone-outbound-fill::before { content: map-get($bootstrap-icons-map, "telephone-outbound-fill"); } +.bi-telephone-outbound::before { content: map-get($bootstrap-icons-map, "telephone-outbound"); } +.bi-telephone-plus-fill::before { content: map-get($bootstrap-icons-map, "telephone-plus-fill"); } +.bi-telephone-plus::before { content: map-get($bootstrap-icons-map, "telephone-plus"); } +.bi-telephone-x-fill::before { content: map-get($bootstrap-icons-map, "telephone-x-fill"); } +.bi-telephone-x::before { content: map-get($bootstrap-icons-map, "telephone-x"); } +.bi-telephone::before { content: map-get($bootstrap-icons-map, "telephone"); } +.bi-terminal-fill::before { content: map-get($bootstrap-icons-map, "terminal-fill"); } +.bi-terminal::before { content: map-get($bootstrap-icons-map, "terminal"); } +.bi-text-center::before { content: map-get($bootstrap-icons-map, "text-center"); } +.bi-text-indent-left::before { content: map-get($bootstrap-icons-map, "text-indent-left"); } +.bi-text-indent-right::before { content: map-get($bootstrap-icons-map, "text-indent-right"); } +.bi-text-left::before { content: map-get($bootstrap-icons-map, "text-left"); } +.bi-text-paragraph::before { content: map-get($bootstrap-icons-map, "text-paragraph"); } +.bi-text-right::before { content: map-get($bootstrap-icons-map, "text-right"); } +.bi-textarea-resize::before { content: map-get($bootstrap-icons-map, "textarea-resize"); } +.bi-textarea-t::before { content: map-get($bootstrap-icons-map, "textarea-t"); } +.bi-textarea::before { content: map-get($bootstrap-icons-map, "textarea"); } +.bi-thermometer-half::before { content: map-get($bootstrap-icons-map, "thermometer-half"); } +.bi-thermometer-high::before { content: map-get($bootstrap-icons-map, "thermometer-high"); } +.bi-thermometer-low::before { content: map-get($bootstrap-icons-map, "thermometer-low"); } +.bi-thermometer-snow::before { content: map-get($bootstrap-icons-map, "thermometer-snow"); } +.bi-thermometer-sun::before { content: map-get($bootstrap-icons-map, "thermometer-sun"); } +.bi-thermometer::before { content: map-get($bootstrap-icons-map, "thermometer"); } +.bi-three-dots-vertical::before { content: map-get($bootstrap-icons-map, "three-dots-vertical"); } +.bi-three-dots::before { content: map-get($bootstrap-icons-map, "three-dots"); } +.bi-toggle-off::before { content: map-get($bootstrap-icons-map, "toggle-off"); } +.bi-toggle-on::before { content: map-get($bootstrap-icons-map, "toggle-on"); } +.bi-toggle2-off::before { content: map-get($bootstrap-icons-map, "toggle2-off"); } +.bi-toggle2-on::before { content: map-get($bootstrap-icons-map, "toggle2-on"); } +.bi-toggles::before { content: map-get($bootstrap-icons-map, "toggles"); } +.bi-toggles2::before { content: map-get($bootstrap-icons-map, "toggles2"); } +.bi-tools::before { content: map-get($bootstrap-icons-map, "tools"); } +.bi-tornado::before { content: map-get($bootstrap-icons-map, "tornado"); } +.bi-trash-fill::before { content: map-get($bootstrap-icons-map, "trash-fill"); } +.bi-trash::before { content: map-get($bootstrap-icons-map, "trash"); } +.bi-trash2-fill::before { content: map-get($bootstrap-icons-map, "trash2-fill"); } +.bi-trash2::before { content: map-get($bootstrap-icons-map, "trash2"); } +.bi-tree-fill::before { content: map-get($bootstrap-icons-map, "tree-fill"); } +.bi-tree::before { content: map-get($bootstrap-icons-map, "tree"); } +.bi-triangle-fill::before { content: map-get($bootstrap-icons-map, "triangle-fill"); } +.bi-triangle-half::before { content: map-get($bootstrap-icons-map, "triangle-half"); } +.bi-triangle::before { content: map-get($bootstrap-icons-map, "triangle"); } +.bi-trophy-fill::before { content: map-get($bootstrap-icons-map, "trophy-fill"); } +.bi-trophy::before { content: map-get($bootstrap-icons-map, "trophy"); } +.bi-tropical-storm::before { content: map-get($bootstrap-icons-map, "tropical-storm"); } +.bi-truck-flatbed::before { content: map-get($bootstrap-icons-map, "truck-flatbed"); } +.bi-truck::before { content: map-get($bootstrap-icons-map, "truck"); } +.bi-tsunami::before { content: map-get($bootstrap-icons-map, "tsunami"); } +.bi-tv-fill::before { content: map-get($bootstrap-icons-map, "tv-fill"); } +.bi-tv::before { content: map-get($bootstrap-icons-map, "tv"); } +.bi-twitch::before { content: map-get($bootstrap-icons-map, "twitch"); } +.bi-twitter::before { content: map-get($bootstrap-icons-map, "twitter"); } +.bi-type-bold::before { content: map-get($bootstrap-icons-map, "type-bold"); } +.bi-type-h1::before { content: map-get($bootstrap-icons-map, "type-h1"); } +.bi-type-h2::before { content: map-get($bootstrap-icons-map, "type-h2"); } +.bi-type-h3::before { content: map-get($bootstrap-icons-map, "type-h3"); } +.bi-type-italic::before { content: map-get($bootstrap-icons-map, "type-italic"); } +.bi-type-strikethrough::before { content: map-get($bootstrap-icons-map, "type-strikethrough"); } +.bi-type-underline::before { content: map-get($bootstrap-icons-map, "type-underline"); } +.bi-type::before { content: map-get($bootstrap-icons-map, "type"); } +.bi-ui-checks-grid::before { content: map-get($bootstrap-icons-map, "ui-checks-grid"); } +.bi-ui-checks::before { content: map-get($bootstrap-icons-map, "ui-checks"); } +.bi-ui-radios-grid::before { content: map-get($bootstrap-icons-map, "ui-radios-grid"); } +.bi-ui-radios::before { content: map-get($bootstrap-icons-map, "ui-radios"); } +.bi-umbrella-fill::before { content: map-get($bootstrap-icons-map, "umbrella-fill"); } +.bi-umbrella::before { content: map-get($bootstrap-icons-map, "umbrella"); } +.bi-union::before { content: map-get($bootstrap-icons-map, "union"); } +.bi-unlock-fill::before { content: map-get($bootstrap-icons-map, "unlock-fill"); } +.bi-unlock::before { content: map-get($bootstrap-icons-map, "unlock"); } +.bi-upc-scan::before { content: map-get($bootstrap-icons-map, "upc-scan"); } +.bi-upc::before { content: map-get($bootstrap-icons-map, "upc"); } +.bi-upload::before { content: map-get($bootstrap-icons-map, "upload"); } +.bi-vector-pen::before { content: map-get($bootstrap-icons-map, "vector-pen"); } +.bi-view-list::before { content: map-get($bootstrap-icons-map, "view-list"); } +.bi-view-stacked::before { content: map-get($bootstrap-icons-map, "view-stacked"); } +.bi-vinyl-fill::before { content: map-get($bootstrap-icons-map, "vinyl-fill"); } +.bi-vinyl::before { content: map-get($bootstrap-icons-map, "vinyl"); } +.bi-voicemail::before { content: map-get($bootstrap-icons-map, "voicemail"); } +.bi-volume-down-fill::before { content: map-get($bootstrap-icons-map, "volume-down-fill"); } +.bi-volume-down::before { content: map-get($bootstrap-icons-map, "volume-down"); } +.bi-volume-mute-fill::before { content: map-get($bootstrap-icons-map, "volume-mute-fill"); } +.bi-volume-mute::before { content: map-get($bootstrap-icons-map, "volume-mute"); } +.bi-volume-off-fill::before { content: map-get($bootstrap-icons-map, "volume-off-fill"); } +.bi-volume-off::before { content: map-get($bootstrap-icons-map, "volume-off"); } +.bi-volume-up-fill::before { content: map-get($bootstrap-icons-map, "volume-up-fill"); } +.bi-volume-up::before { content: map-get($bootstrap-icons-map, "volume-up"); } +.bi-vr::before { content: map-get($bootstrap-icons-map, "vr"); } +.bi-wallet-fill::before { content: map-get($bootstrap-icons-map, "wallet-fill"); } +.bi-wallet::before { content: map-get($bootstrap-icons-map, "wallet"); } +.bi-wallet2::before { content: map-get($bootstrap-icons-map, "wallet2"); } +.bi-watch::before { content: map-get($bootstrap-icons-map, "watch"); } +.bi-water::before { content: map-get($bootstrap-icons-map, "water"); } +.bi-whatsapp::before { content: map-get($bootstrap-icons-map, "whatsapp"); } +.bi-wifi-1::before { content: map-get($bootstrap-icons-map, "wifi-1"); } +.bi-wifi-2::before { content: map-get($bootstrap-icons-map, "wifi-2"); } +.bi-wifi-off::before { content: map-get($bootstrap-icons-map, "wifi-off"); } +.bi-wifi::before { content: map-get($bootstrap-icons-map, "wifi"); } +.bi-wind::before { content: map-get($bootstrap-icons-map, "wind"); } +.bi-window-dock::before { content: map-get($bootstrap-icons-map, "window-dock"); } +.bi-window-sidebar::before { content: map-get($bootstrap-icons-map, "window-sidebar"); } +.bi-window::before { content: map-get($bootstrap-icons-map, "window"); } +.bi-wrench::before { content: map-get($bootstrap-icons-map, "wrench"); } +.bi-x-circle-fill::before { content: map-get($bootstrap-icons-map, "x-circle-fill"); } +.bi-x-circle::before { content: map-get($bootstrap-icons-map, "x-circle"); } +.bi-x-diamond-fill::before { content: map-get($bootstrap-icons-map, "x-diamond-fill"); } +.bi-x-diamond::before { content: map-get($bootstrap-icons-map, "x-diamond"); } +.bi-x-octagon-fill::before { content: map-get($bootstrap-icons-map, "x-octagon-fill"); } +.bi-x-octagon::before { content: map-get($bootstrap-icons-map, "x-octagon"); } +.bi-x-square-fill::before { content: map-get($bootstrap-icons-map, "x-square-fill"); } +.bi-x-square::before { content: map-get($bootstrap-icons-map, "x-square"); } +.bi-x::before { content: map-get($bootstrap-icons-map, "x"); } +.bi-youtube::before { content: map-get($bootstrap-icons-map, "youtube"); } +.bi-zoom-in::before { content: map-get($bootstrap-icons-map, "zoom-in"); } +.bi-zoom-out::before { content: map-get($bootstrap-icons-map, "zoom-out"); } +.bi-bank::before { content: map-get($bootstrap-icons-map, "bank"); } +.bi-bank2::before { content: map-get($bootstrap-icons-map, "bank2"); } +.bi-bell-slash-fill::before { content: map-get($bootstrap-icons-map, "bell-slash-fill"); } +.bi-bell-slash::before { content: map-get($bootstrap-icons-map, "bell-slash"); } +.bi-cash-coin::before { content: map-get($bootstrap-icons-map, "cash-coin"); } +.bi-check-lg::before { content: map-get($bootstrap-icons-map, "check-lg"); } +.bi-coin::before { content: map-get($bootstrap-icons-map, "coin"); } +.bi-currency-bitcoin::before { content: map-get($bootstrap-icons-map, "currency-bitcoin"); } +.bi-currency-dollar::before { content: map-get($bootstrap-icons-map, "currency-dollar"); } +.bi-currency-euro::before { content: map-get($bootstrap-icons-map, "currency-euro"); } +.bi-currency-exchange::before { content: map-get($bootstrap-icons-map, "currency-exchange"); } +.bi-currency-pound::before { content: map-get($bootstrap-icons-map, "currency-pound"); } +.bi-currency-yen::before { content: map-get($bootstrap-icons-map, "currency-yen"); } +.bi-dash-lg::before { content: map-get($bootstrap-icons-map, "dash-lg"); } +.bi-exclamation-lg::before { content: map-get($bootstrap-icons-map, "exclamation-lg"); } +.bi-file-earmark-pdf-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-pdf-fill"); } +.bi-file-earmark-pdf::before { content: map-get($bootstrap-icons-map, "file-earmark-pdf"); } +.bi-file-pdf-fill::before { content: map-get($bootstrap-icons-map, "file-pdf-fill"); } +.bi-file-pdf::before { content: map-get($bootstrap-icons-map, "file-pdf"); } +.bi-gender-ambiguous::before { content: map-get($bootstrap-icons-map, "gender-ambiguous"); } +.bi-gender-female::before { content: map-get($bootstrap-icons-map, "gender-female"); } +.bi-gender-male::before { content: map-get($bootstrap-icons-map, "gender-male"); } +.bi-gender-trans::before { content: map-get($bootstrap-icons-map, "gender-trans"); } +.bi-headset-vr::before { content: map-get($bootstrap-icons-map, "headset-vr"); } +.bi-info-lg::before { content: map-get($bootstrap-icons-map, "info-lg"); } +.bi-mastodon::before { content: map-get($bootstrap-icons-map, "mastodon"); } +.bi-messenger::before { content: map-get($bootstrap-icons-map, "messenger"); } +.bi-piggy-bank-fill::before { content: map-get($bootstrap-icons-map, "piggy-bank-fill"); } +.bi-piggy-bank::before { content: map-get($bootstrap-icons-map, "piggy-bank"); } +.bi-pin-map-fill::before { content: map-get($bootstrap-icons-map, "pin-map-fill"); } +.bi-pin-map::before { content: map-get($bootstrap-icons-map, "pin-map"); } +.bi-plus-lg::before { content: map-get($bootstrap-icons-map, "plus-lg"); } +.bi-question-lg::before { content: map-get($bootstrap-icons-map, "question-lg"); } +.bi-recycle::before { content: map-get($bootstrap-icons-map, "recycle"); } +.bi-reddit::before { content: map-get($bootstrap-icons-map, "reddit"); } +.bi-safe-fill::before { content: map-get($bootstrap-icons-map, "safe-fill"); } +.bi-safe2-fill::before { content: map-get($bootstrap-icons-map, "safe2-fill"); } +.bi-safe2::before { content: map-get($bootstrap-icons-map, "safe2"); } +.bi-sd-card-fill::before { content: map-get($bootstrap-icons-map, "sd-card-fill"); } +.bi-sd-card::before { content: map-get($bootstrap-icons-map, "sd-card"); } +.bi-skype::before { content: map-get($bootstrap-icons-map, "skype"); } +.bi-slash-lg::before { content: map-get($bootstrap-icons-map, "slash-lg"); } +.bi-translate::before { content: map-get($bootstrap-icons-map, "translate"); } +.bi-x-lg::before { content: map-get($bootstrap-icons-map, "x-lg"); } +.bi-safe::before { content: map-get($bootstrap-icons-map, "safe"); } +.bi-apple::before { content: map-get($bootstrap-icons-map, "apple"); } +.bi-microsoft::before { content: map-get($bootstrap-icons-map, "microsoft"); } +.bi-windows::before { content: map-get($bootstrap-icons-map, "windows"); } +.bi-behance::before { content: map-get($bootstrap-icons-map, "behance"); } +.bi-dribbble::before { content: map-get($bootstrap-icons-map, "dribbble"); } +.bi-line::before { content: map-get($bootstrap-icons-map, "line"); } +.bi-medium::before { content: map-get($bootstrap-icons-map, "medium"); } +.bi-paypal::before { content: map-get($bootstrap-icons-map, "paypal"); } +.bi-pinterest::before { content: map-get($bootstrap-icons-map, "pinterest"); } +.bi-signal::before { content: map-get($bootstrap-icons-map, "signal"); } +.bi-snapchat::before { content: map-get($bootstrap-icons-map, "snapchat"); } +.bi-spotify::before { content: map-get($bootstrap-icons-map, "spotify"); } +.bi-stack-overflow::before { content: map-get($bootstrap-icons-map, "stack-overflow"); } +.bi-strava::before { content: map-get($bootstrap-icons-map, "strava"); } +.bi-wordpress::before { content: map-get($bootstrap-icons-map, "wordpress"); } +.bi-vimeo::before { content: map-get($bootstrap-icons-map, "vimeo"); } +.bi-activity::before { content: map-get($bootstrap-icons-map, "activity"); } +.bi-easel2-fill::before { content: map-get($bootstrap-icons-map, "easel2-fill"); } +.bi-easel2::before { content: map-get($bootstrap-icons-map, "easel2"); } +.bi-easel3-fill::before { content: map-get($bootstrap-icons-map, "easel3-fill"); } +.bi-easel3::before { content: map-get($bootstrap-icons-map, "easel3"); } +.bi-fan::before { content: map-get($bootstrap-icons-map, "fan"); } +.bi-fingerprint::before { content: map-get($bootstrap-icons-map, "fingerprint"); } +.bi-graph-down-arrow::before { content: map-get($bootstrap-icons-map, "graph-down-arrow"); } +.bi-graph-up-arrow::before { content: map-get($bootstrap-icons-map, "graph-up-arrow"); } +.bi-hypnotize::before { content: map-get($bootstrap-icons-map, "hypnotize"); } +.bi-magic::before { content: map-get($bootstrap-icons-map, "magic"); } +.bi-person-rolodex::before { content: map-get($bootstrap-icons-map, "person-rolodex"); } +.bi-person-video::before { content: map-get($bootstrap-icons-map, "person-video"); } +.bi-person-video2::before { content: map-get($bootstrap-icons-map, "person-video2"); } +.bi-person-video3::before { content: map-get($bootstrap-icons-map, "person-video3"); } +.bi-person-workspace::before { content: map-get($bootstrap-icons-map, "person-workspace"); } +.bi-radioactive::before { content: map-get($bootstrap-icons-map, "radioactive"); } +.bi-webcam-fill::before { content: map-get($bootstrap-icons-map, "webcam-fill"); } +.bi-webcam::before { content: map-get($bootstrap-icons-map, "webcam"); } +.bi-yin-yang::before { content: map-get($bootstrap-icons-map, "yin-yang"); } +.bi-bandaid-fill::before { content: map-get($bootstrap-icons-map, "bandaid-fill"); } +.bi-bandaid::before { content: map-get($bootstrap-icons-map, "bandaid"); } +.bi-bluetooth::before { content: map-get($bootstrap-icons-map, "bluetooth"); } +.bi-body-text::before { content: map-get($bootstrap-icons-map, "body-text"); } +.bi-boombox::before { content: map-get($bootstrap-icons-map, "boombox"); } +.bi-boxes::before { content: map-get($bootstrap-icons-map, "boxes"); } +.bi-dpad-fill::before { content: map-get($bootstrap-icons-map, "dpad-fill"); } +.bi-dpad::before { content: map-get($bootstrap-icons-map, "dpad"); } +.bi-ear-fill::before { content: map-get($bootstrap-icons-map, "ear-fill"); } +.bi-ear::before { content: map-get($bootstrap-icons-map, "ear"); } +.bi-envelope-check-1::before { content: map-get($bootstrap-icons-map, "envelope-check-1"); } +.bi-envelope-check-fill::before { content: map-get($bootstrap-icons-map, "envelope-check-fill"); } +.bi-envelope-check::before { content: map-get($bootstrap-icons-map, "envelope-check"); } +.bi-envelope-dash-1::before { content: map-get($bootstrap-icons-map, "envelope-dash-1"); } +.bi-envelope-dash-fill::before { content: map-get($bootstrap-icons-map, "envelope-dash-fill"); } +.bi-envelope-dash::before { content: map-get($bootstrap-icons-map, "envelope-dash"); } +.bi-envelope-exclamation-1::before { content: map-get($bootstrap-icons-map, "envelope-exclamation-1"); } +.bi-envelope-exclamation-fill::before { content: map-get($bootstrap-icons-map, "envelope-exclamation-fill"); } +.bi-envelope-exclamation::before { content: map-get($bootstrap-icons-map, "envelope-exclamation"); } +.bi-envelope-plus-fill::before { content: map-get($bootstrap-icons-map, "envelope-plus-fill"); } +.bi-envelope-plus::before { content: map-get($bootstrap-icons-map, "envelope-plus"); } +.bi-envelope-slash-1::before { content: map-get($bootstrap-icons-map, "envelope-slash-1"); } +.bi-envelope-slash-fill::before { content: map-get($bootstrap-icons-map, "envelope-slash-fill"); } +.bi-envelope-slash::before { content: map-get($bootstrap-icons-map, "envelope-slash"); } +.bi-envelope-x-1::before { content: map-get($bootstrap-icons-map, "envelope-x-1"); } +.bi-envelope-x-fill::before { content: map-get($bootstrap-icons-map, "envelope-x-fill"); } +.bi-envelope-x::before { content: map-get($bootstrap-icons-map, "envelope-x"); } +.bi-explicit-fill::before { content: map-get($bootstrap-icons-map, "explicit-fill"); } +.bi-explicit::before { content: map-get($bootstrap-icons-map, "explicit"); } +.bi-git::before { content: map-get($bootstrap-icons-map, "git"); } +.bi-infinity::before { content: map-get($bootstrap-icons-map, "infinity"); } +.bi-list-columns-reverse::before { content: map-get($bootstrap-icons-map, "list-columns-reverse"); } +.bi-list-columns::before { content: map-get($bootstrap-icons-map, "list-columns"); } +.bi-meta::before { content: map-get($bootstrap-icons-map, "meta"); } +.bi-mortorboard-fill::before { content: map-get($bootstrap-icons-map, "mortorboard-fill"); } +.bi-mortorboard::before { content: map-get($bootstrap-icons-map, "mortorboard"); } +.bi-nintendo-switch::before { content: map-get($bootstrap-icons-map, "nintendo-switch"); } +.bi-pc-display-horizontal::before { content: map-get($bootstrap-icons-map, "pc-display-horizontal"); } +.bi-pc-display::before { content: map-get($bootstrap-icons-map, "pc-display"); } +.bi-pc-horizontal::before { content: map-get($bootstrap-icons-map, "pc-horizontal"); } +.bi-pc::before { content: map-get($bootstrap-icons-map, "pc"); } +.bi-playstation::before { content: map-get($bootstrap-icons-map, "playstation"); } +.bi-plus-slash-minus::before { content: map-get($bootstrap-icons-map, "plus-slash-minus"); } +.bi-projector-fill::before { content: map-get($bootstrap-icons-map, "projector-fill"); } +.bi-projector::before { content: map-get($bootstrap-icons-map, "projector"); } +.bi-qr-code-scan::before { content: map-get($bootstrap-icons-map, "qr-code-scan"); } +.bi-qr-code::before { content: map-get($bootstrap-icons-map, "qr-code"); } +.bi-quora::before { content: map-get($bootstrap-icons-map, "quora"); } +.bi-quote::before { content: map-get($bootstrap-icons-map, "quote"); } +.bi-robot::before { content: map-get($bootstrap-icons-map, "robot"); } +.bi-send-check-fill::before { content: map-get($bootstrap-icons-map, "send-check-fill"); } +.bi-send-check::before { content: map-get($bootstrap-icons-map, "send-check"); } +.bi-send-dash-fill::before { content: map-get($bootstrap-icons-map, "send-dash-fill"); } +.bi-send-dash::before { content: map-get($bootstrap-icons-map, "send-dash"); } +.bi-send-exclamation-1::before { content: map-get($bootstrap-icons-map, "send-exclamation-1"); } +.bi-send-exclamation-fill::before { content: map-get($bootstrap-icons-map, "send-exclamation-fill"); } +.bi-send-exclamation::before { content: map-get($bootstrap-icons-map, "send-exclamation"); } +.bi-send-fill::before { content: map-get($bootstrap-icons-map, "send-fill"); } +.bi-send-plus-fill::before { content: map-get($bootstrap-icons-map, "send-plus-fill"); } +.bi-send-plus::before { content: map-get($bootstrap-icons-map, "send-plus"); } +.bi-send-slash-fill::before { content: map-get($bootstrap-icons-map, "send-slash-fill"); } +.bi-send-slash::before { content: map-get($bootstrap-icons-map, "send-slash"); } +.bi-send-x-fill::before { content: map-get($bootstrap-icons-map, "send-x-fill"); } +.bi-send-x::before { content: map-get($bootstrap-icons-map, "send-x"); } +.bi-send::before { content: map-get($bootstrap-icons-map, "send"); } +.bi-steam::before { content: map-get($bootstrap-icons-map, "steam"); } +.bi-terminal-dash-1::before { content: map-get($bootstrap-icons-map, "terminal-dash-1"); } +.bi-terminal-dash::before { content: map-get($bootstrap-icons-map, "terminal-dash"); } +.bi-terminal-plus::before { content: map-get($bootstrap-icons-map, "terminal-plus"); } +.bi-terminal-split::before { content: map-get($bootstrap-icons-map, "terminal-split"); } +.bi-ticket-detailed-fill::before { content: map-get($bootstrap-icons-map, "ticket-detailed-fill"); } +.bi-ticket-detailed::before { content: map-get($bootstrap-icons-map, "ticket-detailed"); } +.bi-ticket-fill::before { content: map-get($bootstrap-icons-map, "ticket-fill"); } +.bi-ticket-perforated-fill::before { content: map-get($bootstrap-icons-map, "ticket-perforated-fill"); } +.bi-ticket-perforated::before { content: map-get($bootstrap-icons-map, "ticket-perforated"); } +.bi-ticket::before { content: map-get($bootstrap-icons-map, "ticket"); } +.bi-tiktok::before { content: map-get($bootstrap-icons-map, "tiktok"); } +.bi-window-dash::before { content: map-get($bootstrap-icons-map, "window-dash"); } +.bi-window-desktop::before { content: map-get($bootstrap-icons-map, "window-desktop"); } +.bi-window-fullscreen::before { content: map-get($bootstrap-icons-map, "window-fullscreen"); } +.bi-window-plus::before { content: map-get($bootstrap-icons-map, "window-plus"); } +.bi-window-split::before { content: map-get($bootstrap-icons-map, "window-split"); } +.bi-window-stack::before { content: map-get($bootstrap-icons-map, "window-stack"); } +.bi-window-x::before { content: map-get($bootstrap-icons-map, "window-x"); } +.bi-xbox::before { content: map-get($bootstrap-icons-map, "xbox"); } +.bi-ethernet::before { content: map-get($bootstrap-icons-map, "ethernet"); } +.bi-hdmi-fill::before { content: map-get($bootstrap-icons-map, "hdmi-fill"); } +.bi-hdmi::before { content: map-get($bootstrap-icons-map, "hdmi"); } +.bi-usb-c-fill::before { content: map-get($bootstrap-icons-map, "usb-c-fill"); } +.bi-usb-c::before { content: map-get($bootstrap-icons-map, "usb-c"); } +.bi-usb-fill::before { content: map-get($bootstrap-icons-map, "usb-fill"); } +.bi-usb-plug-fill::before { content: map-get($bootstrap-icons-map, "usb-plug-fill"); } +.bi-usb-plug::before { content: map-get($bootstrap-icons-map, "usb-plug"); } +.bi-usb-symbol::before { content: map-get($bootstrap-icons-map, "usb-symbol"); } +.bi-usb::before { content: map-get($bootstrap-icons-map, "usb"); } +.bi-boombox-fill::before { content: map-get($bootstrap-icons-map, "boombox-fill"); } +.bi-displayport-1::before { content: map-get($bootstrap-icons-map, "displayport-1"); } +.bi-displayport::before { content: map-get($bootstrap-icons-map, "displayport"); } +.bi-gpu-card::before { content: map-get($bootstrap-icons-map, "gpu-card"); } +.bi-memory::before { content: map-get($bootstrap-icons-map, "memory"); } +.bi-modem-fill::before { content: map-get($bootstrap-icons-map, "modem-fill"); } +.bi-modem::before { content: map-get($bootstrap-icons-map, "modem"); } +.bi-motherboard-fill::before { content: map-get($bootstrap-icons-map, "motherboard-fill"); } +.bi-motherboard::before { content: map-get($bootstrap-icons-map, "motherboard"); } +.bi-optical-audio-fill::before { content: map-get($bootstrap-icons-map, "optical-audio-fill"); } +.bi-optical-audio::before { content: map-get($bootstrap-icons-map, "optical-audio"); } +.bi-pci-card::before { content: map-get($bootstrap-icons-map, "pci-card"); } +.bi-router-fill::before { content: map-get($bootstrap-icons-map, "router-fill"); } +.bi-router::before { content: map-get($bootstrap-icons-map, "router"); } +.bi-ssd-fill::before { content: map-get($bootstrap-icons-map, "ssd-fill"); } +.bi-ssd::before { content: map-get($bootstrap-icons-map, "ssd"); } +.bi-thunderbolt-fill::before { content: map-get($bootstrap-icons-map, "thunderbolt-fill"); } +.bi-thunderbolt::before { content: map-get($bootstrap-icons-map, "thunderbolt"); } +.bi-usb-drive-fill::before { content: map-get($bootstrap-icons-map, "usb-drive-fill"); } +.bi-usb-drive::before { content: map-get($bootstrap-icons-map, "usb-drive"); } +.bi-usb-micro-fill::before { content: map-get($bootstrap-icons-map, "usb-micro-fill"); } +.bi-usb-micro::before { content: map-get($bootstrap-icons-map, "usb-micro"); } +.bi-usb-mini-fill::before { content: map-get($bootstrap-icons-map, "usb-mini-fill"); } +.bi-usb-mini::before { content: map-get($bootstrap-icons-map, "usb-mini"); } +.bi-cloud-haze2::before { content: map-get($bootstrap-icons-map, "cloud-haze2"); } +.bi-device-hdd-fill::before { content: map-get($bootstrap-icons-map, "device-hdd-fill"); } +.bi-device-hdd::before { content: map-get($bootstrap-icons-map, "device-hdd"); } +.bi-device-ssd-fill::before { content: map-get($bootstrap-icons-map, "device-ssd-fill"); } +.bi-device-ssd::before { content: map-get($bootstrap-icons-map, "device-ssd"); } +.bi-displayport-fill::before { content: map-get($bootstrap-icons-map, "displayport-fill"); } +.bi-mortarboard-fill::before { content: map-get($bootstrap-icons-map, "mortarboard-fill"); } +.bi-mortarboard::before { content: map-get($bootstrap-icons-map, "mortarboard"); } +.bi-terminal-x::before { content: map-get($bootstrap-icons-map, "terminal-x"); } +.bi-arrow-through-heart-fill::before { content: map-get($bootstrap-icons-map, "arrow-through-heart-fill"); } +.bi-arrow-through-heart::before { content: map-get($bootstrap-icons-map, "arrow-through-heart"); } +.bi-badge-sd-fill::before { content: map-get($bootstrap-icons-map, "badge-sd-fill"); } +.bi-badge-sd::before { content: map-get($bootstrap-icons-map, "badge-sd"); } +.bi-bag-heart-fill::before { content: map-get($bootstrap-icons-map, "bag-heart-fill"); } +.bi-bag-heart::before { content: map-get($bootstrap-icons-map, "bag-heart"); } +.bi-balloon-fill::before { content: map-get($bootstrap-icons-map, "balloon-fill"); } +.bi-balloon-heart-fill::before { content: map-get($bootstrap-icons-map, "balloon-heart-fill"); } +.bi-balloon-heart::before { content: map-get($bootstrap-icons-map, "balloon-heart"); } +.bi-balloon::before { content: map-get($bootstrap-icons-map, "balloon"); } +.bi-box2-fill::before { content: map-get($bootstrap-icons-map, "box2-fill"); } +.bi-box2-heart-fill::before { content: map-get($bootstrap-icons-map, "box2-heart-fill"); } +.bi-box2-heart::before { content: map-get($bootstrap-icons-map, "box2-heart"); } +.bi-box2::before { content: map-get($bootstrap-icons-map, "box2"); } +.bi-braces-asterisk::before { content: map-get($bootstrap-icons-map, "braces-asterisk"); } +.bi-calendar-heart-fill::before { content: map-get($bootstrap-icons-map, "calendar-heart-fill"); } +.bi-calendar-heart::before { content: map-get($bootstrap-icons-map, "calendar-heart"); } +.bi-calendar2-heart-fill::before { content: map-get($bootstrap-icons-map, "calendar2-heart-fill"); } +.bi-calendar2-heart::before { content: map-get($bootstrap-icons-map, "calendar2-heart"); } +.bi-chat-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-heart-fill"); } +.bi-chat-heart::before { content: map-get($bootstrap-icons-map, "chat-heart"); } +.bi-chat-left-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-left-heart-fill"); } +.bi-chat-left-heart::before { content: map-get($bootstrap-icons-map, "chat-left-heart"); } +.bi-chat-right-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-right-heart-fill"); } +.bi-chat-right-heart::before { content: map-get($bootstrap-icons-map, "chat-right-heart"); } +.bi-chat-square-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-square-heart-fill"); } +.bi-chat-square-heart::before { content: map-get($bootstrap-icons-map, "chat-square-heart"); } +.bi-clipboard-check-fill::before { content: map-get($bootstrap-icons-map, "clipboard-check-fill"); } +.bi-clipboard-data-fill::before { content: map-get($bootstrap-icons-map, "clipboard-data-fill"); } +.bi-clipboard-fill::before { content: map-get($bootstrap-icons-map, "clipboard-fill"); } +.bi-clipboard-heart-fill::before { content: map-get($bootstrap-icons-map, "clipboard-heart-fill"); } +.bi-clipboard-heart::before { content: map-get($bootstrap-icons-map, "clipboard-heart"); } +.bi-clipboard-minus-fill::before { content: map-get($bootstrap-icons-map, "clipboard-minus-fill"); } +.bi-clipboard-plus-fill::before { content: map-get($bootstrap-icons-map, "clipboard-plus-fill"); } +.bi-clipboard-pulse::before { content: map-get($bootstrap-icons-map, "clipboard-pulse"); } +.bi-clipboard-x-fill::before { content: map-get($bootstrap-icons-map, "clipboard-x-fill"); } +.bi-clipboard2-check-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-check-fill"); } +.bi-clipboard2-check::before { content: map-get($bootstrap-icons-map, "clipboard2-check"); } +.bi-clipboard2-data-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-data-fill"); } +.bi-clipboard2-data::before { content: map-get($bootstrap-icons-map, "clipboard2-data"); } +.bi-clipboard2-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-fill"); } +.bi-clipboard2-heart-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-heart-fill"); } +.bi-clipboard2-heart::before { content: map-get($bootstrap-icons-map, "clipboard2-heart"); } +.bi-clipboard2-minus-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-minus-fill"); } +.bi-clipboard2-minus::before { content: map-get($bootstrap-icons-map, "clipboard2-minus"); } +.bi-clipboard2-plus-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-plus-fill"); } +.bi-clipboard2-plus::before { content: map-get($bootstrap-icons-map, "clipboard2-plus"); } +.bi-clipboard2-pulse-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-pulse-fill"); } +.bi-clipboard2-pulse::before { content: map-get($bootstrap-icons-map, "clipboard2-pulse"); } +.bi-clipboard2-x-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-x-fill"); } +.bi-clipboard2-x::before { content: map-get($bootstrap-icons-map, "clipboard2-x"); } +.bi-clipboard2::before { content: map-get($bootstrap-icons-map, "clipboard2"); } +.bi-emoji-kiss-fill::before { content: map-get($bootstrap-icons-map, "emoji-kiss-fill"); } +.bi-emoji-kiss::before { content: map-get($bootstrap-icons-map, "emoji-kiss"); } +.bi-envelope-heart-fill::before { content: map-get($bootstrap-icons-map, "envelope-heart-fill"); } +.bi-envelope-heart::before { content: map-get($bootstrap-icons-map, "envelope-heart"); } +.bi-envelope-open-heart-fill::before { content: map-get($bootstrap-icons-map, "envelope-open-heart-fill"); } +.bi-envelope-open-heart::before { content: map-get($bootstrap-icons-map, "envelope-open-heart"); } +.bi-envelope-paper-fill::before { content: map-get($bootstrap-icons-map, "envelope-paper-fill"); } +.bi-envelope-paper-heart-fill::before { content: map-get($bootstrap-icons-map, "envelope-paper-heart-fill"); } +.bi-envelope-paper-heart::before { content: map-get($bootstrap-icons-map, "envelope-paper-heart"); } +.bi-envelope-paper::before { content: map-get($bootstrap-icons-map, "envelope-paper"); } +.bi-filetype-aac::before { content: map-get($bootstrap-icons-map, "filetype-aac"); } +.bi-filetype-ai::before { content: map-get($bootstrap-icons-map, "filetype-ai"); } +.bi-filetype-bmp::before { content: map-get($bootstrap-icons-map, "filetype-bmp"); } +.bi-filetype-cs::before { content: map-get($bootstrap-icons-map, "filetype-cs"); } +.bi-filetype-css::before { content: map-get($bootstrap-icons-map, "filetype-css"); } +.bi-filetype-csv::before { content: map-get($bootstrap-icons-map, "filetype-csv"); } +.bi-filetype-doc::before { content: map-get($bootstrap-icons-map, "filetype-doc"); } +.bi-filetype-docx::before { content: map-get($bootstrap-icons-map, "filetype-docx"); } +.bi-filetype-exe::before { content: map-get($bootstrap-icons-map, "filetype-exe"); } +.bi-filetype-gif::before { content: map-get($bootstrap-icons-map, "filetype-gif"); } +.bi-filetype-heic::before { content: map-get($bootstrap-icons-map, "filetype-heic"); } +.bi-filetype-html::before { content: map-get($bootstrap-icons-map, "filetype-html"); } +.bi-filetype-java::before { content: map-get($bootstrap-icons-map, "filetype-java"); } +.bi-filetype-jpg::before { content: map-get($bootstrap-icons-map, "filetype-jpg"); } +.bi-filetype-js::before { content: map-get($bootstrap-icons-map, "filetype-js"); } +.bi-filetype-jsx::before { content: map-get($bootstrap-icons-map, "filetype-jsx"); } +.bi-filetype-key::before { content: map-get($bootstrap-icons-map, "filetype-key"); } +.bi-filetype-m4p::before { content: map-get($bootstrap-icons-map, "filetype-m4p"); } +.bi-filetype-md::before { content: map-get($bootstrap-icons-map, "filetype-md"); } +.bi-filetype-mdx::before { content: map-get($bootstrap-icons-map, "filetype-mdx"); } +.bi-filetype-mov::before { content: map-get($bootstrap-icons-map, "filetype-mov"); } +.bi-filetype-mp3::before { content: map-get($bootstrap-icons-map, "filetype-mp3"); } +.bi-filetype-mp4::before { content: map-get($bootstrap-icons-map, "filetype-mp4"); } +.bi-filetype-otf::before { content: map-get($bootstrap-icons-map, "filetype-otf"); } +.bi-filetype-pdf::before { content: map-get($bootstrap-icons-map, "filetype-pdf"); } +.bi-filetype-php::before { content: map-get($bootstrap-icons-map, "filetype-php"); } +.bi-filetype-png::before { content: map-get($bootstrap-icons-map, "filetype-png"); } +.bi-filetype-ppt-1::before { content: map-get($bootstrap-icons-map, "filetype-ppt-1"); } +.bi-filetype-ppt::before { content: map-get($bootstrap-icons-map, "filetype-ppt"); } +.bi-filetype-psd::before { content: map-get($bootstrap-icons-map, "filetype-psd"); } +.bi-filetype-py::before { content: map-get($bootstrap-icons-map, "filetype-py"); } +.bi-filetype-raw::before { content: map-get($bootstrap-icons-map, "filetype-raw"); } +.bi-filetype-rb::before { content: map-get($bootstrap-icons-map, "filetype-rb"); } +.bi-filetype-sass::before { content: map-get($bootstrap-icons-map, "filetype-sass"); } +.bi-filetype-scss::before { content: map-get($bootstrap-icons-map, "filetype-scss"); } +.bi-filetype-sh::before { content: map-get($bootstrap-icons-map, "filetype-sh"); } +.bi-filetype-svg::before { content: map-get($bootstrap-icons-map, "filetype-svg"); } +.bi-filetype-tiff::before { content: map-get($bootstrap-icons-map, "filetype-tiff"); } +.bi-filetype-tsx::before { content: map-get($bootstrap-icons-map, "filetype-tsx"); } +.bi-filetype-ttf::before { content: map-get($bootstrap-icons-map, "filetype-ttf"); } +.bi-filetype-txt::before { content: map-get($bootstrap-icons-map, "filetype-txt"); } +.bi-filetype-wav::before { content: map-get($bootstrap-icons-map, "filetype-wav"); } +.bi-filetype-woff::before { content: map-get($bootstrap-icons-map, "filetype-woff"); } +.bi-filetype-xls-1::before { content: map-get($bootstrap-icons-map, "filetype-xls-1"); } +.bi-filetype-xls::before { content: map-get($bootstrap-icons-map, "filetype-xls"); } +.bi-filetype-xml::before { content: map-get($bootstrap-icons-map, "filetype-xml"); } +.bi-filetype-yml::before { content: map-get($bootstrap-icons-map, "filetype-yml"); } +.bi-heart-arrow::before { content: map-get($bootstrap-icons-map, "heart-arrow"); } +.bi-heart-pulse-fill::before { content: map-get($bootstrap-icons-map, "heart-pulse-fill"); } +.bi-heart-pulse::before { content: map-get($bootstrap-icons-map, "heart-pulse"); } +.bi-heartbreak-fill::before { content: map-get($bootstrap-icons-map, "heartbreak-fill"); } +.bi-heartbreak::before { content: map-get($bootstrap-icons-map, "heartbreak"); } +.bi-hearts::before { content: map-get($bootstrap-icons-map, "hearts"); } +.bi-hospital-fill::before { content: map-get($bootstrap-icons-map, "hospital-fill"); } +.bi-hospital::before { content: map-get($bootstrap-icons-map, "hospital"); } +.bi-house-heart-fill::before { content: map-get($bootstrap-icons-map, "house-heart-fill"); } +.bi-house-heart::before { content: map-get($bootstrap-icons-map, "house-heart"); } +.bi-incognito::before { content: map-get($bootstrap-icons-map, "incognito"); } +.bi-magnet-fill::before { content: map-get($bootstrap-icons-map, "magnet-fill"); } +.bi-magnet::before { content: map-get($bootstrap-icons-map, "magnet"); } +.bi-person-heart::before { content: map-get($bootstrap-icons-map, "person-heart"); } +.bi-person-hearts::before { content: map-get($bootstrap-icons-map, "person-hearts"); } +.bi-phone-flip::before { content: map-get($bootstrap-icons-map, "phone-flip"); } +.bi-plugin::before { content: map-get($bootstrap-icons-map, "plugin"); } +.bi-postage-fill::before { content: map-get($bootstrap-icons-map, "postage-fill"); } +.bi-postage-heart-fill::before { content: map-get($bootstrap-icons-map, "postage-heart-fill"); } +.bi-postage-heart::before { content: map-get($bootstrap-icons-map, "postage-heart"); } +.bi-postage::before { content: map-get($bootstrap-icons-map, "postage"); } +.bi-postcard-fill::before { content: map-get($bootstrap-icons-map, "postcard-fill"); } +.bi-postcard-heart-fill::before { content: map-get($bootstrap-icons-map, "postcard-heart-fill"); } +.bi-postcard-heart::before { content: map-get($bootstrap-icons-map, "postcard-heart"); } +.bi-postcard::before { content: map-get($bootstrap-icons-map, "postcard"); } +.bi-search-heart-fill::before { content: map-get($bootstrap-icons-map, "search-heart-fill"); } +.bi-search-heart::before { content: map-get($bootstrap-icons-map, "search-heart"); } +.bi-sliders2-vertical::before { content: map-get($bootstrap-icons-map, "sliders2-vertical"); } +.bi-sliders2::before { content: map-get($bootstrap-icons-map, "sliders2"); } +.bi-trash3-fill::before { content: map-get($bootstrap-icons-map, "trash3-fill"); } +.bi-trash3::before { content: map-get($bootstrap-icons-map, "trash3"); } +.bi-valentine::before { content: map-get($bootstrap-icons-map, "valentine"); } +.bi-valentine2::before { content: map-get($bootstrap-icons-map, "valentine2"); } +.bi-wrench-adjustable-circle-fill::before { content: map-get($bootstrap-icons-map, "wrench-adjustable-circle-fill"); } +.bi-wrench-adjustable-circle::before { content: map-get($bootstrap-icons-map, "wrench-adjustable-circle"); } +.bi-wrench-adjustable::before { content: map-get($bootstrap-icons-map, "wrench-adjustable"); } +.bi-filetype-json::before { content: map-get($bootstrap-icons-map, "filetype-json"); } +.bi-filetype-pptx::before { content: map-get($bootstrap-icons-map, "filetype-pptx"); } +.bi-filetype-xlsx::before { content: map-get($bootstrap-icons-map, "filetype-xlsx"); } +.bi-1-circle-1::before { content: map-get($bootstrap-icons-map, "1-circle-1"); } +.bi-1-circle-fill-1::before { content: map-get($bootstrap-icons-map, "1-circle-fill-1"); } +.bi-1-circle-fill::before { content: map-get($bootstrap-icons-map, "1-circle-fill"); } +.bi-1-circle::before { content: map-get($bootstrap-icons-map, "1-circle"); } +.bi-1-square-fill::before { content: map-get($bootstrap-icons-map, "1-square-fill"); } +.bi-1-square::before { content: map-get($bootstrap-icons-map, "1-square"); } +.bi-2-circle-1::before { content: map-get($bootstrap-icons-map, "2-circle-1"); } +.bi-2-circle-fill-1::before { content: map-get($bootstrap-icons-map, "2-circle-fill-1"); } +.bi-2-circle-fill::before { content: map-get($bootstrap-icons-map, "2-circle-fill"); } +.bi-2-circle::before { content: map-get($bootstrap-icons-map, "2-circle"); } +.bi-2-square-fill::before { content: map-get($bootstrap-icons-map, "2-square-fill"); } +.bi-2-square::before { content: map-get($bootstrap-icons-map, "2-square"); } +.bi-3-circle-1::before { content: map-get($bootstrap-icons-map, "3-circle-1"); } +.bi-3-circle-fill-1::before { content: map-get($bootstrap-icons-map, "3-circle-fill-1"); } +.bi-3-circle-fill::before { content: map-get($bootstrap-icons-map, "3-circle-fill"); } +.bi-3-circle::before { content: map-get($bootstrap-icons-map, "3-circle"); } +.bi-3-square-fill::before { content: map-get($bootstrap-icons-map, "3-square-fill"); } +.bi-3-square::before { content: map-get($bootstrap-icons-map, "3-square"); } +.bi-4-circle-1::before { content: map-get($bootstrap-icons-map, "4-circle-1"); } +.bi-4-circle-fill-1::before { content: map-get($bootstrap-icons-map, "4-circle-fill-1"); } +.bi-4-circle-fill::before { content: map-get($bootstrap-icons-map, "4-circle-fill"); } +.bi-4-circle::before { content: map-get($bootstrap-icons-map, "4-circle"); } +.bi-4-square-fill::before { content: map-get($bootstrap-icons-map, "4-square-fill"); } +.bi-4-square::before { content: map-get($bootstrap-icons-map, "4-square"); } +.bi-5-circle-1::before { content: map-get($bootstrap-icons-map, "5-circle-1"); } +.bi-5-circle-fill-1::before { content: map-get($bootstrap-icons-map, "5-circle-fill-1"); } +.bi-5-circle-fill::before { content: map-get($bootstrap-icons-map, "5-circle-fill"); } +.bi-5-circle::before { content: map-get($bootstrap-icons-map, "5-circle"); } +.bi-5-square-fill::before { content: map-get($bootstrap-icons-map, "5-square-fill"); } +.bi-5-square::before { content: map-get($bootstrap-icons-map, "5-square"); } +.bi-6-circle-1::before { content: map-get($bootstrap-icons-map, "6-circle-1"); } +.bi-6-circle-fill-1::before { content: map-get($bootstrap-icons-map, "6-circle-fill-1"); } +.bi-6-circle-fill::before { content: map-get($bootstrap-icons-map, "6-circle-fill"); } +.bi-6-circle::before { content: map-get($bootstrap-icons-map, "6-circle"); } +.bi-6-square-fill::before { content: map-get($bootstrap-icons-map, "6-square-fill"); } +.bi-6-square::before { content: map-get($bootstrap-icons-map, "6-square"); } +.bi-7-circle-1::before { content: map-get($bootstrap-icons-map, "7-circle-1"); } +.bi-7-circle-fill-1::before { content: map-get($bootstrap-icons-map, "7-circle-fill-1"); } +.bi-7-circle-fill::before { content: map-get($bootstrap-icons-map, "7-circle-fill"); } +.bi-7-circle::before { content: map-get($bootstrap-icons-map, "7-circle"); } +.bi-7-square-fill::before { content: map-get($bootstrap-icons-map, "7-square-fill"); } +.bi-7-square::before { content: map-get($bootstrap-icons-map, "7-square"); } +.bi-8-circle-1::before { content: map-get($bootstrap-icons-map, "8-circle-1"); } +.bi-8-circle-fill-1::before { content: map-get($bootstrap-icons-map, "8-circle-fill-1"); } +.bi-8-circle-fill::before { content: map-get($bootstrap-icons-map, "8-circle-fill"); } +.bi-8-circle::before { content: map-get($bootstrap-icons-map, "8-circle"); } +.bi-8-square-fill::before { content: map-get($bootstrap-icons-map, "8-square-fill"); } +.bi-8-square::before { content: map-get($bootstrap-icons-map, "8-square"); } +.bi-9-circle-1::before { content: map-get($bootstrap-icons-map, "9-circle-1"); } +.bi-9-circle-fill-1::before { content: map-get($bootstrap-icons-map, "9-circle-fill-1"); } +.bi-9-circle-fill::before { content: map-get($bootstrap-icons-map, "9-circle-fill"); } +.bi-9-circle::before { content: map-get($bootstrap-icons-map, "9-circle"); } +.bi-9-square-fill::before { content: map-get($bootstrap-icons-map, "9-square-fill"); } +.bi-9-square::before { content: map-get($bootstrap-icons-map, "9-square"); } +.bi-airplane-engines-fill::before { content: map-get($bootstrap-icons-map, "airplane-engines-fill"); } +.bi-airplane-engines::before { content: map-get($bootstrap-icons-map, "airplane-engines"); } +.bi-airplane-fill::before { content: map-get($bootstrap-icons-map, "airplane-fill"); } +.bi-airplane::before { content: map-get($bootstrap-icons-map, "airplane"); } +.bi-alexa::before { content: map-get($bootstrap-icons-map, "alexa"); } +.bi-alipay::before { content: map-get($bootstrap-icons-map, "alipay"); } +.bi-android::before { content: map-get($bootstrap-icons-map, "android"); } +.bi-android2::before { content: map-get($bootstrap-icons-map, "android2"); } +.bi-box-fill::before { content: map-get($bootstrap-icons-map, "box-fill"); } +.bi-box-seam-fill::before { content: map-get($bootstrap-icons-map, "box-seam-fill"); } +.bi-browser-chrome::before { content: map-get($bootstrap-icons-map, "browser-chrome"); } +.bi-browser-edge::before { content: map-get($bootstrap-icons-map, "browser-edge"); } +.bi-browser-firefox::before { content: map-get($bootstrap-icons-map, "browser-firefox"); } +.bi-browser-safari::before { content: map-get($bootstrap-icons-map, "browser-safari"); } +.bi-c-circle-1::before { content: map-get($bootstrap-icons-map, "c-circle-1"); } +.bi-c-circle-fill-1::before { content: map-get($bootstrap-icons-map, "c-circle-fill-1"); } +.bi-c-circle-fill::before { content: map-get($bootstrap-icons-map, "c-circle-fill"); } +.bi-c-circle::before { content: map-get($bootstrap-icons-map, "c-circle"); } +.bi-c-square-fill::before { content: map-get($bootstrap-icons-map, "c-square-fill"); } +.bi-c-square::before { content: map-get($bootstrap-icons-map, "c-square"); } +.bi-capsule-pill::before { content: map-get($bootstrap-icons-map, "capsule-pill"); } +.bi-capsule::before { content: map-get($bootstrap-icons-map, "capsule"); } +.bi-car-front-fill::before { content: map-get($bootstrap-icons-map, "car-front-fill"); } +.bi-car-front::before { content: map-get($bootstrap-icons-map, "car-front"); } +.bi-cassette-fill::before { content: map-get($bootstrap-icons-map, "cassette-fill"); } +.bi-cassette::before { content: map-get($bootstrap-icons-map, "cassette"); } +.bi-cc-circle-1::before { content: map-get($bootstrap-icons-map, "cc-circle-1"); } +.bi-cc-circle-fill-1::before { content: map-get($bootstrap-icons-map, "cc-circle-fill-1"); } +.bi-cc-circle-fill::before { content: map-get($bootstrap-icons-map, "cc-circle-fill"); } +.bi-cc-circle::before { content: map-get($bootstrap-icons-map, "cc-circle"); } +.bi-cc-square-fill::before { content: map-get($bootstrap-icons-map, "cc-square-fill"); } +.bi-cc-square::before { content: map-get($bootstrap-icons-map, "cc-square"); } +.bi-cup-hot-fill::before { content: map-get($bootstrap-icons-map, "cup-hot-fill"); } +.bi-cup-hot::before { content: map-get($bootstrap-icons-map, "cup-hot"); } +.bi-currency-rupee::before { content: map-get($bootstrap-icons-map, "currency-rupee"); } +.bi-dropbox::before { content: map-get($bootstrap-icons-map, "dropbox"); } +.bi-escape::before { content: map-get($bootstrap-icons-map, "escape"); } +.bi-fast-forward-btn-fill::before { content: map-get($bootstrap-icons-map, "fast-forward-btn-fill"); } +.bi-fast-forward-btn::before { content: map-get($bootstrap-icons-map, "fast-forward-btn"); } +.bi-fast-forward-circle-fill::before { content: map-get($bootstrap-icons-map, "fast-forward-circle-fill"); } +.bi-fast-forward-circle::before { content: map-get($bootstrap-icons-map, "fast-forward-circle"); } +.bi-fast-forward-fill::before { content: map-get($bootstrap-icons-map, "fast-forward-fill"); } +.bi-fast-forward::before { content: map-get($bootstrap-icons-map, "fast-forward"); } +.bi-filetype-sql::before { content: map-get($bootstrap-icons-map, "filetype-sql"); } +.bi-fire::before { content: map-get($bootstrap-icons-map, "fire"); } +.bi-google-play::before { content: map-get($bootstrap-icons-map, "google-play"); } +.bi-h-circle-1::before { content: map-get($bootstrap-icons-map, "h-circle-1"); } +.bi-h-circle-fill-1::before { content: map-get($bootstrap-icons-map, "h-circle-fill-1"); } +.bi-h-circle-fill::before { content: map-get($bootstrap-icons-map, "h-circle-fill"); } +.bi-h-circle::before { content: map-get($bootstrap-icons-map, "h-circle"); } +.bi-h-square-fill::before { content: map-get($bootstrap-icons-map, "h-square-fill"); } +.bi-h-square::before { content: map-get($bootstrap-icons-map, "h-square"); } +.bi-indent::before { content: map-get($bootstrap-icons-map, "indent"); } +.bi-lungs-fill::before { content: map-get($bootstrap-icons-map, "lungs-fill"); } +.bi-lungs::before { content: map-get($bootstrap-icons-map, "lungs"); } +.bi-microsoft-teams::before { content: map-get($bootstrap-icons-map, "microsoft-teams"); } +.bi-p-circle-1::before { content: map-get($bootstrap-icons-map, "p-circle-1"); } +.bi-p-circle-fill-1::before { content: map-get($bootstrap-icons-map, "p-circle-fill-1"); } +.bi-p-circle-fill::before { content: map-get($bootstrap-icons-map, "p-circle-fill"); } +.bi-p-circle::before { content: map-get($bootstrap-icons-map, "p-circle"); } +.bi-p-square-fill::before { content: map-get($bootstrap-icons-map, "p-square-fill"); } +.bi-p-square::before { content: map-get($bootstrap-icons-map, "p-square"); } +.bi-pass-fill::before { content: map-get($bootstrap-icons-map, "pass-fill"); } +.bi-pass::before { content: map-get($bootstrap-icons-map, "pass"); } +.bi-prescription::before { content: map-get($bootstrap-icons-map, "prescription"); } +.bi-prescription2::before { content: map-get($bootstrap-icons-map, "prescription2"); } +.bi-r-circle-1::before { content: map-get($bootstrap-icons-map, "r-circle-1"); } +.bi-r-circle-fill-1::before { content: map-get($bootstrap-icons-map, "r-circle-fill-1"); } +.bi-r-circle-fill::before { content: map-get($bootstrap-icons-map, "r-circle-fill"); } +.bi-r-circle::before { content: map-get($bootstrap-icons-map, "r-circle"); } +.bi-r-square-fill::before { content: map-get($bootstrap-icons-map, "r-square-fill"); } +.bi-r-square::before { content: map-get($bootstrap-icons-map, "r-square"); } +.bi-repeat-1::before { content: map-get($bootstrap-icons-map, "repeat-1"); } +.bi-repeat::before { content: map-get($bootstrap-icons-map, "repeat"); } +.bi-rewind-btn-fill::before { content: map-get($bootstrap-icons-map, "rewind-btn-fill"); } +.bi-rewind-btn::before { content: map-get($bootstrap-icons-map, "rewind-btn"); } +.bi-rewind-circle-fill::before { content: map-get($bootstrap-icons-map, "rewind-circle-fill"); } +.bi-rewind-circle::before { content: map-get($bootstrap-icons-map, "rewind-circle"); } +.bi-rewind-fill::before { content: map-get($bootstrap-icons-map, "rewind-fill"); } +.bi-rewind::before { content: map-get($bootstrap-icons-map, "rewind"); } +.bi-train-freight-front-fill::before { content: map-get($bootstrap-icons-map, "train-freight-front-fill"); } +.bi-train-freight-front::before { content: map-get($bootstrap-icons-map, "train-freight-front"); } +.bi-train-front-fill::before { content: map-get($bootstrap-icons-map, "train-front-fill"); } +.bi-train-front::before { content: map-get($bootstrap-icons-map, "train-front"); } +.bi-train-lightrail-front-fill::before { content: map-get($bootstrap-icons-map, "train-lightrail-front-fill"); } +.bi-train-lightrail-front::before { content: map-get($bootstrap-icons-map, "train-lightrail-front"); } +.bi-truck-front-fill::before { content: map-get($bootstrap-icons-map, "truck-front-fill"); } +.bi-truck-front::before { content: map-get($bootstrap-icons-map, "truck-front"); } +.bi-ubuntu::before { content: map-get($bootstrap-icons-map, "ubuntu"); } +.bi-unindent::before { content: map-get($bootstrap-icons-map, "unindent"); } +.bi-unity::before { content: map-get($bootstrap-icons-map, "unity"); } +.bi-universal-access-circle::before { content: map-get($bootstrap-icons-map, "universal-access-circle"); } +.bi-universal-access::before { content: map-get($bootstrap-icons-map, "universal-access"); } +.bi-virus::before { content: map-get($bootstrap-icons-map, "virus"); } +.bi-virus2::before { content: map-get($bootstrap-icons-map, "virus2"); } +.bi-wechat::before { content: map-get($bootstrap-icons-map, "wechat"); } +.bi-yelp::before { content: map-get($bootstrap-icons-map, "yelp"); } +.bi-sign-stop-fill::before { content: map-get($bootstrap-icons-map, "sign-stop-fill"); } +.bi-sign-stop-lights-fill::before { content: map-get($bootstrap-icons-map, "sign-stop-lights-fill"); } +.bi-sign-stop-lights::before { content: map-get($bootstrap-icons-map, "sign-stop-lights"); } +.bi-sign-stop::before { content: map-get($bootstrap-icons-map, "sign-stop"); } +.bi-sign-turn-left-fill::before { content: map-get($bootstrap-icons-map, "sign-turn-left-fill"); } +.bi-sign-turn-left::before { content: map-get($bootstrap-icons-map, "sign-turn-left"); } +.bi-sign-turn-right-fill::before { content: map-get($bootstrap-icons-map, "sign-turn-right-fill"); } +.bi-sign-turn-right::before { content: map-get($bootstrap-icons-map, "sign-turn-right"); } +.bi-sign-turn-slight-left-fill::before { content: map-get($bootstrap-icons-map, "sign-turn-slight-left-fill"); } +.bi-sign-turn-slight-left::before { content: map-get($bootstrap-icons-map, "sign-turn-slight-left"); } +.bi-sign-turn-slight-right-fill::before { content: map-get($bootstrap-icons-map, "sign-turn-slight-right-fill"); } +.bi-sign-turn-slight-right::before { content: map-get($bootstrap-icons-map, "sign-turn-slight-right"); } +.bi-sign-yield-fill::before { content: map-get($bootstrap-icons-map, "sign-yield-fill"); } +.bi-sign-yield::before { content: map-get($bootstrap-icons-map, "sign-yield"); } +.bi-ev-station-fill::before { content: map-get($bootstrap-icons-map, "ev-station-fill"); } +.bi-ev-station::before { content: map-get($bootstrap-icons-map, "ev-station"); } +.bi-fuel-pump-diesel-fill::before { content: map-get($bootstrap-icons-map, "fuel-pump-diesel-fill"); } +.bi-fuel-pump-diesel::before { content: map-get($bootstrap-icons-map, "fuel-pump-diesel"); } +.bi-fuel-pump-fill::before { content: map-get($bootstrap-icons-map, "fuel-pump-fill"); } +.bi-fuel-pump::before { content: map-get($bootstrap-icons-map, "fuel-pump"); } diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/font/fonts/bootstrap-icons.woff b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/fonts/bootstrap-icons.woff new file mode 100644 index 000000000..cf0a6d0fb Binary files /dev/null and b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/fonts/bootstrap-icons.woff differ diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/font/fonts/bootstrap-icons.woff2 b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/fonts/bootstrap-icons.woff2 new file mode 100644 index 000000000..ecc8f4c5d Binary files /dev/null and b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/fonts/bootstrap-icons.woff2 differ diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/font/index.html b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/index.html new file mode 100644 index 000000000..1dd4cb1ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/font/index.html @@ -0,0 +1,7291 @@ + + + + + bootstrap-icons + + + + + + + + +

bootstrap-icons

+ +
+
+ +
123
+
+
+ +
1-circle-fill
+
+
+ +
1-circle
+
+
+ +
1-square-fill
+
+
+ +
1-square
+
+
+ +
2-circle-fill
+
+
+ +
2-circle
+
+
+ +
2-square-fill
+
+
+ +
2-square
+
+
+ +
3-circle-fill
+
+
+ +
3-circle
+
+
+ +
3-square-fill
+
+
+ +
3-square
+
+
+ +
4-circle-fill
+
+
+ +
4-circle
+
+
+ +
4-square-fill
+
+
+ +
4-square
+
+
+ +
5-circle-fill
+
+
+ +
5-circle
+
+
+ +
5-square-fill
+
+
+ +
5-square
+
+
+ +
6-circle-fill
+
+
+ +
6-circle
+
+
+ +
6-square-fill
+
+
+ +
6-square
+
+
+ +
7-circle-fill
+
+
+ +
7-circle
+
+
+ +
7-square-fill
+
+
+ +
7-square
+
+
+ +
8-circle-fill
+
+
+ +
8-circle
+
+
+ +
8-square-fill
+
+
+ +
8-square
+
+
+ +
9-circle-fill
+
+
+ +
9-circle
+
+
+ +
9-square-fill
+
+
+ +
9-square
+
+
+ +
activity
+
+
+ +
airplane-engines-fill
+
+
+ +
airplane-engines
+
+
+ +
airplane-fill
+
+
+ +
airplane
+
+
+ +
alarm-fill
+
+
+ +
alarm
+
+
+ +
alexa
+
+
+ +
align-bottom
+
+
+ +
align-center
+
+
+ +
align-end
+
+
+ +
align-middle
+
+
+ +
align-start
+
+
+ +
align-top
+
+
+ +
alipay
+
+
+ +
alt
+
+
+ +
android
+
+
+ +
android2
+
+
+ +
app-indicator
+
+
+ +
app
+
+
+ +
apple
+
+
+ +
archive-fill
+
+
+ +
archive
+
+
+ +
arrow-90deg-down
+
+
+ +
arrow-90deg-left
+
+
+ +
arrow-90deg-right
+
+
+ +
arrow-90deg-up
+
+
+ +
arrow-bar-down
+
+
+ +
arrow-bar-left
+
+
+ +
arrow-bar-right
+
+
+ +
arrow-bar-up
+
+
+ +
arrow-clockwise
+
+
+ +
arrow-counterclockwise
+
+
+ +
arrow-down-circle-fill
+
+
+ +
arrow-down-circle
+
+
+ +
arrow-down-left-circle-fill
+
+
+ +
arrow-down-left-circle
+
+
+ +
arrow-down-left-square-fill
+
+
+ +
arrow-down-left-square
+
+
+ +
arrow-down-left
+
+
+ +
arrow-down-right-circle-fill
+
+
+ +
arrow-down-right-circle
+
+
+ +
arrow-down-right-square-fill
+
+
+ +
arrow-down-right-square
+
+
+ +
arrow-down-right
+
+
+ +
arrow-down-short
+
+
+ +
arrow-down-square-fill
+
+
+ +
arrow-down-square
+
+
+ +
arrow-down-up
+
+
+ +
arrow-down
+
+
+ +
arrow-left-circle-fill
+
+
+ +
arrow-left-circle
+
+
+ +
arrow-left-right
+
+
+ +
arrow-left-short
+
+
+ +
arrow-left-square-fill
+
+
+ +
arrow-left-square
+
+
+ +
arrow-left
+
+
+ +
arrow-repeat
+
+
+ +
arrow-return-left
+
+
+ +
arrow-return-right
+
+
+ +
arrow-right-circle-fill
+
+
+ +
arrow-right-circle
+
+
+ +
arrow-right-short
+
+
+ +
arrow-right-square-fill
+
+
+ +
arrow-right-square
+
+
+ +
arrow-right
+
+
+ +
arrow-through-heart-fill
+
+
+ +
arrow-through-heart
+
+
+ +
arrow-up-circle-fill
+
+
+ +
arrow-up-circle
+
+
+ +
arrow-up-left-circle-fill
+
+
+ +
arrow-up-left-circle
+
+
+ +
arrow-up-left-square-fill
+
+
+ +
arrow-up-left-square
+
+
+ +
arrow-up-left
+
+
+ +
arrow-up-right-circle-fill
+
+
+ +
arrow-up-right-circle
+
+
+ +
arrow-up-right-square-fill
+
+
+ +
arrow-up-right-square
+
+
+ +
arrow-up-right
+
+
+ +
arrow-up-short
+
+
+ +
arrow-up-square-fill
+
+
+ +
arrow-up-square
+
+
+ +
arrow-up
+
+
+ +
arrows-angle-contract
+
+
+ +
arrows-angle-expand
+
+
+ +
arrows-collapse
+
+
+ +
arrows-expand
+
+
+ +
arrows-fullscreen
+
+
+ +
arrows-move
+
+
+ +
aspect-ratio-fill
+
+
+ +
aspect-ratio
+
+
+ +
asterisk
+
+
+ +
at
+
+
+ +
award-fill
+
+
+ +
award
+
+
+ +
back
+
+
+ +
backspace-fill
+
+
+ +
backspace-reverse-fill
+
+
+ +
backspace-reverse
+
+
+ +
backspace
+
+
+ +
badge-3d-fill
+
+
+ +
badge-3d
+
+
+ +
badge-4k-fill
+
+
+ +
badge-4k
+
+
+ +
badge-8k-fill
+
+
+ +
badge-8k
+
+
+ +
badge-ad-fill
+
+
+ +
badge-ad
+
+
+ +
badge-ar-fill
+
+
+ +
badge-ar
+
+
+ +
badge-cc-fill
+
+
+ +
badge-cc
+
+
+ +
badge-hd-fill
+
+
+ +
badge-hd
+
+
+ +
badge-sd-fill
+
+
+ +
badge-sd
+
+
+ +
badge-tm-fill
+
+
+ +
badge-tm
+
+
+ +
badge-vo-fill
+
+
+ +
badge-vo
+
+
+ +
badge-vr-fill
+
+
+ +
badge-vr
+
+
+ +
badge-wc-fill
+
+
+ +
badge-wc
+
+
+ +
bag-check-fill
+
+
+ +
bag-check
+
+
+ +
bag-dash-fill
+
+
+ +
bag-dash
+
+
+ +
bag-fill
+
+
+ +
bag-heart-fill
+
+
+ +
bag-heart
+
+
+ +
bag-plus-fill
+
+
+ +
bag-plus
+
+
+ +
bag-x-fill
+
+
+ +
bag-x
+
+
+ +
bag
+
+
+ +
balloon-fill
+
+
+ +
balloon-heart-fill
+
+
+ +
balloon-heart
+
+
+ +
balloon
+
+
+ +
bandaid-fill
+
+
+ +
bandaid
+
+
+ +
bank
+
+
+ +
bank2
+
+
+ +
bar-chart-fill
+
+
+ +
bar-chart-line-fill
+
+
+ +
bar-chart-line
+
+
+ +
bar-chart-steps
+
+
+ +
bar-chart
+
+
+ +
basket-fill
+
+
+ +
basket
+
+
+ +
basket2-fill
+
+
+ +
basket2
+
+
+ +
basket3-fill
+
+
+ +
basket3
+
+
+ +
battery-charging
+
+
+ +
battery-full
+
+
+ +
battery-half
+
+
+ +
battery
+
+
+ +
behance
+
+
+ +
bell-fill
+
+
+ +
bell-slash-fill
+
+
+ +
bell-slash
+
+
+ +
bell
+
+
+ +
bezier
+
+
+ +
bezier2
+
+
+ +
bicycle
+
+
+ +
binoculars-fill
+
+
+ +
binoculars
+
+
+ +
blockquote-left
+
+
+ +
blockquote-right
+
+
+ +
bluetooth
+
+
+ +
body-text
+
+
+ +
book-fill
+
+
+ +
book-half
+
+
+ +
book
+
+
+ +
bookmark-check-fill
+
+
+ +
bookmark-check
+
+
+ +
bookmark-dash-fill
+
+
+ +
bookmark-dash
+
+
+ +
bookmark-fill
+
+
+ +
bookmark-heart-fill
+
+
+ +
bookmark-heart
+
+
+ +
bookmark-plus-fill
+
+
+ +
bookmark-plus
+
+
+ +
bookmark-star-fill
+
+
+ +
bookmark-star
+
+
+ +
bookmark-x-fill
+
+
+ +
bookmark-x
+
+
+ +
bookmark
+
+
+ +
bookmarks-fill
+
+
+ +
bookmarks
+
+
+ +
bookshelf
+
+
+ +
boombox-fill
+
+
+ +
boombox
+
+
+ +
bootstrap-fill
+
+
+ +
bootstrap-reboot
+
+
+ +
bootstrap
+
+
+ +
border-all
+
+
+ +
border-bottom
+
+
+ +
border-center
+
+
+ +
border-inner
+
+
+ +
border-left
+
+
+ +
border-middle
+
+
+ +
border-outer
+
+
+ +
border-right
+
+
+ +
border-style
+
+
+ +
border-top
+
+
+ +
border-width
+
+
+ +
border
+
+
+ +
bounding-box-circles
+
+
+ +
bounding-box
+
+
+ +
box-arrow-down-left
+
+
+ +
box-arrow-down-right
+
+
+ +
box-arrow-down
+
+
+ +
box-arrow-in-down-left
+
+
+ +
box-arrow-in-down-right
+
+
+ +
box-arrow-in-down
+
+
+ +
box-arrow-in-left
+
+
+ +
box-arrow-in-right
+
+
+ +
box-arrow-in-up-left
+
+
+ +
box-arrow-in-up-right
+
+
+ +
box-arrow-in-up
+
+
+ +
box-arrow-left
+
+
+ +
box-arrow-right
+
+
+ +
box-arrow-up-left
+
+
+ +
box-arrow-up-right
+
+
+ +
box-arrow-up
+
+
+ +
box-fill
+
+
+ +
box-seam-fill
+
+
+ +
box-seam
+
+
+ +
box
+
+
+ +
box2-fill
+
+
+ +
box2-heart-fill
+
+
+ +
box2-heart
+
+
+ +
box2
+
+
+ +
boxes
+
+
+ +
braces-asterisk
+
+
+ +
braces
+
+
+ +
bricks
+
+
+ +
briefcase-fill
+
+
+ +
briefcase
+
+
+ +
brightness-alt-high-fill
+
+
+ +
brightness-alt-high
+
+
+ +
brightness-alt-low-fill
+
+
+ +
brightness-alt-low
+
+
+ +
brightness-high-fill
+
+
+ +
brightness-high
+
+
+ +
brightness-low-fill
+
+
+ +
brightness-low
+
+
+ +
broadcast-pin
+
+
+ +
broadcast
+
+
+ +
browser-chrome
+
+
+ +
browser-edge
+
+
+ +
browser-firefox
+
+
+ +
browser-safari
+
+
+ +
brush-fill
+
+
+ +
brush
+
+
+ +
bucket-fill
+
+
+ +
bucket
+
+
+ +
bug-fill
+
+
+ +
bug
+
+
+ +
building
+
+
+ +
bullseye
+
+
+ +
c-circle-fill
+
+
+ +
c-circle
+
+
+ +
c-square-fill
+
+
+ +
c-square
+
+
+ +
calculator-fill
+
+
+ +
calculator
+
+
+ +
calendar-check-fill
+
+
+ +
calendar-check
+
+
+ +
calendar-date-fill
+
+
+ +
calendar-date
+
+
+ +
calendar-day-fill
+
+
+ +
calendar-day
+
+
+ +
calendar-event-fill
+
+
+ +
calendar-event
+
+
+ +
calendar-fill
+
+
+ +
calendar-heart-fill
+
+
+ +
calendar-heart
+
+
+ +
calendar-minus-fill
+
+
+ +
calendar-minus
+
+
+ +
calendar-month-fill
+
+
+ +
calendar-month
+
+
+ +
calendar-plus-fill
+
+
+ +
calendar-plus
+
+
+ +
calendar-range-fill
+
+
+ +
calendar-range
+
+
+ +
calendar-week-fill
+
+
+ +
calendar-week
+
+
+ +
calendar-x-fill
+
+
+ +
calendar-x
+
+
+ +
calendar
+
+
+ +
calendar2-check-fill
+
+
+ +
calendar2-check
+
+
+ +
calendar2-date-fill
+
+
+ +
calendar2-date
+
+
+ +
calendar2-day-fill
+
+
+ +
calendar2-day
+
+
+ +
calendar2-event-fill
+
+
+ +
calendar2-event
+
+
+ +
calendar2-fill
+
+
+ +
calendar2-heart-fill
+
+
+ +
calendar2-heart
+
+
+ +
calendar2-minus-fill
+
+
+ +
calendar2-minus
+
+
+ +
calendar2-month-fill
+
+
+ +
calendar2-month
+
+
+ +
calendar2-plus-fill
+
+
+ +
calendar2-plus
+
+
+ +
calendar2-range-fill
+
+
+ +
calendar2-range
+
+
+ +
calendar2-week-fill
+
+
+ +
calendar2-week
+
+
+ +
calendar2-x-fill
+
+
+ +
calendar2-x
+
+
+ +
calendar2
+
+
+ +
calendar3-event-fill
+
+
+ +
calendar3-event
+
+
+ +
calendar3-fill
+
+
+ +
calendar3-range-fill
+
+
+ +
calendar3-range
+
+
+ +
calendar3-week-fill
+
+
+ +
calendar3-week
+
+
+ +
calendar3
+
+
+ +
calendar4-event
+
+
+ +
calendar4-range
+
+
+ +
calendar4-week
+
+
+ +
calendar4
+
+
+ +
camera-fill
+
+
+ +
camera-reels-fill
+
+
+ +
camera-reels
+
+
+ +
camera-video-fill
+
+
+ +
camera-video-off-fill
+
+
+ +
camera-video-off
+
+
+ +
camera-video
+
+
+ +
camera
+
+
+ +
camera2
+
+
+ +
capslock-fill
+
+
+ +
capslock
+
+
+ +
capsule-pill
+
+
+ +
capsule
+
+
+ +
car-front-fill
+
+
+ +
car-front
+
+
+ +
card-checklist
+
+
+ +
card-heading
+
+
+ +
card-image
+
+
+ +
card-list
+
+
+ +
card-text
+
+
+ +
caret-down-fill
+
+
+ +
caret-down-square-fill
+
+
+ +
caret-down-square
+
+
+ +
caret-down
+
+
+ +
caret-left-fill
+
+
+ +
caret-left-square-fill
+
+
+ +
caret-left-square
+
+
+ +
caret-left
+
+
+ +
caret-right-fill
+
+
+ +
caret-right-square-fill
+
+
+ +
caret-right-square
+
+
+ +
caret-right
+
+
+ +
caret-up-fill
+
+
+ +
caret-up-square-fill
+
+
+ +
caret-up-square
+
+
+ +
caret-up
+
+
+ +
cart-check-fill
+
+
+ +
cart-check
+
+
+ +
cart-dash-fill
+
+
+ +
cart-dash
+
+
+ +
cart-fill
+
+
+ +
cart-plus-fill
+
+
+ +
cart-plus
+
+
+ +
cart-x-fill
+
+
+ +
cart-x
+
+
+ +
cart
+
+
+ +
cart2
+
+
+ +
cart3
+
+
+ +
cart4
+
+
+ +
cash-coin
+
+
+ +
cash-stack
+
+
+ +
cash
+
+
+ +
cassette-fill
+
+
+ +
cassette
+
+
+ +
cast
+
+
+ +
cc-circle-fill
+
+
+ +
cc-circle
+
+
+ +
cc-square-fill
+
+
+ +
cc-square
+
+
+ +
chat-dots-fill
+
+
+ +
chat-dots
+
+
+ +
chat-fill
+
+
+ +
chat-heart-fill
+
+
+ +
chat-heart
+
+
+ +
chat-left-dots-fill
+
+
+ +
chat-left-dots
+
+
+ +
chat-left-fill
+
+
+ +
chat-left-heart-fill
+
+
+ +
chat-left-heart
+
+
+ +
chat-left-quote-fill
+
+
+ +
chat-left-quote
+
+
+ +
chat-left-text-fill
+
+
+ +
chat-left-text
+
+
+ +
chat-left
+
+
+ +
chat-quote-fill
+
+
+ +
chat-quote
+
+
+ +
chat-right-dots-fill
+
+
+ +
chat-right-dots
+
+
+ +
chat-right-fill
+
+
+ +
chat-right-heart-fill
+
+
+ +
chat-right-heart
+
+
+ +
chat-right-quote-fill
+
+
+ +
chat-right-quote
+
+
+ +
chat-right-text-fill
+
+
+ +
chat-right-text
+
+
+ +
chat-right
+
+
+ +
chat-square-dots-fill
+
+
+ +
chat-square-dots
+
+
+ +
chat-square-fill
+
+
+ +
chat-square-heart-fill
+
+
+ +
chat-square-heart
+
+
+ +
chat-square-quote-fill
+
+
+ +
chat-square-quote
+
+
+ +
chat-square-text-fill
+
+
+ +
chat-square-text
+
+
+ +
chat-square
+
+
+ +
chat-text-fill
+
+
+ +
chat-text
+
+
+ +
chat
+
+
+ +
check-all
+
+
+ +
check-circle-fill
+
+
+ +
check-circle
+
+
+ +
check-lg
+
+
+ +
check-square-fill
+
+
+ +
check-square
+
+
+ +
check
+
+
+ +
check2-all
+
+
+ +
check2-circle
+
+
+ +
check2-square
+
+
+ +
check2
+
+
+ +
chevron-bar-contract
+
+
+ +
chevron-bar-down
+
+
+ +
chevron-bar-expand
+
+
+ +
chevron-bar-left
+
+
+ +
chevron-bar-right
+
+
+ +
chevron-bar-up
+
+
+ +
chevron-compact-down
+
+
+ +
chevron-compact-left
+
+
+ +
chevron-compact-right
+
+
+ +
chevron-compact-up
+
+
+ +
chevron-contract
+
+
+ +
chevron-double-down
+
+
+ +
chevron-double-left
+
+
+ +
chevron-double-right
+
+
+ +
chevron-double-up
+
+
+ +
chevron-down
+
+
+ +
chevron-expand
+
+
+ +
chevron-left
+
+
+ +
chevron-right
+
+
+ +
chevron-up
+
+
+ +
circle-fill
+
+
+ +
circle-half
+
+
+ +
circle-square
+
+
+ +
circle
+
+
+ +
clipboard-check-fill
+
+
+ +
clipboard-check
+
+
+ +
clipboard-data-fill
+
+
+ +
clipboard-data
+
+
+ +
clipboard-fill
+
+
+ +
clipboard-heart-fill
+
+
+ +
clipboard-heart
+
+
+ +
clipboard-minus-fill
+
+
+ +
clipboard-minus
+
+
+ +
clipboard-plus-fill
+
+
+ +
clipboard-plus
+
+
+ +
clipboard-pulse
+
+
+ +
clipboard-x-fill
+
+
+ +
clipboard-x
+
+
+ +
clipboard
+
+
+ +
clipboard2-check-fill
+
+
+ +
clipboard2-check
+
+
+ +
clipboard2-data-fill
+
+
+ +
clipboard2-data
+
+
+ +
clipboard2-fill
+
+
+ +
clipboard2-heart-fill
+
+
+ +
clipboard2-heart
+
+
+ +
clipboard2-minus-fill
+
+
+ +
clipboard2-minus
+
+
+ +
clipboard2-plus-fill
+
+
+ +
clipboard2-plus
+
+
+ +
clipboard2-pulse-fill
+
+
+ +
clipboard2-pulse
+
+
+ +
clipboard2-x-fill
+
+
+ +
clipboard2-x
+
+
+ +
clipboard2
+
+
+ +
clock-fill
+
+
+ +
clock-history
+
+
+ +
clock
+
+
+ +
cloud-arrow-down-fill
+
+
+ +
cloud-arrow-down
+
+
+ +
cloud-arrow-up-fill
+
+
+ +
cloud-arrow-up
+
+
+ +
cloud-check-fill
+
+
+ +
cloud-check
+
+
+ +
cloud-download-fill
+
+
+ +
cloud-download
+
+
+ +
cloud-drizzle-fill
+
+
+ +
cloud-drizzle
+
+
+ +
cloud-fill
+
+
+ +
cloud-fog-fill
+
+
+ +
cloud-fog
+
+
+ +
cloud-fog2-fill
+
+
+ +
cloud-fog2
+
+
+ +
cloud-hail-fill
+
+
+ +
cloud-hail
+
+
+ +
cloud-haze-fill
+
+
+ +
cloud-haze
+
+
+ +
cloud-haze2-fill
+
+
+ +
cloud-haze2
+
+
+ +
cloud-lightning-fill
+
+
+ +
cloud-lightning-rain-fill
+
+
+ +
cloud-lightning-rain
+
+
+ +
cloud-lightning
+
+
+ +
cloud-minus-fill
+
+
+ +
cloud-minus
+
+
+ +
cloud-moon-fill
+
+
+ +
cloud-moon
+
+
+ +
cloud-plus-fill
+
+
+ +
cloud-plus
+
+
+ +
cloud-rain-fill
+
+
+ +
cloud-rain-heavy-fill
+
+
+ +
cloud-rain-heavy
+
+
+ +
cloud-rain
+
+
+ +
cloud-slash-fill
+
+
+ +
cloud-slash
+
+
+ +
cloud-sleet-fill
+
+
+ +
cloud-sleet
+
+
+ +
cloud-snow-fill
+
+
+ +
cloud-snow
+
+
+ +
cloud-sun-fill
+
+
+ +
cloud-sun
+
+
+ +
cloud-upload-fill
+
+
+ +
cloud-upload
+
+
+ +
cloud
+
+
+ +
clouds-fill
+
+
+ +
clouds
+
+
+ +
cloudy-fill
+
+
+ +
cloudy
+
+
+ +
code-slash
+
+
+ +
code-square
+
+
+ +
code
+
+
+ +
coin
+
+
+ +
collection-fill
+
+
+ +
collection-play-fill
+
+
+ +
collection-play
+
+
+ +
collection
+
+
+ +
columns-gap
+
+
+ +
columns
+
+
+ +
command
+
+
+ +
compass-fill
+
+
+ +
compass
+
+
+ +
cone-striped
+
+
+ +
cone
+
+
+ +
controller
+
+
+ +
cpu-fill
+
+
+ +
cpu
+
+
+ +
credit-card-2-back-fill
+
+
+ +
credit-card-2-back
+
+
+ +
credit-card-2-front-fill
+
+
+ +
credit-card-2-front
+
+
+ +
credit-card-fill
+
+
+ +
credit-card
+
+
+ +
crop
+
+
+ +
cup-fill
+
+
+ +
cup-hot-fill
+
+
+ +
cup-hot
+
+
+ +
cup-straw
+
+
+ +
cup
+
+
+ +
currency-bitcoin
+
+
+ +
currency-dollar
+
+
+ +
currency-euro
+
+
+ +
currency-exchange
+
+
+ +
currency-pound
+
+
+ +
currency-rupee
+
+
+ +
currency-yen
+
+
+ +
cursor-fill
+
+
+ +
cursor-text
+
+
+ +
cursor
+
+
+ +
dash-circle-dotted
+
+
+ +
dash-circle-fill
+
+
+ +
dash-circle
+
+
+ +
dash-lg
+
+
+ +
dash-square-dotted
+
+
+ +
dash-square-fill
+
+
+ +
dash-square
+
+
+ +
dash
+
+
+ +
device-hdd-fill
+
+
+ +
device-hdd
+
+
+ +
device-ssd-fill
+
+
+ +
device-ssd
+
+
+ +
diagram-2-fill
+
+
+ +
diagram-2
+
+
+ +
diagram-3-fill
+
+
+ +
diagram-3
+
+
+ +
diamond-fill
+
+
+ +
diamond-half
+
+
+ +
diamond
+
+
+ +
dice-1-fill
+
+
+ +
dice-1
+
+
+ +
dice-2-fill
+
+
+ +
dice-2
+
+
+ +
dice-3-fill
+
+
+ +
dice-3
+
+
+ +
dice-4-fill
+
+
+ +
dice-4
+
+
+ +
dice-5-fill
+
+
+ +
dice-5
+
+
+ +
dice-6-fill
+
+
+ +
dice-6
+
+
+ +
disc-fill
+
+
+ +
disc
+
+
+ +
discord
+
+
+ +
display-fill
+
+
+ +
display
+
+
+ +
displayport-fill
+
+
+ +
displayport
+
+
+ +
distribute-horizontal
+
+
+ +
distribute-vertical
+
+
+ +
door-closed-fill
+
+
+ +
door-closed
+
+
+ +
door-open-fill
+
+
+ +
door-open
+
+
+ +
dot
+
+
+ +
download
+
+
+ +
dpad-fill
+
+
+ +
dpad
+
+
+ +
dribbble
+
+
+ +
dropbox
+
+
+ +
droplet-fill
+
+
+ +
droplet-half
+
+
+ +
droplet
+
+
+ +
ear-fill
+
+
+ +
ear
+
+
+ +
earbuds
+
+
+ +
easel-fill
+
+
+ +
easel
+
+
+ +
easel2-fill
+
+
+ +
easel2
+
+
+ +
easel3-fill
+
+
+ +
easel3
+
+
+ +
egg-fill
+
+
+ +
egg-fried
+
+
+ +
egg
+
+
+ +
eject-fill
+
+
+ +
eject
+
+
+ +
emoji-angry-fill
+
+
+ +
emoji-angry
+
+
+ +
emoji-dizzy-fill
+
+
+ +
emoji-dizzy
+
+
+ +
emoji-expressionless-fill
+
+
+ +
emoji-expressionless
+
+
+ +
emoji-frown-fill
+
+
+ +
emoji-frown
+
+
+ +
emoji-heart-eyes-fill
+
+
+ +
emoji-heart-eyes
+
+
+ +
emoji-kiss-fill
+
+
+ +
emoji-kiss
+
+
+ +
emoji-laughing-fill
+
+
+ +
emoji-laughing
+
+
+ +
emoji-neutral-fill
+
+
+ +
emoji-neutral
+
+
+ +
emoji-smile-fill
+
+
+ +
emoji-smile-upside-down-fill
+
+
+ +
emoji-smile-upside-down
+
+
+ +
emoji-smile
+
+
+ +
emoji-sunglasses-fill
+
+
+ +
emoji-sunglasses
+
+
+ +
emoji-wink-fill
+
+
+ +
emoji-wink
+
+
+ +
envelope-check-fill
+
+
+ +
envelope-check
+
+
+ +
envelope-dash-fill
+
+
+ +
envelope-dash
+
+
+ +
envelope-exclamation-fill
+
+
+ +
envelope-exclamation
+
+
+ +
envelope-fill
+
+
+ +
envelope-heart-fill
+
+
+ +
envelope-heart
+
+
+ +
envelope-open-fill
+
+
+ +
envelope-open-heart-fill
+
+
+ +
envelope-open-heart
+
+
+ +
envelope-open
+
+
+ +
envelope-paper-fill
+
+
+ +
envelope-paper-heart-fill
+
+
+ +
envelope-paper-heart
+
+
+ +
envelope-paper
+
+
+ +
envelope-plus-fill
+
+
+ +
envelope-plus
+
+
+ +
envelope-slash-fill
+
+
+ +
envelope-slash
+
+
+ +
envelope-x-fill
+
+
+ +
envelope-x
+
+
+ +
envelope
+
+
+ +
eraser-fill
+
+
+ +
eraser
+
+
+ +
escape
+
+
+ +
ethernet
+
+
+ +
ev-station-fill
+
+
+ +
ev-station
+
+
+ +
exclamation-circle-fill
+
+
+ +
exclamation-circle
+
+
+ +
exclamation-diamond-fill
+
+
+ +
exclamation-diamond
+
+
+ +
exclamation-lg
+
+
+ +
exclamation-octagon-fill
+
+
+ +
exclamation-octagon
+
+
+ +
exclamation-square-fill
+
+
+ +
exclamation-square
+
+
+ +
exclamation-triangle-fill
+
+
+ +
exclamation-triangle
+
+
+ +
exclamation
+
+
+ +
exclude
+
+
+ +
explicit-fill
+
+
+ +
explicit
+
+
+ +
eye-fill
+
+
+ +
eye-slash-fill
+
+
+ +
eye-slash
+
+
+ +
eye
+
+
+ +
eyedropper
+
+
+ +
eyeglasses
+
+
+ +
facebook
+
+
+ +
fan
+
+
+ +
fast-forward-btn-fill
+
+
+ +
fast-forward-btn
+
+
+ +
fast-forward-circle-fill
+
+
+ +
fast-forward-circle
+
+
+ +
fast-forward-fill
+
+
+ +
fast-forward
+
+
+ +
file-arrow-down-fill
+
+
+ +
file-arrow-down
+
+
+ +
file-arrow-up-fill
+
+
+ +
file-arrow-up
+
+
+ +
file-bar-graph-fill
+
+
+ +
file-bar-graph
+
+
+ +
file-binary-fill
+
+
+ +
file-binary
+
+
+ +
file-break-fill
+
+
+ +
file-break
+
+
+ +
file-check-fill
+
+
+ +
file-check
+
+
+ +
file-code-fill
+
+
+ +
file-code
+
+
+ +
file-diff-fill
+
+
+ +
file-diff
+
+
+ +
file-earmark-arrow-down-fill
+
+
+ +
file-earmark-arrow-down
+
+
+ +
file-earmark-arrow-up-fill
+
+
+ +
file-earmark-arrow-up
+
+
+ +
file-earmark-bar-graph-fill
+
+
+ +
file-earmark-bar-graph
+
+
+ +
file-earmark-binary-fill
+
+
+ +
file-earmark-binary
+
+
+ +
file-earmark-break-fill
+
+
+ +
file-earmark-break
+
+
+ +
file-earmark-check-fill
+
+
+ +
file-earmark-check
+
+
+ +
file-earmark-code-fill
+
+
+ +
file-earmark-code
+
+
+ +
file-earmark-diff-fill
+
+
+ +
file-earmark-diff
+
+
+ +
file-earmark-easel-fill
+
+
+ +
file-earmark-easel
+
+
+ +
file-earmark-excel-fill
+
+
+ +
file-earmark-excel
+
+
+ +
file-earmark-fill
+
+
+ +
file-earmark-font-fill
+
+
+ +
file-earmark-font
+
+
+ +
file-earmark-image-fill
+
+
+ +
file-earmark-image
+
+
+ +
file-earmark-lock-fill
+
+
+ +
file-earmark-lock
+
+
+ +
file-earmark-lock2-fill
+
+
+ +
file-earmark-lock2
+
+
+ +
file-earmark-medical-fill
+
+
+ +
file-earmark-medical
+
+
+ +
file-earmark-minus-fill
+
+
+ +
file-earmark-minus
+
+
+ +
file-earmark-music-fill
+
+
+ +
file-earmark-music
+
+
+ +
file-earmark-pdf-fill
+
+
+ +
file-earmark-pdf
+
+
+ +
file-earmark-person-fill
+
+
+ +
file-earmark-person
+
+
+ +
file-earmark-play-fill
+
+
+ +
file-earmark-play
+
+
+ +
file-earmark-plus-fill
+
+
+ +
file-earmark-plus
+
+
+ +
file-earmark-post-fill
+
+
+ +
file-earmark-post
+
+
+ +
file-earmark-ppt-fill
+
+
+ +
file-earmark-ppt
+
+
+ +
file-earmark-richtext-fill
+
+
+ +
file-earmark-richtext
+
+
+ +
file-earmark-ruled-fill
+
+
+ +
file-earmark-ruled
+
+
+ +
file-earmark-slides-fill
+
+
+ +
file-earmark-slides
+
+
+ +
file-earmark-spreadsheet-fill
+
+
+ +
file-earmark-spreadsheet
+
+
+ +
file-earmark-text-fill
+
+
+ +
file-earmark-text
+
+
+ +
file-earmark-word-fill
+
+
+ +
file-earmark-word
+
+
+ +
file-earmark-x-fill
+
+
+ +
file-earmark-x
+
+
+ +
file-earmark-zip-fill
+
+
+ +
file-earmark-zip
+
+
+ +
file-earmark
+
+
+ +
file-easel-fill
+
+
+ +
file-easel
+
+
+ +
file-excel-fill
+
+
+ +
file-excel
+
+
+ +
file-fill
+
+
+ +
file-font-fill
+
+
+ +
file-font
+
+
+ +
file-image-fill
+
+
+ +
file-image
+
+
+ +
file-lock-fill
+
+
+ +
file-lock
+
+
+ +
file-lock2-fill
+
+
+ +
file-lock2
+
+
+ +
file-medical-fill
+
+
+ +
file-medical
+
+
+ +
file-minus-fill
+
+
+ +
file-minus
+
+
+ +
file-music-fill
+
+
+ +
file-music
+
+
+ +
file-pdf-fill
+
+
+ +
file-pdf
+
+
+ +
file-person-fill
+
+
+ +
file-person
+
+
+ +
file-play-fill
+
+
+ +
file-play
+
+
+ +
file-plus-fill
+
+
+ +
file-plus
+
+
+ +
file-post-fill
+
+
+ +
file-post
+
+
+ +
file-ppt-fill
+
+
+ +
file-ppt
+
+
+ +
file-richtext-fill
+
+
+ +
file-richtext
+
+
+ +
file-ruled-fill
+
+
+ +
file-ruled
+
+
+ +
file-slides-fill
+
+
+ +
file-slides
+
+
+ +
file-spreadsheet-fill
+
+
+ +
file-spreadsheet
+
+
+ +
file-text-fill
+
+
+ +
file-text
+
+
+ +
file-word-fill
+
+
+ +
file-word
+
+
+ +
file-x-fill
+
+
+ +
file-x
+
+
+ +
file-zip-fill
+
+
+ +
file-zip
+
+
+ +
file
+
+
+ +
files-alt
+
+
+ +
files
+
+
+ +
filetype-aac
+
+
+ +
filetype-ai
+
+
+ +
filetype-bmp
+
+
+ +
filetype-cs
+
+
+ +
filetype-css
+
+
+ +
filetype-csv
+
+
+ +
filetype-doc
+
+
+ +
filetype-docx
+
+
+ +
filetype-exe
+
+
+ +
filetype-gif
+
+
+ +
filetype-heic
+
+
+ +
filetype-html
+
+
+ +
filetype-java
+
+
+ +
filetype-jpg
+
+
+ +
filetype-js
+
+
+ +
filetype-json
+
+
+ +
filetype-jsx
+
+
+ +
filetype-key
+
+
+ +
filetype-m4p
+
+
+ +
filetype-md
+
+
+ +
filetype-mdx
+
+
+ +
filetype-mov
+
+
+ +
filetype-mp3
+
+
+ +
filetype-mp4
+
+
+ +
filetype-otf
+
+
+ +
filetype-pdf
+
+
+ +
filetype-php
+
+
+ +
filetype-png
+
+
+ +
filetype-ppt
+
+
+ +
filetype-pptx
+
+
+ +
filetype-psd
+
+
+ +
filetype-py
+
+
+ +
filetype-raw
+
+
+ +
filetype-rb
+
+
+ +
filetype-sass
+
+
+ +
filetype-scss
+
+
+ +
filetype-sh
+
+
+ +
filetype-sql
+
+
+ +
filetype-svg
+
+
+ +
filetype-tiff
+
+
+ +
filetype-tsx
+
+
+ +
filetype-ttf
+
+
+ +
filetype-txt
+
+
+ +
filetype-wav
+
+
+ +
filetype-woff
+
+
+ +
filetype-xls
+
+
+ +
filetype-xlsx
+
+
+ +
filetype-xml
+
+
+ +
filetype-yml
+
+
+ +
film
+
+
+ +
filter-circle-fill
+
+
+ +
filter-circle
+
+
+ +
filter-left
+
+
+ +
filter-right
+
+
+ +
filter-square-fill
+
+
+ +
filter-square
+
+
+ +
filter
+
+
+ +
fingerprint
+
+
+ +
fire
+
+
+ +
flag-fill
+
+
+ +
flag
+
+
+ +
flower1
+
+
+ +
flower2
+
+
+ +
flower3
+
+
+ +
folder-check
+
+
+ +
folder-fill
+
+
+ +
folder-minus
+
+
+ +
folder-plus
+
+
+ +
folder-symlink-fill
+
+
+ +
folder-symlink
+
+
+ +
folder-x
+
+
+ +
folder
+
+
+ +
folder2-open
+
+
+ +
folder2
+
+
+ +
fonts
+
+
+ +
forward-fill
+
+
+ +
forward
+
+
+ +
front
+
+
+ +
fuel-pump-diesel-fill
+
+
+ +
fuel-pump-diesel
+
+
+ +
fuel-pump-fill
+
+
+ +
fuel-pump
+
+
+ +
fullscreen-exit
+
+
+ +
fullscreen
+
+
+ +
funnel-fill
+
+
+ +
funnel
+
+
+ +
gear-fill
+
+
+ +
gear-wide-connected
+
+
+ +
gear-wide
+
+
+ +
gear
+
+
+ +
gem
+
+
+ +
gender-ambiguous
+
+
+ +
gender-female
+
+
+ +
gender-male
+
+
+ +
gender-trans
+
+
+ +
geo-alt-fill
+
+
+ +
geo-alt
+
+
+ +
geo-fill
+
+
+ +
geo
+
+
+ +
gift-fill
+
+
+ +
gift
+
+
+ +
git
+
+
+ +
github
+
+
+ +
globe
+
+
+ +
globe2
+
+
+ +
google-play
+
+
+ +
google
+
+
+ +
gpu-card
+
+
+ +
graph-down-arrow
+
+
+ +
graph-down
+
+
+ +
graph-up-arrow
+
+
+ +
graph-up
+
+
+ +
grid-1x2-fill
+
+
+ +
grid-1x2
+
+
+ +
grid-3x2-gap-fill
+
+
+ +
grid-3x2-gap
+
+
+ +
grid-3x2
+
+
+ +
grid-3x3-gap-fill
+
+
+ +
grid-3x3-gap
+
+
+ +
grid-3x3
+
+
+ +
grid-fill
+
+
+ +
grid
+
+
+ +
grip-horizontal
+
+
+ +
grip-vertical
+
+
+ +
h-circle-fill
+
+
+ +
h-circle
+
+
+ +
h-square-fill
+
+
+ +
h-square
+
+
+ +
hammer
+
+
+ +
hand-index-fill
+
+
+ +
hand-index-thumb-fill
+
+
+ +
hand-index-thumb
+
+
+ +
hand-index
+
+
+ +
hand-thumbs-down-fill
+
+
+ +
hand-thumbs-down
+
+
+ +
hand-thumbs-up-fill
+
+
+ +
hand-thumbs-up
+
+
+ +
handbag-fill
+
+
+ +
handbag
+
+
+ +
hash
+
+
+ +
hdd-fill
+
+
+ +
hdd-network-fill
+
+
+ +
hdd-network
+
+
+ +
hdd-rack-fill
+
+
+ +
hdd-rack
+
+
+ +
hdd-stack-fill
+
+
+ +
hdd-stack
+
+
+ +
hdd
+
+
+ +
hdmi-fill
+
+
+ +
hdmi
+
+
+ +
headphones
+
+
+ +
headset-vr
+
+
+ +
headset
+
+
+ +
heart-arrow
+
+
+ +
heart-fill
+
+
+ +
heart-half
+
+
+ +
heart-pulse-fill
+
+
+ +
heart-pulse
+
+
+ +
heart
+
+
+ +
heartbreak-fill
+
+
+ +
heartbreak
+
+
+ +
hearts
+
+
+ +
heptagon-fill
+
+
+ +
heptagon-half
+
+
+ +
heptagon
+
+
+ +
hexagon-fill
+
+
+ +
hexagon-half
+
+
+ +
hexagon
+
+
+ +
hospital-fill
+
+
+ +
hospital
+
+
+ +
hourglass-bottom
+
+
+ +
hourglass-split
+
+
+ +
hourglass-top
+
+
+ +
hourglass
+
+
+ +
house-door-fill
+
+
+ +
house-door
+
+
+ +
house-fill
+
+
+ +
house-heart-fill
+
+
+ +
house-heart
+
+
+ +
house
+
+
+ +
hr
+
+
+ +
hurricane
+
+
+ +
hypnotize
+
+
+ +
image-alt
+
+
+ +
image-fill
+
+
+ +
image
+
+
+ +
images
+
+
+ +
inbox-fill
+
+
+ +
inbox
+
+
+ +
inboxes-fill
+
+
+ +
inboxes
+
+
+ +
incognito
+
+
+ +
indent
+
+
+ +
infinity
+
+
+ +
info-circle-fill
+
+
+ +
info-circle
+
+
+ +
info-lg
+
+
+ +
info-square-fill
+
+
+ +
info-square
+
+
+ +
info
+
+
+ +
input-cursor-text
+
+
+ +
input-cursor
+
+
+ +
instagram
+
+
+ +
intersect
+
+
+ +
journal-album
+
+
+ +
journal-arrow-down
+
+
+ +
journal-arrow-up
+
+
+ +
journal-bookmark-fill
+
+
+ +
journal-bookmark
+
+
+ +
journal-check
+
+
+ +
journal-code
+
+
+ +
journal-medical
+
+
+ +
journal-minus
+
+
+ +
journal-plus
+
+
+ +
journal-richtext
+
+
+ +
journal-text
+
+
+ +
journal-x
+
+
+ +
journal
+
+
+ +
journals
+
+
+ +
joystick
+
+
+ +
justify-left
+
+
+ +
justify-right
+
+
+ +
justify
+
+
+ +
kanban-fill
+
+
+ +
kanban
+
+
+ +
key-fill
+
+
+ +
key
+
+
+ +
keyboard-fill
+
+
+ +
keyboard
+
+
+ +
ladder
+
+
+ +
lamp-fill
+
+
+ +
lamp
+
+
+ +
laptop-fill
+
+
+ +
laptop
+
+
+ +
layer-backward
+
+
+ +
layer-forward
+
+
+ +
layers-fill
+
+
+ +
layers-half
+
+
+ +
layers
+
+
+ +
layout-sidebar-inset-reverse
+
+
+ +
layout-sidebar-inset
+
+
+ +
layout-sidebar-reverse
+
+
+ +
layout-sidebar
+
+
+ +
layout-split
+
+
+ +
layout-text-sidebar-reverse
+
+
+ +
layout-text-sidebar
+
+
+ +
layout-text-window-reverse
+
+
+ +
layout-text-window
+
+
+ +
layout-three-columns
+
+
+ +
layout-wtf
+
+
+ +
life-preserver
+
+
+ +
lightbulb-fill
+
+
+ +
lightbulb-off-fill
+
+
+ +
lightbulb-off
+
+
+ +
lightbulb
+
+
+ +
lightning-charge-fill
+
+
+ +
lightning-charge
+
+
+ +
lightning-fill
+
+
+ +
lightning
+
+
+ +
line
+
+
+ +
link-45deg
+
+
+ +
link
+
+
+ +
linkedin
+
+
+ +
list-check
+
+
+ +
list-columns-reverse
+
+
+ +
list-columns
+
+
+ +
list-nested
+
+
+ +
list-ol
+
+
+ +
list-stars
+
+
+ +
list-task
+
+
+ +
list-ul
+
+
+ +
list
+
+
+ +
lock-fill
+
+
+ +
lock
+
+
+ +
lungs-fill
+
+
+ +
lungs
+
+
+ +
magic
+
+
+ +
magnet-fill
+
+
+ +
magnet
+
+
+ +
mailbox
+
+
+ +
mailbox2
+
+
+ +
map-fill
+
+
+ +
map
+
+
+ +
markdown-fill
+
+
+ +
markdown
+
+
+ +
mask
+
+
+ +
mastodon
+
+
+ +
medium
+
+
+ +
megaphone-fill
+
+
+ +
megaphone
+
+
+ +
memory
+
+
+ +
menu-app-fill
+
+
+ +
menu-app
+
+
+ +
menu-button-fill
+
+
+ +
menu-button-wide-fill
+
+
+ +
menu-button-wide
+
+
+ +
menu-button
+
+
+ +
menu-down
+
+
+ +
menu-up
+
+
+ +
messenger
+
+
+ +
meta
+
+
+ +
mic-fill
+
+
+ +
mic-mute-fill
+
+
+ +
mic-mute
+
+
+ +
mic
+
+
+ +
microsoft-teams
+
+
+ +
microsoft
+
+
+ +
minecart-loaded
+
+
+ +
minecart
+
+
+ +
modem-fill
+
+
+ +
modem
+
+
+ +
moisture
+
+
+ +
moon-fill
+
+
+ +
moon-stars-fill
+
+
+ +
moon-stars
+
+
+ +
moon
+
+
+ +
mortarboard-fill
+
+
+ +
mortarboard
+
+
+ +
motherboard-fill
+
+
+ +
motherboard
+
+
+ +
mouse-fill
+
+
+ +
mouse
+
+
+ +
mouse2-fill
+
+
+ +
mouse2
+
+
+ +
mouse3-fill
+
+
+ +
mouse3
+
+
+ +
music-note-beamed
+
+
+ +
music-note-list
+
+
+ +
music-note
+
+
+ +
music-player-fill
+
+
+ +
music-player
+
+
+ +
newspaper
+
+
+ +
nintendo-switch
+
+
+ +
node-minus-fill
+
+
+ +
node-minus
+
+
+ +
node-plus-fill
+
+
+ +
node-plus
+
+
+ +
nut-fill
+
+
+ +
nut
+
+
+ +
octagon-fill
+
+
+ +
octagon-half
+
+
+ +
octagon
+
+
+ +
optical-audio-fill
+
+
+ +
optical-audio
+
+
+ +
option
+
+
+ +
outlet
+
+
+ +
p-circle-fill
+
+
+ +
p-circle
+
+
+ +
p-square-fill
+
+
+ +
p-square
+
+
+ +
paint-bucket
+
+
+ +
palette-fill
+
+
+ +
palette
+
+
+ +
palette2
+
+
+ +
paperclip
+
+
+ +
paragraph
+
+
+ +
pass-fill
+
+
+ +
pass
+
+
+ +
patch-check-fill
+
+
+ +
patch-check
+
+
+ +
patch-exclamation-fill
+
+
+ +
patch-exclamation
+
+
+ +
patch-minus-fill
+
+
+ +
patch-minus
+
+
+ +
patch-plus-fill
+
+
+ +
patch-plus
+
+
+ +
patch-question-fill
+
+
+ +
patch-question
+
+
+ +
pause-btn-fill
+
+
+ +
pause-btn
+
+
+ +
pause-circle-fill
+
+
+ +
pause-circle
+
+
+ +
pause-fill
+
+
+ +
pause
+
+
+ +
paypal
+
+
+ +
pc-display-horizontal
+
+
+ +
pc-display
+
+
+ +
pc-horizontal
+
+
+ +
pc
+
+
+ +
pci-card
+
+
+ +
peace-fill
+
+
+ +
peace
+
+
+ +
pen-fill
+
+
+ +
pen
+
+
+ +
pencil-fill
+
+
+ +
pencil-square
+
+
+ +
pencil
+
+
+ +
pentagon-fill
+
+
+ +
pentagon-half
+
+
+ +
pentagon
+
+
+ +
people-fill
+
+
+ +
people
+
+
+ +
percent
+
+
+ +
person-badge-fill
+
+
+ +
person-badge
+
+
+ +
person-bounding-box
+
+
+ +
person-check-fill
+
+
+ +
person-check
+
+
+ +
person-circle
+
+
+ +
person-dash-fill
+
+
+ +
person-dash
+
+
+ +
person-fill
+
+
+ +
person-heart
+
+
+ +
person-hearts
+
+
+ +
person-lines-fill
+
+
+ +
person-plus-fill
+
+
+ +
person-plus
+
+
+ +
person-rolodex
+
+
+ +
person-square
+
+
+ +
person-video
+
+
+ +
person-video2
+
+
+ +
person-video3
+
+
+ +
person-workspace
+
+
+ +
person-x-fill
+
+
+ +
person-x
+
+
+ +
person
+
+
+ +
phone-fill
+
+
+ +
phone-flip
+
+
+ +
phone-landscape-fill
+
+
+ +
phone-landscape
+
+
+ +
phone-vibrate-fill
+
+
+ +
phone-vibrate
+
+
+ +
phone
+
+
+ +
pie-chart-fill
+
+
+ +
pie-chart
+
+
+ +
piggy-bank-fill
+
+
+ +
piggy-bank
+
+
+ +
pin-angle-fill
+
+
+ +
pin-angle
+
+
+ +
pin-fill
+
+
+ +
pin-map-fill
+
+
+ +
pin-map
+
+
+ +
pin
+
+
+ +
pinterest
+
+
+ +
pip-fill
+
+
+ +
pip
+
+
+ +
play-btn-fill
+
+
+ +
play-btn
+
+
+ +
play-circle-fill
+
+
+ +
play-circle
+
+
+ +
play-fill
+
+
+ +
play
+
+
+ +
playstation
+
+
+ +
plug-fill
+
+
+ +
plug
+
+
+ +
plugin
+
+
+ +
plus-circle-dotted
+
+
+ +
plus-circle-fill
+
+
+ +
plus-circle
+
+
+ +
plus-lg
+
+
+ +
plus-slash-minus
+
+
+ +
plus-square-dotted
+
+
+ +
plus-square-fill
+
+
+ +
plus-square
+
+
+ +
plus
+
+
+ +
postage-fill
+
+
+ +
postage-heart-fill
+
+
+ +
postage-heart
+
+
+ +
postage
+
+
+ +
postcard-fill
+
+
+ +
postcard-heart-fill
+
+
+ +
postcard-heart
+
+
+ +
postcard
+
+
+ +
power
+
+
+ +
prescription
+
+
+ +
prescription2
+
+
+ +
printer-fill
+
+
+ +
printer
+
+
+ +
projector-fill
+
+
+ +
projector
+
+
+ +
puzzle-fill
+
+
+ +
puzzle
+
+
+ +
qr-code-scan
+
+
+ +
qr-code
+
+
+ +
question-circle-fill
+
+
+ +
question-circle
+
+
+ +
question-diamond-fill
+
+
+ +
question-diamond
+
+
+ +
question-lg
+
+
+ +
question-octagon-fill
+
+
+ +
question-octagon
+
+
+ +
question-square-fill
+
+
+ +
question-square
+
+
+ +
question
+
+
+ +
quora
+
+
+ +
quote
+
+
+ +
r-circle-fill
+
+
+ +
r-circle
+
+
+ +
r-square-fill
+
+
+ +
r-square
+
+
+ +
radioactive
+
+
+ +
rainbow
+
+
+ +
receipt-cutoff
+
+
+ +
receipt
+
+
+ +
reception-0
+
+
+ +
reception-1
+
+
+ +
reception-2
+
+
+ +
reception-3
+
+
+ +
reception-4
+
+
+ +
record-btn-fill
+
+
+ +
record-btn
+
+
+ +
record-circle-fill
+
+
+ +
record-circle
+
+
+ +
record-fill
+
+
+ +
record
+
+
+ +
record2-fill
+
+
+ +
record2
+
+
+ +
recycle
+
+
+ +
reddit
+
+
+ +
repeat-1
+
+
+ +
repeat
+
+
+ +
reply-all-fill
+
+
+ +
reply-all
+
+
+ +
reply-fill
+
+
+ +
reply
+
+
+ +
rewind-btn-fill
+
+
+ +
rewind-btn
+
+
+ +
rewind-circle-fill
+
+
+ +
rewind-circle
+
+
+ +
rewind-fill
+
+
+ +
rewind
+
+
+ +
robot
+
+
+ +
router-fill
+
+
+ +
router
+
+
+ +
rss-fill
+
+
+ +
rss
+
+
+ +
rulers
+
+
+ +
safe-fill
+
+
+ +
safe
+
+
+ +
safe2-fill
+
+
+ +
safe2
+
+
+ +
save-fill
+
+
+ +
save
+
+
+ +
save2-fill
+
+
+ +
save2
+
+
+ +
scissors
+
+
+ +
screwdriver
+
+
+ +
sd-card-fill
+
+
+ +
sd-card
+
+
+ +
search-heart-fill
+
+
+ +
search-heart
+
+
+ +
search
+
+
+ +
segmented-nav
+
+
+ +
send-check-fill
+
+
+ +
send-check
+
+
+ +
send-dash-fill
+
+
+ +
send-dash
+
+
+ +
send-exclamation-fill
+
+
+ +
send-exclamation
+
+
+ +
send-fill
+
+
+ +
send-plus-fill
+
+
+ +
send-plus
+
+
+ +
send-slash-fill
+
+
+ +
send-slash
+
+
+ +
send-x-fill
+
+
+ +
send-x
+
+
+ +
send
+
+
+ +
server
+
+
+ +
share-fill
+
+
+ +
share
+
+
+ +
shield-check
+
+
+ +
shield-exclamation
+
+
+ +
shield-fill-check
+
+
+ +
shield-fill-exclamation
+
+
+ +
shield-fill-minus
+
+
+ +
shield-fill-plus
+
+
+ +
shield-fill-x
+
+
+ +
shield-fill
+
+
+ +
shield-lock-fill
+
+
+ +
shield-lock
+
+
+ +
shield-minus
+
+
+ +
shield-plus
+
+
+ +
shield-shaded
+
+
+ +
shield-slash-fill
+
+
+ +
shield-slash
+
+
+ +
shield-x
+
+
+ +
shield
+
+
+ +
shift-fill
+
+
+ +
shift
+
+
+ +
shop-window
+
+
+ +
shop
+
+
+ +
shuffle
+
+
+ +
sign-stop-fill
+
+
+ +
sign-stop-lights-fill
+
+
+ +
sign-stop-lights
+
+
+ +
sign-stop
+
+
+ +
sign-turn-left-fill
+
+
+ +
sign-turn-left
+
+
+ +
sign-turn-right-fill
+
+
+ +
sign-turn-right
+
+
+ +
sign-turn-slight-left-fill
+
+
+ +
sign-turn-slight-left
+
+
+ +
sign-turn-slight-right-fill
+
+
+ +
sign-turn-slight-right
+
+
+ +
sign-yield-fill
+
+
+ +
sign-yield
+
+
+ +
signal
+
+
+ +
signpost-2-fill
+
+
+ +
signpost-2
+
+
+ +
signpost-fill
+
+
+ +
signpost-split-fill
+
+
+ +
signpost-split
+
+
+ +
signpost
+
+
+ +
sim-fill
+
+
+ +
sim
+
+
+ +
skip-backward-btn-fill
+
+
+ +
skip-backward-btn
+
+
+ +
skip-backward-circle-fill
+
+
+ +
skip-backward-circle
+
+
+ +
skip-backward-fill
+
+
+ +
skip-backward
+
+
+ +
skip-end-btn-fill
+
+
+ +
skip-end-btn
+
+
+ +
skip-end-circle-fill
+
+
+ +
skip-end-circle
+
+
+ +
skip-end-fill
+
+
+ +
skip-end
+
+
+ +
skip-forward-btn-fill
+
+
+ +
skip-forward-btn
+
+
+ +
skip-forward-circle-fill
+
+
+ +
skip-forward-circle
+
+
+ +
skip-forward-fill
+
+
+ +
skip-forward
+
+
+ +
skip-start-btn-fill
+
+
+ +
skip-start-btn
+
+
+ +
skip-start-circle-fill
+
+
+ +
skip-start-circle
+
+
+ +
skip-start-fill
+
+
+ +
skip-start
+
+
+ +
skype
+
+
+ +
slack
+
+
+ +
slash-circle-fill
+
+
+ +
slash-circle
+
+
+ +
slash-lg
+
+
+ +
slash-square-fill
+
+
+ +
slash-square
+
+
+ +
slash
+
+
+ +
sliders
+
+
+ +
sliders2-vertical
+
+
+ +
sliders2
+
+
+ +
smartwatch
+
+
+ +
snapchat
+
+
+ +
snow
+
+
+ +
snow2
+
+
+ +
snow3
+
+
+ +
sort-alpha-down-alt
+
+
+ +
sort-alpha-down
+
+
+ +
sort-alpha-up-alt
+
+
+ +
sort-alpha-up
+
+
+ +
sort-down-alt
+
+
+ +
sort-down
+
+
+ +
sort-numeric-down-alt
+
+
+ +
sort-numeric-down
+
+
+ +
sort-numeric-up-alt
+
+
+ +
sort-numeric-up
+
+
+ +
sort-up-alt
+
+
+ +
sort-up
+
+
+ +
soundwave
+
+
+ +
speaker-fill
+
+
+ +
speaker
+
+
+ +
speedometer
+
+
+ +
speedometer2
+
+
+ +
spellcheck
+
+
+ +
spotify
+
+
+ +
square-fill
+
+
+ +
square-half
+
+
+ +
square
+
+
+ +
stack-overflow
+
+
+ +
stack
+
+
+ +
star-fill
+
+
+ +
star-half
+
+
+ +
star
+
+
+ +
stars
+
+
+ +
steam
+
+
+ +
stickies-fill
+
+
+ +
stickies
+
+
+ +
sticky-fill
+
+
+ +
sticky
+
+
+ +
stop-btn-fill
+
+
+ +
stop-btn
+
+
+ +
stop-circle-fill
+
+
+ +
stop-circle
+
+
+ +
stop-fill
+
+
+ +
stop
+
+
+ +
stoplights-fill
+
+
+ +
stoplights
+
+
+ +
stopwatch-fill
+
+
+ +
stopwatch
+
+
+ +
strava
+
+
+ +
subtract
+
+
+ +
suit-club-fill
+
+
+ +
suit-club
+
+
+ +
suit-diamond-fill
+
+
+ +
suit-diamond
+
+
+ +
suit-heart-fill
+
+
+ +
suit-heart
+
+
+ +
suit-spade-fill
+
+
+ +
suit-spade
+
+
+ +
sun-fill
+
+
+ +
sun
+
+
+ +
sunglasses
+
+
+ +
sunrise-fill
+
+
+ +
sunrise
+
+
+ +
sunset-fill
+
+
+ +
sunset
+
+
+ +
symmetry-horizontal
+
+
+ +
symmetry-vertical
+
+
+ +
table
+
+
+ +
tablet-fill
+
+
+ +
tablet-landscape-fill
+
+
+ +
tablet-landscape
+
+
+ +
tablet
+
+
+ +
tag-fill
+
+
+ +
tag
+
+
+ +
tags-fill
+
+
+ +
tags
+
+
+ +
telegram
+
+
+ +
telephone-fill
+
+
+ +
telephone-forward-fill
+
+
+ +
telephone-forward
+
+
+ +
telephone-inbound-fill
+
+
+ +
telephone-inbound
+
+
+ +
telephone-minus-fill
+
+
+ +
telephone-minus
+
+
+ +
telephone-outbound-fill
+
+
+ +
telephone-outbound
+
+
+ +
telephone-plus-fill
+
+
+ +
telephone-plus
+
+
+ +
telephone-x-fill
+
+
+ +
telephone-x
+
+
+ +
telephone
+
+
+ +
terminal-dash
+
+
+ +
terminal-fill
+
+
+ +
terminal-plus
+
+
+ +
terminal-split
+
+
+ +
terminal-x
+
+
+ +
terminal
+
+
+ +
text-center
+
+
+ +
text-indent-left
+
+
+ +
text-indent-right
+
+
+ +
text-left
+
+
+ +
text-paragraph
+
+
+ +
text-right
+
+
+ +
textarea-resize
+
+
+ +
textarea-t
+
+
+ +
textarea
+
+
+ +
thermometer-half
+
+
+ +
thermometer-high
+
+
+ +
thermometer-low
+
+
+ +
thermometer-snow
+
+
+ +
thermometer-sun
+
+
+ +
thermometer
+
+
+ +
three-dots-vertical
+
+
+ +
three-dots
+
+
+ +
thunderbolt-fill
+
+
+ +
thunderbolt
+
+
+ +
ticket-detailed-fill
+
+
+ +
ticket-detailed
+
+
+ +
ticket-fill
+
+
+ +
ticket-perforated-fill
+
+
+ +
ticket-perforated
+
+
+ +
ticket
+
+
+ +
tiktok
+
+
+ +
toggle-off
+
+
+ +
toggle-on
+
+
+ +
toggle2-off
+
+
+ +
toggle2-on
+
+
+ +
toggles
+
+
+ +
toggles2
+
+
+ +
tools
+
+
+ +
tornado
+
+
+ +
train-freight-front-fill
+
+
+ +
train-freight-front
+
+
+ +
train-front-fill
+
+
+ +
train-front
+
+
+ +
train-lightrail-front-fill
+
+
+ +
train-lightrail-front
+
+
+ +
translate
+
+
+ +
trash-fill
+
+
+ +
trash
+
+
+ +
trash2-fill
+
+
+ +
trash2
+
+
+ +
trash3-fill
+
+
+ +
trash3
+
+
+ +
tree-fill
+
+
+ +
tree
+
+
+ +
triangle-fill
+
+
+ +
triangle-half
+
+
+ +
triangle
+
+
+ +
trophy-fill
+
+
+ +
trophy
+
+
+ +
tropical-storm
+
+
+ +
truck-flatbed
+
+
+ +
truck-front-fill
+
+
+ +
truck-front
+
+
+ +
truck
+
+
+ +
tsunami
+
+
+ +
tv-fill
+
+
+ +
tv
+
+
+ +
twitch
+
+
+ +
twitter
+
+
+ +
type-bold
+
+
+ +
type-h1
+
+
+ +
type-h2
+
+
+ +
type-h3
+
+
+ +
type-italic
+
+
+ +
type-strikethrough
+
+
+ +
type-underline
+
+
+ +
type
+
+
+ +
ubuntu
+
+
+ +
ui-checks-grid
+
+
+ +
ui-checks
+
+
+ +
ui-radios-grid
+
+
+ +
ui-radios
+
+
+ +
umbrella-fill
+
+
+ +
umbrella
+
+
+ +
unindent
+
+
+ +
union
+
+
+ +
unity
+
+
+ +
universal-access-circle
+
+
+ +
universal-access
+
+
+ +
unlock-fill
+
+
+ +
unlock
+
+
+ +
upc-scan
+
+
+ +
upc
+
+
+ +
upload
+
+
+ +
usb-c-fill
+
+
+ +
usb-c
+
+
+ +
usb-drive-fill
+
+
+ +
usb-drive
+
+
+ +
usb-fill
+
+
+ +
usb-micro-fill
+
+
+ +
usb-micro
+
+
+ +
usb-mini-fill
+
+
+ +
usb-mini
+
+
+ +
usb-plug-fill
+
+
+ +
usb-plug
+
+
+ +
usb-symbol
+
+
+ +
usb
+
+
+ +
valentine
+
+
+ +
valentine2
+
+
+ +
vector-pen
+
+
+ +
view-list
+
+
+ +
view-stacked
+
+
+ +
vimeo
+
+
+ +
vinyl-fill
+
+
+ +
vinyl
+
+
+ +
virus
+
+
+ +
virus2
+
+
+ +
voicemail
+
+
+ +
volume-down-fill
+
+
+ +
volume-down
+
+
+ +
volume-mute-fill
+
+
+ +
volume-mute
+
+
+ +
volume-off-fill
+
+
+ +
volume-off
+
+
+ +
volume-up-fill
+
+
+ +
volume-up
+
+
+ +
vr
+
+
+ +
wallet-fill
+
+
+ +
wallet
+
+
+ +
wallet2
+
+
+ +
watch
+
+
+ +
water
+
+
+ +
webcam-fill
+
+
+ +
webcam
+
+
+ +
wechat
+
+
+ +
whatsapp
+
+
+ +
wifi-1
+
+
+ +
wifi-2
+
+
+ +
wifi-off
+
+
+ +
wifi
+
+
+ +
wind
+
+
+ +
window-dash
+
+
+ +
window-desktop
+
+
+ +
window-dock
+
+
+ +
window-fullscreen
+
+
+ +
window-plus
+
+
+ +
window-sidebar
+
+
+ +
window-split
+
+
+ +
window-stack
+
+
+ +
window-x
+
+
+ +
window
+
+
+ +
windows
+
+
+ +
wordpress
+
+
+ +
wrench-adjustable-circle-fill
+
+
+ +
wrench-adjustable-circle
+
+
+ +
wrench-adjustable
+
+
+ +
wrench
+
+
+ +
x-circle-fill
+
+
+ +
x-circle
+
+
+ +
x-diamond-fill
+
+
+ +
x-diamond
+
+
+ +
x-lg
+
+
+ +
x-octagon-fill
+
+
+ +
x-octagon
+
+
+ +
x-square-fill
+
+
+ +
x-square
+
+
+ +
x
+
+
+ +
xbox
+
+
+ +
yelp
+
+
+ +
yin-yang
+
+
+ +
youtube
+
+
+ +
zoom-in
+
+
+ +
zoom-out
+
+
+ + + diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-circle-fill.svg new file mode 100644 index 000000000..08afbb152 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-circle-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-circle.svg new file mode 100644 index 000000000..8c518f7d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-square-fill.svg new file mode 100644 index 000000000..d5375d465 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-square.svg new file mode 100644 index 000000000..aa6670926 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/0-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-circle-fill.svg new file mode 100644 index 000000000..5141c8f12 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-circle.svg new file mode 100644 index 000000000..785af34d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-square-fill.svg new file mode 100644 index 000000000..de579e6fe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-square.svg new file mode 100644 index 000000000..4f57d79b7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/1-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/123.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/123.svg new file mode 100644 index 000000000..3ee3396cd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/123.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-circle-fill.svg new file mode 100644 index 000000000..03a925132 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-circle.svg new file mode 100644 index 000000000..fea4a5630 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-square-fill.svg new file mode 100644 index 000000000..a89e1f71e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-square.svg new file mode 100644 index 000000000..558c78b90 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/2-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-circle-fill.svg new file mode 100644 index 000000000..06d2ea54e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-circle.svg new file mode 100644 index 000000000..23c347954 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-square-fill.svg new file mode 100644 index 000000000..c6890a381 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-square.svg new file mode 100644 index 000000000..b56b6844a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/3-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-circle-fill.svg new file mode 100644 index 000000000..199a5e28d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-circle.svg new file mode 100644 index 000000000..3af547d70 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-square-fill.svg new file mode 100644 index 000000000..03b0f94a6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-square.svg new file mode 100644 index 000000000..dd8545591 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/4-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-circle-fill.svg new file mode 100644 index 000000000..e940e9880 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-circle.svg new file mode 100644 index 000000000..47eefd087 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-square-fill.svg new file mode 100644 index 000000000..1a878609a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-square.svg new file mode 100644 index 000000000..9c54c773e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/5-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-circle-fill.svg new file mode 100644 index 000000000..18f66ef5c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-circle.svg new file mode 100644 index 000000000..ab5f748d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-square-fill.svg new file mode 100644 index 000000000..d67fa52d6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-square.svg new file mode 100644 index 000000000..79762c8bf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/6-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-circle-fill.svg new file mode 100644 index 000000000..bb4522bf8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-circle.svg new file mode 100644 index 000000000..0dc4685e5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-square-fill.svg new file mode 100644 index 000000000..8a4789cc4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-square.svg new file mode 100644 index 000000000..a314c4a8b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/7-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-circle-fill.svg new file mode 100644 index 000000000..15cd6b4ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-circle.svg new file mode 100644 index 000000000..fb1454264 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-square-fill.svg new file mode 100644 index 000000000..766d42ac0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-square.svg new file mode 100644 index 000000000..f450b1786 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/8-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-circle-fill.svg new file mode 100644 index 000000000..6ebd865c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-circle.svg new file mode 100644 index 000000000..7c97f2940 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-square-fill.svg new file mode 100644 index 000000000..daee3e84c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-square.svg new file mode 100644 index 000000000..ade92337e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/9-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/activity.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/activity.svg new file mode 100644 index 000000000..1c45d1b44 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/activity.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-engines-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-engines-fill.svg new file mode 100644 index 000000000..b58d49ffc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-engines-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-engines.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-engines.svg new file mode 100644 index 000000000..78b79342b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-engines.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-fill.svg new file mode 100644 index 000000000..c8f2fce87 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane.svg new file mode 100644 index 000000000..2e04c928c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/airplane.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alarm-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alarm-fill.svg new file mode 100644 index 000000000..bec569f99 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alarm-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alarm.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alarm.svg new file mode 100644 index 000000000..53f7cbe99 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alarm.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alexa.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alexa.svg new file mode 100644 index 000000000..a68f1d9d0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alexa.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-bottom.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-bottom.svg new file mode 100644 index 000000000..d9484c03e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-bottom.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-center.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-center.svg new file mode 100644 index 000000000..af0d75b0a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-end.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-end.svg new file mode 100644 index 000000000..28f861df2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-end.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-middle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-middle.svg new file mode 100644 index 000000000..95c6598f3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-middle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-start.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-start.svg new file mode 100644 index 000000000..a72ba984b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-start.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-top.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-top.svg new file mode 100644 index 000000000..d2934f523 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/align-top.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alipay.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alipay.svg new file mode 100644 index 000000000..df7def9d9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alipay.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alt.svg new file mode 100644 index 000000000..22b788648 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/amd.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/amd.svg new file mode 100644 index 000000000..15dab8038 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/amd.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/android.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/android.svg new file mode 100644 index 000000000..d8909520a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/android.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/android2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/android2.svg new file mode 100644 index 000000000..37613cc60 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/android2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/app-indicator.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/app-indicator.svg new file mode 100644 index 000000000..450a01127 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/app-indicator.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/app.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/app.svg new file mode 100644 index 000000000..819df1bdc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/app.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/apple.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/apple.svg new file mode 100644 index 000000000..b8bc2a015 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/apple.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/archive-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/archive-fill.svg new file mode 100644 index 000000000..077aa2973 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/archive-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/archive.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/archive.svg new file mode 100644 index 000000000..b41be300f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/archive.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-down.svg new file mode 100644 index 000000000..1193b5d5a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-left.svg new file mode 100644 index 000000000..1656b2286 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-right.svg new file mode 100644 index 000000000..a7d32ce4a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-up.svg new file mode 100644 index 000000000..6c95e3de4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-90deg-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-down.svg new file mode 100644 index 000000000..fe18e3915 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-left.svg new file mode 100644 index 000000000..f53a1fdd7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-right.svg new file mode 100644 index 000000000..5019863d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-up.svg new file mode 100644 index 000000000..090b6bd4c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-bar-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-clockwise.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-clockwise.svg new file mode 100644 index 000000000..b072eb097 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-clockwise.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-counterclockwise.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-counterclockwise.svg new file mode 100644 index 000000000..b0b23b9bb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-counterclockwise.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-circle-fill.svg new file mode 100644 index 000000000..8e837c0b4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-circle.svg new file mode 100644 index 000000000..fe215b941 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-circle-fill.svg new file mode 100644 index 000000000..bcebc12de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-circle.svg new file mode 100644 index 000000000..8b52276fd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-square-fill.svg new file mode 100644 index 000000000..57c099f10 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-square.svg new file mode 100644 index 000000000..08e00288e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left.svg new file mode 100644 index 000000000..96a6b08db --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-circle-fill.svg new file mode 100644 index 000000000..35ab8c26e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-circle.svg new file mode 100644 index 000000000..1cd51bca4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-square-fill.svg new file mode 100644 index 000000000..3ccff9ba1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-square.svg new file mode 100644 index 000000000..5019b260b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right.svg new file mode 100644 index 000000000..80487bd0a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-short.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-short.svg new file mode 100644 index 000000000..2fda34073 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-square-fill.svg new file mode 100644 index 000000000..ea8f14b49 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-square.svg new file mode 100644 index 000000000..633671f25 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-up.svg new file mode 100644 index 000000000..a128d9bed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down.svg new file mode 100644 index 000000000..1344ca9dd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-circle-fill.svg new file mode 100644 index 000000000..2eebe62ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-circle.svg new file mode 100644 index 000000000..39f86b8c6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-right.svg new file mode 100644 index 000000000..8aabd7bea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-short.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-short.svg new file mode 100644 index 000000000..13005fb27 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-square-fill.svg new file mode 100644 index 000000000..76dbe9e75 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-square.svg new file mode 100644 index 000000000..4db19b31e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left.svg new file mode 100644 index 000000000..9d885017c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-repeat.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-repeat.svg new file mode 100644 index 000000000..d0d71546a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-repeat.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-return-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-return-left.svg new file mode 100644 index 000000000..f6b125ede --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-return-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-return-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-return-right.svg new file mode 100644 index 000000000..228e24b4a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-return-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-circle-fill.svg new file mode 100644 index 000000000..336a34ea0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-circle.svg new file mode 100644 index 000000000..1339b5206 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-short.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-short.svg new file mode 100644 index 000000000..4626398ce --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-square-fill.svg new file mode 100644 index 000000000..55285ebe7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-square.svg new file mode 100644 index 000000000..7209ead8f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right.svg new file mode 100644 index 000000000..d4b878b34 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-through-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-through-heart-fill.svg new file mode 100644 index 000000000..1b3c30f68 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-through-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-through-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-through-heart.svg new file mode 100644 index 000000000..f35287083 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-through-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-circle-fill.svg new file mode 100644 index 000000000..ab0a54cce --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-circle.svg new file mode 100644 index 000000000..9923ae3e7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-circle-fill.svg new file mode 100644 index 000000000..df6e194c6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-circle.svg new file mode 100644 index 000000000..dfdaf71fe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-square-fill.svg new file mode 100644 index 000000000..220169da8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-square.svg new file mode 100644 index 000000000..9d3767f5b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left.svg new file mode 100644 index 000000000..da5bb6c1c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-circle-fill.svg new file mode 100644 index 000000000..ba547c827 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-circle.svg new file mode 100644 index 000000000..f2fcabc7e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-square-fill.svg new file mode 100644 index 000000000..7454537b3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-square.svg new file mode 100644 index 000000000..97544231d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right.svg new file mode 100644 index 000000000..6924a38d0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-short.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-short.svg new file mode 100644 index 000000000..3863f1535 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-square-fill.svg new file mode 100644 index 000000000..bb51b25a7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-square.svg new file mode 100644 index 000000000..d21f03eb6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up.svg new file mode 100644 index 000000000..c46d49eb4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrow-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-angle-contract.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-angle-contract.svg new file mode 100644 index 000000000..d140e1943 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-angle-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-angle-expand.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-angle-expand.svg new file mode 100644 index 000000000..3697f605b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-angle-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-collapse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-collapse.svg new file mode 100644 index 000000000..353eed672 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-collapse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-expand.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-expand.svg new file mode 100644 index 000000000..9880f2564 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-fullscreen.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-fullscreen.svg new file mode 100644 index 000000000..dc0acc3ca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-fullscreen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-move.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-move.svg new file mode 100644 index 000000000..eef62ef00 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/arrows-move.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/aspect-ratio-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/aspect-ratio-fill.svg new file mode 100644 index 000000000..81dcfcba5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/aspect-ratio-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/aspect-ratio.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/aspect-ratio.svg new file mode 100644 index 000000000..66719a76e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/aspect-ratio.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/asterisk.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/asterisk.svg new file mode 100644 index 000000000..8b0a9daef --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/asterisk.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/at.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/at.svg new file mode 100644 index 000000000..4a85e1453 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/at.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/award-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/award-fill.svg new file mode 100644 index 000000000..6b589962b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/award-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/award.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/award.svg new file mode 100644 index 000000000..8f572ff07 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/award.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/back.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/back.svg new file mode 100644 index 000000000..4c6cbcbac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/back.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-fill.svg new file mode 100644 index 000000000..ab63109ca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-reverse-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-reverse-fill.svg new file mode 100644 index 000000000..ed509ec2f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-reverse-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-reverse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-reverse.svg new file mode 100644 index 000000000..446e019db --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace.svg new file mode 100644 index 000000000..55c802cf1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/backspace.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-3d-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-3d-fill.svg new file mode 100644 index 000000000..ac61cb5e6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-3d-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-3d.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-3d.svg new file mode 100644 index 000000000..34858372a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-3d.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-4k-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-4k-fill.svg new file mode 100644 index 000000000..f353033d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-4k-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-4k.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-4k.svg new file mode 100644 index 000000000..24ddcb195 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-4k.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-8k-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-8k-fill.svg new file mode 100644 index 000000000..1e1d4c162 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-8k-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-8k.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-8k.svg new file mode 100644 index 000000000..7df4c753e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-8k.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ad-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ad-fill.svg new file mode 100644 index 000000000..b383de673 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ad-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ad.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ad.svg new file mode 100644 index 000000000..942b018b8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ad.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ar-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ar-fill.svg new file mode 100644 index 000000000..f98caaca4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ar-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ar.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ar.svg new file mode 100644 index 000000000..221050609 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-ar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-cc-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-cc-fill.svg new file mode 100644 index 000000000..d9783fe5a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-cc-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-cc.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-cc.svg new file mode 100644 index 000000000..7868cb404 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-cc.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-hd-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-hd-fill.svg new file mode 100644 index 000000000..9f0a4982d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-hd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-hd.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-hd.svg new file mode 100644 index 000000000..e3f4ae753 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-hd.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-sd-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-sd-fill.svg new file mode 100644 index 000000000..538b64275 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-sd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-sd.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-sd.svg new file mode 100644 index 000000000..68667dd7e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-sd.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-tm-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-tm-fill.svg new file mode 100644 index 000000000..7d334ce58 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-tm-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-tm.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-tm.svg new file mode 100644 index 000000000..452dd3bd8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-tm.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vo-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vo-fill.svg new file mode 100644 index 000000000..1f74e75b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vo-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vo.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vo.svg new file mode 100644 index 000000000..500d98f97 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vr-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vr-fill.svg new file mode 100644 index 000000000..6cde11ff0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vr-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vr.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vr.svg new file mode 100644 index 000000000..5c0685248 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-vr.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-wc-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-wc-fill.svg new file mode 100644 index 000000000..47db37b1a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-wc-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-wc.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-wc.svg new file mode 100644 index 000000000..3f0cc5b13 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/badge-wc.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-check-fill.svg new file mode 100644 index 000000000..a1ba2d27d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-check.svg new file mode 100644 index 000000000..c6ad9acb1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-dash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-dash-fill.svg new file mode 100644 index 000000000..a73924286 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-dash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-dash.svg new file mode 100644 index 000000000..9bcb202f4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-fill.svg new file mode 100644 index 000000000..1a1e2e2e7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-heart-fill.svg new file mode 100644 index 000000000..a859e05c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-heart.svg new file mode 100644 index 000000000..2a6bd30c2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-plus-fill.svg new file mode 100644 index 000000000..a110b32ff --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-plus.svg new file mode 100644 index 000000000..b99a1a571 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-x-fill.svg new file mode 100644 index 000000000..879bffe60 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-x.svg new file mode 100644 index 000000000..616532ca4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag.svg new file mode 100644 index 000000000..603de5f44 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bag.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-fill.svg new file mode 100644 index 000000000..b66389461 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-heart-fill.svg new file mode 100644 index 000000000..cebfb9381 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-heart.svg new file mode 100644 index 000000000..dadf467ed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon.svg new file mode 100644 index 000000000..6ca06c3e5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/balloon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bandaid-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bandaid-fill.svg new file mode 100644 index 000000000..41d350a84 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bandaid-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bandaid.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bandaid.svg new file mode 100644 index 000000000..de16de979 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bandaid.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bank.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bank.svg new file mode 100644 index 000000000..264eaaa52 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bank.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bank2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bank2.svg new file mode 100644 index 000000000..b03840cae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bank2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-fill.svg new file mode 100644 index 000000000..23ba4f6e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-line-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-line-fill.svg new file mode 100644 index 000000000..a5059c460 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-line-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-line.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-line.svg new file mode 100644 index 000000000..e3f0cf255 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-line.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-steps.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-steps.svg new file mode 100644 index 000000000..933fba881 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart-steps.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart.svg new file mode 100644 index 000000000..c34c0d450 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bar-chart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket-fill.svg new file mode 100644 index 000000000..ebf223c72 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket.svg new file mode 100644 index 000000000..4bc584b2d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket2-fill.svg new file mode 100644 index 000000000..9ebf8dbbb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket2.svg new file mode 100644 index 000000000..94f0bcb87 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket3-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket3-fill.svg new file mode 100644 index 000000000..e26f0ee62 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket3.svg new file mode 100644 index 000000000..ac46c0117 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/basket3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-charging.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-charging.svg new file mode 100644 index 000000000..cbd91075c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-charging.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-full.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-full.svg new file mode 100644 index 000000000..48cf92eae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-full.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-half.svg new file mode 100644 index 000000000..8c3afca28 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery.svg new file mode 100644 index 000000000..126036069 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/battery.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/behance.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/behance.svg new file mode 100644 index 000000000..a6a2c42b1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/behance.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-fill.svg new file mode 100644 index 000000000..76d9b6015 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-slash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-slash-fill.svg new file mode 100644 index 000000000..2e6f8cf89 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-slash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-slash.svg new file mode 100644 index 000000000..eddbb8adf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell.svg new file mode 100644 index 000000000..585d417ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bell.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bezier.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bezier.svg new file mode 100644 index 000000000..21ec7b3ef --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bezier.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bezier2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bezier2.svg new file mode 100644 index 000000000..48722d0c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bezier2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bicycle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bicycle.svg new file mode 100644 index 000000000..17a2105b7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bicycle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/binoculars-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/binoculars-fill.svg new file mode 100644 index 000000000..de09c7353 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/binoculars-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/binoculars.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/binoculars.svg new file mode 100644 index 000000000..47bca444f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/binoculars.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/blockquote-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/blockquote-left.svg new file mode 100644 index 000000000..f2e0fa270 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/blockquote-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/blockquote-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/blockquote-right.svg new file mode 100644 index 000000000..253518db0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/blockquote-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bluetooth.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bluetooth.svg new file mode 100644 index 000000000..5021e77f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bluetooth.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/body-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/body-text.svg new file mode 100644 index 000000000..81ede1331 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/body-text.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book-fill.svg new file mode 100644 index 000000000..276a281f3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book-half.svg new file mode 100644 index 000000000..76589a577 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book.svg new file mode 100644 index 000000000..f0e5e49eb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/book.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-check-fill.svg new file mode 100644 index 000000000..039e4555a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-check.svg new file mode 100644 index 000000000..b1f572f58 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-dash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-dash-fill.svg new file mode 100644 index 000000000..e17119240 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-dash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-dash.svg new file mode 100644 index 000000000..1138dbb81 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-fill.svg new file mode 100644 index 000000000..94661024c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-heart-fill.svg new file mode 100644 index 000000000..83db817bc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-heart.svg new file mode 100644 index 000000000..be0adb19e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-plus-fill.svg new file mode 100644 index 000000000..bb4502ab2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-plus.svg new file mode 100644 index 000000000..986a2223f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-star-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-star-fill.svg new file mode 100644 index 000000000..220f16ff4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-star-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-star.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-star.svg new file mode 100644 index 000000000..0d2f26267 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-star.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-x-fill.svg new file mode 100644 index 000000000..69fd98233 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-x.svg new file mode 100644 index 000000000..6ac9e8016 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark.svg new file mode 100644 index 000000000..93e1d995b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmarks-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmarks-fill.svg new file mode 100644 index 000000000..eb5a2db27 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmarks-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmarks.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmarks.svg new file mode 100644 index 000000000..6efa0bc01 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookmarks.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookshelf.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookshelf.svg new file mode 100644 index 000000000..6549ea1b1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bookshelf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boombox-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boombox-fill.svg new file mode 100644 index 000000000..6103ae227 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boombox-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boombox.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boombox.svg new file mode 100644 index 000000000..520f23ed6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boombox.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap-fill.svg new file mode 100644 index 000000000..9d163208c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap-reboot.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap-reboot.svg new file mode 100644 index 000000000..4a184cf7c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap-reboot.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap.svg new file mode 100644 index 000000000..b6aed61d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bootstrap.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-all.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-all.svg new file mode 100644 index 000000000..803f5e228 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-all.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-bottom.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-bottom.svg new file mode 100644 index 000000000..dbc219291 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-bottom.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-center.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-center.svg new file mode 100644 index 000000000..009b97da3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-inner.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-inner.svg new file mode 100644 index 000000000..2beaa0cdd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-inner.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-left.svg new file mode 100644 index 000000000..69df882a0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-middle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-middle.svg new file mode 100644 index 000000000..90296f906 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-middle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-outer.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-outer.svg new file mode 100644 index 000000000..355e05ef3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-outer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-right.svg new file mode 100644 index 000000000..b0c16da58 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-style.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-style.svg new file mode 100644 index 000000000..d742b2c95 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-style.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-top.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-top.svg new file mode 100644 index 000000000..5aab36858 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-top.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-width.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-width.svg new file mode 100644 index 000000000..0cbd0e668 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border-width.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border.svg new file mode 100644 index 000000000..0e8c9b52d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/border.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bounding-box-circles.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bounding-box-circles.svg new file mode 100644 index 000000000..2e59f31a0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bounding-box-circles.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bounding-box.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bounding-box.svg new file mode 100644 index 000000000..d5292928f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bounding-box.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down-left.svg new file mode 100644 index 000000000..6ad3e177d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down-right.svg new file mode 100644 index 000000000..321cddf0b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down.svg new file mode 100644 index 000000000..9a2ca1279 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down-left.svg new file mode 100644 index 000000000..76a687a0d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down-right.svg new file mode 100644 index 000000000..923729341 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down.svg new file mode 100644 index 000000000..90f9301ca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-left.svg new file mode 100644 index 000000000..a237dafb3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-right.svg new file mode 100644 index 000000000..d158daede --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up-left.svg new file mode 100644 index 000000000..6937f6a69 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up-right.svg new file mode 100644 index 000000000..891861172 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up.svg new file mode 100644 index 000000000..e6a4a7bec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-in-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-left.svg new file mode 100644 index 000000000..8602603ad --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-right.svg new file mode 100644 index 000000000..2c4e26c52 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up-left.svg new file mode 100644 index 000000000..7fb0b4581 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up-right.svg new file mode 100644 index 000000000..1d93acb91 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up.svg new file mode 100644 index 000000000..beaf33467 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-fill.svg new file mode 100644 index 000000000..8cf213f81 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-seam-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-seam-fill.svg new file mode 100644 index 000000000..97566ab58 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-seam-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-seam.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-seam.svg new file mode 100644 index 000000000..e1506b838 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box-seam.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box.svg new file mode 100644 index 000000000..58cbe2c28 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-fill.svg new file mode 100644 index 000000000..242ad6a84 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-heart-fill.svg new file mode 100644 index 000000000..810e2ee6b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-heart.svg new file mode 100644 index 000000000..400eb431b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2.svg new file mode 100644 index 000000000..6020bafec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/box2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boxes.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boxes.svg new file mode 100644 index 000000000..b53fac847 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/boxes.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/braces-asterisk.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/braces-asterisk.svg new file mode 100644 index 000000000..0a1a25bfa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/braces-asterisk.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/braces.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/braces.svg new file mode 100644 index 000000000..3fed8c903 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/braces.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bricks.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bricks.svg new file mode 100644 index 000000000..99e288642 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bricks.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/briefcase-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/briefcase-fill.svg new file mode 100644 index 000000000..bc6150dc4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/briefcase-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/briefcase.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/briefcase.svg new file mode 100644 index 000000000..95d13a23e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/briefcase.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-high-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-high-fill.svg new file mode 100644 index 000000000..766065825 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-high-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-high.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-high.svg new file mode 100644 index 000000000..88f5255c1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-high.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-low-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-low-fill.svg new file mode 100644 index 000000000..1692df21f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-low-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-low.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-low.svg new file mode 100644 index 000000000..2d68fb0b7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-alt-low.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-high-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-high-fill.svg new file mode 100644 index 000000000..8969e9ba0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-high-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-high.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-high.svg new file mode 100644 index 000000000..42b2c205b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-high.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-low-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-low-fill.svg new file mode 100644 index 000000000..29a1c3b1c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-low-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-low.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-low.svg new file mode 100644 index 000000000..fdd251ddc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brightness-low.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/broadcast-pin.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/broadcast-pin.svg new file mode 100644 index 000000000..5576e0ec2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/broadcast-pin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/broadcast.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/broadcast.svg new file mode 100644 index 000000000..776a2378b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/broadcast.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-chrome.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-chrome.svg new file mode 100644 index 000000000..a34ab4281 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-chrome.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-edge.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-edge.svg new file mode 100644 index 000000000..c8191d880 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-edge.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-firefox.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-firefox.svg new file mode 100644 index 000000000..2bfdba7e8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-firefox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-safari.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-safari.svg new file mode 100644 index 000000000..b304b1b9b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/browser-safari.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brush-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brush-fill.svg new file mode 100644 index 000000000..53ec4d62d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brush-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brush.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brush.svg new file mode 100644 index 000000000..cc3429b9d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/brush.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bucket-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bucket-fill.svg new file mode 100644 index 000000000..e14f4a879 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bucket-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bucket.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bucket.svg new file mode 100644 index 000000000..4911ef254 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bucket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bug-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bug-fill.svg new file mode 100644 index 000000000..bf1644711 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bug-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bug.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bug.svg new file mode 100644 index 000000000..a97ffa177 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bug.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-add.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-add.svg new file mode 100644 index 000000000..d5016d4d1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-add.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-check.svg new file mode 100644 index 000000000..151712db8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-dash.svg new file mode 100644 index 000000000..df489c8dd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-dash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-down.svg new file mode 100644 index 000000000..2493f51a8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-exclamation.svg new file mode 100644 index 000000000..f2d8f62db --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-add.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-add.svg new file mode 100644 index 000000000..2019e92fc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-check.svg new file mode 100644 index 000000000..50485c60a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-dash.svg new file mode 100644 index 000000000..67107eb5b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-down.svg new file mode 100644 index 000000000..b072754ff --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-exclamation.svg new file mode 100644 index 000000000..6ca39dc0c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-gear.svg new file mode 100644 index 000000000..95d6126be --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-lock.svg new file mode 100644 index 000000000..ddd8e6ce7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-slash.svg new file mode 100644 index 000000000..7e30330be --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-up.svg new file mode 100644 index 000000000..ef87446cf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-x.svg new file mode 100644 index 000000000..0311537c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill.svg new file mode 100644 index 000000000..fa95d1f77 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-gear.svg new file mode 100644 index 000000000..698a74673 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-lock.svg new file mode 100644 index 000000000..f4da96c28 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-slash.svg new file mode 100644 index 000000000..9920301ac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-slash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-up.svg new file mode 100644 index 000000000..b2b0433c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-x.svg new file mode 100644 index 000000000..81bff0f88 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building.svg new file mode 100644 index 000000000..eb90b93a7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/building.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/buildings-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/buildings-fill.svg new file mode 100644 index 000000000..3799c1d83 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/buildings-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/buildings.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/buildings.svg new file mode 100644 index 000000000..b842c0c46 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/buildings.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bullseye.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bullseye.svg new file mode 100644 index 000000000..85a807cee --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bullseye.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bus-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bus-front-fill.svg new file mode 100644 index 000000000..c71376d1b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bus-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bus-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bus-front.svg new file mode 100644 index 000000000..bdf6b61e6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/bus-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-circle-fill.svg new file mode 100644 index 000000000..0b4adad1e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-circle.svg new file mode 100644 index 000000000..3e4e26801 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-square-fill.svg new file mode 100644 index 000000000..0b24f7340 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-square.svg new file mode 100644 index 000000000..822ae023d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/c-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calculator-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calculator-fill.svg new file mode 100644 index 000000000..c4ee270f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calculator-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calculator.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calculator.svg new file mode 100644 index 000000000..be8e11a96 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calculator.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-check-fill.svg new file mode 100644 index 000000000..76afaa26a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-check.svg new file mode 100644 index 000000000..125b358d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-date-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-date-fill.svg new file mode 100644 index 000000000..37e9cb52e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-date-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-date.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-date.svg new file mode 100644 index 000000000..7c53231a1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-date.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-day-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-day-fill.svg new file mode 100644 index 000000000..7f1c3c151 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-day-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-day.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-day.svg new file mode 100644 index 000000000..f043369eb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-day.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-event-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-event-fill.svg new file mode 100644 index 000000000..844dd151b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-event.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-event.svg new file mode 100644 index 000000000..41c0ef9b4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-fill.svg new file mode 100644 index 000000000..0cdeb35ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-heart-fill.svg new file mode 100644 index 000000000..bed00d813 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-heart.svg new file mode 100644 index 000000000..2fe7c13f9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-minus-fill.svg new file mode 100644 index 000000000..f23e6482e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-minus.svg new file mode 100644 index 000000000..8f970accf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-month-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-month-fill.svg new file mode 100644 index 000000000..9123437c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-month-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-month.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-month.svg new file mode 100644 index 000000000..ad6a330cc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-month.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-plus-fill.svg new file mode 100644 index 000000000..3928c6389 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-plus.svg new file mode 100644 index 000000000..70746dbe5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-range-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-range-fill.svg new file mode 100644 index 000000000..41bb2a2f0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-range.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-range.svg new file mode 100644 index 000000000..934a45c80 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-week-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-week-fill.svg new file mode 100644 index 000000000..00930aa40 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-week.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-week.svg new file mode 100644 index 000000000..06d6995f6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-x-fill.svg new file mode 100644 index 000000000..01be3013c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-x.svg new file mode 100644 index 000000000..faf46e11f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar.svg new file mode 100644 index 000000000..c8590dd08 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-check-fill.svg new file mode 100644 index 000000000..f49354e82 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-check.svg new file mode 100644 index 000000000..f82605669 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-date-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-date-fill.svg new file mode 100644 index 000000000..ac005e0f6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-date-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-date.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-date.svg new file mode 100644 index 000000000..2dd64e8e1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-date.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-day-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-day-fill.svg new file mode 100644 index 000000000..2ab1b216c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-day-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-day.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-day.svg new file mode 100644 index 000000000..d4d485660 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-day.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-event-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-event-fill.svg new file mode 100644 index 000000000..5bdbc27ed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-event.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-event.svg new file mode 100644 index 000000000..8c1c7cd04 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-fill.svg new file mode 100644 index 000000000..4b81563f3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-heart-fill.svg new file mode 100644 index 000000000..a1782e3d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-heart.svg new file mode 100644 index 000000000..6d6698105 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-minus-fill.svg new file mode 100644 index 000000000..af8721331 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-minus.svg new file mode 100644 index 000000000..eff8110de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-month-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-month-fill.svg new file mode 100644 index 000000000..58deabc10 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-month-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-month.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-month.svg new file mode 100644 index 000000000..88c922e26 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-month.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-plus-fill.svg new file mode 100644 index 000000000..8b41682f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-plus.svg new file mode 100644 index 000000000..7ec7d4956 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-range-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-range-fill.svg new file mode 100644 index 000000000..39ba322f6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-range.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-range.svg new file mode 100644 index 000000000..4a8d9adc7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-week-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-week-fill.svg new file mode 100644 index 000000000..830377986 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-week.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-week.svg new file mode 100644 index 000000000..835ce0671 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-x-fill.svg new file mode 100644 index 000000000..2157939a5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-x.svg new file mode 100644 index 000000000..e7cc3390d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2.svg new file mode 100644 index 000000000..db2e06dda --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-event-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-event-fill.svg new file mode 100644 index 000000000..c4940904a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-event.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-event.svg new file mode 100644 index 000000000..681ce4d23 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-fill.svg new file mode 100644 index 000000000..e37c234ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-range-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-range-fill.svg new file mode 100644 index 000000000..00875b2a5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-range.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-range.svg new file mode 100644 index 000000000..a45251605 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-week-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-week-fill.svg new file mode 100644 index 000000000..53e5bc702 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-week.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-week.svg new file mode 100644 index 000000000..e9a768cb7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3.svg new file mode 100644 index 000000000..eb3c5f2d9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-event.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-event.svg new file mode 100644 index 000000000..51d40e873 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-range.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-range.svg new file mode 100644 index 000000000..129d7c195 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-week.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-week.svg new file mode 100644 index 000000000..5644238ca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4.svg new file mode 100644 index 000000000..1c6268515 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/calendar4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-fill.svg new file mode 100644 index 000000000..be16451ad --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-reels-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-reels-fill.svg new file mode 100644 index 000000000..347f44e06 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-reels-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-reels.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-reels.svg new file mode 100644 index 000000000..1aa7b1ca3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-reels.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-fill.svg new file mode 100644 index 000000000..0222b9587 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-off-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-off-fill.svg new file mode 100644 index 000000000..99090600f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-off-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-off.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-off.svg new file mode 100644 index 000000000..7635e9b5c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video.svg new file mode 100644 index 000000000..199e7a837 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera-video.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera.svg new file mode 100644 index 000000000..fb337fe50 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera2.svg new file mode 100644 index 000000000..a33ae6b6a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/camera2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capslock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capslock-fill.svg new file mode 100644 index 000000000..e4af909ee --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capslock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capslock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capslock.svg new file mode 100644 index 000000000..12155de35 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capslock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capsule-pill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capsule-pill.svg new file mode 100644 index 000000000..c57efff62 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capsule-pill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capsule.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capsule.svg new file mode 100644 index 000000000..844aa8ee2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/capsule.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/car-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/car-front-fill.svg new file mode 100644 index 000000000..e9c5204ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/car-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/car-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/car-front.svg new file mode 100644 index 000000000..a2ec568e1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/car-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-checklist.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-checklist.svg new file mode 100644 index 000000000..ce2a553e1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-checklist.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-heading.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-heading.svg new file mode 100644 index 000000000..682bd4e41 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-heading.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-image.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-image.svg new file mode 100644 index 000000000..473ff030b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-list.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-list.svg new file mode 100644 index 000000000..3dc5d429f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-list.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-text.svg new file mode 100644 index 000000000..d218f554b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/card-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-fill.svg new file mode 100644 index 000000000..d7c3990eb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-square-fill.svg new file mode 100644 index 000000000..ae8fbb468 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-square.svg new file mode 100644 index 000000000..cf34038a7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down.svg new file mode 100644 index 000000000..026b0ff35 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-fill.svg new file mode 100644 index 000000000..d989dff93 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-square-fill.svg new file mode 100644 index 000000000..5d8ab5672 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-square.svg new file mode 100644 index 000000000..099b54ddd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left.svg new file mode 100644 index 000000000..89732f090 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-fill.svg new file mode 100644 index 000000000..b44555181 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-square-fill.svg new file mode 100644 index 000000000..ea06657fd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-square.svg new file mode 100644 index 000000000..4039064d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right.svg new file mode 100644 index 000000000..451686e4a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-fill.svg new file mode 100644 index 000000000..a87820e6e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-square-fill.svg new file mode 100644 index 000000000..25c66a58b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-square.svg new file mode 100644 index 000000000..d59ecbf9e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up.svg new file mode 100644 index 000000000..36ca8f0ef --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/caret-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-check-fill.svg new file mode 100644 index 000000000..019c1fc92 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-check.svg new file mode 100644 index 000000000..986706a40 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-dash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-dash-fill.svg new file mode 100644 index 000000000..2562744b9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-dash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-dash.svg new file mode 100644 index 000000000..ecd23f336 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-fill.svg new file mode 100644 index 000000000..a2b95bf09 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-plus-fill.svg new file mode 100644 index 000000000..9858fe1e3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-plus.svg new file mode 100644 index 000000000..acafe1324 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-x-fill.svg new file mode 100644 index 000000000..a9a32caa0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-x.svg new file mode 100644 index 000000000..feddfdd50 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart.svg new file mode 100644 index 000000000..486adb1c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart2.svg new file mode 100644 index 000000000..7e1bd9abf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart3.svg new file mode 100644 index 000000000..2187149f5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart4.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart4.svg new file mode 100644 index 000000000..b40891fbc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cart4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash-coin.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash-coin.svg new file mode 100644 index 000000000..bc82c64af --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash-coin.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash-stack.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash-stack.svg new file mode 100644 index 000000000..492cb381f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash-stack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash.svg new file mode 100644 index 000000000..ef3a4e7dc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cassette-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cassette-fill.svg new file mode 100644 index 000000000..e8dd8f1aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cassette-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cassette.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cassette.svg new file mode 100644 index 000000000..c28170c07 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cassette.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cast.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cast.svg new file mode 100644 index 000000000..1eda17371 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cast.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-circle-fill.svg new file mode 100644 index 000000000..ca9779e19 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-circle.svg new file mode 100644 index 000000000..6de6b7603 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-square-fill.svg new file mode 100644 index 000000000..f9b44d549 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-square.svg new file mode 100644 index 000000000..90c52bce0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cc-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-dots-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-dots-fill.svg new file mode 100644 index 000000000..2e3d22505 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-dots.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-dots.svg new file mode 100644 index 000000000..a74267d28 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-fill.svg new file mode 100644 index 000000000..69ed44bea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-heart-fill.svg new file mode 100644 index 000000000..9be92ca2e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-heart.svg new file mode 100644 index 000000000..90c276b8c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-dots-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-dots-fill.svg new file mode 100644 index 000000000..eb7f531bd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-dots.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-dots.svg new file mode 100644 index 000000000..c73169d7d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-fill.svg new file mode 100644 index 000000000..38c389f51 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-heart-fill.svg new file mode 100644 index 000000000..787ed61cf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-heart.svg new file mode 100644 index 000000000..1604e7bca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-quote-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-quote-fill.svg new file mode 100644 index 000000000..b115a9fe6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-quote.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-quote.svg new file mode 100644 index 000000000..448827f4f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-text-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-text-fill.svg new file mode 100644 index 000000000..28a0f4710 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-text.svg new file mode 100644 index 000000000..2b69a9891 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left.svg new file mode 100644 index 000000000..fd2f4ee4c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-quote-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-quote-fill.svg new file mode 100644 index 000000000..4a3af86eb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-quote.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-quote.svg new file mode 100644 index 000000000..f890c38d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-dots-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-dots-fill.svg new file mode 100644 index 000000000..49ce0973c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-dots.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-dots.svg new file mode 100644 index 000000000..423d221dc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-fill.svg new file mode 100644 index 000000000..41b767bbf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-heart-fill.svg new file mode 100644 index 000000000..b55dc621e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-heart.svg new file mode 100644 index 000000000..744e8a0d0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-quote-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-quote-fill.svg new file mode 100644 index 000000000..e63f92b52 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-quote.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-quote.svg new file mode 100644 index 000000000..42c8dbe04 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-text-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-text-fill.svg new file mode 100644 index 000000000..32df9212a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-text.svg new file mode 100644 index 000000000..d8b600464 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right.svg new file mode 100644 index 000000000..b702b5d18 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-dots-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-dots-fill.svg new file mode 100644 index 000000000..1025978df --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-dots.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-dots.svg new file mode 100644 index 000000000..e59cd1a1f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-fill.svg new file mode 100644 index 000000000..2fb73ac48 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-heart-fill.svg new file mode 100644 index 000000000..f200049c1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-heart.svg new file mode 100644 index 000000000..89ca6efd7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-quote-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-quote-fill.svg new file mode 100644 index 000000000..761cb91c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-quote.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-quote.svg new file mode 100644 index 000000000..40893f495 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-text-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-text-fill.svg new file mode 100644 index 000000000..1dd17c513 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-text.svg new file mode 100644 index 000000000..ae3fd8da2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square.svg new file mode 100644 index 000000000..7611729e7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-text-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-text-fill.svg new file mode 100644 index 000000000..fff3db332 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-text.svg new file mode 100644 index 000000000..75a79f1a3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat.svg new file mode 100644 index 000000000..3cb81b293 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chat.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-all.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-all.svg new file mode 100644 index 000000000..b0019d00f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-all.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-circle-fill.svg new file mode 100644 index 000000000..e861174a8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-circle.svg new file mode 100644 index 000000000..d8dd0cd57 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-lg.svg new file mode 100644 index 000000000..7afb0ae18 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-square-fill.svg new file mode 100644 index 000000000..45d682850 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-square.svg new file mode 100644 index 000000000..d71c1f348 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check.svg new file mode 100644 index 000000000..9de6cc752 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-all.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-all.svg new file mode 100644 index 000000000..25d8ba52f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-all.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-circle.svg new file mode 100644 index 000000000..7319d37b3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-square.svg new file mode 100644 index 000000000..2d5e6eb87 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2.svg new file mode 100644 index 000000000..e187956c5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/check2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-contract.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-contract.svg new file mode 100644 index 000000000..f12917f79 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-down.svg new file mode 100644 index 000000000..4df2259f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-expand.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-expand.svg new file mode 100644 index 000000000..6cb775f94 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-left.svg new file mode 100644 index 000000000..5d53406ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-right.svg new file mode 100644 index 000000000..b71553ca9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-up.svg new file mode 100644 index 000000000..9ca140895 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-bar-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-down.svg new file mode 100644 index 000000000..fb1767e01 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-left.svg new file mode 100644 index 000000000..5dd6b6bfc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-right.svg new file mode 100644 index 000000000..ecb5994e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-up.svg new file mode 100644 index 000000000..8bc0a55e6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-compact-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-contract.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-contract.svg new file mode 100644 index 000000000..5243d4354 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-down.svg new file mode 100644 index 000000000..0df76eed4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-left.svg new file mode 100644 index 000000000..7181fd111 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-right.svg new file mode 100644 index 000000000..73e1b352d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-up.svg new file mode 100644 index 000000000..5c9a01326 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-double-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-down.svg new file mode 100644 index 000000000..1f0b8bc70 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-expand.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-expand.svg new file mode 100644 index 000000000..0a2b81a3b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-left.svg new file mode 100644 index 000000000..018f8b673 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-right.svg new file mode 100644 index 000000000..d621289b3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-up.svg new file mode 100644 index 000000000..3b2bd42e6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/chevron-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-fill.svg new file mode 100644 index 000000000..e0d1b5157 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-half.svg new file mode 100644 index 000000000..53809298b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-square.svg new file mode 100644 index 000000000..37d86229f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle.svg new file mode 100644 index 000000000..dc57919b3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-check-fill.svg new file mode 100644 index 000000000..4c0c18fcf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-check.svg new file mode 100644 index 000000000..f7591aecf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-data-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-data-fill.svg new file mode 100644 index 000000000..e7de45a26 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-data-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-data.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-data.svg new file mode 100644 index 000000000..b4fcb336b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-data.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-fill.svg new file mode 100644 index 000000000..86d3da067 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-heart-fill.svg new file mode 100644 index 000000000..c653de1c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-heart.svg new file mode 100644 index 000000000..0b5b31921 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-heart.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-minus-fill.svg new file mode 100644 index 000000000..7828cb8b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-minus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-minus.svg new file mode 100644 index 000000000..4826c3e65 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-plus-fill.svg new file mode 100644 index 000000000..2ebdba42c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-plus.svg new file mode 100644 index 000000000..79020c074 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-pulse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-pulse.svg new file mode 100644 index 000000000..0c43dab87 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-pulse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-x-fill.svg new file mode 100644 index 000000000..8cba1ea76 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-x.svg new file mode 100644 index 000000000..bba444da7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard.svg new file mode 100644 index 000000000..360e0894c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-check-fill.svg new file mode 100644 index 000000000..01aed624b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-check.svg new file mode 100644 index 000000000..c2352080c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-data-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-data-fill.svg new file mode 100644 index 000000000..40656a7b9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-data-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-data.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-data.svg new file mode 100644 index 000000000..74b26f516 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-data.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-fill.svg new file mode 100644 index 000000000..ca2df5711 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-heart-fill.svg new file mode 100644 index 000000000..2abc35947 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-heart.svg new file mode 100644 index 000000000..4883c3f2a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-heart.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-minus-fill.svg new file mode 100644 index 000000000..000a2c631 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-minus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-minus.svg new file mode 100644 index 000000000..a634bb0f0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-plus-fill.svg new file mode 100644 index 000000000..f1702d8bc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-plus.svg new file mode 100644 index 000000000..474ffdcc2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-pulse-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-pulse-fill.svg new file mode 100644 index 000000000..5017f6dcc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-pulse-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-pulse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-pulse.svg new file mode 100644 index 000000000..1e6370c08 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-pulse.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-x-fill.svg new file mode 100644 index 000000000..8f63584d8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-x.svg new file mode 100644 index 000000000..9ac82117a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2.svg new file mode 100644 index 000000000..d729ddb6e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clipboard2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock-fill.svg new file mode 100644 index 000000000..189dec101 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock-history.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock-history.svg new file mode 100644 index 000000000..414b526c6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock-history.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock.svg new file mode 100644 index 000000000..72f293960 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-down-fill.svg new file mode 100644 index 000000000..6e18ca9ed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-down.svg new file mode 100644 index 000000000..cb8e33aee --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-up-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-up-fill.svg new file mode 100644 index 000000000..89d72fbe1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-up.svg new file mode 100644 index 000000000..6f69abc7c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-check-fill.svg new file mode 100644 index 000000000..81f28b5f4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-check.svg new file mode 100644 index 000000000..917d5c2e3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-download-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-download-fill.svg new file mode 100644 index 000000000..53c4242f8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-download-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-download.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-download.svg new file mode 100644 index 000000000..c6b3fe31e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-download.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-drizzle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-drizzle-fill.svg new file mode 100644 index 000000000..996aec436 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-drizzle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-drizzle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-drizzle.svg new file mode 100644 index 000000000..bb1e68bfc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-drizzle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fill.svg new file mode 100644 index 000000000..23755bd82 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog-fill.svg new file mode 100644 index 000000000..07f10f4c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog.svg new file mode 100644 index 000000000..b40c9838c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog2-fill.svg new file mode 100644 index 000000000..1d498514e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog2.svg new file mode 100644 index 000000000..1bd3c2501 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-fog2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-hail-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-hail-fill.svg new file mode 100644 index 000000000..d8a096bd2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-hail-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-hail.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-hail.svg new file mode 100644 index 000000000..2f9bec11c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-hail.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze-fill.svg new file mode 100644 index 000000000..002fc26b9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze.svg new file mode 100644 index 000000000..513e346cd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze2-fill.svg new file mode 100644 index 000000000..e9b7bda75 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze2.svg new file mode 100644 index 000000000..c213dfb7f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-haze2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-fill.svg new file mode 100644 index 000000000..1d309046b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-rain-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-rain-fill.svg new file mode 100644 index 000000000..2b6d4a1cc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-rain-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-rain.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-rain.svg new file mode 100644 index 000000000..31badb3b0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning-rain.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning.svg new file mode 100644 index 000000000..5a8bafd8d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-lightning.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-minus-fill.svg new file mode 100644 index 000000000..753727fe8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-minus.svg new file mode 100644 index 000000000..a4ab6f97c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-moon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-moon-fill.svg new file mode 100644 index 000000000..d968faf9f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-moon-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-moon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-moon.svg new file mode 100644 index 000000000..1089204ad --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-moon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-plus-fill.svg new file mode 100644 index 000000000..92620aa46 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-plus.svg new file mode 100644 index 000000000..4ef51f2d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-fill.svg new file mode 100644 index 000000000..94cddbaa5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-heavy-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-heavy-fill.svg new file mode 100644 index 000000000..167c8af48 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-heavy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-heavy.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-heavy.svg new file mode 100644 index 000000000..a5c41e5aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain-heavy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain.svg new file mode 100644 index 000000000..eb4003236 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-rain.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-slash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-slash-fill.svg new file mode 100644 index 000000000..a4b8bad4d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-slash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-slash.svg new file mode 100644 index 000000000..fe8917838 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sleet-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sleet-fill.svg new file mode 100644 index 000000000..73764dcfb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sleet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sleet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sleet.svg new file mode 100644 index 000000000..d3c8f2eb8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sleet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-snow-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-snow-fill.svg new file mode 100644 index 000000000..0ffc577ac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-snow-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-snow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-snow.svg new file mode 100644 index 000000000..b1643fbc6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-snow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sun-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sun-fill.svg new file mode 100644 index 000000000..9ecf7de7e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sun-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sun.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sun.svg new file mode 100644 index 000000000..76ebc49e1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-sun.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-upload-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-upload-fill.svg new file mode 100644 index 000000000..766015d4a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-upload-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-upload.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-upload.svg new file mode 100644 index 000000000..6184b727f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud-upload.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud.svg new file mode 100644 index 000000000..7b0b9b388 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloud.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clouds-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clouds-fill.svg new file mode 100644 index 000000000..fe7fc071c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clouds-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clouds.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clouds.svg new file mode 100644 index 000000000..c9a5ba005 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/clouds.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloudy-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloudy-fill.svg new file mode 100644 index 000000000..3e90f9e83 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloudy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloudy.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloudy.svg new file mode 100644 index 000000000..0783bcae6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cloudy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code-slash.svg new file mode 100644 index 000000000..ef0ef0181 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code-square.svg new file mode 100644 index 000000000..415b56c6d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code.svg new file mode 100644 index 000000000..079f5c67f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/code.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/coin.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/coin.svg new file mode 100644 index 000000000..045d428fa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/coin.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-fill.svg new file mode 100644 index 000000000..fee7f54f7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-play-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-play-fill.svg new file mode 100644 index 000000000..2601e48c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-play.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-play.svg new file mode 100644 index 000000000..96b5c6eec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection-play.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection.svg new file mode 100644 index 000000000..0870f5afd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/collection.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/columns-gap.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/columns-gap.svg new file mode 100644 index 000000000..b3cb17536 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/columns-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/columns.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/columns.svg new file mode 100644 index 000000000..d7854918c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/columns.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/command.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/command.svg new file mode 100644 index 000000000..d1622544e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/command.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/compass-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/compass-fill.svg new file mode 100644 index 000000000..ad821c4a1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/compass-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/compass.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/compass.svg new file mode 100644 index 000000000..86494617e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/compass.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cone-striped.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cone-striped.svg new file mode 100644 index 000000000..44e96065d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cone-striped.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cone.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cone.svg new file mode 100644 index 000000000..2de05c5ba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cone.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/controller.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/controller.svg new file mode 100644 index 000000000..15e777456 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/controller.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cpu-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cpu-fill.svg new file mode 100644 index 000000000..50d0a0782 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cpu-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cpu.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cpu.svg new file mode 100644 index 000000000..a9fbaa3f4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cpu.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-back-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-back-fill.svg new file mode 100644 index 000000000..c80bb6c9b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-back-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-back.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-back.svg new file mode 100644 index 000000000..e99159cd0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-back.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-front-fill.svg new file mode 100644 index 000000000..c082ef0ab --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-front.svg new file mode 100644 index 000000000..95b071df9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-2-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-fill.svg new file mode 100644 index 000000000..d0686a8aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card.svg new file mode 100644 index 000000000..f716d39df --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/credit-card.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/crop.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/crop.svg new file mode 100644 index 000000000..b7e174904 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/crop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-fill.svg new file mode 100644 index 000000000..c8119352d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-hot-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-hot-fill.svg new file mode 100644 index 000000000..f512ae01d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-hot-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-hot.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-hot.svg new file mode 100644 index 000000000..789f1ea58 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-hot.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-straw.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-straw.svg new file mode 100644 index 000000000..bda9d076f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup-straw.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup.svg new file mode 100644 index 000000000..490fe09a6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cup.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-bitcoin.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-bitcoin.svg new file mode 100644 index 000000000..488adca31 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-bitcoin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-dollar.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-dollar.svg new file mode 100644 index 000000000..572e34c27 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-dollar.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-euro.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-euro.svg new file mode 100644 index 000000000..1fcaa7c6d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-euro.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-exchange.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-exchange.svg new file mode 100644 index 000000000..1e3eaf399 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-exchange.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-pound.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-pound.svg new file mode 100644 index 000000000..60dbd5852 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-pound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-rupee.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-rupee.svg new file mode 100644 index 000000000..843d0fa88 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-rupee.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-yen.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-yen.svg new file mode 100644 index 000000000..5bbf1a2a5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/currency-yen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor-fill.svg new file mode 100644 index 000000000..093372b80 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor-text.svg new file mode 100644 index 000000000..42a48fa8a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor-text.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor.svg new file mode 100644 index 000000000..315106bc4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/cursor.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle-dotted.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle-dotted.svg new file mode 100644 index 000000000..7e29372df --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle-fill.svg new file mode 100644 index 000000000..db27419ee --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle.svg new file mode 100644 index 000000000..17483d6f9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-lg.svg new file mode 100644 index 000000000..0f4c5e9a3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square-dotted.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square-dotted.svg new file mode 100644 index 000000000..15b8d4b09 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square-fill.svg new file mode 100644 index 000000000..85a95b2cd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square.svg new file mode 100644 index 000000000..b63e53698 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash.svg new file mode 100644 index 000000000..4ac42887a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-add.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-add.svg new file mode 100644 index 000000000..8b9e0ccfa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-check.svg new file mode 100644 index 000000000..f19308481 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-dash.svg new file mode 100644 index 000000000..1bcb011b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-down.svg new file mode 100644 index 000000000..49dfd2e4b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-exclamation.svg new file mode 100644 index 000000000..178b61a78 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-add.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-add.svg new file mode 100644 index 000000000..993b4dfbf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-check.svg new file mode 100644 index 000000000..579da2e1f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-dash.svg new file mode 100644 index 000000000..ce9c8c78d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-down.svg new file mode 100644 index 000000000..433b9adb0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-exclamation.svg new file mode 100644 index 000000000..f935d0ba1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-exclamation.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-gear.svg new file mode 100644 index 000000000..1501670b4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-lock.svg new file mode 100644 index 000000000..27dce6d36 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-lock.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-slash.svg new file mode 100644 index 000000000..8ccdf4417 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-up.svg new file mode 100644 index 000000000..6f767b596 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-x.svg new file mode 100644 index 000000000..1f65f61f3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill.svg new file mode 100644 index 000000000..2c7e04c01 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-gear.svg new file mode 100644 index 000000000..77a5855f4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-lock.svg new file mode 100644 index 000000000..ad5a8f9a8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-slash.svg new file mode 100644 index 000000000..d1f6a973e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-up.svg new file mode 100644 index 000000000..cfb75ed6d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-x.svg new file mode 100644 index 000000000..314a6fd13 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database.svg new file mode 100644 index 000000000..45e4eb85e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/database.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-hdd-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-hdd-fill.svg new file mode 100644 index 000000000..5b5ae29e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-hdd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-hdd.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-hdd.svg new file mode 100644 index 000000000..960e609ba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-hdd.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-ssd-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-ssd-fill.svg new file mode 100644 index 000000000..9ba580203 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-ssd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-ssd.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-ssd.svg new file mode 100644 index 000000000..0dd8ae5e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/device-ssd.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-2-fill.svg new file mode 100644 index 000000000..b46a21200 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-2.svg new file mode 100644 index 000000000..2b330e550 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-3-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-3-fill.svg new file mode 100644 index 000000000..6cc31c04c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-3.svg new file mode 100644 index 000000000..464b051d8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diagram-3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond-fill.svg new file mode 100644 index 000000000..e6e3151ff --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond-half.svg new file mode 100644 index 000000000..4e1379143 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond.svg new file mode 100644 index 000000000..4cddafaf9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-1-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-1-fill.svg new file mode 100644 index 000000000..0b20aa019 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-1-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-1.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-1.svg new file mode 100644 index 000000000..97c2432de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-2-fill.svg new file mode 100644 index 000000000..f55f92168 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-2.svg new file mode 100644 index 000000000..38013a8e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-3-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-3-fill.svg new file mode 100644 index 000000000..ae5a1ba4d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-3.svg new file mode 100644 index 000000000..705b7e7f3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-4-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-4-fill.svg new file mode 100644 index 000000000..6dad92bb2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-4-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-4.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-4.svg new file mode 100644 index 000000000..070f9812a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-4.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-5-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-5-fill.svg new file mode 100644 index 000000000..a92382b30 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-5-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-5.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-5.svg new file mode 100644 index 000000000..b4369c7e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-5.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-6-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-6-fill.svg new file mode 100644 index 000000000..fce8cb4b1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-6-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-6.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-6.svg new file mode 100644 index 000000000..44d25dc17 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dice-6.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/disc-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/disc-fill.svg new file mode 100644 index 000000000..b03f34d0e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/disc-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/disc.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/disc.svg new file mode 100644 index 000000000..f3475a2e3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/disc.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/discord.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/discord.svg new file mode 100644 index 000000000..877cfdf91 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/discord.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/display-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/display-fill.svg new file mode 100644 index 000000000..f7c3fca74 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/display-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/display.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/display.svg new file mode 100644 index 000000000..700d7805b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/display.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/displayport-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/displayport-fill.svg new file mode 100644 index 000000000..17fe77191 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/displayport-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/displayport.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/displayport.svg new file mode 100644 index 000000000..3e5748a91 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/displayport.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/distribute-horizontal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/distribute-horizontal.svg new file mode 100644 index 000000000..fe90ff8c5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/distribute-horizontal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/distribute-vertical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/distribute-vertical.svg new file mode 100644 index 000000000..234b2c275 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/distribute-vertical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-closed-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-closed-fill.svg new file mode 100644 index 000000000..1d2a0366d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-closed-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-closed.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-closed.svg new file mode 100644 index 000000000..3eab448fe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-closed.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-open-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-open-fill.svg new file mode 100644 index 000000000..d4833a36c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-open-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-open.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-open.svg new file mode 100644 index 000000000..d9638a319 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/door-open.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dot.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dot.svg new file mode 100644 index 000000000..183e4a895 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dot.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/download.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/download.svg new file mode 100644 index 000000000..80a5817fb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/download.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dpad-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dpad-fill.svg new file mode 100644 index 000000000..ea54468de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dpad-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dpad.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dpad.svg new file mode 100644 index 000000000..9363c904a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dpad.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dribbble.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dribbble.svg new file mode 100644 index 000000000..809f2d3c0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dribbble.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dropbox.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dropbox.svg new file mode 100644 index 000000000..64311413c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/dropbox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet-fill.svg new file mode 100644 index 000000000..a240876bc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet-half.svg new file mode 100644 index 000000000..43eb20850 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet.svg new file mode 100644 index 000000000..2b405d682 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/droplet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ear-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ear-fill.svg new file mode 100644 index 000000000..8e564c08b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ear-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ear.svg new file mode 100644 index 000000000..8c8b869e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ear.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/earbuds.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/earbuds.svg new file mode 100644 index 000000000..7bc0019ea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/earbuds.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel-fill.svg new file mode 100644 index 000000000..db0079836 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel.svg new file mode 100644 index 000000000..f95976eae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel2-fill.svg new file mode 100644 index 000000000..c39324221 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel2.svg new file mode 100644 index 000000000..d1736ded6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel3-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel3-fill.svg new file mode 100644 index 000000000..2e5722319 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel3.svg new file mode 100644 index 000000000..a39ad3d72 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/easel3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg-fill.svg new file mode 100644 index 000000000..33b7d4434 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg-fried.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg-fried.svg new file mode 100644 index 000000000..b99cac3bf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg-fried.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg.svg new file mode 100644 index 000000000..9fb5c1ed0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/egg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eject-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eject-fill.svg new file mode 100644 index 000000000..3255af67d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eject-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eject.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eject.svg new file mode 100644 index 000000000..540cbc813 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eject.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-angry-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-angry-fill.svg new file mode 100644 index 000000000..1bf7eb600 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-angry-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-angry.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-angry.svg new file mode 100644 index 000000000..d6d891432 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-angry.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-dizzy-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-dizzy-fill.svg new file mode 100644 index 000000000..d8018007b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-dizzy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-dizzy.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-dizzy.svg new file mode 100644 index 000000000..f64fade85 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-dizzy.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-expressionless-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-expressionless-fill.svg new file mode 100644 index 000000000..f70140ac7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-expressionless-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-expressionless.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-expressionless.svg new file mode 100644 index 000000000..208a72d8e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-expressionless.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-frown-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-frown-fill.svg new file mode 100644 index 000000000..c8a9ddc4a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-frown-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-frown.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-frown.svg new file mode 100644 index 000000000..b7766ebf6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-frown.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-heart-eyes-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-heart-eyes-fill.svg new file mode 100644 index 000000000..cc91552ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-heart-eyes-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-heart-eyes.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-heart-eyes.svg new file mode 100644 index 000000000..c19ec51ac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-heart-eyes.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-kiss-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-kiss-fill.svg new file mode 100644 index 000000000..ab4624564 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-kiss-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-kiss.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-kiss.svg new file mode 100644 index 000000000..4646628b8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-kiss.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-laughing-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-laughing-fill.svg new file mode 100644 index 000000000..cc8c69b8e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-laughing-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-laughing.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-laughing.svg new file mode 100644 index 000000000..68d9b25f5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-laughing.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-neutral-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-neutral-fill.svg new file mode 100644 index 000000000..58bcb6b9f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-neutral-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-neutral.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-neutral.svg new file mode 100644 index 000000000..2f3204a7b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-neutral.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-fill.svg new file mode 100644 index 000000000..76a6a1632 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-upside-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-upside-down-fill.svg new file mode 100644 index 000000000..c6829332c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-upside-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-upside-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-upside-down.svg new file mode 100644 index 000000000..1e1842434 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile-upside-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile.svg new file mode 100644 index 000000000..d222a9ae8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-smile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-sunglasses-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-sunglasses-fill.svg new file mode 100644 index 000000000..00e7bc0d8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-sunglasses-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-sunglasses.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-sunglasses.svg new file mode 100644 index 000000000..4771e4dbf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-sunglasses.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-wink-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-wink-fill.svg new file mode 100644 index 000000000..8601a584c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-wink-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-wink.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-wink.svg new file mode 100644 index 000000000..ee3b3d0e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/emoji-wink.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-at-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-at-fill.svg new file mode 100644 index 000000000..7102a5b12 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-at-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-at.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-at.svg new file mode 100644 index 000000000..46b9134ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-at.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-check-fill.svg new file mode 100644 index 000000000..ca06ad0bf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-check.svg new file mode 100644 index 000000000..8a501810c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-dash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-dash-fill.svg new file mode 100644 index 000000000..7275d3df4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-dash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-dash.svg new file mode 100644 index 000000000..7ae3e5cf1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-exclamation-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-exclamation-fill.svg new file mode 100644 index 000000000..4bc91d20e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-exclamation-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-exclamation.svg new file mode 100644 index 000000000..936b77771 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-fill.svg new file mode 100644 index 000000000..0b28c8661 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-heart-fill.svg new file mode 100644 index 000000000..8ed9e0288 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-heart.svg new file mode 100644 index 000000000..b104999f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-fill.svg new file mode 100644 index 000000000..29d8fe77e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-heart-fill.svg new file mode 100644 index 000000000..478b85bf4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-heart.svg new file mode 100644 index 000000000..7d324a281 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open.svg new file mode 100644 index 000000000..9a542d2e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-open.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-fill.svg new file mode 100644 index 000000000..14f613e9f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-heart-fill.svg new file mode 100644 index 000000000..e422accd7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-heart.svg new file mode 100644 index 000000000..2d925aec9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper.svg new file mode 100644 index 000000000..a909c6377 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-paper.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-plus-fill.svg new file mode 100644 index 000000000..96703c2b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-plus.svg new file mode 100644 index 000000000..0abb96690 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-slash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-slash-fill.svg new file mode 100644 index 000000000..09690e54a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-slash.svg new file mode 100644 index 000000000..35b378331 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-x-fill.svg new file mode 100644 index 000000000..b8348b18f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-x.svg new file mode 100644 index 000000000..cd78475f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope.svg new file mode 100644 index 000000000..122fc357d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/envelope.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eraser-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eraser-fill.svg new file mode 100644 index 000000000..10959b3d3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eraser-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eraser.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eraser.svg new file mode 100644 index 000000000..e7060e56f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eraser.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/escape.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/escape.svg new file mode 100644 index 000000000..112c87b0b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/escape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ethernet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ethernet.svg new file mode 100644 index 000000000..9b97a3afe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ethernet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-front-fill.svg new file mode 100644 index 000000000..6926f5200 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-front.svg new file mode 100644 index 000000000..2e0acc642 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-station-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-station-fill.svg new file mode 100644 index 000000000..a30f613b1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-station-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-station.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-station.svg new file mode 100644 index 000000000..faec20c29 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ev-station.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-circle-fill.svg new file mode 100644 index 000000000..f7a7d17bf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-circle.svg new file mode 100644 index 000000000..73c7e8d70 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-diamond-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-diamond-fill.svg new file mode 100644 index 000000000..5987fe724 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-diamond.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-diamond.svg new file mode 100644 index 000000000..6c0388bf0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-diamond.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-lg.svg new file mode 100644 index 000000000..b21e727fc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-octagon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-octagon-fill.svg new file mode 100644 index 000000000..3347f64c5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-octagon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-octagon.svg new file mode 100644 index 000000000..6ef1db9ff --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-octagon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-square-fill.svg new file mode 100644 index 000000000..e99eab8e6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-square.svg new file mode 100644 index 000000000..41436cb5a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-triangle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-triangle-fill.svg new file mode 100644 index 000000000..50e17525e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-triangle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-triangle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-triangle.svg new file mode 100644 index 000000000..7ca0dc745 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation-triangle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation.svg new file mode 100644 index 000000000..953004b39 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclamation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclude.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclude.svg new file mode 100644 index 000000000..9be5f93b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/exclude.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/explicit-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/explicit-fill.svg new file mode 100644 index 000000000..159d3654e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/explicit-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/explicit.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/explicit.svg new file mode 100644 index 000000000..22a0ef46e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/explicit.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-fill.svg new file mode 100644 index 000000000..2697206ca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-slash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-slash-fill.svg new file mode 100644 index 000000000..933926287 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-slash.svg new file mode 100644 index 000000000..c5208375a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye-slash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye.svg new file mode 100644 index 000000000..412ff6928 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eye.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eyedropper.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eyedropper.svg new file mode 100644 index 000000000..698d40ddb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eyedropper.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eyeglasses.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eyeglasses.svg new file mode 100644 index 000000000..020d94327 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/eyeglasses.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/facebook.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/facebook.svg new file mode 100644 index 000000000..e8d1443db --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/facebook.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fan.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fan.svg new file mode 100644 index 000000000..fab6eab8f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fan.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-btn-fill.svg new file mode 100644 index 000000000..9c9a1c6b7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-btn.svg new file mode 100644 index 000000000..a3d605c7f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-circle-fill.svg new file mode 100644 index 000000000..aa5c37bbb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-circle.svg new file mode 100644 index 000000000..2eceb91a3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-fill.svg new file mode 100644 index 000000000..329cad062 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward.svg new file mode 100644 index 000000000..10643600e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fast-forward.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-down-fill.svg new file mode 100644 index 000000000..910fc07e3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-down.svg new file mode 100644 index 000000000..6f75d5040 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-up-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-up-fill.svg new file mode 100644 index 000000000..9dba20517 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-up.svg new file mode 100644 index 000000000..223379e4d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-bar-graph-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-bar-graph-fill.svg new file mode 100644 index 000000000..a0e31d6c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-bar-graph-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-bar-graph.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-bar-graph.svg new file mode 100644 index 000000000..e66be6a9f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-bar-graph.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-binary-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-binary-fill.svg new file mode 100644 index 000000000..13343bfb7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-binary-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-binary.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-binary.svg new file mode 100644 index 000000000..7e667bcc2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-binary.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-break-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-break-fill.svg new file mode 100644 index 000000000..4eddc4a85 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-break-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-break.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-break.svg new file mode 100644 index 000000000..b4485d7fc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-break.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-check-fill.svg new file mode 100644 index 000000000..fb54b18c1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-check.svg new file mode 100644 index 000000000..142631140 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-code-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-code-fill.svg new file mode 100644 index 000000000..ee2f0f6a1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-code-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-code.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-code.svg new file mode 100644 index 000000000..a8c390b65 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-code.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-diff-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-diff-fill.svg new file mode 100644 index 000000000..945aef153 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-diff-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-diff.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-diff.svg new file mode 100644 index 000000000..dd848f04c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-diff.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-down-fill.svg new file mode 100644 index 000000000..0e960474a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-down.svg new file mode 100644 index 000000000..81cc43ab6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-up-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-up-fill.svg new file mode 100644 index 000000000..ce881cc89 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-up.svg new file mode 100644 index 000000000..6cf324ab2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-bar-graph-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-bar-graph-fill.svg new file mode 100644 index 000000000..7dc0df929 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-bar-graph-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-bar-graph.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-bar-graph.svg new file mode 100644 index 000000000..eefb68770 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-bar-graph.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-binary-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-binary-fill.svg new file mode 100644 index 000000000..1652562c8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-binary-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-binary.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-binary.svg new file mode 100644 index 000000000..e068bf6dd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-binary.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-break-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-break-fill.svg new file mode 100644 index 000000000..b36ea25af --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-break-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-break.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-break.svg new file mode 100644 index 000000000..e98c6470a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-break.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-check-fill.svg new file mode 100644 index 000000000..de7bf69d8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-check.svg new file mode 100644 index 000000000..f2fbf6657 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-code-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-code-fill.svg new file mode 100644 index 000000000..c23a7b6b2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-code-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-code.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-code.svg new file mode 100644 index 000000000..1b94a6aa4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-code.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-diff-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-diff-fill.svg new file mode 100644 index 000000000..5f18a8870 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-diff-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-diff.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-diff.svg new file mode 100644 index 000000000..0b28667e3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-diff.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-easel-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-easel-fill.svg new file mode 100644 index 000000000..0743de43c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-easel-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-easel.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-easel.svg new file mode 100644 index 000000000..045fc870f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-easel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-excel-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-excel-fill.svg new file mode 100644 index 000000000..2d492a8e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-excel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-excel.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-excel.svg new file mode 100644 index 000000000..c40f16b24 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-excel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-fill.svg new file mode 100644 index 000000000..668247e31 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-font-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-font-fill.svg new file mode 100644 index 000000000..c4fe9a455 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-font-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-font.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-font.svg new file mode 100644 index 000000000..f7aad0bb9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-font.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-image-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-image-fill.svg new file mode 100644 index 000000000..e568ee780 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-image-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-image.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-image.svg new file mode 100644 index 000000000..1e1964b43 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock-fill.svg new file mode 100644 index 000000000..18a7fb717 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock.svg new file mode 100644 index 000000000..b15ec6a65 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock2-fill.svg new file mode 100644 index 000000000..828a545a2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock2.svg new file mode 100644 index 000000000..cf76d3fab --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-lock2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-medical-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-medical-fill.svg new file mode 100644 index 000000000..ed5f6bc1e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-medical-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-medical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-medical.svg new file mode 100644 index 000000000..6fa8a39f3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-medical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-minus-fill.svg new file mode 100644 index 000000000..25e708ff1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-minus.svg new file mode 100644 index 000000000..e87b163c2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-music-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-music-fill.svg new file mode 100644 index 000000000..c64c79789 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-music-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-music.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-music.svg new file mode 100644 index 000000000..cc25eb99b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-music.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-pdf-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-pdf-fill.svg new file mode 100644 index 000000000..0ba21ab3f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-pdf-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-pdf.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-pdf.svg new file mode 100644 index 000000000..52da96fe4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-pdf.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-person-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-person-fill.svg new file mode 100644 index 000000000..29a81294a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-person.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-person.svg new file mode 100644 index 000000000..59a6a2a39 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-person.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-play-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-play-fill.svg new file mode 100644 index 000000000..80731db8a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-play.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-play.svg new file mode 100644 index 000000000..62042ab52 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-play.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-plus-fill.svg new file mode 100644 index 000000000..6cead3a48 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-plus.svg new file mode 100644 index 000000000..92840267f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-post-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-post-fill.svg new file mode 100644 index 000000000..0c0e7b87c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-post-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-post.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-post.svg new file mode 100644 index 000000000..1f0d4359f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-post.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ppt-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ppt-fill.svg new file mode 100644 index 000000000..68e97930f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ppt-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ppt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ppt.svg new file mode 100644 index 000000000..bedf55261 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ppt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-richtext-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-richtext-fill.svg new file mode 100644 index 000000000..e5c82ee75 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-richtext-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-richtext.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-richtext.svg new file mode 100644 index 000000000..35af14671 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-richtext.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ruled-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ruled-fill.svg new file mode 100644 index 000000000..43aecce83 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ruled-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ruled.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ruled.svg new file mode 100644 index 000000000..4f288581f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-ruled.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-slides-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-slides-fill.svg new file mode 100644 index 000000000..98b59df53 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-slides-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-slides.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-slides.svg new file mode 100644 index 000000000..2d97fa7f9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-slides.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-spreadsheet-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-spreadsheet-fill.svg new file mode 100644 index 000000000..9a71e732d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-spreadsheet-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-spreadsheet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-spreadsheet.svg new file mode 100644 index 000000000..a111232b0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-spreadsheet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-text-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-text-fill.svg new file mode 100644 index 000000000..b32991979 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-text.svg new file mode 100644 index 000000000..0d60c7957 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-word-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-word-fill.svg new file mode 100644 index 000000000..717b0497b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-word-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-word.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-word.svg new file mode 100644 index 000000000..7186b69ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-word.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-x-fill.svg new file mode 100644 index 000000000..a19d14b9c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-x.svg new file mode 100644 index 000000000..bedb970d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-zip-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-zip-fill.svg new file mode 100644 index 000000000..b92ff9a52 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-zip-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-zip.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-zip.svg new file mode 100644 index 000000000..b82afcc35 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark-zip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark.svg new file mode 100644 index 000000000..c3d086b9c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-earmark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-easel-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-easel-fill.svg new file mode 100644 index 000000000..e1122e5ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-easel-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-easel.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-easel.svg new file mode 100644 index 000000000..c6d6a4deb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-easel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-excel-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-excel-fill.svg new file mode 100644 index 000000000..350a7df8c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-excel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-excel.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-excel.svg new file mode 100644 index 000000000..0f43afe2a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-excel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-fill.svg new file mode 100644 index 000000000..a1f4de09a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-font-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-font-fill.svg new file mode 100644 index 000000000..198a2591d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-font-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-font.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-font.svg new file mode 100644 index 000000000..1d67f5e78 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-font.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-image-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-image-fill.svg new file mode 100644 index 000000000..f4e81abaa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-image-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-image.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-image.svg new file mode 100644 index 000000000..127fd8963 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock-fill.svg new file mode 100644 index 000000000..a14dafc13 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock.svg new file mode 100644 index 000000000..4206978a4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock2-fill.svg new file mode 100644 index 000000000..a68a5d42f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock2.svg new file mode 100644 index 000000000..134f7473d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-lock2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-medical-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-medical-fill.svg new file mode 100644 index 000000000..6caf0a323 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-medical-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-medical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-medical.svg new file mode 100644 index 000000000..afec18e97 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-medical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-minus-fill.svg new file mode 100644 index 000000000..85d99997a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-minus.svg new file mode 100644 index 000000000..67a45381d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-music-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-music-fill.svg new file mode 100644 index 000000000..c7dfa82f4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-music-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-music.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-music.svg new file mode 100644 index 000000000..6531a959c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-music.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-pdf-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-pdf-fill.svg new file mode 100644 index 000000000..87543f552 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-pdf-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-pdf.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-pdf.svg new file mode 100644 index 000000000..e8ba0a157 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-pdf.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-person-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-person-fill.svg new file mode 100644 index 000000000..d7e05e401 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-person.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-person.svg new file mode 100644 index 000000000..892800ad9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-person.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-play-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-play-fill.svg new file mode 100644 index 000000000..838dda9ef --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-play.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-play.svg new file mode 100644 index 000000000..fef9adf45 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-play.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-plus-fill.svg new file mode 100644 index 000000000..1730c276e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-plus.svg new file mode 100644 index 000000000..d0ef464ac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-post-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-post-fill.svg new file mode 100644 index 000000000..c3fc7e05b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-post-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-post.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-post.svg new file mode 100644 index 000000000..dd8aefc20 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-post.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ppt-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ppt-fill.svg new file mode 100644 index 000000000..3d3ac35b1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ppt-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ppt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ppt.svg new file mode 100644 index 000000000..0100d0b24 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ppt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-richtext-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-richtext-fill.svg new file mode 100644 index 000000000..64c1fc832 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-richtext-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-richtext.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-richtext.svg new file mode 100644 index 000000000..22edf68c1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-richtext.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ruled-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ruled-fill.svg new file mode 100644 index 000000000..f93c25577 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ruled-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ruled.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ruled.svg new file mode 100644 index 000000000..431b4eb55 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-ruled.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-slides-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-slides-fill.svg new file mode 100644 index 000000000..e8cb12ad1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-slides-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-slides.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-slides.svg new file mode 100644 index 000000000..df3f65d98 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-slides.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-spreadsheet-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-spreadsheet-fill.svg new file mode 100644 index 000000000..a3977e189 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-spreadsheet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-spreadsheet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-spreadsheet.svg new file mode 100644 index 000000000..e83e73350 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-spreadsheet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-text-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-text-fill.svg new file mode 100644 index 000000000..29c9fc471 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-text.svg new file mode 100644 index 000000000..fa1e86118 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-word-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-word-fill.svg new file mode 100644 index 000000000..2df1fca25 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-word-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-word.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-word.svg new file mode 100644 index 000000000..61a96c238 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-word.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-x-fill.svg new file mode 100644 index 000000000..980e40528 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-x.svg new file mode 100644 index 000000000..1fe66e61a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-zip-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-zip-fill.svg new file mode 100644 index 000000000..95d3966fb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-zip-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-zip.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-zip.svg new file mode 100644 index 000000000..3da93c8ce --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file-zip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file.svg new file mode 100644 index 000000000..3562fb2b2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/file.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/files-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/files-alt.svg new file mode 100644 index 000000000..1d4d06931 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/files-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/files.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/files.svg new file mode 100644 index 000000000..f8842f89b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/files.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-aac.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-aac.svg new file mode 100644 index 000000000..8a2d02ace --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-aac.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ai.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ai.svg new file mode 100644 index 000000000..23e2ebc70 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ai.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-bmp.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-bmp.svg new file mode 100644 index 000000000..acf902f7d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-bmp.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-cs.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-cs.svg new file mode 100644 index 000000000..fb76aecbd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-cs.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-css.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-css.svg new file mode 100644 index 000000000..da12ac651 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-css.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-csv.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-csv.svg new file mode 100644 index 000000000..efda95c3b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-csv.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-doc.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-doc.svg new file mode 100644 index 000000000..14fb54453 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-doc.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-docx.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-docx.svg new file mode 100644 index 000000000..29a54ffec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-docx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-exe.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-exe.svg new file mode 100644 index 000000000..2c4bea4dc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-exe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-gif.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-gif.svg new file mode 100644 index 000000000..6b016d854 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-gif.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-heic.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-heic.svg new file mode 100644 index 000000000..dcdb6f1f0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-heic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-html.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-html.svg new file mode 100644 index 000000000..35d721856 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-html.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-java.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-java.svg new file mode 100644 index 000000000..c9dc543c8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-java.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-jpg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-jpg.svg new file mode 100644 index 000000000..5e4ae64c1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-jpg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-js.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-js.svg new file mode 100644 index 000000000..8b198bfcd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-js.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-json.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-json.svg new file mode 100644 index 000000000..2b9d988f8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-json.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-jsx.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-jsx.svg new file mode 100644 index 000000000..c23ba4c33 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-jsx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-key.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-key.svg new file mode 100644 index 000000000..5b980500e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-key.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-m4p.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-m4p.svg new file mode 100644 index 000000000..a10dc24ab --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-m4p.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-md.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-md.svg new file mode 100644 index 000000000..ca5cd597d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-md.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mdx.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mdx.svg new file mode 100644 index 000000000..e8774d2e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mdx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mov.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mov.svg new file mode 100644 index 000000000..9f05d6378 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mov.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mp3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mp3.svg new file mode 100644 index 000000000..017035126 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mp3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mp4.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mp4.svg new file mode 100644 index 000000000..997c427a7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-mp4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-otf.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-otf.svg new file mode 100644 index 000000000..44d0c8eee --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-otf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-pdf.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-pdf.svg new file mode 100644 index 000000000..e1fc9b698 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-pdf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-php.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-php.svg new file mode 100644 index 000000000..422cc2df9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-php.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-png.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-png.svg new file mode 100644 index 000000000..f719344ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-png.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ppt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ppt.svg new file mode 100644 index 000000000..cfaaf1b17 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ppt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-pptx.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-pptx.svg new file mode 100644 index 000000000..88ef36906 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-pptx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-psd.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-psd.svg new file mode 100644 index 000000000..cfcb13b08 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-psd.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-py.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-py.svg new file mode 100644 index 000000000..654df7050 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-py.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-raw.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-raw.svg new file mode 100644 index 000000000..fdbeefcca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-raw.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-rb.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-rb.svg new file mode 100644 index 000000000..e3387b4f9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-rb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sass.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sass.svg new file mode 100644 index 000000000..5ff5ae5bd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sass.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-scss.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-scss.svg new file mode 100644 index 000000000..68f195afa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-scss.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sh.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sh.svg new file mode 100644 index 000000000..200fae418 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sh.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sql.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sql.svg new file mode 100644 index 000000000..b523b3760 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-sql.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-svg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-svg.svg new file mode 100644 index 000000000..ea1264c76 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-svg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-tiff.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-tiff.svg new file mode 100644 index 000000000..d6f9e9be5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-tiff.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-tsx.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-tsx.svg new file mode 100644 index 000000000..cef1dc4ff --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-tsx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ttf.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ttf.svg new file mode 100644 index 000000000..549d4df1d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-ttf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-txt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-txt.svg new file mode 100644 index 000000000..6fae02a04 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-txt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-wav.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-wav.svg new file mode 100644 index 000000000..bd226e8ef --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-wav.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-woff.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-woff.svg new file mode 100644 index 000000000..d8ec58255 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-woff.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xls.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xls.svg new file mode 100644 index 000000000..9c266cdc2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xls.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xlsx.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xlsx.svg new file mode 100644 index 000000000..a1aa80243 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xlsx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xml.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xml.svg new file mode 100644 index 000000000..d82264553 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-xml.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-yml.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-yml.svg new file mode 100644 index 000000000..e8bf63d22 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filetype-yml.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/film.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/film.svg new file mode 100644 index 000000000..5cef9395b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/film.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-circle-fill.svg new file mode 100644 index 000000000..f60fd59f9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-circle.svg new file mode 100644 index 000000000..bbdc85f86 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-left.svg new file mode 100644 index 000000000..22441de5e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-right.svg new file mode 100644 index 000000000..466a9b1c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-square-fill.svg new file mode 100644 index 000000000..f8813b8c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-square.svg new file mode 100644 index 000000000..ae8c837f9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter.svg new file mode 100644 index 000000000..555c61259 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/filter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fingerprint.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fingerprint.svg new file mode 100644 index 000000000..3cf204231 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fingerprint.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fire.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fire.svg new file mode 100644 index 000000000..f702837cc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fire.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flag-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flag-fill.svg new file mode 100644 index 000000000..73fffc250 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flag.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flag.svg new file mode 100644 index 000000000..357c48136 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flag.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower1.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower1.svg new file mode 100644 index 000000000..08a7e2e68 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower2.svg new file mode 100644 index 000000000..d793728b3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower3.svg new file mode 100644 index 000000000..147e32fcf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/flower3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-check.svg new file mode 100644 index 000000000..d59955499 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-fill.svg new file mode 100644 index 000000000..fd10c8e6c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-minus.svg new file mode 100644 index 000000000..f41b6601b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-plus.svg new file mode 100644 index 000000000..29b5115ac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-symlink-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-symlink-fill.svg new file mode 100644 index 000000000..91dc0c015 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-symlink-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-symlink.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-symlink.svg new file mode 100644 index 000000000..b258b6aa0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-symlink.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-x.svg new file mode 100644 index 000000000..d571d0854 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder.svg new file mode 100644 index 000000000..fd4dc5aa7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder2-open.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder2-open.svg new file mode 100644 index 000000000..59d8382f4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder2-open.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder2.svg new file mode 100644 index 000000000..414575325 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/folder2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fonts.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fonts.svg new file mode 100644 index 000000000..3afc7d2ea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fonts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/forward-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/forward-fill.svg new file mode 100644 index 000000000..7f2839b29 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/forward.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/forward.svg new file mode 100644 index 000000000..4b856141f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/front.svg new file mode 100644 index 000000000..d1edeb1f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-diesel-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-diesel-fill.svg new file mode 100644 index 000000000..824913cd2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-diesel-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-diesel.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-diesel.svg new file mode 100644 index 000000000..ad24a929b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-diesel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-fill.svg new file mode 100644 index 000000000..515452311 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump.svg new file mode 100644 index 000000000..f4742f5b3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fuel-pump.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fullscreen-exit.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fullscreen-exit.svg new file mode 100644 index 000000000..b9bdb1b16 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fullscreen-exit.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fullscreen.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fullscreen.svg new file mode 100644 index 000000000..7789d36bd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/fullscreen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/funnel-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/funnel-fill.svg new file mode 100644 index 000000000..5f16f16ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/funnel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/funnel.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/funnel.svg new file mode 100644 index 000000000..d027aa5cb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/funnel.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-fill.svg new file mode 100644 index 000000000..2aa36a1d5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-wide-connected.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-wide-connected.svg new file mode 100644 index 000000000..fc196dd70 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-wide-connected.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-wide.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-wide.svg new file mode 100644 index 000000000..83194ce45 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear-wide.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear.svg new file mode 100644 index 000000000..c11dbc1db --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gem.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gem.svg new file mode 100644 index 000000000..360d55499 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gem.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-ambiguous.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-ambiguous.svg new file mode 100644 index 000000000..2ffaf112e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-ambiguous.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-female.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-female.svg new file mode 100644 index 000000000..102783cca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-female.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-male.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-male.svg new file mode 100644 index 000000000..b0aee1d18 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-male.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-trans.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-trans.svg new file mode 100644 index 000000000..4c4c074a6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gender-trans.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-alt-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-alt-fill.svg new file mode 100644 index 000000000..e88b77b6b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-alt-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-alt.svg new file mode 100644 index 000000000..40927941a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-fill.svg new file mode 100644 index 000000000..a53f2bdf7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo.svg new file mode 100644 index 000000000..6686fea98 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/geo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gift-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gift-fill.svg new file mode 100644 index 000000000..69f337939 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gift-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gift.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gift.svg new file mode 100644 index 000000000..663b87e30 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gift.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/git.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/git.svg new file mode 100644 index 000000000..092d23e98 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/git.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/github.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/github.svg new file mode 100644 index 000000000..bb4e45cec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/github.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-americas.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-americas.svg new file mode 100644 index 000000000..f66f5feaf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-americas.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-asia-australia.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-asia-australia.svg new file mode 100644 index 000000000..e4715f1ef --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-asia-australia.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-central-south-asia.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-central-south-asia.svg new file mode 100644 index 000000000..d4699d2e3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-central-south-asia.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-europe-africa.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-europe-africa.svg new file mode 100644 index 000000000..3bd6c49ee --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe-europe-africa.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe.svg new file mode 100644 index 000000000..96cf81571 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe2.svg new file mode 100644 index 000000000..150a01ebf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/globe2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/google-play.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/google-play.svg new file mode 100644 index 000000000..a970e9a0e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/google-play.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/google.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/google.svg new file mode 100644 index 000000000..47abd4929 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/google.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gpu-card.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gpu-card.svg new file mode 100644 index 000000000..b75ddcee7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/gpu-card.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-down-arrow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-down-arrow.svg new file mode 100644 index 000000000..bf522b566 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-down-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-down.svg new file mode 100644 index 000000000..55adb4f24 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-up-arrow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-up-arrow.svg new file mode 100644 index 000000000..fd582e467 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-up-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-up.svg new file mode 100644 index 000000000..a68bc9db1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/graph-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-1x2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-1x2-fill.svg new file mode 100644 index 000000000..119511763 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-1x2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-1x2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-1x2.svg new file mode 100644 index 000000000..dd36f54c8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-1x2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2-gap-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2-gap-fill.svg new file mode 100644 index 000000000..4fe82884c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2-gap-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2-gap.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2-gap.svg new file mode 100644 index 000000000..a9e8689d3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2.svg new file mode 100644 index 000000000..6dd39fde8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3-gap-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3-gap-fill.svg new file mode 100644 index 000000000..d29616c75 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3-gap-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3-gap.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3-gap.svg new file mode 100644 index 000000000..675f4288c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3.svg new file mode 100644 index 000000000..c40d98c96 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-3x3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-fill.svg new file mode 100644 index 000000000..202265ff8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid.svg new file mode 100644 index 000000000..bc505957f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grip-horizontal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grip-horizontal.svg new file mode 100644 index 000000000..c4439afec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grip-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grip-vertical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grip-vertical.svg new file mode 100644 index 000000000..0182ad918 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/grip-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-circle-fill.svg new file mode 100644 index 000000000..6a7073605 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-circle.svg new file mode 100644 index 000000000..6579c1f85 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-square-fill.svg new file mode 100644 index 000000000..51d11d119 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-square.svg new file mode 100644 index 000000000..2eac5d72b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/h-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hammer.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hammer.svg new file mode 100644 index 000000000..d702c1156 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hammer.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-fill.svg new file mode 100644 index 000000000..ef94089fb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-thumb-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-thumb-fill.svg new file mode 100644 index 000000000..43e958c92 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-thumb-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-thumb.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-thumb.svg new file mode 100644 index 000000000..699e5057b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index-thumb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index.svg new file mode 100644 index 000000000..789622c82 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-index.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-down-fill.svg new file mode 100644 index 000000000..c2f51ebab --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-down.svg new file mode 100644 index 000000000..e8dadb5ba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-up-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-up-fill.svg new file mode 100644 index 000000000..e7216e196 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-up.svg new file mode 100644 index 000000000..0d410a161 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hand-thumbs-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/handbag-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/handbag-fill.svg new file mode 100644 index 000000000..5d4367c79 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/handbag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/handbag.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/handbag.svg new file mode 100644 index 000000000..99e5904d0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/handbag.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hash.svg new file mode 100644 index 000000000..4621b1dac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-fill.svg new file mode 100644 index 000000000..9bdc467e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-network-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-network-fill.svg new file mode 100644 index 000000000..403d47230 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-network-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-network.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-network.svg new file mode 100644 index 000000000..f0db30504 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-network.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-rack-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-rack-fill.svg new file mode 100644 index 000000000..bb450781f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-rack-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-rack.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-rack.svg new file mode 100644 index 000000000..480d0d90b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-rack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-stack-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-stack-fill.svg new file mode 100644 index 000000000..c81687ab9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-stack-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-stack.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-stack.svg new file mode 100644 index 000000000..2f74d3b06 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd-stack.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd.svg new file mode 100644 index 000000000..7dd670038 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdd.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdmi-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdmi-fill.svg new file mode 100644 index 000000000..9b52d61e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdmi-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdmi.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdmi.svg new file mode 100644 index 000000000..b8a4b416f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hdmi.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headphones.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headphones.svg new file mode 100644 index 000000000..c2c1d6fe1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headphones.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headset-vr.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headset-vr.svg new file mode 100644 index 000000000..9f07b76ca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headset-vr.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headset.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headset.svg new file mode 100644 index 000000000..536997442 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/headset.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-arrow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-arrow.svg new file mode 100644 index 000000000..0407ed6e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-fill.svg new file mode 100644 index 000000000..4026252e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-half.svg new file mode 100644 index 000000000..1474a7251 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-pulse-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-pulse-fill.svg new file mode 100644 index 000000000..278e9e284 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-pulse-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-pulse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-pulse.svg new file mode 100644 index 000000000..bddedceba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart-pulse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart.svg new file mode 100644 index 000000000..d650006d8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heartbreak-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heartbreak-fill.svg new file mode 100644 index 000000000..9c3103910 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heartbreak-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heartbreak.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heartbreak.svg new file mode 100644 index 000000000..b59b4c68d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heartbreak.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hearts.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hearts.svg new file mode 100644 index 000000000..c1c52e418 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hearts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon-fill.svg new file mode 100644 index 000000000..ad8e05864 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon-half.svg new file mode 100644 index 000000000..5753b6287 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon.svg new file mode 100644 index 000000000..e85a0bd38 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/heptagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon-fill.svg new file mode 100644 index 000000000..afd7870eb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon-half.svg new file mode 100644 index 000000000..a9fc13683 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon.svg new file mode 100644 index 000000000..f6601f2ba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hexagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hospital-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hospital-fill.svg new file mode 100644 index 000000000..a93213326 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hospital-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hospital.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hospital.svg new file mode 100644 index 000000000..5168a2992 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hospital.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-bottom.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-bottom.svg new file mode 100644 index 000000000..8ce8394ad --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-bottom.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-split.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-split.svg new file mode 100644 index 000000000..b8bba9b66 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-split.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-top.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-top.svg new file mode 100644 index 000000000..f471084de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass-top.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass.svg new file mode 100644 index 000000000..cecfa7e60 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hourglass.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-add-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-add-fill.svg new file mode 100644 index 000000000..e4733b5fd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-add-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-add.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-add.svg new file mode 100644 index 000000000..2964397cb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-check-fill.svg new file mode 100644 index 000000000..75463428d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-check-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-check.svg new file mode 100644 index 000000000..a30080a9e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-dash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-dash-fill.svg new file mode 100644 index 000000000..5465ef46e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-dash-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-dash.svg new file mode 100644 index 000000000..fa6fb26bc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-door-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-door-fill.svg new file mode 100644 index 000000000..ff9f4dbd2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-door-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-door.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-door.svg new file mode 100644 index 000000000..c883f3487 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-door.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-down-fill.svg new file mode 100644 index 000000000..d3bf68f0e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-down-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-down.svg new file mode 100644 index 000000000..6de3d7967 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-exclamation-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-exclamation-fill.svg new file mode 100644 index 000000000..743373834 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-exclamation-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-exclamation.svg new file mode 100644 index 000000000..301d9818b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-fill.svg new file mode 100644 index 000000000..e782589df --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-gear-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-gear-fill.svg new file mode 100644 index 000000000..001ea96aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-gear-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-gear.svg new file mode 100644 index 000000000..c7f9d4308 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-heart-fill.svg new file mode 100644 index 000000000..6d874fc1e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-heart.svg new file mode 100644 index 000000000..26b239529 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-lock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-lock-fill.svg new file mode 100644 index 000000000..842b91439 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-lock-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-lock.svg new file mode 100644 index 000000000..e6eb9681d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-slash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-slash-fill.svg new file mode 100644 index 000000000..20ea07b98 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-slash-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-slash.svg new file mode 100644 index 000000000..3e1cb66bf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-up-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-up-fill.svg new file mode 100644 index 000000000..3e6713e7b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-up-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-up.svg new file mode 100644 index 000000000..0a8deb315 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-x-fill.svg new file mode 100644 index 000000000..00483c40b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-x-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-x.svg new file mode 100644 index 000000000..88b2825ba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house.svg new file mode 100644 index 000000000..7baa23d29 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/house.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/houses-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/houses-fill.svg new file mode 100644 index 000000000..30a72d88c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/houses-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/houses.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/houses.svg new file mode 100644 index 000000000..d66b4da34 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/houses.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hr.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hr.svg new file mode 100644 index 000000000..b6f2e3378 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hr.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hurricane.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hurricane.svg new file mode 100644 index 000000000..e21aaec5d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hurricane.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hypnotize.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hypnotize.svg new file mode 100644 index 000000000..baa2298d0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/hypnotize.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image-alt.svg new file mode 100644 index 000000000..98142b22d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image-fill.svg new file mode 100644 index 000000000..33c40a13a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image.svg new file mode 100644 index 000000000..facacee61 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/images.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/images.svg new file mode 100644 index 000000000..b35ecebcb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/images.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inbox-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inbox-fill.svg new file mode 100644 index 000000000..bf5c8c912 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inbox-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inbox.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inbox.svg new file mode 100644 index 000000000..59ad2d777 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inbox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inboxes-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inboxes-fill.svg new file mode 100644 index 000000000..27447dc33 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inboxes-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inboxes.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inboxes.svg new file mode 100644 index 000000000..f23f0ec5e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/inboxes.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/incognito.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/incognito.svg new file mode 100644 index 000000000..fc9f6dced --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/incognito.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/indent.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/indent.svg new file mode 100644 index 000000000..025acef29 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/indent.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/infinity.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/infinity.svg new file mode 100644 index 000000000..e9dd437b9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/infinity.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-circle-fill.svg new file mode 100644 index 000000000..9d38231fc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-circle.svg new file mode 100644 index 000000000..8f48f86cb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-lg.svg new file mode 100644 index 000000000..d1b988e0e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-square-fill.svg new file mode 100644 index 000000000..c2e5a6636 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-square.svg new file mode 100644 index 000000000..71e2818f5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info.svg new file mode 100644 index 000000000..9d061b4d8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/info.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/input-cursor-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/input-cursor-text.svg new file mode 100644 index 000000000..f2121113b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/input-cursor-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/input-cursor.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/input-cursor.svg new file mode 100644 index 000000000..3a89bb7ee --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/input-cursor.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/instagram.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/instagram.svg new file mode 100644 index 000000000..0b5c5cef0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/instagram.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/intersect.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/intersect.svg new file mode 100644 index 000000000..2d8c32951 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/intersect.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-album.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-album.svg new file mode 100644 index 000000000..2504b3d43 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-album.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-arrow-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-arrow-down.svg new file mode 100644 index 000000000..79c313d8d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-arrow-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-arrow-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-arrow-up.svg new file mode 100644 index 000000000..84234612a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-arrow-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-bookmark-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-bookmark-fill.svg new file mode 100644 index 000000000..03e247667 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-bookmark-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-bookmark.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-bookmark.svg new file mode 100644 index 000000000..665276438 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-bookmark.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-check.svg new file mode 100644 index 000000000..41b97e94d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-code.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-code.svg new file mode 100644 index 000000000..82098b9c2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-code.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-medical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-medical.svg new file mode 100644 index 000000000..5500110ab --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-medical.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-minus.svg new file mode 100644 index 000000000..c8cd4d844 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-plus.svg new file mode 100644 index 000000000..fa6d7026c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-richtext.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-richtext.svg new file mode 100644 index 000000000..14b0e1f00 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-richtext.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-text.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-text.svg new file mode 100644 index 000000000..9b66f43aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-text.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-x.svg new file mode 100644 index 000000000..2ca24f46e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal.svg new file mode 100644 index 000000000..941c98783 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journals.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journals.svg new file mode 100644 index 000000000..03f6dad8f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/journals.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/joystick.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/joystick.svg new file mode 100644 index 000000000..a8a902743 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/joystick.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify-left.svg new file mode 100644 index 000000000..68859b8ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify-right.svg new file mode 100644 index 000000000..1efe4f389 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify.svg new file mode 100644 index 000000000..009bd7214 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/justify.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/kanban-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/kanban-fill.svg new file mode 100644 index 000000000..d633a5383 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/kanban-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/kanban.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/kanban.svg new file mode 100644 index 000000000..c5cdaaf55 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/kanban.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/key-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/key-fill.svg new file mode 100644 index 000000000..25a6d45a6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/key-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/key.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/key.svg new file mode 100644 index 000000000..dbaae3fad --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/key.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/keyboard-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/keyboard-fill.svg new file mode 100644 index 000000000..876321d24 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/keyboard-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/keyboard.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/keyboard.svg new file mode 100644 index 000000000..996c1ebab --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/keyboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ladder.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ladder.svg new file mode 100644 index 000000000..fd9182ab0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ladder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lamp-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lamp-fill.svg new file mode 100644 index 000000000..ff91f4ba3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lamp-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lamp.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lamp.svg new file mode 100644 index 000000000..6c50a70c2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lamp.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/laptop-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/laptop-fill.svg new file mode 100644 index 000000000..5b1755dac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/laptop-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/laptop.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/laptop.svg new file mode 100644 index 000000000..0fc463deb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/laptop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layer-backward.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layer-backward.svg new file mode 100644 index 000000000..073034ac2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layer-backward.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layer-forward.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layer-forward.svg new file mode 100644 index 000000000..ffc6e2aac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layer-forward.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers-fill.svg new file mode 100644 index 000000000..8af0b1cfb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers-half.svg new file mode 100644 index 000000000..a054e25a0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers.svg new file mode 100644 index 000000000..ac2f5b297 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layers.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-inset-reverse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-inset-reverse.svg new file mode 100644 index 000000000..5b6f32460 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-inset-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-inset.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-inset.svg new file mode 100644 index 000000000..8dc0243ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-inset.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-reverse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-reverse.svg new file mode 100644 index 000000000..8ab950907 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar-reverse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar.svg new file mode 100644 index 000000000..1cfc86e1c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-sidebar.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-split.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-split.svg new file mode 100644 index 000000000..71f33d2e7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-split.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-sidebar-reverse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-sidebar-reverse.svg new file mode 100644 index 000000000..46252d574 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-sidebar-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-sidebar.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-sidebar.svg new file mode 100644 index 000000000..5effada29 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-sidebar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-window-reverse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-window-reverse.svg new file mode 100644 index 000000000..fb3484090 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-window-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-window.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-window.svg new file mode 100644 index 000000000..0aef11070 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-text-window.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-three-columns.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-three-columns.svg new file mode 100644 index 000000000..6d358d6d5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-three-columns.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-wtf.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-wtf.svg new file mode 100644 index 000000000..b603f8f3f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/layout-wtf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/life-preserver.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/life-preserver.svg new file mode 100644 index 000000000..6466ea24b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/life-preserver.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-fill.svg new file mode 100644 index 000000000..99039504b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-off-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-off-fill.svg new file mode 100644 index 000000000..7d9600e48 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-off-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-off.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-off.svg new file mode 100644 index 000000000..5675e9c55 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb.svg new file mode 100644 index 000000000..c13f62783 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightbulb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-charge-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-charge-fill.svg new file mode 100644 index 000000000..5e197fb54 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-charge-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-charge.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-charge.svg new file mode 100644 index 000000000..8a97432e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-charge.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-fill.svg new file mode 100644 index 000000000..4d05a2b83 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning.svg new file mode 100644 index 000000000..873706082 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lightning.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/line.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/line.svg new file mode 100644 index 000000000..bedc051be --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/line.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/link-45deg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/link-45deg.svg new file mode 100644 index 000000000..127956a47 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/link-45deg.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/link.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/link.svg new file mode 100644 index 000000000..df35bc8a1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/link.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/linkedin.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/linkedin.svg new file mode 100644 index 000000000..4c4efe595 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/linkedin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-check.svg new file mode 100644 index 000000000..34dd42068 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-columns-reverse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-columns-reverse.svg new file mode 100644 index 000000000..2cb507860 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-columns-reverse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-columns.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-columns.svg new file mode 100644 index 000000000..d04a30f33 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-columns.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-nested.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-nested.svg new file mode 100644 index 000000000..21c9a7d24 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-nested.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-ol.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-ol.svg new file mode 100644 index 000000000..5782568d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-ol.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-stars.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-stars.svg new file mode 100644 index 000000000..88dce521b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-stars.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-task.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-task.svg new file mode 100644 index 000000000..81181905c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-task.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-ul.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-ul.svg new file mode 100644 index 000000000..217d1539c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list-ul.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list.svg new file mode 100644 index 000000000..e039056ea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/list.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lock-fill.svg new file mode 100644 index 000000000..9fb8f7b80 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lock.svg new file mode 100644 index 000000000..b50a68ef1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lungs-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lungs-fill.svg new file mode 100644 index 000000000..430b0282d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lungs-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lungs.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lungs.svg new file mode 100644 index 000000000..53708525c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/lungs.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magic.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magic.svg new file mode 100644 index 000000000..3df2ec0b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magnet-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magnet-fill.svg new file mode 100644 index 000000000..9ca186521 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magnet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magnet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magnet.svg new file mode 100644 index 000000000..aab17635d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/magnet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mailbox.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mailbox.svg new file mode 100644 index 000000000..e2ac2f978 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mailbox.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mailbox2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mailbox2.svg new file mode 100644 index 000000000..60a523bba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mailbox2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/map-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/map-fill.svg new file mode 100644 index 000000000..6097c5f41 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/map-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/map.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/map.svg new file mode 100644 index 000000000..f9dbb0846 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/map.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/markdown-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/markdown-fill.svg new file mode 100644 index 000000000..b87e236c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/markdown-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/markdown.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/markdown.svg new file mode 100644 index 000000000..f9933a603 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/markdown.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mask.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mask.svg new file mode 100644 index 000000000..3bfe141c5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mask.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mastodon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mastodon.svg new file mode 100644 index 000000000..23b34f5c0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mastodon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/medium.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/medium.svg new file mode 100644 index 000000000..cc4687653 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/medium.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/megaphone-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/megaphone-fill.svg new file mode 100644 index 000000000..237e81467 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/megaphone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/megaphone.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/megaphone.svg new file mode 100644 index 000000000..834083c19 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/megaphone.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/memory.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/memory.svg new file mode 100644 index 000000000..cdc2943f7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/memory.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-app-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-app-fill.svg new file mode 100644 index 000000000..c41c6fbf8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-app-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-app.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-app.svg new file mode 100644 index 000000000..36e57dfa1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-app.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-fill.svg new file mode 100644 index 000000000..034b64d73 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-wide-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-wide-fill.svg new file mode 100644 index 000000000..d6e17da08 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-wide-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-wide.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-wide.svg new file mode 100644 index 000000000..d67ba6a23 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button-wide.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button.svg new file mode 100644 index 000000000..4e0fff930 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-button.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-down.svg new file mode 100644 index 000000000..b2d84b24e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-up.svg new file mode 100644 index 000000000..fb35e8db7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/menu-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/messenger.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/messenger.svg new file mode 100644 index 000000000..5c6d37d4b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/messenger.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/meta.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/meta.svg new file mode 100644 index 000000000..2c6885d7a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/meta.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-fill.svg new file mode 100644 index 000000000..9be58e9d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-mute-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-mute-fill.svg new file mode 100644 index 000000000..cc325a0ce --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-mute-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-mute.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-mute.svg new file mode 100644 index 000000000..5a520a12f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic-mute.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic.svg new file mode 100644 index 000000000..57be2e560 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mic.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/microsoft-teams.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/microsoft-teams.svg new file mode 100644 index 000000000..e0cc253e5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/microsoft-teams.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/microsoft.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/microsoft.svg new file mode 100644 index 000000000..d28281f1c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/microsoft.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/minecart-loaded.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/minecart-loaded.svg new file mode 100644 index 000000000..8a754571f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/minecart-loaded.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/minecart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/minecart.svg new file mode 100644 index 000000000..7f3ad000c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/minecart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/modem-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/modem-fill.svg new file mode 100644 index 000000000..1fe97bef5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/modem-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/modem.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/modem.svg new file mode 100644 index 000000000..873090dd8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/modem.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moisture.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moisture.svg new file mode 100644 index 000000000..732f4ac2a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moisture.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-fill.svg new file mode 100644 index 000000000..1149676d2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-stars-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-stars-fill.svg new file mode 100644 index 000000000..d2e1d6ed5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-stars-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-stars.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-stars.svg new file mode 100644 index 000000000..b25ef8632 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon-stars.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon.svg new file mode 100644 index 000000000..4cd882028 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/moon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mortarboard-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mortarboard-fill.svg new file mode 100644 index 000000000..7f5fb4842 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mortarboard-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mortarboard.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mortarboard.svg new file mode 100644 index 000000000..ed82b6aa8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mortarboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/motherboard-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/motherboard-fill.svg new file mode 100644 index 000000000..bf15e965b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/motherboard-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/motherboard.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/motherboard.svg new file mode 100644 index 000000000..ed13d0c1a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/motherboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse-fill.svg new file mode 100644 index 000000000..bd0b5eb4d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse.svg new file mode 100644 index 000000000..40976e061 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse2-fill.svg new file mode 100644 index 000000000..283d1cde3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse2.svg new file mode 100644 index 000000000..359da4d39 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse3-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse3-fill.svg new file mode 100644 index 000000000..de6dbc7a1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse3.svg new file mode 100644 index 000000000..d042bfd3a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/mouse3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note-beamed.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note-beamed.svg new file mode 100644 index 000000000..04cedf09d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note-beamed.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note-list.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note-list.svg new file mode 100644 index 000000000..5c306bd8f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note-list.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note.svg new file mode 100644 index 000000000..1125a6627 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-note.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-player-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-player-fill.svg new file mode 100644 index 000000000..6619d1e7a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-player-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-player.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-player.svg new file mode 100644 index 000000000..2d50a6353 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/music-player.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/newspaper.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/newspaper.svg new file mode 100644 index 000000000..7d7fa7169 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/newspaper.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nintendo-switch.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nintendo-switch.svg new file mode 100644 index 000000000..0f1e2ac64 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nintendo-switch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-minus-fill.svg new file mode 100644 index 000000000..32430b925 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-minus.svg new file mode 100644 index 000000000..b1accd4af --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-plus-fill.svg new file mode 100644 index 000000000..e5ee855c2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-plus.svg new file mode 100644 index 000000000..085f04fe6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/node-plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nut-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nut-fill.svg new file mode 100644 index 000000000..4babc0339 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nut-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nut.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nut.svg new file mode 100644 index 000000000..4912d489d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nut.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nvidia.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nvidia.svg new file mode 100644 index 000000000..649204656 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/nvidia.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon-fill.svg new file mode 100644 index 000000000..c1283178d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon-half.svg new file mode 100644 index 000000000..d95240ac5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon.svg new file mode 100644 index 000000000..9f3657ed9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/octagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/optical-audio-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/optical-audio-fill.svg new file mode 100644 index 000000000..5bdfd8227 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/optical-audio-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/optical-audio.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/optical-audio.svg new file mode 100644 index 000000000..7a38b83e7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/optical-audio.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/option.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/option.svg new file mode 100644 index 000000000..d7702b107 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/option.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/outlet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/outlet.svg new file mode 100644 index 000000000..b48af60de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/outlet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-circle-fill.svg new file mode 100644 index 000000000..ea54307fc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-circle.svg new file mode 100644 index 000000000..888a1fad1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-square-fill.svg new file mode 100644 index 000000000..ad3caa203 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-square.svg new file mode 100644 index 000000000..ad630d047 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/p-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paint-bucket.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paint-bucket.svg new file mode 100644 index 000000000..ee15d10f5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paint-bucket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette-fill.svg new file mode 100644 index 000000000..7dc5ecda5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette.svg new file mode 100644 index 000000000..fea76d92d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette2.svg new file mode 100644 index 000000000..5d140b31d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/palette2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paperclip.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paperclip.svg new file mode 100644 index 000000000..00f311d60 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paperclip.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paragraph.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paragraph.svg new file mode 100644 index 000000000..999cb5327 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paragraph.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pass-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pass-fill.svg new file mode 100644 index 000000000..a5715df48 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pass-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pass.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pass.svg new file mode 100644 index 000000000..3f51eb5df --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pass.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-check-fill.svg new file mode 100644 index 000000000..13014151d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-check.svg new file mode 100644 index 000000000..2dd799ee1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-exclamation-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-exclamation-fill.svg new file mode 100644 index 000000000..fd900c4e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-exclamation-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-exclamation.svg new file mode 100644 index 000000000..153d97dda --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-minus-fill.svg new file mode 100644 index 000000000..12f35c23b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-minus.svg new file mode 100644 index 000000000..f6024f979 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-plus-fill.svg new file mode 100644 index 000000000..1a79d799e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-plus.svg new file mode 100644 index 000000000..b9a78461b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-question-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-question-fill.svg new file mode 100644 index 000000000..665588b3c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-question-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-question.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-question.svg new file mode 100644 index 000000000..ef4ca58e5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/patch-question.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-btn-fill.svg new file mode 100644 index 000000000..efca14289 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-btn.svg new file mode 100644 index 000000000..0e9eb3a1d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-circle-fill.svg new file mode 100644 index 000000000..5e3525f4a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-circle.svg new file mode 100644 index 000000000..1b6b64afb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-fill.svg new file mode 100644 index 000000000..68285b2fe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause.svg new file mode 100644 index 000000000..22478eafc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pause.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paypal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paypal.svg new file mode 100644 index 000000000..41bd53661 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/paypal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-display-horizontal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-display-horizontal.svg new file mode 100644 index 000000000..2013f1557 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-display-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-display.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-display.svg new file mode 100644 index 000000000..f5d09dafb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-display.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-horizontal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-horizontal.svg new file mode 100644 index 000000000..9ae513a13 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc.svg new file mode 100644 index 000000000..f0f280d6c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pc.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pci-card.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pci-card.svg new file mode 100644 index 000000000..600a5d064 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pci-card.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/peace-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/peace-fill.svg new file mode 100644 index 000000000..c8ed5bdd3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/peace-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/peace.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/peace.svg new file mode 100644 index 000000000..3e4420b06 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/peace.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pen-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pen-fill.svg new file mode 100644 index 000000000..b7bb33718 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pen-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pen.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pen.svg new file mode 100644 index 000000000..8eb3be7d0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil-fill.svg new file mode 100644 index 000000000..59d2830c5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil-square.svg new file mode 100644 index 000000000..b8c90d542 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil.svg new file mode 100644 index 000000000..f8dbfebca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pencil.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon-fill.svg new file mode 100644 index 000000000..9c8078906 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon-half.svg new file mode 100644 index 000000000..305125cb3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon.svg new file mode 100644 index 000000000..b6f5fe300 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pentagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/people-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/people-fill.svg new file mode 100644 index 000000000..2c7389d23 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/people-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/people.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/people.svg new file mode 100644 index 000000000..528933d15 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/people.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/percent.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/percent.svg new file mode 100644 index 000000000..8af2bc4d0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/percent.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-add.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-add.svg new file mode 100644 index 000000000..cd9f071cd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-badge-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-badge-fill.svg new file mode 100644 index 000000000..d9ebe6723 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-badge-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-badge.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-badge.svg new file mode 100644 index 000000000..d071d44bd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-badge.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-bounding-box.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-bounding-box.svg new file mode 100644 index 000000000..92e662c9d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-bounding-box.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-check-fill.svg new file mode 100644 index 000000000..872497a65 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-check.svg new file mode 100644 index 000000000..c4b1e38bc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-circle.svg new file mode 100644 index 000000000..fd7f2c92a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-dash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-dash-fill.svg new file mode 100644 index 000000000..fd719f20d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-dash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-dash.svg new file mode 100644 index 000000000..4c6cb7901 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-down.svg new file mode 100644 index 000000000..00489b95d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-exclamation.svg new file mode 100644 index 000000000..ceb698ac6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-add.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-add.svg new file mode 100644 index 000000000..4383a8528 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-check.svg new file mode 100644 index 000000000..0bb8ee469 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-dash.svg new file mode 100644 index 000000000..d2cdec55d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-down.svg new file mode 100644 index 000000000..a1cfcdcd6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-exclamation.svg new file mode 100644 index 000000000..59cfd6ff9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-gear.svg new file mode 100644 index 000000000..f91006b6c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-gear.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-lock.svg new file mode 100644 index 000000000..8af5ee145 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-lock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-slash.svg new file mode 100644 index 000000000..ede8fa429 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-up.svg new file mode 100644 index 000000000..be73bf27b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-x.svg new file mode 100644 index 000000000..959fcee45 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill.svg new file mode 100644 index 000000000..6e1276872 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-gear.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-gear.svg new file mode 100644 index 000000000..8024d86c7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-gear.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-heart.svg new file mode 100644 index 000000000..e9ebbf48e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-hearts.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-hearts.svg new file mode 100644 index 000000000..06970be92 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-hearts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-lines-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-lines-fill.svg new file mode 100644 index 000000000..736421c59 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-lines-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-lock.svg new file mode 100644 index 000000000..1c20dc778 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-lock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-plus-fill.svg new file mode 100644 index 000000000..151ccfe80 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-plus.svg new file mode 100644 index 000000000..aac3a6738 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-rolodex.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-rolodex.svg new file mode 100644 index 000000000..af898ca72 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-rolodex.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-slash.svg new file mode 100644 index 000000000..7316d7ed0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-square.svg new file mode 100644 index 000000000..a7eb40efa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-up.svg new file mode 100644 index 000000000..5ec777d39 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-vcard-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-vcard-fill.svg new file mode 100644 index 000000000..f40d1088a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-vcard-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-vcard.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-vcard.svg new file mode 100644 index 000000000..3b871584e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-vcard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video.svg new file mode 100644 index 000000000..b8c199545 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video2.svg new file mode 100644 index 000000000..3f4292e66 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video3.svg new file mode 100644 index 000000000..be38b2492 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-video3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-workspace.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-workspace.svg new file mode 100644 index 000000000..e72bea027 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-workspace.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-x-fill.svg new file mode 100644 index 000000000..d4903a6a4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-x.svg new file mode 100644 index 000000000..d7ac8f668 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person.svg new file mode 100644 index 000000000..022d1e99b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/person.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-fill.svg new file mode 100644 index 000000000..a2dfd0348 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-flip.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-flip.svg new file mode 100644 index 000000000..54e2d2661 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-flip.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-landscape-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-landscape-fill.svg new file mode 100644 index 000000000..295481c89 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-landscape-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-landscape.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-landscape.svg new file mode 100644 index 000000000..65cd2731d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-landscape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-vibrate-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-vibrate-fill.svg new file mode 100644 index 000000000..6e61ecce4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-vibrate-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-vibrate.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-vibrate.svg new file mode 100644 index 000000000..f380cabbc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone-vibrate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone.svg new file mode 100644 index 000000000..3f3fd74c1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/phone.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pie-chart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pie-chart-fill.svg new file mode 100644 index 000000000..6aa71eb89 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pie-chart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pie-chart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pie-chart.svg new file mode 100644 index 000000000..a20f6a7e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pie-chart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/piggy-bank-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/piggy-bank-fill.svg new file mode 100644 index 000000000..b44f35d23 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/piggy-bank-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/piggy-bank.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/piggy-bank.svg new file mode 100644 index 000000000..1d836ce19 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/piggy-bank.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-angle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-angle-fill.svg new file mode 100644 index 000000000..3112c0b85 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-angle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-angle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-angle.svg new file mode 100644 index 000000000..a07b038e6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-angle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-fill.svg new file mode 100644 index 000000000..f00b79042 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-map-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-map-fill.svg new file mode 100644 index 000000000..b8c8502bd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-map-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-map.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-map.svg new file mode 100644 index 000000000..f04129a7b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin-map.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin.svg new file mode 100644 index 000000000..45fd7dea6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pinterest.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pinterest.svg new file mode 100644 index 000000000..b4fbc23df --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pinterest.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pip-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pip-fill.svg new file mode 100644 index 000000000..1869f7892 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pip-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pip.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pip.svg new file mode 100644 index 000000000..58f06382f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/pip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-btn-fill.svg new file mode 100644 index 000000000..18b916786 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-btn.svg new file mode 100644 index 000000000..576e30bf4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-circle-fill.svg new file mode 100644 index 000000000..511ef37bf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-circle.svg new file mode 100644 index 000000000..c93144ab0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-fill.svg new file mode 100644 index 000000000..28f2e6735 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play.svg new file mode 100644 index 000000000..b3fd3dc5b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/play.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/playstation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/playstation.svg new file mode 100644 index 000000000..f8ce05b6f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/playstation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plug-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plug-fill.svg new file mode 100644 index 000000000..d15b8e6ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plug-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plug.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plug.svg new file mode 100644 index 000000000..c5e6688d8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plug.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plugin.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plugin.svg new file mode 100644 index 000000000..3f179a396 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plugin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle-dotted.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle-dotted.svg new file mode 100644 index 000000000..c69316ed9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle-fill.svg new file mode 100644 index 000000000..f32011643 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle.svg new file mode 100644 index 000000000..66308ef1f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-lg.svg new file mode 100644 index 000000000..f821cc336 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-slash-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-slash-minus.svg new file mode 100644 index 000000000..44a8e0eb7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-slash-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square-dotted.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square-dotted.svg new file mode 100644 index 000000000..4ae7ad68b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square-fill.svg new file mode 100644 index 000000000..0d5e15cf8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square.svg new file mode 100644 index 000000000..15c4c44f7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus.svg new file mode 100644 index 000000000..5b088c08c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-fill.svg new file mode 100644 index 000000000..701a1c646 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-heart-fill.svg new file mode 100644 index 000000000..a26890148 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-heart.svg new file mode 100644 index 000000000..4d22b1806 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage.svg new file mode 100644 index 000000000..cc49c7003 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postage.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-fill.svg new file mode 100644 index 000000000..01b54dd2c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-heart-fill.svg new file mode 100644 index 000000000..5e551fb71 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-heart.svg new file mode 100644 index 000000000..e0f2f05a2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard.svg new file mode 100644 index 000000000..827180e2b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/postcard.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/power.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/power.svg new file mode 100644 index 000000000..6fb97563f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/power.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/prescription.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/prescription.svg new file mode 100644 index 000000000..a0f455603 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/prescription.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/prescription2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/prescription2.svg new file mode 100644 index 000000000..018ca9110 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/prescription2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/printer-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/printer-fill.svg new file mode 100644 index 000000000..485d98788 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/printer-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/printer.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/printer.svg new file mode 100644 index 000000000..60196bc5f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/printer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/projector-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/projector-fill.svg new file mode 100644 index 000000000..ff6a34189 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/projector-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/projector.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/projector.svg new file mode 100644 index 000000000..218c6a5ea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/projector.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/puzzle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/puzzle-fill.svg new file mode 100644 index 000000000..e9bbfae6b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/puzzle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/puzzle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/puzzle.svg new file mode 100644 index 000000000..c9b07a24b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/puzzle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/qr-code-scan.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/qr-code-scan.svg new file mode 100644 index 000000000..7eb599e19 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/qr-code-scan.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/qr-code.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/qr-code.svg new file mode 100644 index 000000000..bf5570dc4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/qr-code.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-circle-fill.svg new file mode 100644 index 000000000..d8e5e06de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-circle.svg new file mode 100644 index 000000000..1c8cbe7f4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-diamond-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-diamond-fill.svg new file mode 100644 index 000000000..a86583bed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-diamond.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-diamond.svg new file mode 100644 index 000000000..a7d8233cc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-diamond.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-lg.svg new file mode 100644 index 000000000..fa3452e4d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-octagon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-octagon-fill.svg new file mode 100644 index 000000000..2ff954ed0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-octagon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-octagon.svg new file mode 100644 index 000000000..02e8ffe23 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-octagon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-square-fill.svg new file mode 100644 index 000000000..dd7241042 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-square.svg new file mode 100644 index 000000000..d0a56ffb1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question.svg new file mode 100644 index 000000000..05abe29c7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/question.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/quora.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/quora.svg new file mode 100644 index 000000000..e90e571b7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/quora.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/quote.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/quote.svg new file mode 100644 index 000000000..03b45bf0b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/quote.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-circle-fill.svg new file mode 100644 index 000000000..c2386c3c5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-circle.svg new file mode 100644 index 000000000..ab5c574a0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-square-fill.svg new file mode 100644 index 000000000..e039b8adc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-square.svg new file mode 100644 index 000000000..37ddc6aec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/r-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/radioactive.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/radioactive.svg new file mode 100644 index 000000000..1b1072f7b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/radioactive.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rainbow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rainbow.svg new file mode 100644 index 000000000..8e8aea78e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rainbow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/receipt-cutoff.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/receipt-cutoff.svg new file mode 100644 index 000000000..27be3c093 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/receipt-cutoff.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/receipt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/receipt.svg new file mode 100644 index 000000000..9ea728362 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/receipt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-0.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-0.svg new file mode 100644 index 000000000..885bf3bb3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-0.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-1.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-1.svg new file mode 100644 index 000000000..3deafb622 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-2.svg new file mode 100644 index 000000000..7dca57aca --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-3.svg new file mode 100644 index 000000000..b30d5fb79 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-4.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-4.svg new file mode 100644 index 000000000..611bdf1b9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reception-4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-btn-fill.svg new file mode 100644 index 000000000..caa3ea115 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-btn.svg new file mode 100644 index 000000000..4fd261cab --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-circle-fill.svg new file mode 100644 index 000000000..2c2429a19 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-circle.svg new file mode 100644 index 000000000..d45d91c32 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-fill.svg new file mode 100644 index 000000000..d4743936e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record.svg new file mode 100644 index 000000000..27f82a976 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record2-fill.svg new file mode 100644 index 000000000..764892877 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record2.svg new file mode 100644 index 000000000..43a115044 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/record2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/recycle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/recycle.svg new file mode 100644 index 000000000..e4fa6c03c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/recycle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reddit.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reddit.svg new file mode 100644 index 000000000..b1c9cfed4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reddit.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/regex.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/regex.svg new file mode 100644 index 000000000..19c0ff30f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/regex.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/repeat-1.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/repeat-1.svg new file mode 100644 index 000000000..07f4a8b95 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/repeat-1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/repeat.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/repeat.svg new file mode 100644 index 000000000..0f6d54d86 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/repeat.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-all-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-all-fill.svg new file mode 100644 index 000000000..7b77b069c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-all-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-all.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-all.svg new file mode 100644 index 000000000..c95025b37 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-all.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-fill.svg new file mode 100644 index 000000000..b5a87228d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply.svg new file mode 100644 index 000000000..c2dc098ed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/reply.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-btn-fill.svg new file mode 100644 index 000000000..5136147dd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-btn.svg new file mode 100644 index 000000000..45c023285 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-circle-fill.svg new file mode 100644 index 000000000..afdaaf3a6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-circle.svg new file mode 100644 index 000000000..054fd9526 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-fill.svg new file mode 100644 index 000000000..79596e0e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind.svg new file mode 100644 index 000000000..58684d4b6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rewind.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/robot.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/robot.svg new file mode 100644 index 000000000..526cb9914 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/robot.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-fill.svg new file mode 100644 index 000000000..dcb5cb845 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-takeoff-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-takeoff-fill.svg new file mode 100644 index 000000000..a748d6d82 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-takeoff-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-takeoff.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-takeoff.svg new file mode 100644 index 000000000..376d34297 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket-takeoff.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket.svg new file mode 100644 index 000000000..5b3cd5c12 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rocket.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/router-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/router-fill.svg new file mode 100644 index 000000000..de050cffe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/router-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/router.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/router.svg new file mode 100644 index 000000000..8fa22d0dc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/router.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rss-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rss-fill.svg new file mode 100644 index 000000000..39bef06e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rss-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rss.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rss.svg new file mode 100644 index 000000000..be41f20c9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rss.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rulers.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rulers.svg new file mode 100644 index 000000000..e9891c9a0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/rulers.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe-fill.svg new file mode 100644 index 000000000..1036d675a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe.svg new file mode 100644 index 000000000..fb5b7cb2a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe2-fill.svg new file mode 100644 index 000000000..d1d37f2f8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe2.svg new file mode 100644 index 000000000..37bfbe80d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/safe2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save-fill.svg new file mode 100644 index 000000000..0a43dc15f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save.svg new file mode 100644 index 000000000..26b8aed58 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save2-fill.svg new file mode 100644 index 000000000..45feb5938 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save2.svg new file mode 100644 index 000000000..52bc9e40f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/save2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/scissors.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/scissors.svg new file mode 100644 index 000000000..ab71b0dc6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/scissors.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/scooter.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/scooter.svg new file mode 100644 index 000000000..238eedb50 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/scooter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/screwdriver.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/screwdriver.svg new file mode 100644 index 000000000..dc9c37435 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/screwdriver.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sd-card-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sd-card-fill.svg new file mode 100644 index 000000000..9fe36b687 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sd-card-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sd-card.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sd-card.svg new file mode 100644 index 000000000..12ed59f71 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sd-card.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search-heart-fill.svg new file mode 100644 index 000000000..54e31c710 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search-heart.svg new file mode 100644 index 000000000..92ea0591b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search.svg new file mode 100644 index 000000000..d3dc7ca16 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/search.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/segmented-nav.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/segmented-nav.svg new file mode 100644 index 000000000..42323b2f9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/segmented-nav.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-check-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-check-fill.svg new file mode 100644 index 000000000..4b0a56af9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-check.svg new file mode 100644 index 000000000..581ebbe22 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-dash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-dash-fill.svg new file mode 100644 index 000000000..254329c0c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-dash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-dash.svg new file mode 100644 index 000000000..abfbad373 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-exclamation-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-exclamation-fill.svg new file mode 100644 index 000000000..5a77e9822 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-exclamation-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-exclamation.svg new file mode 100644 index 000000000..149a7f74e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-fill.svg new file mode 100644 index 000000000..2a84015d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-plus-fill.svg new file mode 100644 index 000000000..bea3738a6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-plus.svg new file mode 100644 index 000000000..41202289e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-slash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-slash-fill.svg new file mode 100644 index 000000000..33456870b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-slash.svg new file mode 100644 index 000000000..782daf3e0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-x-fill.svg new file mode 100644 index 000000000..ce102ba4b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-x.svg new file mode 100644 index 000000000..c8bc8bf3d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send.svg new file mode 100644 index 000000000..c81fc9553 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/send.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/server.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/server.svg new file mode 100644 index 000000000..ff85feb8d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/server.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/share-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/share-fill.svg new file mode 100644 index 000000000..8b0ee88d3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/share-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/share.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/share.svg new file mode 100644 index 000000000..79d3075f0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/share.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-check.svg new file mode 100644 index 000000000..ecbf54399 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-exclamation.svg new file mode 100644 index 000000000..825de04d7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-check.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-check.svg new file mode 100644 index 000000000..a72b2baf1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-exclamation.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-exclamation.svg new file mode 100644 index 000000000..b489a6816 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-exclamation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-minus.svg new file mode 100644 index 000000000..b9b9129c5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-plus.svg new file mode 100644 index 000000000..aec96d176 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-x.svg new file mode 100644 index 000000000..d384af45f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill-x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill.svg new file mode 100644 index 000000000..d1d877daf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-lock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-lock-fill.svg new file mode 100644 index 000000000..e4c96b4ea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-lock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-lock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-lock.svg new file mode 100644 index 000000000..ff3842503 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-minus.svg new file mode 100644 index 000000000..d1cedfdf7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-plus.svg new file mode 100644 index 000000000..77bcb1a33 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-shaded.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-shaded.svg new file mode 100644 index 000000000..9c4af1a72 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-shaded.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-slash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-slash-fill.svg new file mode 100644 index 000000000..015d11b55 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-slash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-slash.svg new file mode 100644 index 000000000..234afa2e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-x.svg new file mode 100644 index 000000000..3fe166618 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield.svg new file mode 100644 index 000000000..18309d181 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shield.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shift-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shift-fill.svg new file mode 100644 index 000000000..da897bcd1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shift-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shift.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shift.svg new file mode 100644 index 000000000..59a88ef55 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shift.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shop-window.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shop-window.svg new file mode 100644 index 000000000..a306cfa41 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shop-window.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shop.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shop.svg new file mode 100644 index 000000000..223d77b42 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shuffle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shuffle.svg new file mode 100644 index 000000000..83bf20caf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/shuffle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-dead-end-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-dead-end-fill.svg new file mode 100644 index 000000000..b7f5876a6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-dead-end-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-dead-end.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-dead-end.svg new file mode 100644 index 000000000..2828c9aaa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-dead-end.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-do-not-enter-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-do-not-enter-fill.svg new file mode 100644 index 000000000..3dfab6cb5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-do-not-enter-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-do-not-enter.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-do-not-enter.svg new file mode 100644 index 000000000..bf1ab21fb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-do-not-enter.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-fill.svg new file mode 100644 index 000000000..a8d0e5b91 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-side-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-side-fill.svg new file mode 100644 index 000000000..7e6fd342a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-side-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-side.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-side.svg new file mode 100644 index 000000000..80959aaf0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-side.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-t-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-t-fill.svg new file mode 100644 index 000000000..0927772b7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-t-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-t.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-t.svg new file mode 100644 index 000000000..95240f418 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-t.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-y-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-y-fill.svg new file mode 100644 index 000000000..80201f961 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-y-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-y.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-y.svg new file mode 100644 index 000000000..efc84a36e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection-y.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection.svg new file mode 100644 index 000000000..509b13fd4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-intersection.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-left-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-left-fill.svg new file mode 100644 index 000000000..a1bd7ac8c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-left.svg new file mode 100644 index 000000000..b509fa247 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-right-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-right-fill.svg new file mode 100644 index 000000000..7f771907e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-right.svg new file mode 100644 index 000000000..0339ab22c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-merge-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-left-turn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-left-turn-fill.svg new file mode 100644 index 000000000..86cc79b76 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-left-turn-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-left-turn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-left-turn.svg new file mode 100644 index 000000000..e29d4432c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-left-turn.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-parking-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-parking-fill.svg new file mode 100644 index 000000000..0e1bf4689 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-parking-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-parking.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-parking.svg new file mode 100644 index 000000000..cc97b1c52 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-parking.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-right-turn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-right-turn-fill.svg new file mode 100644 index 000000000..7448c0950 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-right-turn-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-right-turn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-right-turn.svg new file mode 100644 index 000000000..e7de0832e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-no-right-turn.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-railroad-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-railroad-fill.svg new file mode 100644 index 000000000..258181302 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-railroad-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-railroad.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-railroad.svg new file mode 100644 index 000000000..a264db25c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-railroad.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-fill.svg new file mode 100644 index 000000000..d9b51dc78 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-lights-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-lights-fill.svg new file mode 100644 index 000000000..30c81bee1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-lights-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-lights.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-lights.svg new file mode 100644 index 000000000..297320ad6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop-lights.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop.svg new file mode 100644 index 000000000..14def7439 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-stop.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-left-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-left-fill.svg new file mode 100644 index 000000000..1c82bcaba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-left.svg new file mode 100644 index 000000000..bea00b71b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-right-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-right-fill.svg new file mode 100644 index 000000000..97c6343a8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-right.svg new file mode 100644 index 000000000..da447dbe6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-left-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-left-fill.svg new file mode 100644 index 000000000..9d561754f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-left.svg new file mode 100644 index 000000000..79475ad0b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-right-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-right-fill.svg new file mode 100644 index 000000000..1749e66ad --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-right.svg new file mode 100644 index 000000000..cf22c012a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-turn-slight-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-yield-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-yield-fill.svg new file mode 100644 index 000000000..ecad4fa8d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-yield-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-yield.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-yield.svg new file mode 100644 index 000000000..aabf3fb41 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sign-yield.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signal.svg new file mode 100644 index 000000000..4220d4887 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-2-fill.svg new file mode 100644 index 000000000..cc51e517d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-2.svg new file mode 100644 index 000000000..6a18b3ba0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-fill.svg new file mode 100644 index 000000000..f95f257a9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-split-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-split-fill.svg new file mode 100644 index 000000000..86aa086f5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-split-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-split.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-split.svg new file mode 100644 index 000000000..0168ae537 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost-split.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost.svg new file mode 100644 index 000000000..90a88822d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/signpost.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sim-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sim-fill.svg new file mode 100644 index 000000000..c8e2c296e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sim-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sim.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sim.svg new file mode 100644 index 000000000..cc0e86954 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sim.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sina-weibo.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sina-weibo.svg new file mode 100644 index 000000000..05c5f4bc8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sina-weibo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-btn-fill.svg new file mode 100644 index 000000000..bf064290f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-btn.svg new file mode 100644 index 000000000..b04455efb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-circle-fill.svg new file mode 100644 index 000000000..f6b6e4db0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-circle.svg new file mode 100644 index 000000000..63e2a1956 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-fill.svg new file mode 100644 index 000000000..a0ce53cec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward.svg new file mode 100644 index 000000000..9be60fe7f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-backward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-btn-fill.svg new file mode 100644 index 000000000..55bf1ba8f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-btn.svg new file mode 100644 index 000000000..6c5b044b4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-circle-fill.svg new file mode 100644 index 000000000..e30375082 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-circle.svg new file mode 100644 index 000000000..39e8cd31f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-fill.svg new file mode 100644 index 000000000..fa90d3fc2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end.svg new file mode 100644 index 000000000..40d6fa992 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-end.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-btn-fill.svg new file mode 100644 index 000000000..b767e9c97 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-btn.svg new file mode 100644 index 000000000..f67d3a805 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-circle-fill.svg new file mode 100644 index 000000000..00cea35ea --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-circle.svg new file mode 100644 index 000000000..3b55d7e3a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-fill.svg new file mode 100644 index 000000000..c4071aa87 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward.svg new file mode 100644 index 000000000..a1c4720b7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-btn-fill.svg new file mode 100644 index 000000000..56a1370fb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-btn.svg new file mode 100644 index 000000000..c86afbe44 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-circle-fill.svg new file mode 100644 index 000000000..b6d13b0aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-circle.svg new file mode 100644 index 000000000..f9664d9f6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-fill.svg new file mode 100644 index 000000000..c4295fc1f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start.svg new file mode 100644 index 000000000..a178e0e09 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skip-start.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skype.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skype.svg new file mode 100644 index 000000000..b3beaf95d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/skype.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slack.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slack.svg new file mode 100644 index 000000000..f4aa6e6d6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slack.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-circle-fill.svg new file mode 100644 index 000000000..f7031017a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-circle.svg new file mode 100644 index 000000000..4c1344bf7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-lg.svg new file mode 100644 index 000000000..161b6ec7e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-square-fill.svg new file mode 100644 index 000000000..c7a393503 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-square.svg new file mode 100644 index 000000000..ccf42bd63 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash.svg new file mode 100644 index 000000000..9616561fd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders.svg new file mode 100644 index 000000000..da4b8353f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders2-vertical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders2-vertical.svg new file mode 100644 index 000000000..c474281c7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders2-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders2.svg new file mode 100644 index 000000000..86fa70c35 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sliders2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/smartwatch.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/smartwatch.svg new file mode 100644 index 000000000..696bd331e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/smartwatch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snapchat.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snapchat.svg new file mode 100644 index 000000000..505f55a3f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snapchat.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow.svg new file mode 100644 index 000000000..9b648a5fe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow2.svg new file mode 100644 index 000000000..cede335d6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow3.svg new file mode 100644 index 000000000..75e5ef24c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/snow3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-down-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-down-alt.svg new file mode 100644 index 000000000..fa4f4fada --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-down-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-down.svg new file mode 100644 index 000000000..e0fcad047 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-up-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-up-alt.svg new file mode 100644 index 000000000..69c1a39a1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-up-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-up.svg new file mode 100644 index 000000000..0be5e68fb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-alpha-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-down-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-down-alt.svg new file mode 100644 index 000000000..d7f7fc8f7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-down-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-down.svg new file mode 100644 index 000000000..848834ce8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-down-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-down-alt.svg new file mode 100644 index 000000000..8c39a5a38 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-down-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-down.svg new file mode 100644 index 000000000..57a3fb030 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-up-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-up-alt.svg new file mode 100644 index 000000000..e8edf8865 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-up-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-up.svg new file mode 100644 index 000000000..1cd0a37e1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-numeric-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-up-alt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-up-alt.svg new file mode 100644 index 000000000..96650d5aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-up-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-up.svg new file mode 100644 index 000000000..215880124 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sort-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/soundwave.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/soundwave.svg new file mode 100644 index 000000000..288f108b2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/soundwave.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speaker-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speaker-fill.svg new file mode 100644 index 000000000..bae80e2da --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speaker-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speaker.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speaker.svg new file mode 100644 index 000000000..461626db5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speaker.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speedometer.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speedometer.svg new file mode 100644 index 000000000..5a0a43c94 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speedometer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speedometer2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speedometer2.svg new file mode 100644 index 000000000..d5676df9f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/speedometer2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/spellcheck.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/spellcheck.svg new file mode 100644 index 000000000..029950f5a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/spellcheck.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/spotify.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/spotify.svg new file mode 100644 index 000000000..31b423800 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/spotify.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square-fill.svg new file mode 100644 index 000000000..31bae4f74 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square-half.svg new file mode 100644 index 000000000..3f8179d5d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square.svg new file mode 100644 index 000000000..ded82d436 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stack-overflow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stack-overflow.svg new file mode 100644 index 000000000..b7d482ded --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stack-overflow.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stack.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stack.svg new file mode 100644 index 000000000..b8a9c940e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star-fill.svg new file mode 100644 index 000000000..de09c4aa5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star-half.svg new file mode 100644 index 000000000..8d30e7e01 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star.svg new file mode 100644 index 000000000..742b5e250 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/star.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stars.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stars.svg new file mode 100644 index 000000000..2c1667796 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stars.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/steam.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/steam.svg new file mode 100644 index 000000000..aecd43398 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/steam.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stickies-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stickies-fill.svg new file mode 100644 index 000000000..a0252da0f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stickies-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stickies.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stickies.svg new file mode 100644 index 000000000..8252c4978 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stickies.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sticky-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sticky-fill.svg new file mode 100644 index 000000000..acd42b9af --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sticky-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sticky.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sticky.svg new file mode 100644 index 000000000..dba01423b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sticky.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-btn-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-btn-fill.svg new file mode 100644 index 000000000..58b6c02e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-btn.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-btn.svg new file mode 100644 index 000000000..5c392eca1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-circle-fill.svg new file mode 100644 index 000000000..ac711e030 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-circle.svg new file mode 100644 index 000000000..441613cac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-fill.svg new file mode 100644 index 000000000..e00085a1e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop.svg new file mode 100644 index 000000000..2b86647fe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stoplights-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stoplights-fill.svg new file mode 100644 index 000000000..a18566b16 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stoplights-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stoplights.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stoplights.svg new file mode 100644 index 000000000..f765ab2ba --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stoplights.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stopwatch-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stopwatch-fill.svg new file mode 100644 index 000000000..2d2ed116e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stopwatch-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stopwatch.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stopwatch.svg new file mode 100644 index 000000000..964dbb8f8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stopwatch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/strava.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/strava.svg new file mode 100644 index 000000000..7e3237d5f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/strava.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stripe.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stripe.svg new file mode 100644 index 000000000..f24fdf383 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/stripe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/subscript.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/subscript.svg new file mode 100644 index 000000000..6976c0d29 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/subscript.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/subtract.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/subtract.svg new file mode 100644 index 000000000..e1d878a88 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/subtract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-club-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-club-fill.svg new file mode 100644 index 000000000..d4d311ac6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-club-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-club.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-club.svg new file mode 100644 index 000000000..75e5e8520 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-club.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-diamond-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-diamond-fill.svg new file mode 100644 index 000000000..2be1b7fa8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-diamond.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-diamond.svg new file mode 100644 index 000000000..9192a27e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-heart-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-heart-fill.svg new file mode 100644 index 000000000..0dd86f999 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-heart.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-heart.svg new file mode 100644 index 000000000..c761ef4b9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-spade-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-spade-fill.svg new file mode 100644 index 000000000..63bb0c63f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-spade-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-spade.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-spade.svg new file mode 100644 index 000000000..8f14427ed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/suit-spade.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sun-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sun-fill.svg new file mode 100644 index 000000000..cc1a60e6e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sun-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sun.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sun.svg new file mode 100644 index 000000000..c3112080e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sun.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunglasses.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunglasses.svg new file mode 100644 index 000000000..3f7dad01c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunglasses.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunrise-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunrise-fill.svg new file mode 100644 index 000000000..eb6a6687d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunrise-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunrise.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunrise.svg new file mode 100644 index 000000000..53d670ddd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunrise.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunset-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunset-fill.svg new file mode 100644 index 000000000..7f5b60ecb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunset-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunset.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunset.svg new file mode 100644 index 000000000..91041cfec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/sunset.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/superscript.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/superscript.svg new file mode 100644 index 000000000..06a1a784b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/superscript.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/symmetry-horizontal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/symmetry-horizontal.svg new file mode 100644 index 000000000..7e46d9049 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/symmetry-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/symmetry-vertical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/symmetry-vertical.svg new file mode 100644 index 000000000..a18fa2f45 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/symmetry-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/table.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/table.svg new file mode 100644 index 000000000..5e70d22c4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/table.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-fill.svg new file mode 100644 index 000000000..571ae8f96 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-landscape-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-landscape-fill.svg new file mode 100644 index 000000000..a4a604811 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-landscape-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-landscape.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-landscape.svg new file mode 100644 index 000000000..b36f7d414 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet-landscape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet.svg new file mode 100644 index 000000000..be81ff5ac --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tablet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tag-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tag-fill.svg new file mode 100644 index 000000000..1502792b9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tag.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tag.svg new file mode 100644 index 000000000..ab34fdd9f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tags-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tags-fill.svg new file mode 100644 index 000000000..f92a36101 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tags-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tags.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tags.svg new file mode 100644 index 000000000..9f6d67646 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tags.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/taxi-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/taxi-front-fill.svg new file mode 100644 index 000000000..1e1eb19db --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/taxi-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/taxi-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/taxi-front.svg new file mode 100644 index 000000000..4cb5fdae2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/taxi-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telegram.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telegram.svg new file mode 100644 index 000000000..139af07eb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telegram.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-fill.svg new file mode 100644 index 000000000..efc72c073 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-forward-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-forward-fill.svg new file mode 100644 index 000000000..f4ce48311 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-forward.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-forward.svg new file mode 100644 index 000000000..17ec9ce7c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-inbound-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-inbound-fill.svg new file mode 100644 index 000000000..998c8fbe0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-inbound-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-inbound.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-inbound.svg new file mode 100644 index 000000000..460fe9f27 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-inbound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-minus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-minus-fill.svg new file mode 100644 index 000000000..bc17abbfe --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-minus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-minus.svg new file mode 100644 index 000000000..4f4d93cf4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-outbound-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-outbound-fill.svg new file mode 100644 index 000000000..16013a545 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-outbound-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-outbound.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-outbound.svg new file mode 100644 index 000000000..13828860d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-outbound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-plus-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-plus-fill.svg new file mode 100644 index 000000000..6d8c58f53 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-plus.svg new file mode 100644 index 000000000..21ef90953 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-x-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-x-fill.svg new file mode 100644 index 000000000..c8ef89497 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-x.svg new file mode 100644 index 000000000..5aa3f95d4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone.svg new file mode 100644 index 000000000..8e359b825 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/telephone.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tencent-qq.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tencent-qq.svg new file mode 100644 index 000000000..b107eb5cc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tencent-qq.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-dash.svg new file mode 100644 index 000000000..9049b5e84 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-fill.svg new file mode 100644 index 000000000..d3c63943d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-plus.svg new file mode 100644 index 000000000..be268c8e1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-split.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-split.svg new file mode 100644 index 000000000..f65d2c7a2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-split.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-x.svg new file mode 100644 index 000000000..5128f115e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal.svg new file mode 100644 index 000000000..e12c9f882 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/terminal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-center.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-center.svg new file mode 100644 index 000000000..2887a99f2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-indent-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-indent-left.svg new file mode 100644 index 000000000..34d8c55e9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-indent-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-indent-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-indent-right.svg new file mode 100644 index 000000000..fdd837fa3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-indent-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-left.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-left.svg new file mode 100644 index 000000000..045261164 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-paragraph.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-paragraph.svg new file mode 100644 index 000000000..9779beabf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-paragraph.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-right.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-right.svg new file mode 100644 index 000000000..34686b0f1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-wrap.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-wrap.svg new file mode 100644 index 000000000..713a96c72 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/text-wrap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea-resize.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea-resize.svg new file mode 100644 index 000000000..c4a9d9fcc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea-resize.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea-t.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea-t.svg new file mode 100644 index 000000000..dc7e17c27 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea-t.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea.svg new file mode 100644 index 000000000..9aa54459d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/textarea.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-half.svg new file mode 100644 index 000000000..cafefd29b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-high.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-high.svg new file mode 100644 index 000000000..15acf4c6a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-high.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-low.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-low.svg new file mode 100644 index 000000000..ce540e03b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-low.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-snow.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-snow.svg new file mode 100644 index 000000000..0e1b4002f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-snow.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-sun.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-sun.svg new file mode 100644 index 000000000..07c329095 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer-sun.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer.svg new file mode 100644 index 000000000..748813ec0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thermometer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/three-dots-vertical.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/three-dots-vertical.svg new file mode 100644 index 000000000..cd0c79abb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/three-dots-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/three-dots.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/three-dots.svg new file mode 100644 index 000000000..ea92369aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/three-dots.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thunderbolt-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thunderbolt-fill.svg new file mode 100644 index 000000000..85c437ee0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thunderbolt-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thunderbolt.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thunderbolt.svg new file mode 100644 index 000000000..b8356da42 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/thunderbolt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-detailed-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-detailed-fill.svg new file mode 100644 index 000000000..bc5d192bc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-detailed-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-detailed.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-detailed.svg new file mode 100644 index 000000000..c2701bbe7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-detailed.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-fill.svg new file mode 100644 index 000000000..73728b6d5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-perforated-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-perforated-fill.svg new file mode 100644 index 000000000..2ec1d57e7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-perforated-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-perforated.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-perforated.svg new file mode 100644 index 000000000..194ae05e1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket-perforated.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket.svg new file mode 100644 index 000000000..f24a93e58 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ticket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tiktok.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tiktok.svg new file mode 100644 index 000000000..7edac4ee0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tiktok.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle-off.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle-off.svg new file mode 100644 index 000000000..97d6dab37 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle-on.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle-on.svg new file mode 100644 index 000000000..d13b49556 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle-on.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle2-off.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle2-off.svg new file mode 100644 index 000000000..a8fee6b1b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle2-off.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle2-on.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle2-on.svg new file mode 100644 index 000000000..993ec3327 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggle2-on.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggles.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggles.svg new file mode 100644 index 000000000..d53ae018a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggles.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggles2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggles2.svg new file mode 100644 index 000000000..862fc9f2c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/toggles2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tools.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tools.svg new file mode 100644 index 000000000..fcc8362f7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tools.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tornado.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tornado.svg new file mode 100644 index 000000000..5bb53a263 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tornado.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-freight-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-freight-front-fill.svg new file mode 100644 index 000000000..54210a766 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-freight-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-freight-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-freight-front.svg new file mode 100644 index 000000000..f1080fe66 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-freight-front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-front-fill.svg new file mode 100644 index 000000000..0895443a4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-front.svg new file mode 100644 index 000000000..672ed4bb1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-lightrail-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-lightrail-front-fill.svg new file mode 100644 index 000000000..881ffbcaf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-lightrail-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-lightrail-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-lightrail-front.svg new file mode 100644 index 000000000..db5f945b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/train-lightrail-front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/translate.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/translate.svg new file mode 100644 index 000000000..39a17d228 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/translate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash-fill.svg new file mode 100644 index 000000000..1a20e6a04 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash.svg new file mode 100644 index 000000000..0ba7218ec --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash2-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash2-fill.svg new file mode 100644 index 000000000..bc78b6d6a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash2.svg new file mode 100644 index 000000000..6e6468efb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash3-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash3-fill.svg new file mode 100644 index 000000000..e0e81f1aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash3.svg new file mode 100644 index 000000000..1d5f42eed --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trash3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tree-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tree-fill.svg new file mode 100644 index 000000000..4d45dd430 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tree-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tree.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tree.svg new file mode 100644 index 000000000..b97eb64f7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tree.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trello.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trello.svg new file mode 100644 index 000000000..088605810 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trello.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle-fill.svg new file mode 100644 index 000000000..654787f2d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle-half.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle-half.svg new file mode 100644 index 000000000..8f86f28c3 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle.svg new file mode 100644 index 000000000..1fa1898e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/triangle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trophy-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trophy-fill.svg new file mode 100644 index 000000000..e29f0013e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trophy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trophy.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trophy.svg new file mode 100644 index 000000000..adfa10830 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/trophy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tropical-storm.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tropical-storm.svg new file mode 100644 index 000000000..c16188d48 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tropical-storm.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-flatbed.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-flatbed.svg new file mode 100644 index 000000000..5a37c8d88 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-flatbed.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-front-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-front-fill.svg new file mode 100644 index 000000000..f5b63e3a4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-front.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-front.svg new file mode 100644 index 000000000..a676a7182 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck-front.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck.svg new file mode 100644 index 000000000..1afc549c1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/truck.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tsunami.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tsunami.svg new file mode 100644 index 000000000..cf574864c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tsunami.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tv-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tv-fill.svg new file mode 100644 index 000000000..bf9830f36 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tv-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tv.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tv.svg new file mode 100644 index 000000000..bba3da169 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/tv.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/twitch.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/twitch.svg new file mode 100644 index 000000000..2975f8058 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/twitch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/twitter.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/twitter.svg new file mode 100644 index 000000000..8a83fa675 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/twitter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-bold.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-bold.svg new file mode 100644 index 000000000..276d133c2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-bold.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h1.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h1.svg new file mode 100644 index 000000000..4c8918175 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h2.svg new file mode 100644 index 000000000..b6ab76501 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h3.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h3.svg new file mode 100644 index 000000000..154c293f8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-h3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-italic.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-italic.svg new file mode 100644 index 000000000..3ac6b09f0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-italic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-strikethrough.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-strikethrough.svg new file mode 100644 index 000000000..1c940e42a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-strikethrough.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-underline.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-underline.svg new file mode 100644 index 000000000..c299b8bf2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type-underline.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type.svg new file mode 100644 index 000000000..9ab1e4c48 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/type.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ubuntu.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ubuntu.svg new file mode 100644 index 000000000..27f8c2782 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ubuntu.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-checks-grid.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-checks-grid.svg new file mode 100644 index 000000000..a32d42410 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-checks-grid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-checks.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-checks.svg new file mode 100644 index 000000000..9b659e271 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-checks.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-radios-grid.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-radios-grid.svg new file mode 100644 index 000000000..00c7b0802 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-radios-grid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-radios.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-radios.svg new file mode 100644 index 000000000..da779afc7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/ui-radios.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/umbrella-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/umbrella-fill.svg new file mode 100644 index 000000000..c4886e9af --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/umbrella-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/umbrella.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/umbrella.svg new file mode 100644 index 000000000..94f32f906 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/umbrella.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unindent.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unindent.svg new file mode 100644 index 000000000..19692833b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unindent.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/union.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/union.svg new file mode 100644 index 000000000..b629b8816 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/union.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unity.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unity.svg new file mode 100644 index 000000000..e179a383b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unity.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/universal-access-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/universal-access-circle.svg new file mode 100644 index 000000000..158465b46 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/universal-access-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/universal-access.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/universal-access.svg new file mode 100644 index 000000000..3b7fc37e0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/universal-access.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unlock-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unlock-fill.svg new file mode 100644 index 000000000..f0533548c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unlock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unlock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unlock.svg new file mode 100644 index 000000000..8eb0925da --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/unlock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upc-scan.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upc-scan.svg new file mode 100644 index 000000000..2a9a6aff0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upc-scan.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upc.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upc.svg new file mode 100644 index 000000000..6669ef7a1 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upc.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upload.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upload.svg new file mode 100644 index 000000000..be3f8e378 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/upload.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-c-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-c-fill.svg new file mode 100644 index 000000000..0e50ac6a7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-c-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-c.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-c.svg new file mode 100644 index 000000000..c17d4ca1b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-c.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-drive-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-drive-fill.svg new file mode 100644 index 000000000..834614dd7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-drive-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-drive.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-drive.svg new file mode 100644 index 000000000..ca08df5bc --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-drive.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-fill.svg new file mode 100644 index 000000000..443c91a65 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-micro-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-micro-fill.svg new file mode 100644 index 000000000..67ad74472 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-micro-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-micro.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-micro.svg new file mode 100644 index 000000000..945b6e75d --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-micro.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-mini-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-mini-fill.svg new file mode 100644 index 000000000..723563682 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-mini-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-mini.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-mini.svg new file mode 100644 index 000000000..7cc383f0f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-mini.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-plug-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-plug-fill.svg new file mode 100644 index 000000000..2f1c185cd --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-plug-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-plug.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-plug.svg new file mode 100644 index 000000000..68f5f9788 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-plug.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-symbol.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-symbol.svg new file mode 100644 index 000000000..eb02d87ae --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb-symbol.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb.svg new file mode 100644 index 000000000..e82324c40 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/usb.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/valentine.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/valentine.svg new file mode 100644 index 000000000..554205510 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/valentine.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/valentine2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/valentine2.svg new file mode 100644 index 000000000..c70e2741a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/valentine2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vector-pen.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vector-pen.svg new file mode 100644 index 000000000..013acc258 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vector-pen.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/view-list.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/view-list.svg new file mode 100644 index 000000000..3d1a972e4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/view-list.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/view-stacked.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/view-stacked.svg new file mode 100644 index 000000000..7f59bb987 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/view-stacked.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vimeo.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vimeo.svg new file mode 100644 index 000000000..34eea6d24 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vimeo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vinyl-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vinyl-fill.svg new file mode 100644 index 000000000..a5ab73ded --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vinyl-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vinyl.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vinyl.svg new file mode 100644 index 000000000..75c2681d9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vinyl.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/virus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/virus.svg new file mode 100644 index 000000000..64dd56f4b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/virus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/virus2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/virus2.svg new file mode 100644 index 000000000..0aa390150 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/virus2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/voicemail.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/voicemail.svg new file mode 100644 index 000000000..ff7ce86cb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/voicemail.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-down-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-down-fill.svg new file mode 100644 index 000000000..4879b5a72 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-down.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-down.svg new file mode 100644 index 000000000..996dbefd6 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-mute-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-mute-fill.svg new file mode 100644 index 000000000..7ab768441 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-mute-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-mute.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-mute.svg new file mode 100644 index 000000000..12659d9aa --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-mute.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-off-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-off-fill.svg new file mode 100644 index 000000000..4941870e7 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-off-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-off.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-off.svg new file mode 100644 index 000000000..08bb6b99c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-up-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-up-fill.svg new file mode 100644 index 000000000..495ee981a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-up-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-up.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-up.svg new file mode 100644 index 000000000..3840310db --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/volume-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vr.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vr.svg new file mode 100644 index 000000000..cf2ea3761 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/vr.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet-fill.svg new file mode 100644 index 000000000..d44e5c836 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet.svg new file mode 100644 index 000000000..d18441bcf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet2.svg new file mode 100644 index 000000000..e646d94de --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wallet2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/watch.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/watch.svg new file mode 100644 index 000000000..8c3ee988e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/watch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/water.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/water.svg new file mode 100644 index 000000000..18e08257b --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/water.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/webcam-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/webcam-fill.svg new file mode 100644 index 000000000..04b835bdf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/webcam-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/webcam.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/webcam.svg new file mode 100644 index 000000000..da7ef71e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/webcam.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wechat.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wechat.svg new file mode 100644 index 000000000..06b8ff83a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wechat.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/whatsapp.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/whatsapp.svg new file mode 100644 index 000000000..6242d057c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/whatsapp.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-1.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-1.svg new file mode 100644 index 000000000..4d75ef524 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-2.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-2.svg new file mode 100644 index 000000000..377c1fc9f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-off.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-off.svg new file mode 100644 index 000000000..439986136 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi.svg new file mode 100644 index 000000000..8cb1f71d9 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wifi.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wikipedia.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wikipedia.svg new file mode 100644 index 000000000..5fa98b1cf --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wikipedia.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wind.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wind.svg new file mode 100644 index 000000000..d350ea404 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wind.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-dash.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-dash.svg new file mode 100644 index 000000000..191fbd72c --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-dash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-desktop.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-desktop.svg new file mode 100644 index 000000000..a044521e2 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-desktop.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-dock.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-dock.svg new file mode 100644 index 000000000..dbffecbc8 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-dock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-fullscreen.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-fullscreen.svg new file mode 100644 index 000000000..22a8d2083 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-fullscreen.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-plus.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-plus.svg new file mode 100644 index 000000000..08444f3af --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-sidebar.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-sidebar.svg new file mode 100644 index 000000000..98476ce87 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-sidebar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-split.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-split.svg new file mode 100644 index 000000000..21862f253 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-split.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-stack.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-stack.svg new file mode 100644 index 000000000..592e5c85f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-stack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-x.svg new file mode 100644 index 000000000..e7a97dc60 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window.svg new file mode 100644 index 000000000..ad6166e69 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/window.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/windows.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/windows.svg new file mode 100644 index 000000000..b28056079 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/windows.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wordpress.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wordpress.svg new file mode 100644 index 000000000..4c8cbc412 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wordpress.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable-circle-fill.svg new file mode 100644 index 000000000..b723d7f66 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable-circle-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable-circle.svg new file mode 100644 index 000000000..a5a6f0b79 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable.svg new file mode 100644 index 000000000..4ec808244 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench-adjustable.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench.svg new file mode 100644 index 000000000..bef07136f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/wrench.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-circle-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-circle-fill.svg new file mode 100644 index 000000000..448fdee46 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-circle.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-circle.svg new file mode 100644 index 000000000..ce37cdc36 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-diamond-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-diamond-fill.svg new file mode 100644 index 000000000..2de64033e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-diamond.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-diamond.svg new file mode 100644 index 000000000..0ade53696 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-lg.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-lg.svg new file mode 100644 index 000000000..53aec00d4 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-octagon-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-octagon-fill.svg new file mode 100644 index 000000000..7872889d5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-octagon.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-octagon.svg new file mode 100644 index 000000000..794afd942 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-octagon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-square-fill.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-square-fill.svg new file mode 100644 index 000000000..ddfd727a0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-square.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-square.svg new file mode 100644 index 000000000..9d7852f6a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x.svg new file mode 100644 index 000000000..c865d888e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/xbox.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/xbox.svg new file mode 100644 index 000000000..9d8497330 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/xbox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/yelp.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/yelp.svg new file mode 100644 index 000000000..08d346515 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/yelp.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/yin-yang.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/yin-yang.svg new file mode 100644 index 000000000..cf1da48fb --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/yin-yang.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/youtube.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/youtube.svg new file mode 100644 index 000000000..86fa4900a --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/youtube.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/zoom-in.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/zoom-in.svg new file mode 100644 index 000000000..6cde1a0b5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/zoom-in.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/zoom-out.svg b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/zoom-out.svg new file mode 100644 index 000000000..b965f8e71 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/icons/zoom-out.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap-icons/package.json b/src/SharedUI/wwwroot/lib/bootstrap-icons/package.json new file mode 100644 index 000000000..0bac95cf0 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap-icons/package.json @@ -0,0 +1,70 @@ +{ + "name": "bootstrap-icons", + "version": "1.9.1", + "description": "Official open source SVG icon library for Bootstrap", + "author": "mdo", + "license": "MIT", + "homepage": "https://icons.getbootstrap.com/", + "repository": { + "type": "git", + "url": "git+https://github.com/twbs/icons.git" + }, + "bugs": { + "url": "https://github.com/twbs/icons/issues" + }, + "keywords": [ + "bootstrap", + "icons" + ], + "scripts": { + "start": "npm run docs-serve", + "docs-serve": "hugo server --port 4000 --disableFastRender", + "docs-build": "hugo --cleanDestinationDir", + "docs-purge": "npm run docs-build && purgecss --css docs/static/assets/css/bootstrap.min.css --content \"_site/**/*.html\" \"_site/assets/js/**/*.js\" --keyframes --output docs/static/assets/css/", + "pages": "node build/build-pages.js", + "icons": "npm-run-all icons-main --aggregate-output --parallel icons-sprite icons-font", + "icons-main": "node build/build-svgs.js", + "icons-zip": "cross-env-shell \"rm -rf bootstrap-icons-$npm_package_version && cp -r icons/ bootstrap-icons-$npm_package_version && cp bootstrap-icons.svg bootstrap-icons-$npm_package_version && cp -r font/ bootstrap-icons-$npm_package_version && zip -r9 bootstrap-icons-$npm_package_version.zip bootstrap-icons-$npm_package_version && rm -rf bootstrap-icons-$npm_package_version\"", + "icons-sprite": "svg-sprite --config svg-sprite.json --log=info icons/*.svg", + "icons-font": "fantasticon", + "release": "npm-run-all icons docs-build icons-zip", + "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all icons docs-purge docs-build", + "test:fusv": "fusv docs/assets/scss/", + "test:eslint": "eslint --cache --cache-location node_modules/.cache/.eslintcache --report-unused-disable-directives .", + "test:stylelint": "stylelint docs/assets/scss/ --cache --cache-location node_modules/.cache/.stylelintcache --rd", + "test:lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json", + "test:vnu": "node build/vnu-jar.js", + "test": "npm-run-all docs-build --parallel --aggregate-output --continue-on-error test:*" + }, + "style": "font/bootstrap-icons.css", + "sass": "font/bootstrap-icons.scss", + "devDependencies": { + "autoprefixer": "^10.4.7", + "bootstrap": "5.2.0-beta1", + "cross-env": "^7.0.3", + "eslint": "^8.19.0", + "fantasticon": "^1.2.3", + "find-unused-sass-variables": "^4.0.4", + "hugo-bin": "^0.89.0", + "lockfile-lint": "^4.7.6", + "npm-run-all": "^4.1.5", + "picocolors": "^1.0.0", + "postcss": "^8.4.14", + "postcss-cli": "^10.0.0", + "purgecss": "^4.1.3", + "stylelint": "^14.9.1", + "stylelint-config-twbs-bootstrap": "^4.0.0", + "svg-sprite": "^2.0.0-beta7", + "svgo": "^2.8.0", + "vnu-jar": "21.10.12" + }, + "files": [ + "icons/*.svg", + "bootstrap-icons.svg", + "font", + "!.DS_Store" + ], + "hugo-bin": { + "buildTags": "extended" + } +} diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css new file mode 100644 index 000000000..37d2d3dc5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css @@ -0,0 +1,4085 @@ +/*! + * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + box-sizing: border-box; + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-inline-grid { + display: inline-grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +@media (min-width: 576px) { + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 768px) { + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 992px) { + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 1200px) { + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 1400px) { + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} + +/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css.map new file mode 100644 index 000000000..2f2887337 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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EE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EA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;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,2BAAA;ALsjDZ;;AK7jDQ;EAOI,iCAAA;AL0jDZ;;AKjkDQ;EAOI,gCAAA;AL8jDZ;;AKrkDQ;EAOI,8BAAA;ALkkDZ;;AKzkDQ;EAOI,gCAAA;ALskDZ;;AK7kDQ;EAOI,8BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,0BAAA;ALsmDZ;;AK7mDQ;EAOI,gCAAA;AL0mDZ;;AKjnDQ;EAOI,+BAAA;AL8mDZ;;AKrnDQ;EAOI,6BAAA;ALknDZ;;AKznDQ;EAOI,+BAAA;ALsnDZ;;AK7nDQ;EAOI,6BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA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nEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,0BAAA;IAAA,yBAAA;ELswEV;EK7wEM;IAO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EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;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AAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,0BAAA;ELw9FV;EK/9FM;IAOI,gCAAA;EL29FV;EKl+FM;IAOI,+BAAA;EL89FV;EKr+FM;IAOI,6BAAA;ELi+FV;EKx+FM;IAOI,+BAAA;ELo+FV;EK3+FM;IAOI,6BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/l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ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,2BAAA;ELm4GV;EK14GM;IAOI,iCAAA;ELs4GV;EK74GM;IAOI,gCAAA;ELy4GV;EKh5GM;IAOI,8BAAA;EL44GV;EKn5GM;IAOI,gCAAA;EL+4GV;EKt5GM;IAOI,8BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,0BAAA;ELu6GV;EK96GM;IAOI,gCAAA;EL06GV;EKj7GM;IAOI,+BAAA;EL66GV;EKp7GM;IAOI,6BAAA;ELg7GV;EKv7GM;IAOI,+BAAA;ELm7GV;EK17GM;IAOI,6BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;I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","file":"bootstrap-grid.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !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-last {\n order: 6 !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: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: 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: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css new file mode 100644 index 000000000..8d836d469 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css.map new file mode 100644 index 000000000..4811b6f4e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;ACKA,WCAF,iBAGA,cACA,cACA,cAHA,cADA,eCJE,cAAA,OACA,cAAA,EACA,MAAA,KACA,cAAA,8BACA,aAAA,8BACA,aAAA,KACA,YAAA,KCsDE,yBH5CE,WAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cAAA,cACE,UAAA,OG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QIhBR,MAEI,mBAAA,EAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,OAAA,oBAAA,OAKF,KCNA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KAEA,WAAA,8BACA,aAAA,+BACA,YAAA,+BDEE,OCGF,WAAA,WAIA,YAAA,EACA,MAAA,KACA,UAAA,KACA,cAAA,8BACA,aAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,YAAA,YAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,WAxDV,YAAA,aAwDU,WAxDV,YAAA,aAmEM,KJ6GR,MI3GU,cAAA,EAGF,KJ6GR,MI3GU,cAAA,EAPF,KJuHR,MIrHU,cAAA,QAGF,KJuHR,MIrHU,cAAA,QAPF,KJiIR,MI/HU,cAAA,OAGF,KJiIR,MI/HU,cAAA,OAPF,KJ2IR,MIzIU,cAAA,KAGF,KJ2IR,MIzIU,cAAA,KAPF,KJqJR,MInJU,cAAA,OAGF,KJqJR,MInJU,cAAA,OAPF,KJ+JR,MI7JU,cAAA,KAGF,KJ+JR,MI7JU,cAAA,KF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJiSN,SI/RQ,cAAA,EAGF,QJgSN,SI9RQ,cAAA,EAPF,QJySN,SIvSQ,cAAA,QAGF,QJwSN,SItSQ,cAAA,QAPF,QJiTN,SI/SQ,cAAA,OAGF,QJgTN,SI9SQ,cAAA,OAPF,QJyTN,SIvTQ,cAAA,KAGF,QJwTN,SItTQ,cAAA,KAPF,QJiUN,SI/TQ,cAAA,OAGF,QJgUN,SI9TQ,cAAA,OAPF,QJyUN,SIvUQ,cAAA,KAGF,QJwUN,SItUQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJ0cN,SIxcQ,cAAA,EAGF,QJycN,SIvcQ,cAAA,EAPF,QJkdN,SIhdQ,cAAA,QAGF,QJidN,SI/cQ,cAAA,QAPF,QJ0dN,SIxdQ,cAAA,OAGF,QJydN,SIvdQ,cAAA,OAPF,QJkeN,SIheQ,cAAA,KAGF,QJieN,SI/dQ,cAAA,KAPF,QJ0eN,SIxeQ,cAAA,OAGF,QJyeN,SIveQ,cAAA,OAPF,QJkfN,SIhfQ,cAAA,KAGF,QJifN,SI/eQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJmnBN,SIjnBQ,cAAA,EAGF,QJknBN,SIhnBQ,cAAA,EAPF,QJ2nBN,SIznBQ,cAAA,QAGF,QJ0nBN,SIxnBQ,cAAA,QAPF,QJmoBN,SIjoBQ,cAAA,OAGF,QJkoBN,SIhoBQ,cAAA,OAPF,QJ2oBN,SIzoBQ,cAAA,KAGF,QJ0oBN,SIxoBQ,cAAA,KAPF,QJmpBN,SIjpBQ,cAAA,OAGF,QJkpBN,SIhpBQ,cAAA,OAPF,QJ2pBN,SIzpBQ,cAAA,KAGF,QJ0pBN,SIxpBQ,cAAA,MF1DN,0BEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QJ4xBN,SI1xBQ,cAAA,EAGF,QJ2xBN,SIzxBQ,cAAA,EAPF,QJoyBN,SIlyBQ,cAAA,QAGF,QJmyBN,SIjyBQ,cAAA,QAPF,QJ4yBN,SI1yBQ,cAAA,OAGF,QJ2yBN,SIzyBQ,cAAA,OAPF,QJozBN,SIlzBQ,cAAA,KAGF,QJmzBN,SIjzBQ,cAAA,KAPF,QJ4zBN,SI1zBQ,cAAA,OAGF,QJ2zBN,SIzzBQ,cAAA,OAPF,QJo0BN,SIl0BQ,cAAA,KAGF,QJm0BN,SIj0BQ,cAAA,MF1DN,0BEUE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,YAAA,EAwDU,cAxDV,YAAA,YAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,eAxDV,YAAA,aAwDU,eAxDV,YAAA,aAmEM,SJq8BN,UIn8BQ,cAAA,EAGF,SJo8BN,UIl8BQ,cAAA,EAPF,SJ68BN,UI38BQ,cAAA,QAGF,SJ48BN,UI18BQ,cAAA,QAPF,SJq9BN,UIn9BQ,cAAA,OAGF,SJo9BN,UIl9BQ,cAAA,OAPF,SJ69BN,UI39BQ,cAAA,KAGF,SJ49BN,UI19BQ,cAAA,KAPF,SJq+BN,UIn+BQ,cAAA,OAGF,SJo+BN,UIl+BQ,cAAA,OAPF,SJ6+BN,UI3+BQ,cAAA,KAGF,SJ4+BN,UI1+BQ,cAAA,MCvDF,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,aAAA,YAAA,YAAA,YAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,gBAAA,YAAA,gBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,cAAA,YAAA,aAAA,YAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,gBAAA,aAAA,gBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,0BGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBHVR,0BGGI,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,aAAA,YAAA,YAAA,YAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,gBAAA,YAAA,gBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,aAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,cAAA,YAAA,aAAA,YAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,gBAAA,aAAA,gBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBCnCZ,aD4BQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !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-last {\n order: 6 !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: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: 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: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css new file mode 100644 index 000000000..171129648 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css @@ -0,0 +1,4084 @@ +/*! + * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-left: calc(var(--bs-gutter-x) * 0.5); + padding-right: calc(var(--bs-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + box-sizing: border-box; + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-left: calc(var(--bs-gutter-x) * 0.5); + padding-right: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-right: 8.33333333%; +} + +.offset-2 { + margin-right: 16.66666667%; +} + +.offset-3 { + margin-right: 25%; +} + +.offset-4 { + margin-right: 33.33333333%; +} + +.offset-5 { + margin-right: 41.66666667%; +} + +.offset-6 { + margin-right: 50%; +} + +.offset-7 { + margin-right: 58.33333333%; +} + +.offset-8 { + margin-right: 66.66666667%; +} + +.offset-9 { + margin-right: 75%; +} + +.offset-10 { + margin-right: 83.33333333%; +} + +.offset-11 { + margin-right: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-right: 0; + } + .offset-sm-1 { + margin-right: 8.33333333%; + } + .offset-sm-2 { + margin-right: 16.66666667%; + } + .offset-sm-3 { + margin-right: 25%; + } + .offset-sm-4 { + margin-right: 33.33333333%; + } + .offset-sm-5 { + margin-right: 41.66666667%; + } + .offset-sm-6 { + margin-right: 50%; + } + .offset-sm-7 { + margin-right: 58.33333333%; + } + .offset-sm-8 { + margin-right: 66.66666667%; + } + .offset-sm-9 { + margin-right: 75%; + } + .offset-sm-10 { + margin-right: 83.33333333%; + } + .offset-sm-11 { + margin-right: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-right: 0; + } + .offset-md-1 { + margin-right: 8.33333333%; + } + .offset-md-2 { + margin-right: 16.66666667%; + } + .offset-md-3 { + margin-right: 25%; + } + .offset-md-4 { + margin-right: 33.33333333%; + } + .offset-md-5 { + margin-right: 41.66666667%; + } + .offset-md-6 { + margin-right: 50%; + } + .offset-md-7 { + margin-right: 58.33333333%; + } + .offset-md-8 { + margin-right: 66.66666667%; + } + .offset-md-9 { + margin-right: 75%; + } + .offset-md-10 { + margin-right: 83.33333333%; + } + .offset-md-11 { + margin-right: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-right: 0; + } + .offset-lg-1 { + margin-right: 8.33333333%; + } + .offset-lg-2 { + margin-right: 16.66666667%; + } + .offset-lg-3 { + margin-right: 25%; + } + .offset-lg-4 { + margin-right: 33.33333333%; + } + .offset-lg-5 { + margin-right: 41.66666667%; + } + .offset-lg-6 { + margin-right: 50%; + } + .offset-lg-7 { + margin-right: 58.33333333%; + } + .offset-lg-8 { + margin-right: 66.66666667%; + } + .offset-lg-9 { + margin-right: 75%; + } + .offset-lg-10 { + margin-right: 83.33333333%; + } + .offset-lg-11 { + margin-right: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-right: 0; + } + .offset-xl-1 { + margin-right: 8.33333333%; + } + .offset-xl-2 { + margin-right: 16.66666667%; + } + .offset-xl-3 { + margin-right: 25%; + } + .offset-xl-4 { + margin-right: 33.33333333%; + } + .offset-xl-5 { + margin-right: 41.66666667%; + } + .offset-xl-6 { + margin-right: 50%; + } + .offset-xl-7 { + margin-right: 58.33333333%; + } + .offset-xl-8 { + margin-right: 66.66666667%; + } + .offset-xl-9 { + margin-right: 75%; + } + .offset-xl-10 { + margin-right: 83.33333333%; + } + .offset-xl-11 { + margin-right: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-right: 0; + } + .offset-xxl-1 { + margin-right: 8.33333333%; + } + .offset-xxl-2 { + margin-right: 16.66666667%; + } + .offset-xxl-3 { + margin-right: 25%; + } + .offset-xxl-4 { + margin-right: 33.33333333%; + } + .offset-xxl-5 { + margin-right: 41.66666667%; + } + .offset-xxl-6 { + margin-right: 50%; + } + .offset-xxl-7 { + margin-right: 58.33333333%; + } + .offset-xxl-8 { + margin-right: 66.66666667%; + } + .offset-xxl-9 { + margin-right: 75%; + } + .offset-xxl-10 { + margin-right: 83.33333333%; + } + .offset-xxl-11 { + margin-right: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-inline-grid { + display: inline-grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.mx-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.mx-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.mx-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.mx-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; +} + +.mx-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; +} + +.mx-auto { + margin-left: auto !important; + margin-right: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-left: 0 !important; +} + +.me-1 { + margin-left: 0.25rem !important; +} + +.me-2 { + margin-left: 0.5rem !important; +} + +.me-3 { + margin-left: 1rem !important; +} + +.me-4 { + margin-left: 1.5rem !important; +} + +.me-5 { + margin-left: 3rem !important; +} + +.me-auto { + margin-left: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-right: 0 !important; +} + +.ms-1 { + margin-right: 0.25rem !important; +} + +.ms-2 { + margin-right: 0.5rem !important; +} + +.ms-3 { + margin-right: 1rem !important; +} + +.ms-4 { + margin-right: 1.5rem !important; +} + +.ms-5 { + margin-right: 3rem !important; +} + +.ms-auto { + margin-right: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.px-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.px-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.px-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.px-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; +} + +.px-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-left: 0 !important; +} + +.pe-1 { + padding-left: 0.25rem !important; +} + +.pe-2 { + padding-left: 0.5rem !important; +} + +.pe-3 { + padding-left: 1rem !important; +} + +.pe-4 { + padding-left: 1.5rem !important; +} + +.pe-5 { + padding-left: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-right: 0 !important; +} + +.ps-1 { + padding-right: 0.25rem !important; +} + +.ps-2 { + padding-right: 0.5rem !important; +} + +.ps-3 { + padding-right: 1rem !important; +} + +.ps-4 { + padding-right: 1.5rem !important; +} + +.ps-5 { + padding-right: 3rem !important; +} + +@media (min-width: 576px) { + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-sm-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-sm-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-sm-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-sm-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-sm-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-sm-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-left: 0 !important; + } + .me-sm-1 { + margin-left: 0.25rem !important; + } + .me-sm-2 { + margin-left: 0.5rem !important; + } + .me-sm-3 { + margin-left: 1rem !important; + } + .me-sm-4 { + margin-left: 1.5rem !important; + } + .me-sm-5 { + margin-left: 3rem !important; + } + .me-sm-auto { + margin-left: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-right: 0 !important; + } + .ms-sm-1 { + margin-right: 0.25rem !important; + } + .ms-sm-2 { + margin-right: 0.5rem !important; + } + .ms-sm-3 { + margin-right: 1rem !important; + } + .ms-sm-4 { + margin-right: 1.5rem !important; + } + .ms-sm-5 { + margin-right: 3rem !important; + } + .ms-sm-auto { + margin-right: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-sm-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-sm-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-sm-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-sm-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-sm-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-left: 0 !important; + } + .pe-sm-1 { + padding-left: 0.25rem !important; + } + .pe-sm-2 { + padding-left: 0.5rem !important; + } + .pe-sm-3 { + padding-left: 1rem !important; + } + .pe-sm-4 { + padding-left: 1.5rem !important; + } + .pe-sm-5 { + padding-left: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-right: 0 !important; + } + .ps-sm-1 { + padding-right: 0.25rem !important; + } + .ps-sm-2 { + padding-right: 0.5rem !important; + } + .ps-sm-3 { + padding-right: 1rem !important; + } + .ps-sm-4 { + padding-right: 1.5rem !important; + } + .ps-sm-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 768px) { + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-md-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-md-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-md-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-md-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-md-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-md-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-left: 0 !important; + } + .me-md-1 { + margin-left: 0.25rem !important; + } + .me-md-2 { + margin-left: 0.5rem !important; + } + .me-md-3 { + margin-left: 1rem !important; + } + .me-md-4 { + margin-left: 1.5rem !important; + } + .me-md-5 { + margin-left: 3rem !important; + } + .me-md-auto { + margin-left: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-right: 0 !important; + } + .ms-md-1 { + margin-right: 0.25rem !important; + } + .ms-md-2 { + margin-right: 0.5rem !important; + } + .ms-md-3 { + margin-right: 1rem !important; + } + .ms-md-4 { + margin-right: 1.5rem !important; + } + .ms-md-5 { + margin-right: 3rem !important; + } + .ms-md-auto { + margin-right: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-md-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-md-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-md-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-md-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-md-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-left: 0 !important; + } + .pe-md-1 { + padding-left: 0.25rem !important; + } + .pe-md-2 { + padding-left: 0.5rem !important; + } + .pe-md-3 { + padding-left: 1rem !important; + } + .pe-md-4 { + padding-left: 1.5rem !important; + } + .pe-md-5 { + padding-left: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-right: 0 !important; + } + .ps-md-1 { + padding-right: 0.25rem !important; + } + .ps-md-2 { + padding-right: 0.5rem !important; + } + .ps-md-3 { + padding-right: 1rem !important; + } + .ps-md-4 { + padding-right: 1.5rem !important; + } + .ps-md-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 992px) { + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-lg-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-lg-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-lg-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-lg-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-lg-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-lg-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-left: 0 !important; + } + .me-lg-1 { + margin-left: 0.25rem !important; + } + .me-lg-2 { + margin-left: 0.5rem !important; + } + .me-lg-3 { + margin-left: 1rem !important; + } + .me-lg-4 { + margin-left: 1.5rem !important; + } + .me-lg-5 { + margin-left: 3rem !important; + } + .me-lg-auto { + margin-left: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-right: 0 !important; + } + .ms-lg-1 { + margin-right: 0.25rem !important; + } + .ms-lg-2 { + margin-right: 0.5rem !important; + } + .ms-lg-3 { + margin-right: 1rem !important; + } + .ms-lg-4 { + margin-right: 1.5rem !important; + } + .ms-lg-5 { + margin-right: 3rem !important; + } + .ms-lg-auto { + margin-right: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-lg-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-lg-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-lg-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-lg-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-lg-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-left: 0 !important; + } + .pe-lg-1 { + padding-left: 0.25rem !important; + } + .pe-lg-2 { + padding-left: 0.5rem !important; + } + .pe-lg-3 { + padding-left: 1rem !important; + } + .pe-lg-4 { + padding-left: 1.5rem !important; + } + .pe-lg-5 { + padding-left: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-right: 0 !important; + } + .ps-lg-1 { + padding-right: 0.25rem !important; + } + .ps-lg-2 { + padding-right: 0.5rem !important; + } + .ps-lg-3 { + padding-right: 1rem !important; + } + .ps-lg-4 { + padding-right: 1.5rem !important; + } + .ps-lg-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 1200px) { + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xl-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-left: 0 !important; + } + .me-xl-1 { + margin-left: 0.25rem !important; + } + .me-xl-2 { + margin-left: 0.5rem !important; + } + .me-xl-3 { + margin-left: 1rem !important; + } + .me-xl-4 { + margin-left: 1.5rem !important; + } + .me-xl-5 { + margin-left: 3rem !important; + } + .me-xl-auto { + margin-left: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-right: 0 !important; + } + .ms-xl-1 { + margin-right: 0.25rem !important; + } + .ms-xl-2 { + margin-right: 0.5rem !important; + } + .ms-xl-3 { + margin-right: 1rem !important; + } + .ms-xl-4 { + margin-right: 1.5rem !important; + } + .ms-xl-5 { + margin-right: 3rem !important; + } + .ms-xl-auto { + margin-right: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xl-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-left: 0 !important; + } + .pe-xl-1 { + padding-left: 0.25rem !important; + } + .pe-xl-2 { + padding-left: 0.5rem !important; + } + .pe-xl-3 { + padding-left: 1rem !important; + } + .pe-xl-4 { + padding-left: 1.5rem !important; + } + .pe-xl-5 { + padding-left: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-right: 0 !important; + } + .ps-xl-1 { + padding-right: 0.25rem !important; + } + .ps-xl-2 { + padding-right: 0.5rem !important; + } + .ps-xl-3 { + padding-right: 1rem !important; + } + .ps-xl-4 { + padding-right: 1.5rem !important; + } + .ps-xl-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 1400px) { + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xxl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xxl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xxl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xxl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xxl-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xxl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-left: 0 !important; + } + .me-xxl-1 { + margin-left: 0.25rem !important; + } + .me-xxl-2 { + margin-left: 0.5rem !important; + } + .me-xxl-3 { + margin-left: 1rem !important; + } + .me-xxl-4 { + margin-left: 1.5rem !important; + } + .me-xxl-5 { + margin-left: 3rem !important; + } + .me-xxl-auto { + margin-left: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-right: 0 !important; + } + .ms-xxl-1 { + margin-right: 0.25rem !important; + } + .ms-xxl-2 { + margin-right: 0.5rem !important; + } + .ms-xxl-3 { + margin-right: 1rem !important; + } + .ms-xxl-4 { + margin-right: 1.5rem !important; + } + .ms-xxl-5 { + margin-right: 3rem !important; + } + .ms-xxl-auto { + margin-right: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xxl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xxl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xxl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xxl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xxl-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-left: 0 !important; + } + .pe-xxl-1 { + padding-left: 0.25rem !important; + } + .pe-xxl-2 { + padding-left: 0.5rem !important; + } + .pe-xxl-3 { + padding-left: 1rem !important; + } + .pe-xxl-4 { + padding-left: 1.5rem !important; + } + .pe-xxl-5 { + padding-left: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-right: 0 !important; + } + .ps-xxl-1 { + padding-right: 0.25rem !important; + } + .ps-xxl-2 { + padding-right: 0.5rem !important; + } + .ps-xxl-3 { + padding-right: 1rem !important; + } + .ps-xxl-4 { + padding-right: 1.5rem !important; + } + .ps-xxl-5 { + padding-right: 3rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap-grid.rtl.css.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css.map new file mode 100644 index 000000000..a3c40bb1e --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","bootstrap-grid.css","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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EE,mBAAA;EJ6+BR;EI1+BM;;IAEE,mBAAA;EJ4+BR;AACF;AKpiCQ;EAOI,0BAAA;ALgiCZ;;AKviCQ;EAOI,gCAAA;ALoiCZ;;AK3iCQ;EAOI,yBAAA;ALwiCZ;;AK/iCQ;EAOI,wBAAA;AL4iCZ;;AKnjCQ;EAOI,+BAAA;ALgjCZ;;AKvjCQ;EAOI,yBAAA;ALojCZ;;AK3jCQ;EAOI,6BAAA;ALwjCZ;;AK/jCQ;EAOI,8BAAA;AL4jCZ;;AKnkCQ;EAOI,wBAAA;ALgkCZ;;AKvkCQ;EAOI,+BAAA;ALokCZ;;AK3kCQ;EAOI,wBAAA;ALwkCZ;;AK/kCQ;EAOI,yBAAA;AL4kCZ;;AKnlCQ;EAOI,8BAAA;ALglCZ;;AKvlCQ;EAOI,iCAAA;ALolCZ;;AK3lCQ;EAOI,sCAAA;ALwlCZ;;AK/lCQ;EAOI,yCAAA;AL4lCZ;;AKnmCQ;EAOI,uBAAA;ALgmCZ;;AKvmCQ;EAOI,uBAAA;ALomCZ;;AK3mCQ;EAOI,yBAAA;ALwmCZ;;AK/mCQ;EAOI,yBAAA;AL4mCZ;;AKnnCQ;EAOI,0BAAA;ALgnCZ;;AKvnCQ;EAOI,4BAAA;ALonCZ;;AK3nCQ;EAOI,kCAAA;ALwnCZ;;AK/nCQ;EAOI,sCAAA;AL4nCZ;;AKnoCQ;EAOI,oCAAA;ALgoCZ;;AKvoCQ;EAOI,kCAAA;ALooCZ;;AK3oCQ;EAOI,yCAAA;ALwoCZ;;AK/oCQ;EAOI,wCAAA;AL4oCZ;;AKnpCQ;EAOI,wCAAA;ALgpCZ;;AKvpCQ;EAOI,kCAAA;ALopCZ;;AK3pCQ;EAOI,gCAAA;ALwpCZ;;AK/pCQ;EAOI,8BAAA;AL4pCZ;;AKnqCQ;EAOI,gCAAA;ALgqCZ;;AKvqCQ;EAOI,+BAAA;ALoqCZ;;AK3qCQ;EAOI,oCAAA;ALwqCZ;;AK/qCQ;EAOI,kCAAA;AL4qCZ;;AKnrCQ;EAOI,gCAAA;ALgrCZ;;AKvrCQ;EAOI,uCAAA;ALorCZ;;AK3rCQ;EAOI,sCAAA;ALwrCZ;;AK/rCQ;EAOI,iCAAA;AL4rCZ;;AKnsCQ;EAOI,2BAAA;ALgsCZ;;AKvsCQ;EAOI,iCAAA;ALosCZ;;AK3sCQ;EAOI,+BAAA;ALwsCZ;;AK/sCQ;EAOI,6BAAA;AL4sCZ;;AKntCQ;EA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;AL8iDZ;;AKrjDQ;EAOI,4BAAA;ALkjDZ;;AKzjDQ;EAOI,0BAAA;ALsjDZ;;AK7jDQ;EAOI,gCAAA;AL0jDZ;;AKjkDQ;EAOI,+BAAA;AL8jDZ;;AKrkDQ;EAOI,6BAAA;ALkkDZ;;AKzkDQ;EAOI,+BAAA;ALskDZ;;AK7kDQ;EAOI,6BAAA;AL0kDZ;;AKjlDQ;EAOI,4BAAA;AL8kDZ;;AKrlDQ;EAOI,kCAAA;ALklDZ;;AKzlDQ;EAOI,iCAAA;ALslDZ;;AK7lDQ;EAOI,+BAAA;AL0lDZ;;AKjmDQ;EAOI,iCAAA;AL8lDZ;;AKrmDQ;EAOI,+BAAA;ALkmDZ;;AKzmDQ;EAOI,2BAAA;ALsmDZ;;AK7mDQ;EAOI,iCAAA;AL0mDZ;;AKjnDQ;EAOI,gCAAA;AL8mDZ;;AKrnDQ;EAOI,8BAAA;ALknDZ;;AKznDQ;EAOI,gCAAA;ALsnDZ;;AK7nDQ;EAOI,8BAAA;AL0nDZ;;ACpoDI;EIGI;IAOI,0BAAA;EL+nDV;EKtoDM;IAOI,gCAAA;ELkoDV;EKzoDM;IAOI,yBAAA;ELqoDV;EK5oDM;IAOI,wBAAA;ELwoDV;EK/oDM;IAOI,+BAAA;EL2oDV;EKlpDM;IAOI,yBAAA;EL8oDV;EKrpDM;IAOI,6BAAA;ELipDV;EKxpDM;IAOI,8BAAA;ELopDV;EK3pDM;IAOI,wBAAA;ELupDV;EK9pDM;IAOI,+BAAA;EL0pDV;EKjqDM;IAOI,wBAAA;EL6pDV;EKpqDM;IAOI,yBAAA;ELgqDV;EKvqDM;IAOI,8BAAA;ELmqDV;EK1qDM;IAOI,iCAAA;ELsqDV;EK7qDM;IAOI,sCAAA;ELyqDV;EKhrDM;IAOI,yCAAA;EL4qDV;EKnrDM;IAOI,uBAAA;EL+qDV;EKtrDM;IAOI,uBAAA;ELkrDV;EKzrDM;IAOI,yBAAA;ELqrDV;EK5rDM;IAOI,yBAAA;ELwrDV;EK/rDM;IAOI,0BAAA;EL2rDV;EKlsDM;IAOI,4BAAA;EL8rDV;EKrsDM;IAOI,kCAAA;ELisDV;EKxsDM;IAOI,sCAAA;ELosDV;EK3sDM;IAOI,oCAAA;ELusDV;EK9sDM;IAOI,kCAAA;EL0sDV;EKjtDM;IAOI,yCAAA;EL6sDV;EKptDM;IAOI,wCAAA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nEV;EK/nEM;IAOI,yCAAA;EL2nEV;EKloEM;IAOI,uBAAA;EL8nEV;EKroEM;IAOI,uBAAA;ELioEV;EKxoEM;IAOI,yBAAA;ELooEV;EK3oEM;IAOI,yBAAA;ELuoEV;EK9oEM;IAOI,0BAAA;EL0oEV;EKjpEM;IAOI,4BAAA;EL6oEV;EKppEM;IAOI,kCAAA;ELgpEV;EKvpEM;IAOI,sCAAA;ELmpEV;EK1pEM;IAOI,oCAAA;ELspEV;EK7pEM;IAOI,kCAAA;ELypEV;EKhqEM;IAOI,yCAAA;EL4pEV;EKnqEM;IAOI,wCAAA;EL+pEV;EKtqEM;IAOI,wCAAA;ELkqEV;EKzqEM;IAOI,kCAAA;ELqqEV;EK5qEM;IAOI,gCAAA;ELwqEV;EK/qEM;IAOI,8BAAA;EL2qEV;EKlrEM;IAOI,gCAAA;EL8qEV;EKrrEM;IAOI,+BAAA;ELirEV;EKxrEM;IAOI,oCAAA;ELorEV;EK3rEM;IAOI,kCAAA;ELurEV;EK9rEM;IAOI,gCAAA;EL0rEV;EKjsEM;IAOI,uCAAA;EL6rEV;EKpsEM;IAOI,sCAAA;ELgsEV;EKvsEM;IAOI,iCAAA;ELmsEV;EK1sEM;IAOI,2BAAA;ELssEV;EK7sEM;IAOI,iCAAA;ELysEV;EKhtEM;IAOI,+BAAA;EL4sEV;EKntEM;IAOI,6BAAA;EL+sEV;EKttEM;IAOI,+BAAA;ELktEV;EKztEM;IAOI,8BAAA;ELqtEV;EK5tEM;IAOI,oBAAA;ELwtEV;EK/tEM;IAOI,mBAAA;EL2tEV;EKluEM;IAOI,mBAAA;EL8tEV;EKruEM;IAOI,mBAAA;ELiuEV;EKxuEM;IAOI,mBAAA;ELouEV;EK3uEM;IAOI,mBAAA;ELuuEV;EK9uEM;IAOI,mBAAA;EL0uEV;EKjvEM;IAOI,mBAAA;EL6uEV;EKpvEM;IAOI,oBAAA;ELgvEV;EKvvEM;IAOI,0BAAA;ELmvEV;EK1vEM;IAOI,yBAAA;ELsvEV;EK7vEM;IAOI,uBAAA;ELyvEV;EKhwEM;IAOI,yBAAA;EL4vEV;EKnwEM;IAOI,uBAAA;EL+vEV;EKtwEM;IAOI,uBAAA;ELkwEV;EKzwEM;IAOI,yBAAA;IAAA,0BAAA;ELswEV;EK7wEM;IAO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EKviFM;IAOI,yBAAA;ELmiFV;EK1iFM;IAOI,wBAAA;ELsiFV;EK7iFM;IAOI,+BAAA;ELyiFV;EKhjFM;IAOI,yBAAA;EL4iFV;EKnjFM;IAOI,6BAAA;EL+iFV;EKtjFM;IAOI,8BAAA;ELkjFV;EKzjFM;IAOI,wBAAA;ELqjFV;EK5jFM;IAOI,+BAAA;ELwjFV;EK/jFM;IAOI,wBAAA;EL2jFV;EKlkFM;IAOI,yBAAA;EL8jFV;EKrkFM;IAOI,8BAAA;ELikFV;EKxkFM;IAOI,iCAAA;ELokFV;EK3kFM;IAOI,sCAAA;ELukFV;EK9kFM;IAOI,yCAAA;EL0kFV;EKjlFM;IAOI,uBAAA;EL6kFV;EKplFM;IAOI,uBAAA;ELglFV;EKvlFM;IAOI,yBAAA;ELmlFV;EK1lFM;IAOI,yBAAA;ELslFV;EK7lFM;IAOI,0BAAA;ELylFV;EKhmFM;IAOI,4BAAA;EL4lFV;EKnmFM;IAOI,kCAAA;EL+lFV;EKtmFM;IAOI,sCAAA;ELkmFV;EKzmFM;IAOI,oCAAA;ELqmFV;EK5mFM;IAOI,kCAAA;ELwmFV;EK/mFM;IAOI,yCAAA;EL2mFV;EKlnFM;IAOI,wCAAA;EL8mFV;EKrnFM;IAOI,wCAAA;ELinFV;EKxnFM;IAOI,kCAAA;ELonFV;EK3nFM;IAOI,gCAAA;ELunFV;EK9nFM;IAOI,8BAAA;EL0nFV;EKjoFM;IAOI,gCAAA;EL6nFV;EKpoFM;IAOI,+BAAA;ELgoFV;EKvoFM;IAOI,oCAAA;ELmoFV;EK1oFM;IAOI,kCAAA;ELsoFV;EK7oFM;IAOI,gCAAA;ELyoFV;EKhpFM;IAOI,uCAAA;EL4oFV;EKnpFM;IAOI,sCAAA;EL+oFV;EKtpFM;IAOI,iCAAA;ELkpFV;EKzpFM;IAOI,2BAAA;ELqpFV;EK5pFM;IAOI,iCAAA;ELwpFV;EK/pFM;IAOI,+BAAA;EL2pFV;EKlqFM;IAOI,6BAAA;EL8pFV;EKrqFM;IAOI,+BAAA;ELiqFV;EKxqFM;IAOI,8BAAA;ELoqFV;EK3qFM;IAOI,oBAAA;ELuqFV;EK9qFM;IAOI,mBAAA;EL0qFV;EKjrFM;IAOI,mBAAA;EL6qFV;EKprFM;IAOI,mBAAA;ELgrFV;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AAA;ELy8FV;EKh9FM;IAOI,iCAAA;EL48FV;EKn9FM;IAOI,+BAAA;EL+8FV;EKt9FM;IAOI,iCAAA;ELk9FV;EKz9FM;IAOI,+BAAA;ELq9FV;EK59FM;IAOI,2BAAA;ELw9FV;EK/9FM;IAOI,iCAAA;EL29FV;EKl+FM;IAOI,gCAAA;EL89FV;EKr+FM;IAOI,8BAAA;ELi+FV;EKx+FM;IAOI,gCAAA;ELo+FV;EK3+FM;IAOI,8BAAA;ELu+FV;AACF;ACl/FI;EIGI;IAOI,0BAAA;EL4+FV;EKn/FM;IAOI,gCAAA;EL++FV;EKt/FM;IAOI,yBAAA;ELk/FV;EKz/FM;IAOI,wBAAA;ELq/FV;EK5/FM;IAOI,+BAAA;ELw/FV;EK//FM;IAOI,yBAAA;EL2/FV;EKlgGM;IAOI,6BAAA;EL8/FV;EKrgGM;IAOI,8BAAA;ELigGV;EKxgGM;IAOI,wBAAA;ELogGV;EK3gGM;IAOI,+BAAA;ELugGV;EK9gGM;IAOI,wBAAA;EL0gGV;EKjhGM;IAOI,yBAAA;EL6gGV;EKphGM;IAOI,8BAAA;ELghGV;EKvhGM;IAOI,iCAAA;ELmhGV;EK1hGM;IAOI,sCAAA;ELshGV;EK7hGM;IAOI,yCAAA;ELyhGV;EKhiGM;IAOI,uBAAA;EL4hGV;EKniGM;IAOI,uBAAA;EL+hGV;EKtiGM;IAOI,yBAAA;ELkiGV;EKziGM;IAOI,yBAAA;ELqiGV;EK5iGM;IAOI,0BAAA;ELwiGV;EK/iGM;IAOI,4BAAA;EL2iGV;EKljGM;IAOI,kCAAA;EL8iGV;EKrjGM;IAOI,sCAAA;ELijGV;EKxjGM;IAOI,oCAAA;ELojGV;EK3jGM;IAOI,kCAAA;ELujGV;EK9jGM;IAOI,yCAAA;EL0jGV;EKjkGM;IAOI,wCAAA;EL6jGV;EKpkGM;IAOI,wCAAA;ELgkGV;EKvkGM;IAOI,kCAAA;ELmkGV;EK1kGM;IAOI,gCAAA;ELskGV;EK7kGM;IAOI,8BAAA;ELykGV;EKhlGM;IAOI,gCAAA;EL4kGV;EKnlGM;IAOI,+BAAA;EL+kGV;EKtlGM;IAOI,oCAAA;ELklGV;EKzlGM;IAOI,kCAAA;ELqlGV;EK5lGM;IAOI,gCAAA;ELwlGV;EK/lGM;IAOI,uCAAA;EL2lGV;EKlmGM;IAOI,sCAAA;EL8lGV;EKrmGM;IAOI,iCAAA;ELimGV;EKxmGM;IAOI,2BAAA;ELomGV;EK3mGM;IAOI,iCAAA;ELumGV;EK9mGM;IAOI,+BAAA;EL0mGV;EKjnGM;IAOI,6BAAA;EL6mGV;EKpnGM;IAOI,+BAAA;ELgnGV;EKvnGM;IAOI,8BAAA;ELmnGV;EK1nGM;IAOI,oBAAA;ELsnGV;EK7nGM;IAOI,mBAAA;ELynGV;EKhoGM;IAOI,mBAAA;EL4nGV;EKnoGM;IAOI,mBAAA;EL+nGV;EKtoGM;IAOI,mBAAA;ELkoGV;EKzoGM;IAOI,mBAAA;ELqoGV;EK5oGM;IAOI,mBAAA;ELwoGV;EK/oGM;IAOI,mBAAA;EL2oGV;EKlpGM;IAOI,oBAAA;EL8oGV;EKrpGM;IAOI,0BAAA;ELipGV;EKxpGM;IAOI,yBAAA;ELopGV;EK3pGM;IAOI,uBAAA;ELupGV;EK9pGM;IAOI,yBAAA;EL0pGV;EKjqGM;IAOI,uBAAA;EL6pGV;EKpqGM;IAOI,uBAAA;ELgqGV;EKvqGM;IAOI,yBAAA;IAAA,0BAAA;ELoqGV;EK3qGM;IAOI,+BAAA;IAAA,gCAAA;ELwqGV;EK/qGM;IAOI,8BAAA;IAAA,+BAAA;EL4qGV;EKnrGM;IAOI,4BAAA;IAAA,6BAAA;ELgrGV;EKvrGM;IAOI,8BAAA;IAAA,+BAAA;ELorGV;EK3rGM;IAOI,4BAAA;IAAA,6BAAA;ELwrGV;EK/rGM;IAOI,4BAAA;IAAA,6BAAA;EL4rGV;EKnsGM;IAOI,wBAAA;IAAA,2BAAA;ELgsGV;EKvsGM;IAOI,8BAAA;IAAA,iCAAA;ELosGV;EK3sGM;IAOI,6BAAA;IAAA,gCAAA;ELwsGV;EK/sGM;IAOI,2BAAA;IAAA,8BAAA;EL4sGV;EKntGM;IAOI,6BAAA;IAAA,gCAAA;ELgtGV;EKvtGM;IAOI,2BAAA;IAAA,8BAAA;ELotGV;EK3tGM;IAOI,2BAAA;IAAA,8BAAA;ELwtGV;EK/tGM;IAOI,wBAAA;EL2tGV;EKluGM;IAOI,8BAAA;EL8tGV;EKruGM;IAOI,6BAAA;ELiuGV;EKxuGM;IAOI,2BAAA;ELouGV;EK3uGM;IAOI,6BAAA;ELuuGV;EK9uGM;IAOI,2BAAA;EL0uGV;EKjvGM;IAOI,2BAAA;EL6uGV;EKpvGM;IAOI,yBAAA;ELgvGV;EKvvGM;IAOI,+BAAA;ELmvGV;EK1vGM;IAOI,8BAAA;ELsvGV;EK7vGM;IAOI,4BAAA;ELyvGV;EKhwGM;IAOI,8BAAA;EL4vGV;EKnwGM;IAOI,4BAAA;EL+vGV;EKtwGM;IAOI,4BAAA;ELkwGV;EKzwGM;IAOI,2BAAA;ELqwGV;EK5wGM;IAOI,iCAAA;ELwwGV;EK/wGM;IAOI,gCAAA;EL2wGV;EKlxGM;IAOI,8BAAA;EL8wGV;EKrxGM;IAOI,gCAAA;ELixGV;EKxxGM;IAOI,8BAAA;ELoxGV;EK3xGM;IAOI,8BAAA;ELuxGV;EK9xGM;IAOI,0BAAA;EL0xGV;EKjyGM;IAOI,gCAAA;EL6xGV;EKpyGM;IAOI,+BAAA;ELgyGV;EKvyGM;IAOI,6BAAA;ELmyGV;EK1yGM;IAOI,+BAAA;ELsyGV;EK7yGM;IAOI,6BAAA;ELyyGV;EKhzGM;IAOI,6BAAA;EL4yGV;EKnzGM;IAOI,qBAAA;EL+yGV;EKtzGM;IAOI,2BAAA;ELkzGV;EKzzGM;IAOI,0BAAA;ELqzGV;EK5zGM;IAOI,wBAAA;ELwzGV;EK/zGM;IAOI,0BAAA;EL2zGV;EKl0GM;IAOI,wBAAA;EL8zGV;EKr0GM;IAOI,0BAAA;IAAA,2BAAA;ELk0GV;EKz0GM;IAOI,gCAAA;IAAA,iCAAA;ELs0GV;EK70GM;IAOI,+BAAA;IAAA,gCAAA;EL00GV;EKj1GM;IAOI,6BAAA;IAAA,8BAAA;EL80GV;EKr1GM;IAOI,+BAAA;IAAA,gCAAA;ELk1GV;EKz1GM;IAOI,6BAAA;IAAA,8BAAA;ELs1GV;EK71GM;IAOI,yBAAA;IAAA,4BAAA;EL01GV;EKj2GM;IAOI,+BAAA;IAAA,kCAAA;EL81GV;EKr2GM;IAOI,8BAAA;IAAA,iCAAA;ELk2GV;EKz2GM;IAOI,4BAAA;IAAA,+BAAA;ELs2GV;EK72GM;IAOI,8BAAA;IAAA,iCAAA;EL02GV;EKj3GM;IAOI,4BAAA;IAAA,+BAAA;EL82GV;EKr3GM;IAOI,yBAAA;ELi3GV;EKx3GM;IAOI,+BAAA;ELo3GV;EK33GM;IAOI,8BAAA;ELu3GV;EK93GM;IAOI,4BAAA;EL03GV;EKj4GM;IAOI,8BAAA;EL63GV;EKp4GM;IAOI,4BAAA;ELg4GV;EKv4GM;IAOI,0BAAA;ELm4GV;EK14GM;IAOI,gCAAA;ELs4GV;EK74GM;IAOI,+BAAA;ELy4GV;EKh5GM;IAOI,6BAAA;EL44GV;EKn5GM;IAOI,+BAAA;EL+4GV;EKt5GM;IAOI,6BAAA;ELk5GV;EKz5GM;IAOI,4BAAA;ELq5GV;EK55GM;IAOI,kCAAA;ELw5GV;EK/5GM;IAOI,iCAAA;EL25GV;EKl6GM;IAOI,+BAAA;EL85GV;EKr6GM;IAOI,iCAAA;ELi6GV;EKx6GM;IAOI,+BAAA;ELo6GV;EK36GM;IAOI,2BAAA;ELu6GV;EK96GM;IAOI,iCAAA;EL06GV;EKj7GM;IAOI,gCAAA;EL66GV;EKp7GM;IAOI,8BAAA;ELg7GV;EKv7GM;IAOI,gCAAA;ELm7GV;EK17GM;IAOI,8BAAA;ELs7GV;AACF;ACj8GI;EIGI;IAOI,0BAAA;EL27GV;EKl8GM;IAOI,gCAAA;EL87GV;EKr8GM;IAOI,yBAAA;ELi8GV;EKx8GM;IAOI,wBAAA;ELo8GV;EK38GM;IAOI,+BAAA;ELu8GV;EK98GM;IAOI,yBAAA;EL08GV;EKj9GM;IAOI,6BAAA;EL68GV;EKp9GM;IAOI,8BAAA;ELg9GV;EKv9GM;IAOI,wBAAA;ELm9GV;EK19GM;IAOI,+BAAA;ELs9GV;EK79GM;IAOI,wBAAA;ELy9GV;EKh+GM;IAOI,yBAAA;EL49GV;EKn+GM;IAOI,8BAAA;EL+9GV;EKt+GM;IAOI,iCAAA;ELk+GV;EKz+GM;IAOI,sCAAA;ELq+GV;EK5+GM;IAOI,yCAAA;ELw+GV;EK/+GM;IAOI,uBAAA;EL2+GV;EKl/GM;IAOI,uBAAA;EL8+GV;EKr/GM;IAOI,yBAAA;ELi/GV;EKx/GM;IAOI,yBAAA;ELo/GV;EK3/GM;IAOI,0BAAA;ELu/GV;EK9/GM;IAOI,4BAAA;EL0/GV;EKjgHM;IAOI,kCAAA;EL6/GV;EKpgHM;IAOI,sCAAA;ELggHV;EKvgHM;I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","file":"bootstrap-grid.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !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-last {\n order: 6 !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: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: 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: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// scss-docs-start theme-text-variables\n$primary-text-emphasis: shade-color($primary, 60%) !default;\n$secondary-text-emphasis: shade-color($secondary, 60%) !default;\n$success-text-emphasis: shade-color($success, 60%) !default;\n$info-text-emphasis: shade-color($info, 60%) !default;\n$warning-text-emphasis: shade-color($warning, 60%) !default;\n$danger-text-emphasis: shade-color($danger, 60%) !default;\n$light-text-emphasis: $gray-700 !default;\n$dark-text-emphasis: $gray-700 !default;\n// scss-docs-end theme-text-variables\n\n// scss-docs-start theme-bg-subtle-variables\n$primary-bg-subtle: tint-color($primary, 80%) !default;\n$secondary-bg-subtle: tint-color($secondary, 80%) !default;\n$success-bg-subtle: tint-color($success, 80%) !default;\n$info-bg-subtle: tint-color($info, 80%) !default;\n$warning-bg-subtle: tint-color($warning, 80%) !default;\n$danger-bg-subtle: tint-color($danger, 80%) !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n// scss-docs-end theme-bg-subtle-variables\n\n// scss-docs-start theme-border-subtle-variables\n$primary-border-subtle: tint-color($primary, 60%) !default;\n$secondary-border-subtle: tint-color($secondary, 60%) !default;\n$success-border-subtle: tint-color($success, 60%) !default;\n$info-border-subtle: tint-color($info, 60%) !default;\n$warning-border-subtle: tint-color($warning, 60%) !default;\n$danger-border-subtle: tint-color($danger, 60%) !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n// scss-docs-end theme-border-subtle-variables\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$body-emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap: .375rem !default;\n$icon-link-underline-offset: .25em !default;\n$icon-link-icon-size: 1em !default;\n$icon-link-icon-transition: .2s ease-in-out transform !default;\n$icon-link-icon-transform: translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-xxl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n// fusv-disable\n$border-radius-2xl: $border-radius-xxl !default; // Deprecated in v5.3.0\n// fusv-enable\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start focus-ring-variables\n$focus-ring-width: .25rem !default;\n$focus-ring-opacity: .25 !default;\n$focus-ring-color: rgba($primary, $focus-ring-opacity) !default;\n$focus-ring-blur: 0 !default;\n$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;\n// scss-docs-end focus-ring-variables\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n// fusv-disable\n$text-muted: var(--#{$prefix}secondary-color) !default; // Deprecated in 5.3.0\n// fusv-enable\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: var(--#{$prefix}body-bg) !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: var(--#{$prefix}secondary-color) !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: $focus-ring-width !default;\n$input-btn-focus-color-opacity: $focus-ring-opacity !default;\n$input-btn-focus-color: $focus-ring-color !default;\n$input-btn-focus-blur: $focus-ring-blur !default;\n$input-btn-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-color: var(--#{$prefix}body-color) !default;\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: var(--#{$prefix}border-radius) !default;\n$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}body-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: var(--#{$prefix}border-radius) !default;\n$input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc(#{$input-border-width} * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.5em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color: $form-feedback-valid-color !default;\n$form-valid-border-color: $form-feedback-valid-color !default;\n$form-invalid-color: $form-feedback-invalid-color !default;\n$form-invalid-border-color: $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}form-valid-color),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-valid-border-color),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}form-invalid-color),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}form-invalid-border-color),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n$nav-link-focus-box-shadow: $focus-ring-box-shadow !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n\n$nav-underline-gap: 1rem !default;\n$nav-underline-border-width: .125rem !default;\n$nav-underline-link-active-color: var(--#{$prefix}emphasis-color) !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-icon-color: rgba($body-color, .75) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: var(--#{$prefix}border-radius) !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: var(--#{$prefix}tertiary-color) !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $focus-ring-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;\n$pagination-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text-emphasis !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: var(--#{$prefix}border-radius) !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: var(--#{$prefix}border-radius) !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $focus-ring-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css new file mode 100644 index 000000000..07ebd269f --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap Grid v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css.map new file mode 100644 index 000000000..a0b721a01 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-grid.rtl.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_containers.scss","dist/css/bootstrap-grid.rtl.css","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;ACKA,WCAF,iBAGA,cACA,cACA,cAHA,cADA,eCJE,cAAA,OACA,cAAA,EACA,MAAA,KACA,aAAA,8BACA,cAAA,8BACA,YAAA,KACA,aAAA,KCsDE,yBH5CE,WAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cACE,UAAA,OG2CJ,yBH5CE,WAAA,cAAA,cAAA,cACE,UAAA,OG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QG2CJ,0BH5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QIhBR,MAEI,mBAAA,EAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,MAAA,mBAAA,OAAA,oBAAA,OAKF,KCNA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KAEA,WAAA,8BACA,YAAA,+BACA,aAAA,+BDEE,OCGF,WAAA,WAIA,YAAA,EACA,MAAA,KACA,UAAA,KACA,aAAA,8BACA,cAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,aAAA,YAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,aAwDU,UAxDV,aAAA,IAwDU,WAxDV,aAAA,aAwDU,WAxDV,aAAA,aAmEM,KJ6GR,MI3GU,cAAA,EAGF,KJ6GR,MI3GU,cAAA,EAPF,KJuHR,MIrHU,cAAA,QAGF,KJuHR,MIrHU,cAAA,QAPF,KJiIR,MI/HU,cAAA,OAGF,KJiIR,MI/HU,cAAA,OAPF,KJ2IR,MIzIU,cAAA,KAGF,KJ2IR,MIzIU,cAAA,KAPF,KJqJR,MInJU,cAAA,OAGF,KJqJR,MInJU,cAAA,OAPF,KJ+JR,MI7JU,cAAA,KAGF,KJ+JR,MI7JU,cAAA,KF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJiSN,SI/RQ,cAAA,EAGF,QJgSN,SI9RQ,cAAA,EAPF,QJySN,SIvSQ,cAAA,QAGF,QJwSN,SItSQ,cAAA,QAPF,QJiTN,SI/SQ,cAAA,OAGF,QJgTN,SI9SQ,cAAA,OAPF,QJyTN,SIvTQ,cAAA,KAGF,QJwTN,SItTQ,cAAA,KAPF,QJiUN,SI/TQ,cAAA,OAGF,QJgUN,SI9TQ,cAAA,OAPF,QJyUN,SIvUQ,cAAA,KAGF,QJwUN,SItUQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJ0cN,SIxcQ,cAAA,EAGF,QJycN,SIvcQ,cAAA,EAPF,QJkdN,SIhdQ,cAAA,QAGF,QJidN,SI/cQ,cAAA,QAPF,QJ0dN,SIxdQ,cAAA,OAGF,QJydN,SIvdQ,cAAA,OAPF,QJkeN,SIheQ,cAAA,KAGF,QJieN,SI/dQ,cAAA,KAPF,QJ0eN,SIxeQ,cAAA,OAGF,QJyeN,SIveQ,cAAA,OAPF,QJkfN,SIhfQ,cAAA,KAGF,QJifN,SI/eQ,cAAA,MF1DN,yBEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJmnBN,SIjnBQ,cAAA,EAGF,QJknBN,SIhnBQ,cAAA,EAPF,QJ2nBN,SIznBQ,cAAA,QAGF,QJ0nBN,SIxnBQ,cAAA,QAPF,QJmoBN,SIjoBQ,cAAA,OAGF,QJkoBN,SIhoBQ,cAAA,OAPF,QJ2oBN,SIzoBQ,cAAA,KAGF,QJ0oBN,SIxoBQ,cAAA,KAPF,QJmpBN,SIjpBQ,cAAA,OAGF,QJkpBN,SIhpBQ,cAAA,OAPF,QJ2pBN,SIzpBQ,cAAA,KAGF,QJ0pBN,SIxpBQ,cAAA,MF1DN,0BEUE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,aAAA,EAwDU,aAxDV,aAAA,YAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,aAwDU,aAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAmEM,QJ4xBN,SI1xBQ,cAAA,EAGF,QJ2xBN,SIzxBQ,cAAA,EAPF,QJoyBN,SIlyBQ,cAAA,QAGF,QJmyBN,SIjyBQ,cAAA,QAPF,QJ4yBN,SI1yBQ,cAAA,OAGF,QJ2yBN,SIzyBQ,cAAA,OAPF,QJozBN,SIlzBQ,cAAA,KAGF,QJmzBN,SIjzBQ,cAAA,KAPF,QJ4zBN,SI1zBQ,cAAA,OAGF,QJ2zBN,SIzzBQ,cAAA,OAPF,QJo0BN,SIl0BQ,cAAA,KAGF,QJm0BN,SIj0BQ,cAAA,MF1DN,0BEUE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,aAAA,EAwDU,cAxDV,aAAA,YAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,aAwDU,cAxDV,aAAA,IAwDU,eAxDV,aAAA,aAwDU,eAxDV,aAAA,aAmEM,SJq8BN,UIn8BQ,cAAA,EAGF,SJo8BN,UIl8BQ,cAAA,EAPF,SJ68BN,UI38BQ,cAAA,QAGF,SJ48BN,UI18BQ,cAAA,QAPF,SJq9BN,UIn9BQ,cAAA,OAGF,SJo9BN,UIl9BQ,cAAA,OAPF,SJ69BN,UI39BQ,cAAA,KAGF,SJ49BN,UI19BQ,cAAA,KAPF,SJq+BN,UIn+BQ,cAAA,OAGF,SJo+BN,UIl+BQ,cAAA,OAPF,SJ6+BN,UI3+BQ,cAAA,KAGF,SJ4+BN,UI1+BQ,cAAA,MCvDF,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,YAAA,YAAA,aAAA,YAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,gBAAA,aAAA,gBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,iBAAA,aAAA,iBAPJ,MAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,aAAA,YAAA,cAAA,YAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,gBAAA,cAAA,gBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,aAAA,iBAAA,cAAA,iBAPJ,MAOI,aAAA,eAAA,cAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,yBGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,0BGGI,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,YAAA,YAAA,aAAA,YAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,gBAAA,aAAA,gBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,iBAAA,aAAA,iBAPJ,SAOI,YAAA,eAAA,aAAA,eAPJ,YAOI,YAAA,eAAA,aAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,aAAA,YAAA,cAAA,YAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,gBAAA,cAAA,gBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,aAAA,iBAAA,cAAA,iBAPJ,SAOI,aAAA,eAAA,cAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBHVR,0BGGI,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,YAAA,YAAA,aAAA,YAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,gBAAA,aAAA,gBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,iBAAA,aAAA,iBAPJ,UAOI,YAAA,eAAA,aAAA,eAPJ,aAOI,YAAA,eAAA,aAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,aAAA,YAAA,cAAA,YAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,gBAAA,cAAA,gBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,aAAA,iBAAA,cAAA,iBAPJ,UAOI,aAAA,eAAA,cAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBCnCZ,aD4BQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !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-last {\n order: 6 !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: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: 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: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n:root {\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix: \"\", $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css new file mode 100644 index 000000000..f3f1d0516 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css @@ -0,0 +1,593 @@ +/*! + * Bootstrap Reboot v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-primary-text-emphasis: #052c65; + --bs-secondary-text-emphasis: #2b2f32; + --bs-success-text-emphasis: #0a3622; + --bs-info-text-emphasis: #055160; + --bs-warning-text-emphasis: #664d03; + --bs-danger-text-emphasis: #58151c; + --bs-light-text-emphasis: #495057; + --bs-dark-text-emphasis: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #e2e3e5; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #c4c8cb; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33, 37, 41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233, 236, 239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33, 37, 41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248, 249, 250; + --bs-heading-color: inherit; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-xxl: 2rem; + --bs-border-radius-2xl: var(--bs-border-radius-xxl); + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-focus-ring-width: 0.25rem; + --bs-focus-ring-opacity: 0.25; + --bs-focus-ring-color: rgba(13, 110, 253, 0.25); + --bs-form-valid-color: #198754; + --bs-form-valid-border-color: #198754; + --bs-form-invalid-color: #dc3545; + --bs-form-invalid-border-color: #dc3545; +} + +[data-bs-theme=dark] { + color-scheme: dark; + --bs-body-color: #adb5bd; + --bs-body-color-rgb: 173, 181, 189; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #fff; + --bs-emphasis-color-rgb: 255, 255, 255; + --bs-secondary-color: rgba(173, 181, 189, 0.75); + --bs-secondary-color-rgb: 173, 181, 189; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(173, 181, 189, 0.5); + --bs-tertiary-color-rgb: 173, 181, 189; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-primary-text-emphasis: #6ea8fe; + --bs-secondary-text-emphasis: #a7acb1; + --bs-success-text-emphasis: #75b798; + --bs-info-text-emphasis: #6edff6; + --bs-warning-text-emphasis: #ffda6a; + --bs-danger-text-emphasis: #ea868f; + --bs-light-text-emphasis: #f8f9fa; + --bs-dark-text-emphasis: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #161719; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #41464b; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #087990; + --bs-warning-border-subtle: #997404; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: inherit; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #8bb9fe; + --bs-link-color-rgb: 110, 168, 254; + --bs-link-hover-color-rgb: 139, 185, 254; + --bs-code-color: #e685b5; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); + --bs-form-valid-color: #75b798; + --bs-form-valid-border-color: #75b798; + --bs-form-invalid-color: #ea868f; + --bs-form-invalid-border-color: #ea868f; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} + +h6, h5, h4, h3, h2, h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color); +} + +h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + h1 { + font-size: 2.5rem; + } +} + +h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + h2 { + font-size: 2rem; + } +} + +h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3 { + font-size: 1.75rem; + } +} + +h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h4 { + font-size: 1.5rem; + } +} + +h5 { + font-size: 1.25rem; +} + +h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 0.875em; +} + +mark { + padding: 0.1875em; + background-color: var(--bs-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-secondary-color); + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css.map b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css.map new file mode 100644 index 000000000..cce4e6ce5 --- /dev/null +++ b/src/SharedUI/wwwroot/lib/bootstrap/css/bootstrap-reboot.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"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E1IA;EHwLQ,iCAAA;AC1CR;ADlHI;EG5BJ;IH+LQ,iBAAA;EC7CN;AACF;;AE9IA;EH+KM,kBALI;ACxBV;;AE7IA;EH0KM,eALI;ACpBV;;AEtIA;EACE,aAAA;EACA,mBCwV0B;AH/M5B;;AE/HA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AFkIF;;AE5HA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AF+HF;;AEzHA;;EAEE,kBAAA;AF4HF;;AEzHA;;;EAGE,aAAA;EACA,mBAAA;AF4HF;;AEzHA;;;;EAIE,gBAAA;AF4HF;;AEzHA;EACE,gBC6b4B;AHjU9B;;AEvHA;EACE,qBAAA;EACA,cAAA;AF0HF;;AEpHA;EACE,gBAAA;AFuHF;;AE/GA;;EAEE,mBCsa4B;AHpT9B;;AE1GA;EH6EM,kBALI;ACsCV;;AEvGA;EACE,iBCif4B;EDhf5B,wCAAA;AF0GF;;AEjGA;;EAEE,kBAAA;EHyDI,iBALI;EGlDR,cAAA;EACA,wBAAA;AFoGF;;AEjGA;EAAM,eAAA;AFqGN;;AEpGA;EAAM,WAAA;AFwGN;;AEnGA;EACE,gEAAA;EACA,0BCiNwC;AH3G1C;AEpGE;EACE,mDAAA;AFsGJ;;AE3FE;EAEE,cAAA;EACA,qBAAA;AF6FJ;;AEtFA;;;;EAIE,qCCiV4B;EJlUxB,cALI;ACgFV;;AElFA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EHGI,kBALI;ACwFV;AEjFE;EHFI,kBALI;EGSN,cAAA;EACA,kBAAA;AFmFJ;;AE/EA;EHTM,kBALI;EGgBR,2BAAA;EACA,qBAAA;AFkFF;AE/EE;EACE,cAAA;AFiFJ;;AE7EA;EACE,2BAAA;EHrBI,kBALI;EG4BR,wBCo5CkC;EDn5ClC,sCCo5CkC;ECxrDhC,sBAAA;AJqXJ;AE9EE;EACE,UAAA;EH5BE,cALI;ACkHV;;AEtEA;EACE,gBAAA;AFyEF;;AEnEA;;EAEE,sBAAA;AFsEF;;AE9DA;EACE,oBAAA;EACA,yBAAA;AFiEF;;AE9DA;EACE,mBCwX4B;EDvX5B,sBCuX4B;EDtX5B,gCCwZ4B;EDvZ5B,gBAAA;AFiEF;;AE1DA;EAEE,mBAAA;EACA,gCAAA;AF4DF;;AEzDA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AF4DF;;AEpDA;EACE,qBAAA;AFuDF;;AEjDA;EAEE,gBAAA;AFmDF;;AE3CA;EACE,UAAA;AF8CF;;AEzCA;;;;;EAKE,SAAA;EACA,oBAAA;EH3HI,kBALI;EGkIR,oBAAA;AF4CF;;AExCA;;EAEE,oBAAA;AF2CF;;AEtCA;EACE,eAAA;AFyCF;;AEtCA;EAGE,iBAAA;AFuCF;AEpCE;EACE,UAAA;AFsCJ;;AE/BA;EACE,wBAAA;AFkCF;;AE1BA;;;;EAIE,0BAAA;AF6BF;AE1BI;;;;EACE,eAAA;AF+BN;;AExBA;EACE,UAAA;EACA,kBAAA;AF2BF;;AEtBA;EACE,gBAAA;AFyBF;;AEfA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AFkBF;;AEVA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBCgN4B;EJhatB,iCAAA;EGmNN,oBAAA;AFYF;AD3XI;EGwWJ;IHrMQ,iBAAA;EC4NN;AACF;AEfE;EACE,WAAA;AFiBJ;;AEVA;;;;;;;EAOE,UAAA;AFaF;;AEVA;EACE,YAAA;AFaF;;AEJA;EACE,oBAAA;EACA,6BAAA;AFOF;;AECA;;;;;;;CAAA;AAWA;EACE,wBAAA;AFDF;;AEMA;EACE,UAAA;AFHF;;AEUA;EACE,aAAA;EACA,0BAAA;AFPF;;AEKA;EACE,aAAA;EACA,0BAAA;AFPF;;AEYA;EACE,qBAAA;AFTF;;AEcA;EACE,SAAA;AFXF;;AEkBA;EACE,kBAAA;EACA,eAAA;AFfF;;AEuBA;EACE,wBAAA;AFpBF;;AE4BA;EACE,wBAAA;AFzBF","file":"bootstrap-reboot.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Reboot v5.3.0 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: #052c65;\n --bs-secondary-text-emphasis: #2b2f32;\n --bs-success-text-emphasis: #0a3622;\n --bs-info-text-emphasis: #055160;\n --bs-warning-text-emphasis: #664d03;\n --bs-danger-text-emphasis: #58151c;\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #e2e3e5;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #c4c8cb;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: #6ea8fe;\n --bs-secondary-text-emphasis: #a7acb1;\n --bs-success-text-emphasis: #75b798;\n --bs-info-text-emphasis: #6edff6;\n --bs-warning-text-emphasis: #ffda6a;\n --bs-danger-text-emphasis: #ea868f;\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #161719;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #41464b;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #087990;\n --bs-warning-border-subtle: #997404;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #8bb9fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: #75b798;\n --bs-form-valid-border-color: #75b798;\n --bs-form-invalid-color: #ea868f;\n --bs-form-invalid-border-color: #ea868f;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, h5, h4, h3, h2, h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1 {\n font-size: 2.5rem;\n }\n}\n\nh2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2 {\n font-size: 2rem;\n }\n}\n\nh3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3 {\n font-size: 1.75rem;\n }\n}\n\nh4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4 {\n font-size: 1.5rem;\n }\n}\n\nh5 {\n font-size: 1.25rem;\n}\n\nh6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 0.875em;\n}\n\nmark {\n padding: 0.1875em;\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n outline-offset: -2px;\n -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`