diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 3e2d77d..8a7e13f 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -14,12 +14,6 @@ "reportgenerator" ] }, - "paket": { - "version": "10.3.1", - "commands": [ - "paket" - ] - }, "fcswatch-cli": { "version": "0.7.14", "commands": [ @@ -37,6 +31,12 @@ "commands": [ "fantomas" ] + }, + "fsdocs-tool": { + "version": "18.1.0", + "commands": [ + "fsdocs" + ] } } } diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 24fe179..cace91e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -12,7 +12,6 @@ "ionide.ionide-fsharp", "ms-dotnettools.csharp", "editorconfig.editorconfig", - "ionide.ionide-paket", "ionide.ionide-fake" ] } diff --git a/.editorconfig b/.editorconfig index 304fc05..7030d56 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,12 +11,50 @@ root = true insert_final_newline = true indent_style = space indent_size = 4 +trim_trailing_whitespace = true end_of_line = lf [*.{fs,fsi,fsx,config}] +# https://fsprojects.github.io/fantomas/docs/end-users/Configuration.html charset = utf-8 trim_trailing_whitespace = true +max_line_length=100 +fsharp_multiline_bracket_style = stroustrup +fsharp_keep_max_number_of_blank_lines=2 +fsharp_max_array_or_list_number_of_items=1 +fsharp_array_or_list_multiline_formatter=number_of_items +fsharp_max_infix_operator_expression=10 +fsharp_multi_line_lambda_closing_newline=true + +# Visual Studio Solution Files +[*.slnx] +indent_size = 2 + +# XML project files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj,sfproj}] +indent_size = 2 + +# XML config files +[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] +indent_size = 2 + +# Markdown Files +[*.{md,mdx}] +trim_trailing_whitespace = false +# Bash Files +[*.{sh}] +end_of_line = lf + +# Batch Files +[*.{cmd,bat}] +end_of_line = crlf + +# Powershell Files +[*.{ps1, psm1}] +end_of_line = crlf + +# Paket files [paket.*] trim_trailing_whitespace = true indent_size = 2 @@ -24,3 +62,9 @@ indent_size = 2 [*.paket.references] trim_trailing_whitespace = true indent_size = 2 + + +# YAML Files +[*.{yml,yaml}] +indent_size = 2 +indent_style = space diff --git a/.fantomasignore b/.fantomasignore new file mode 100644 index 0000000..d9f2aa7 --- /dev/null +++ b/.fantomasignore @@ -0,0 +1,2 @@ +# Ignore AssemblyInfo files +AssemblyInfo.fs diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000..9c8817e --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,6 @@ +# This file contains a list of git hashes of revisions to be ignored by git +# These revisions are considered "unimportant" in +# that they are unlikely to be what you are interested in when blaming. +# Like formatting with Fantomas +# https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view +# Add formatting commits here diff --git a/.gitattributes b/.gitattributes index cb6f883..73947f0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,27 +1,105 @@ -# Auto detect text files +# Normalize line endings for all text files * text=auto -# Custom for Visual Studio -*.cs diff=csharp text=auto eol=lf -*.vb diff=csharp text=auto eol=lf -*.fs diff=csharp text=auto eol=lf -*.fsi diff=csharp text=auto eol=lf -*.fsx diff=csharp text=auto eol=lf -*.sln text eol=crlf merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union +############################### +# .NET Language Files +############################### +# Force LF for source code files to ensure consistency across platforms +*.cs diff=csharp text eol=lf +*.vb diff=csharp text eol=lf +*.fs diff=csharp text eol=lf +*.fsi diff=csharp text eol=lf +*.fsx diff=csharp text eol=lf + +############################### +# .NET Project Files +############################### +# Force LF for cross-platform compatibility +*.sln text eol=lf merge=union +*.csproj text eol=lf merge=union +*.vbproj text eol=lf merge=union +*.fsproj text eol=lf merge=union +*.dbproj text eol=lf merge=union +*.props text eol=lf +*.targets text eol=lf + +############################### +# Windows Scripts +############################### +# Force CRLF for Windows batch files and scripts +*.cmd text eol=crlf +*.bat text eol=crlf + +############################### +# Unix/Linux Scripts +############################### +# Force LF for shell scripts *.sh text eol=lf -# Standard to msysgit -*.doc diff=astextplain +############################### +# Configuration Files +############################### +# Configuration and data files should use LF +*.json text eol=lf +*.yml text eol=lf +*.yaml text eol=lf +*.xml text eol=lf +*.config text eol=lf +*.md text eol=lf +*.html text eol=lf +*.css text eol=lf +*.js text eol=lf +*.ts text eol=lf + +############################### +# Binary Files - Git LFS +############################### +# Images +*.png filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.jpeg filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text +*.bmp filter=lfs diff=lfs merge=lfs -text +*.ico filter=lfs diff=lfs merge=lfs -text +*.svg text eol=lf + +# Documents +*.pdf filter=lfs diff=lfs merge=lfs -text +*.doc filter=lfs diff=lfs merge=lfs -text +*.docx filter=lfs diff=lfs merge=lfs -text +*.xls filter=lfs diff=lfs merge=lfs -text +*.xlsx filter=lfs diff=lfs merge=lfs -text +*.ppt filter=lfs diff=lfs merge=lfs -text +*.pptx filter=lfs diff=lfs merge=lfs -text + +# Archives +*.zip filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.7z filter=lfs diff=lfs merge=lfs -text + +# Native Libraries (excluding .NET build artifacts) +*.so filter=lfs diff=lfs merge=lfs -text +*.dylib filter=lfs diff=lfs merge=lfs -text +*.lib filter=lfs diff=lfs merge=lfs -text +*.a filter=lfs diff=lfs merge=lfs -text + +# Media Files +*.mp4 filter=lfs diff=lfs merge=lfs -text +*.avi filter=lfs diff=lfs merge=lfs -text +*.mov filter=lfs diff=lfs merge=lfs -text +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text + +############################### +# Legacy Binary Handling +############################### +# Fallback for document types that might not use LFS *.DOC diff=astextplain -*.docx diff=astextplain *.DOCX diff=astextplain *.dot diff=astextplain *.DOT diff=astextplain -*.pdf diff=astextplain *.PDF diff=astextplain -*.rtf diff=astextplain *.RTF diff=astextplain +*.rtf diff=astextplain diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 96e3847..438c3eb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,35 +1,61 @@ -name: Build +name: Build master -on: [push, pull_request] - -env: - DISABLE_COVERAGE: 0 - DOTNET_NOLOGO: 1 +on: + push: + branches: + - main + pull_request: + branches: + - main jobs: build: strategy: matrix: + configuration: [Debug, Release] os: [ubuntu-latest, windows-latest, macOS-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 - # Not specifying a version will attempt to install via global.json - - name: Setup .NET SDK - uses: actions/setup-dotnet@v4 - with: - dotnet-version: '10.x' + - uses: actions/checkout@v5 + - name: Setup necessary dotnet SDKs + uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + 10.x + - name: Build via Bash + if: runner.os != 'Windows' + run: | + chmod +x ./build.sh + ./build.sh + env: + CI: true + CONFIGURATION: ${{ matrix.configuration }} + ENABLE_COVERAGE: true + - name: Build via Windows + if: runner.os == 'Windows' + run: ./build.cmd + env: + CI: true + CONFIGURATION: ${{ matrix.configuration }} + ENABLE_COVERAGE: true + - name: Test Report + uses: dorny/test-reporter@v1 + if: always() + with: + name: Test Results (${{ matrix.os }}-${{ matrix.configuration }}) + path: '**/TestResults/testResults*.trx' + reporter: dotnet-trx + # Builds the project in a dev container + build-devcontainer: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v5 - - name: Build - if: runner.os != 'Windows' - run: | - chmod +x ./build.sh - ./build.sh - env: - CI: true - - name: Build - if: runner.os == 'Windows' - run: ./build.cmd - env: - CI: true + - name: Build and run dev container task + uses: devcontainers/ci@v0.3 + with: + runCmd: | + chmod +x ./build.sh + ./build.sh diff --git a/.github/workflows/fsdocs-gh-pages.yml b/.github/workflows/fsdocs-gh-pages.yml new file mode 100644 index 0000000..a49680f --- /dev/null +++ b/.github/workflows/fsdocs-gh-pages.yml @@ -0,0 +1,58 @@ +name: Deploy Docs + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # 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 only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5 + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Setup necessary dotnet SDKs + uses: actions/setup-dotnet@v4 + with: + global-json-file: global.json + dotnet-version: | + 10.x + - name: Build Docs + run: | + chmod +x ./build.sh + ./build.sh builddocs + + - name: Upload artifact + uses: actions/upload-pages-artifact@v4 + with: + path: docs/ + + # 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@v4 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..bb1161f --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,33 @@ +name: .NET Publish + +on: + push: + tags: + - "*" +env: + CONFIGURATION: Release +jobs: + build: + # Sets permissions of the GITHUB_TOKEN to allow release creating + permissions: + contents: write + environment: + name: nuget + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Setup necessary dotnet SDKs + uses: actions/setup-dotnet@v4 + with: + global-json-file: global.json + dotnet-version: | + 10.x + - name: publish + env: + NUGET_TOKEN: ${{ secrets.NUGET_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + FAKE_DETAILED_ERRORS: true + ENABLE_COVERAGE: false # AltCover doesn't work with Release builds, reports lower coverage than actual + run: | + chmod +x ./build.sh + ./build.sh Publish diff --git a/.gitignore b/.gitignore index c3d0ccc..c82e618 100644 --- a/.gitignore +++ b/.gitignore @@ -262,7 +262,6 @@ dist/ # Test coverage files coverage.xml coverage.*.xml -coverage/ # Paket tool store .paket/.store @@ -270,3 +269,11 @@ coverage/ .fake .ionide + +# fsdocs generated +tmp/ +temp/ +.fsdocs +docs/ + +.DS_Store diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets deleted file mode 100644 index 8f48b93..0000000 --- a/.paket/Paket.Restore.targets +++ /dev/null @@ -1,574 +0,0 @@ - - - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - $(MSBuildVersion) - 15.0.0 - false - true - - true - $(MSBuildThisFileDirectory) - $(MSBuildThisFileDirectory)..\ - $(PaketRootPath)paket-files\paket.restore.cached - $(PaketRootPath)paket.lock - classic - proj - assembly - native - /Library/Frameworks/Mono.framework/Commands/mono - mono - - - $(PaketRootPath)paket.bootstrapper.exe - $(PaketToolsPath)paket.bootstrapper.exe - $([System.IO.Path]::GetDirectoryName("$(PaketBootStrapperExePath)"))\ - - "$(PaketBootStrapperExePath)" - $(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)" - - - - - true - true - - - True - - - False - - $(BaseIntermediateOutputPath.TrimEnd('\').TrimEnd('\/')) - - - - - - - - - $(PaketRootPath)paket - $(PaketToolsPath)paket - - - - - - $(PaketRootPath)paket.exe - $(PaketToolsPath)paket.exe - - - - - - <_DotnetToolsJson Condition="Exists('$(PaketRootPath)/.config/dotnet-tools.json')">$([System.IO.File]::ReadAllText("$(PaketRootPath)/.config/dotnet-tools.json")) - <_ConfigContainsPaket Condition=" '$(_DotnetToolsJson)' != ''">$(_DotnetToolsJson.Contains('"paket"')) - <_ConfigContainsPaket Condition=" '$(_ConfigContainsPaket)' == ''">false - - - - - - - - - - - <_PaketCommand>dotnet paket - - - - - - $(PaketToolsPath)paket - $(PaketBootStrapperExeDir)paket - - - paket - - - - - <_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)")) - <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(_PaketExeExtension)' == '.dll' ">dotnet "$(PaketExePath)" - <_PaketCommand Condition=" '$(_PaketCommand)' == '' AND '$(OS)' != 'Windows_NT' AND '$(_PaketExeExtension)' == '.exe' ">$(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" - <_PaketCommand Condition=" '$(_PaketCommand)' == '' ">"$(PaketExePath)" - - - - - - - - - - - - - - - - - - - - - true - $(NoWarn);NU1603;NU1604;NU1605;NU1608 - false - true - - - - - - - - - $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) - - - - - - - $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[0].Replace(`"`, ``).Replace(` `, ``)) - $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[1].Replace(`"`, ``).Replace(` `, ``)) - - - - - %(PaketRestoreCachedKeyValue.Value) - %(PaketRestoreCachedKeyValue.Value) - - - - - true - false - true - - - - - true - - - - - - - - - - - - - - - - - - - $(PaketIntermediateOutputPath)\$(MSBuildProjectFile).paket.references.cached - - $(MSBuildProjectFullPath).paket.references - - $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references - - $(MSBuildProjectDirectory)\paket.references - - false - true - true - references-file-or-cache-not-found - - - - - $([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)')) - $([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)')) - references-file - false - - - - - false - - - - - true - target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths) - - - - - - - - - - - false - true - - - - - - - - - - - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[2]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[6]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[7]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[8]) - $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[9]) - - - %(PaketReferencesFileLinesInfo.PackageVersion) - All - runtime - $(ExcludeAssets);contentFiles - $(ExcludeAssets);build;buildMultitargeting;buildTransitive - %(PaketReferencesFileLinesInfo.Aliases) - true - true - - - %(PaketReferencesFileLinesInfo.PackageVersion) - - - - - $(PaketIntermediateOutputPath)/$(MSBuildProjectFile).paket.clitools - - - - - - - - - $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0]) - $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1]) - - - %(PaketCliToolFileLinesInfo.PackageVersion) - - - - - - - - - - false - - - - - - <_NuspecFilesNewLocation Include="$(PaketIntermediateOutputPath)\$(Configuration)\*.nuspec"/> - - - - - - $(MSBuildProjectDirectory)/$(MSBuildProjectFile) - true - false - true - false - true - false - true - false - true - false - true - $(PaketIntermediateOutputPath)\$(Configuration) - $(PaketIntermediateOutputPath) - - - - <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.$(PackageVersion.Split(`+`)[0]).nuspec"/> - - - - - - - - <_DefinedConditionProperties Include="@(_ConditionProperties)" Condition="$(%(Identity)) == 'true'"/> - - - <_ConditionsParameter> - <_ConditionsParameter Condition="@(_DefinedConditionProperties) != ''">--conditions @(_DefinedConditionProperties) - - - - - - - - - - - - - - - - - - - - - diff --git a/.vscode/extensions.json b/.vscode/extensions.json index d566ef1..64c864b 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,5 @@ { "recommendations": [ - "ionide.ionide-paket", "ionide.ionide-fsharp", "ionide.ionide-fake", "ms-dotnettools.csharp", diff --git a/.vscode/settings.json b/.vscode/settings.json index d009c87..9c7cc93 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,11 @@ "FSharp.enableAnalyzers": true, "FSharp.analyzersPath": [ "./packages/analyzers" - ] + ], + "chat.tools.terminal.autoApprove": { + "/^dotnet --info$/": { + "approve": true, + "matchCommandLine": true + } + } } diff --git a/Directory.Build.props b/Directory.Build.props index bbf37a7..cdbc1d6 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,13 +1,36 @@ + + + + + + + + + + - f#, fsharp https://github.com/efcore/EFCore.FSharp - MIT false - git + LICENSE.md + README.md efcore + git https://github.com/efcore/EFCore.FSharp - + + + + + + + + false + + diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 0000000..b89ac00 --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,54 @@ + + + + + + + + + <_BuildProjBaseIntermediateOutputPath>$(MSBuildThisFileDirectory)build/obj/ + <_DotnetToolManifestFile>$(MSBuildThisFileDirectory).config/dotnet-tools.json + <_DotnetToolRestoreOutputFile> + $(_BuildProjBaseIntermediateOutputPath)/dotnet-tool-restore-$(NETCoreSdkVersion)-$(OS) + <_DotnetFantomasOutputFile> + $(BaseIntermediateOutputPath)dotnet-fantomas-msbuild-$(NETCoreSdkVersion)-$(OS) + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000..fd90068 --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,67 @@ + + + + + + + + true + true + true + true + true + + + 6.1.3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EFCore.FSharp.sln b/EFCore.FSharp.sln deleted file mode 100644 index f7356f1..0000000 --- a/EFCore.FSharp.sln +++ /dev/null @@ -1,99 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 -MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C397A34C-84F1-49E7-AEBC-2F9F2B196216}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EFCore.FSharp", "src\EFCore.FSharp\EFCore.FSharp.fsproj", "{5D30E174-2538-47AC-8443-318C8C5DC2C9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{ACBEE43C-7A88-4FB1-9B06-DB064D22B29F}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EFCore.FSharp.Tests", "tests\EFCore.FSharp.Tests\EFCore.FSharp.Tests.fsproj", "{1CA2E092-2320-451D-A4F0-9ED7C7C528CA}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "docsTool", "docsTool\docsTool.fsproj", "{8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "build", "build\build.fsproj", "{40D2259D-991D-44C4-B45D-C88CE0710C23}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCore.FSharp.Tests.CSharpInterop", "tests\EFCore.FSharp.Tests.CSharpInterop\EFCore.FSharp.Tests.CSharpInterop.csproj", "{20918426-CC33-430A-AD54-9497F22ADBED}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|x64.ActiveCfg = Debug|x64 - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|x64.Build.0 = Debug|x64 - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|x86.ActiveCfg = Debug|x86 - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Debug|x86.Build.0 = Debug|x86 - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Release|Any CPU.Build.0 = Release|Any CPU - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Release|x64.ActiveCfg = Release|x64 - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Release|x64.Build.0 = Release|x64 - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Release|x86.ActiveCfg = Release|x86 - {5D30E174-2538-47AC-8443-318C8C5DC2C9}.Release|x86.Build.0 = Release|x86 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Debug|x64.ActiveCfg = Debug|x64 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Debug|x64.Build.0 = Debug|x64 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Debug|x86.ActiveCfg = Debug|x86 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Debug|x86.Build.0 = Debug|x86 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Release|Any CPU.Build.0 = Release|Any CPU - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Release|x64.ActiveCfg = Release|x64 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Release|x64.Build.0 = Release|x64 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Release|x86.ActiveCfg = Release|x86 - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA}.Release|x86.Build.0 = Release|x86 - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Debug|x64.ActiveCfg = Debug|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Debug|x64.Build.0 = Debug|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Debug|x86.ActiveCfg = Debug|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Debug|x86.Build.0 = Debug|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Release|Any CPU.Build.0 = Release|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Release|x64.ActiveCfg = Release|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Release|x64.Build.0 = Release|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Release|x86.ActiveCfg = Release|Any CPU - {8855EC73-F6A1-43D3-AFBC-04A3E09F9BD9}.Release|x86.Build.0 = Release|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Debug|Any CPU.Build.0 = Debug|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Debug|x64.ActiveCfg = Debug|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Debug|x64.Build.0 = Debug|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Debug|x86.ActiveCfg = Debug|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Debug|x86.Build.0 = Debug|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|Any CPU.ActiveCfg = Release|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|Any CPU.Build.0 = Release|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|x64.ActiveCfg = Release|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|x64.Build.0 = Release|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|x86.ActiveCfg = Release|Any CPU - {40D2259D-991D-44C4-B45D-C88CE0710C23}.Release|x86.Build.0 = Release|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x64.ActiveCfg = Debug|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x64.Build.0 = Debug|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x86.ActiveCfg = Debug|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Debug|x86.Build.0 = Debug|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Release|Any CPU.Build.0 = Release|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x64.ActiveCfg = Release|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x64.Build.0 = Release|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x86.ActiveCfg = Release|Any CPU - {20918426-CC33-430A-AD54-9497F22ADBED}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {5D30E174-2538-47AC-8443-318C8C5DC2C9} = {C397A34C-84F1-49E7-AEBC-2F9F2B196216} - {1CA2E092-2320-451D-A4F0-9ED7C7C528CA} = {ACBEE43C-7A88-4FB1-9B06-DB064D22B29F} - {20918426-CC33-430A-AD54-9497F22ADBED} = {ACBEE43C-7A88-4FB1-9B06-DB064D22B29F} - EndGlobalSection -EndGlobal diff --git a/EFCore.FSharp.slnx b/EFCore.FSharp.slnx new file mode 100644 index 0000000..2f538a1 --- /dev/null +++ b/EFCore.FSharp.slnx @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md index 6b582e8..001a3f2 100644 --- a/GETTING_STARTED.md +++ b/GETTING_STARTED.md @@ -13,8 +13,6 @@ This guide assumes: ## Create a new dotnet project and install dotnet tools -We will use `Paket` for package management, though you can apply the same principles with `NuGet`. - 1. Create a new folder for the project and open the directory ``` @@ -26,27 +24,14 @@ We will use `Paket` for package management, though you can apply the same princi `dotnet new console -lang F#` -1. Add a tool manifest, then add the `Entity Framework` and `Paket` tools +1. Add a tool manifest and the Entity Framework command-line tool ``` dotnet new tool-manifest dotnet tool install dotnet-ef - dotnet tool install paket ``` -1. Convert the project to use `Paket` - - `dotnet paket convert-from-nuget` - -## Installing the package -paket - -```bash -dotnet paket add Microsoft.EntityFrameworkCore.Sqlite -dotnet paket add EntityFrameworkCore.FSharp -``` - -dotnet CLI +## Installing the packages ```bash dotnet add package Microsoft.EntityFrameworkCore.Sqlite diff --git a/NuGet.config b/NuGet.config new file mode 100644 index 0000000..f7555d6 --- /dev/null +++ b/NuGet.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md index 0dced13..0a6e532 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,8 @@ or - `CONFIGURATION=Debug ./build.sh` will result in `-c` additions to commands such as in `dotnet build -c Debug` - `GITHUB_TOKEN` will be used to upload release notes and Nuget packages to GitHub. - Be sure to set this before releasing +- `NUGET_TOKEN` will be used to publish the NuGet packages. + - Be sure to set this before running `PublishToNuGet`. - `DISABLE_COVERAGE` Will disable running code coverage metrics. AltCover can have [severe performance degradation](https://github.com/SteveGilham/altcover/issues/57) so it's worth disabling when looking to do a quicker feedback loop. - `DISABLE_COVERAGE=1 ./build.sh` @@ -79,10 +81,9 @@ or - `GenerateAssemblyInfo` - Generates [AssemblyInfo](https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.applicationservices.assemblyinfo?view=netframework-4.8) for libraries. - `DotnetPack` - Runs [dotnet pack](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-pack). This includes running [Source Link](https://github.com/dotnet/sourcelink). - `SourceLinkTest` - Runs a Source Link test tool to verify Source Links were properly generated. -- `PublishToNuGet` - Publishes the NuGet packages generated in `DotnetPack` to NuGet via [paket push](https://fsprojects.github.io/Paket/paket-push.html). +- `PublishToNuGet` - Publishes the NuGet packages generated in `DotnetPack` to NuGet using `dotnet nuget push`. - `GitRelease` - Creates a commit message with the [Release Notes](https://fake.build/apidocs/v5/fake-core-releasenotes.html) and a git tag via the version in the `Release Notes`. - `GitHubRelease` - Publishes a [GitHub Release](https://help.github.com/en/articles/creating-releases) with the Release Notes and any NuGet packages. - `FormatCode` - Runs [Fantomas](https://github.com/fsprojects/fantomas) on the solution file. - `BuildDocs` - Generates Documentation from `docsSrc` and the [XML Documentation Comments](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/) from your libraries in `src`. - `WatchDocs` - Generates documentation and starts a webserver locally. It will rebuild and hot reload if it detects any changes made to `docsSrc` files, libraries in `src`, or the `docsTool` itself. - diff --git a/build.cmd b/build.cmd index 140db8b..b9f6df4 100644 --- a/build.cmd +++ b/build.cmd @@ -1,4 +1 @@ -echo Restoring dotnet tools... -dotnet tool restore - dotnet run --project ./build/build.fsproj -- -t %* diff --git a/build.sh b/build.sh index 779c670..0783d63 100755 --- a/build.sh +++ b/build.sh @@ -3,7 +3,4 @@ set -eu set -o pipefail -echo "Restoring dotnet tools..." -dotnet tool restore - FAKE_DETAILED_ERRORS=true dotnet run --project ./build/build.fsproj -- -t "$@" diff --git a/build/Changelog.fs b/build/Changelog.fs new file mode 100644 index 0000000..3ad89c0 --- /dev/null +++ b/build/Changelog.fs @@ -0,0 +1,255 @@ +module Changelog + +open System +open Fake.Core +open Fake.IO + +let isEmptyChange = + function + | Changelog.Change.Added s + | Changelog.Change.Changed s + | Changelog.Change.Deprecated s + | Changelog.Change.Fixed s + | Changelog.Change.Removed s + | Changelog.Change.Security s + | Changelog.Change.Custom (_, s) -> String.IsNullOrWhiteSpace s.CleanedText + +let tagFromVersionNumber versionNumber = sprintf "v%s" versionNumber + +let failOnEmptyChangelog (latestEntry: Changelog.ChangelogEntry) = + let isEmpty = + (latestEntry.Changes |> Seq.forall isEmptyChange) + || latestEntry.Changes |> Seq.isEmpty + + if isEmpty then + failwith + "No changes in CHANGELOG. Please add your changes under a heading specified in https://keepachangelog.com/" + +let mkLinkReference (newVersion: SemVerInfo) (changelog: Changelog.Changelog) (gitHubRepoUrl: string) = + if changelog.Entries |> List.isEmpty then + // No actual changelog entries yet: link reference will just point to the Git tag + sprintf + "[%s]: %s/releases/tag/%s" + newVersion.AsString + (gitHubRepoUrl.TrimEnd('/')) + (tagFromVersionNumber newVersion.AsString) + else + let versionTuple version = + (version.Major, version.Minor, version.Patch) + // Changelog entries come already sorted, most-recent first, by the Changelog module + let prevEntry = + changelog.Entries + |> List.skipWhile + (fun entry -> + entry.SemVer.PreRelease.IsSome + || versionTuple entry.SemVer = versionTuple newVersion) + |> List.tryHead + + let linkTarget = + match prevEntry with + | Some entry -> + sprintf + "%s/compare/%s...%s" + gitHubRepoUrl + (tagFromVersionNumber entry.SemVer.AsString) + (tagFromVersionNumber newVersion.AsString) + | None -> sprintf "%s/releases/tag/%s" gitHubRepoUrl (tagFromVersionNumber newVersion.AsString) + + sprintf "[%s]: %s" newVersion.AsString linkTarget + +let mkReleaseNotes changelog (latestEntry: Changelog.ChangelogEntry) gitHubRepoUrl = + let linkReference = + mkLinkReference latestEntry.SemVer changelog gitHubRepoUrl + + if String.isNullOrEmpty linkReference then + latestEntry.ToString() + else + // Add link reference target to description before building release notes, since in main changelog file it's at the bottom of the file + let description = + match latestEntry.Description with + | None -> linkReference + | Some desc when desc.Contains(linkReference) -> desc + | Some desc -> sprintf "%s\n\n%s" (desc.Trim()) linkReference + + { latestEntry with + Description = Some description } + .ToString() + +let getVersionNumber envVarName ctx = + let args = ctx.Context.Arguments + + let verArg = + args + |> List.tryHead + |> Option.defaultWith (fun () -> Environment.environVarOrDefault envVarName "") + + if SemVer.isValid verArg then + verArg + elif + verArg.StartsWith("v") + && SemVer.isValid verArg.[1..] + then + let target = ctx.Context.FinalTarget + + Trace.traceImportantfn + "Please specify a version number without leading 'v' next time, e.g. \"./build.sh %s %s\" rather than \"./build.sh %s %s\"" + target + verArg.[1..] + target + verArg + + verArg.[1..] + elif String.isNullOrEmpty verArg then + let target = ctx.Context.FinalTarget + + Trace.traceErrorfn + "Please specify a version number, either at the command line (\"./build.sh %s 1.0.0\") or in the %s environment variable" + target + envVarName + + failwith "No version number found" + else + Trace.traceErrorfn + "Please specify a valid version number: %A could not be recognized as a version number" + verArg + + failwith "Invalid version number" + +let mutable changelogBackupFilename = "" + +let updateChangelog changelogPath (changelog: Fake.Core.Changelog.Changelog) gitHubRepoUrl ctx = + + let verStr = + ctx |> getVersionNumber "RELEASE_VERSION" + + let description, unreleasedChanges = + match changelog.Unreleased with + | None -> None, [] + | Some u -> u.Description, u.Changes + + let newVersion = SemVer.parse verStr + + changelog.Entries + |> List.tryFind (fun entry -> entry.SemVer = newVersion) + |> Option.iter + (fun entry -> + Trace.traceErrorfn + "Version %s already exists in %s, released on %s" + verStr + changelogPath + (if entry.Date.IsSome then + entry.Date.Value.ToString("yyyy-MM-dd") + else + "(no date specified)") + + failwith "Can't release with a duplicate version number") + + changelog.Entries + |> List.tryFind (fun entry -> entry.SemVer > newVersion) + |> Option.iter + (fun entry -> + Trace.traceErrorfn + "You're trying to release version %s, but a later version %s already exists, released on %s" + verStr + entry.SemVer.AsString + (if entry.Date.IsSome then + entry.Date.Value.ToString("yyyy-MM-dd") + else + "(no date specified)") + + failwith "Can't release with a version number older than an existing release") + + let versionTuple version = + (version.Major, version.Minor, version.Patch) + + let prereleaseEntries = + changelog.Entries + |> List.filter + (fun entry -> + entry.SemVer.PreRelease.IsSome + && versionTuple entry.SemVer = versionTuple newVersion) + + let prereleaseChanges = + prereleaseEntries + |> List.collect + (fun entry -> + entry.Changes + |> List.filter (not << isEmptyChange)) + |> List.distinct + + let assemblyVersion, nugetVersion = + Changelog.parseVersions newVersion.AsString + + let newEntry = + Changelog.ChangelogEntry.New( + assemblyVersion.Value, + nugetVersion.Value, + Some System.DateTime.Today, + description, + unreleasedChanges @ prereleaseChanges, + false + ) + + let newChangelog = + Changelog.Changelog.New(changelog.Header, changelog.Description, None, newEntry :: changelog.Entries) + + // Save changelog to temporary file before making any edits + changelogBackupFilename <- System.IO.Path.GetTempFileName() + + changelogPath + |> Shell.copyFile changelogBackupFilename + + Target.activateFinal "DeleteChangelogBackupFile" + + newChangelog |> Changelog.save changelogPath + + // Now update the link references at the end of the file + let linkReferenceForLatestEntry = + mkLinkReference newVersion changelog gitHubRepoUrl + + let linkReferenceForUnreleased = + sprintf "[Unreleased]: %s/compare/%s...%s" gitHubRepoUrl (tagFromVersionNumber newVersion.AsString) "HEAD" + + let tailLines = + File.read changelogPath |> List.ofSeq |> List.rev + + let isRef (line: string) = + System.Text.RegularExpressions.Regex.IsMatch(line, @"^\[.+?\]:\s?[a-z]+://.*$") + + let linkReferenceTargets = + tailLines + |> List.skipWhile String.isNullOrWhiteSpace + |> List.takeWhile isRef + |> List.rev // Now most recent entry is at the head of the list + + let newLinkReferenceTargets = + match linkReferenceTargets with + | [] -> + [ linkReferenceForUnreleased + linkReferenceForLatestEntry ] + | first :: rest when first |> String.startsWith "[Unreleased]:" -> + linkReferenceForUnreleased + :: linkReferenceForLatestEntry :: rest + | first :: rest -> + linkReferenceForUnreleased + :: linkReferenceForLatestEntry :: first :: rest + + let blankLineCount = + tailLines + |> Seq.takeWhile String.isNullOrWhiteSpace + |> Seq.length + + let linkRefCount = linkReferenceTargets |> List.length + + let skipCount = blankLineCount + linkRefCount + + let updatedLines = + List.rev (tailLines |> List.skip skipCount) + @ newLinkReferenceTargets + + File.write false changelogPath updatedLines + + // If build fails after this point but before we commit changes, undo our modifications + Target.activateBuildFailure "RevertChangelog" + + newEntry diff --git a/build/FsDocs.fs b/build/FsDocs.fs new file mode 100644 index 0000000..8526c97 --- /dev/null +++ b/build/FsDocs.fs @@ -0,0 +1,230 @@ +namespace Fake.DotNet + +open Fake.Core +open Fake.IO +open Fake.IO.FileSystemOperators + +/// +/// Contains tasks to interact with fsdocs tool to +/// process F# script files, markdown and for generating API documentation. +/// +[] +module Fsdocs = + + /// + /// Fsdocs build command parameters and options + /// + type BuildCommandParams = + { + /// Input directory of content (default: docs) + Input: string option + + /// Project files to build API docs for outputs, defaults to all packable projects + Projects: seq option + + /// Output Directory (default output for build and tmp/watch for watch) + Output: string option + + /// Disable generation of API docs + NoApiDocs: bool option + + /// Evaluate F# fragments in scripts + Eval: bool option + + /// Save images referenced in docs + SaveImages: bool option + + /// Add line numbers + LineNumbers: bool option + + /// Additional substitution parameters for templates + Parameters: seq option + + /// Disable project cracking. + IgnoreProjects: bool option + + /// In API doc generation qualify the output by the collection name, e.g. 'reference/FSharp.Core/...' instead of 'reference/...' . + Qualify: bool option + + /// The tool will also generate documentation for non-public members + NoPublic: bool option + + /// Do not copy default content styles, javascript or use default templates + NoDefaultContent: bool option + + /// Clean the output directory + Clean: bool option + + /// Display version information + Version: bool option + + /// Provide properties to dotnet msbuild, e.g. --properties Configuration=Release Version=3.4 + Properties: string option + + /// Additional arguments passed down as otherflags to the F# compiler when the API is being generated. + /// Note that these arguments are trimmed, this is to overcome a limitation in the command line argument + /// processing. A typical use-case would be to pass an addition assembly reference. + /// Example --fscoptions " -r:MyAssembly.dll" + FscOptions: string option + + /// Fail if docs are missing or can't be generated + Strict: bool option + + /// Source folder at time of component build (<FsDocsSourceFolder>) + SourceFolder: string option + + /// Source repository for github links (<FsDocsSourceRepository>) + SourceRepository: string option + + /// Assume comments in F# code are markdown (<UsesMarkdownComments>) + MdComments: bool option } + + /// Parameter default values. + static member Default = + { Input = None + Projects = None + Output = None + NoApiDocs = None + Eval = None + SaveImages = None + LineNumbers = None + Parameters = None + IgnoreProjects = None + Qualify = None + NoPublic = None + NoDefaultContent = None + Clean = None + Version = None + Properties = None + FscOptions = None + Strict = None + SourceFolder = None + SourceRepository = None + MdComments = None } + + /// + /// Fsdocs watch command parameters and options + /// + type WatchCommandParams = + { + /// Do not serve content when watching. + NoServer: bool option + + /// Do not launch a browser window. + NoLaunch: bool option + + /// URL extension to launch http://localhost:/%s. + Open: string option + + /// Port to serve content for http://localhost serving. + Port: int option + + /// Build Commands + BuildCommandParams: BuildCommandParams option } + + /// Parameter default values. + static member Default = + { NoServer = None + NoLaunch = None + Open = None + Port = None + BuildCommandParams = None } + + let internal buildBuildCommandParams (buildParams: BuildCommandParams) = + let buildSubstitutionParameters (subParameters: seq) = + let subParameters = + subParameters + |> Seq.map (fun (key, value) -> (sprintf "%s %s" key value)) + |> String.concat " " + + sprintf "--parameters %s" subParameters + + System.Text.StringBuilder() + |> StringBuilder.appendIfSome buildParams.Input (sprintf "--input %s") + |> StringBuilder.appendIfSome + buildParams.Projects + (fun projects -> sprintf "--projects %s" (projects |> String.concat " ")) + |> StringBuilder.appendIfSome buildParams.Output (sprintf "--output %s") + |> StringBuilder.appendIfSome buildParams.NoApiDocs (fun _ -> "--noapidocs") + |> StringBuilder.appendIfSome buildParams.Eval (fun _ -> "--eval") + |> StringBuilder.appendIfSome buildParams.SaveImages (fun _ -> "--saveimages") + |> StringBuilder.appendIfSome buildParams.LineNumbers (fun _ -> "--linenumbers") + |> StringBuilder.appendIfSome buildParams.Parameters (fun parameters -> buildSubstitutionParameters parameters) + |> StringBuilder.appendIfSome buildParams.IgnoreProjects (fun _ -> "--ignoreprojects") + |> StringBuilder.appendIfSome buildParams.Qualify (fun _ -> "--qualify") + |> StringBuilder.appendIfSome buildParams.NoPublic (fun _ -> "--nonpublic") + |> StringBuilder.appendIfSome buildParams.NoDefaultContent (fun _ -> "--nodefaultcontent") + |> StringBuilder.appendIfSome buildParams.Clean (fun _ -> "--clean") + |> StringBuilder.appendIfSome buildParams.Version (fun _ -> "--version") + |> StringBuilder.appendIfSome buildParams.Properties (sprintf "--properties %s") + |> StringBuilder.appendIfSome buildParams.FscOptions (sprintf "--fscoptions %s") + |> StringBuilder.appendIfSome buildParams.Strict (fun _ -> "--strict") + |> StringBuilder.appendIfSome buildParams.SourceFolder (sprintf "--sourcefolder %s") + |> StringBuilder.appendIfSome buildParams.SourceRepository (sprintf "--sourcerepo %s") + |> StringBuilder.appendIfSome buildParams.MdComments (fun _ -> "--mdcomments") + |> StringBuilder.toText + |> String.trim + + let internal buildWatchCommandParams (watchParams: WatchCommandParams) = + System.Text.StringBuilder() + |> StringBuilder.appendIfSome watchParams.NoServer (fun _ -> "--noserver") + |> StringBuilder.appendIfSome watchParams.NoLaunch (fun _ -> "--nolaunch") + |> StringBuilder.appendIfSome watchParams.Open (sprintf "--open %s") + |> StringBuilder.appendIfSome watchParams.Port (sprintf "--port %i") + |> StringBuilder.appendIfSome watchParams.BuildCommandParams buildBuildCommandParams + |> StringBuilder.toText + |> String.trim + + + let cleanCache (workingDirectory) = + Shell.cleanDirs [ workingDirectory ".fsdocs" ] + + /// + /// Build documentation using fsdocs build command + /// + /// + /// Function used to overwrite the dotnetOptions. + /// Function used to overwrite the build command default parameters. + /// + /// + /// + /// Fsdocs.build (fun p -> { p with Clean = Some(true); Strict = Some(true) }) + /// + /// + let build dotnetOptions setBuildParams = + let buildParams = + setBuildParams BuildCommandParams.Default + + let formattedParameters = buildBuildCommandParams buildParams + + // let dotnetOptions = (fun (buildOptions: DotNet.Options) -> buildOptions) + let result = + DotNet.exec dotnetOptions "fsdocs build" formattedParameters + + if 0 <> result.ExitCode then + failwithf "fsdocs build failed with exit code '%d'" result.ExitCode + + /// + /// Watch documentation using fsdocs watch command + /// + /// + /// Function used to overwrite the dotnetOptions. + /// Function used to overwrite the watch command default parameters. + /// + /// + /// + /// Fsdocs.watch (fun p -> { p with Port = Some(3005) }) + /// + /// + let watch dotnetOptions setWatchParams = + let watchParams = + setWatchParams WatchCommandParams.Default + + let formattedParameters = buildWatchCommandParams watchParams + + // let dotnetOptions = (fun (buildOptions: DotNet.Options) -> buildOptions) + let result = + DotNet.exec dotnetOptions "fsdocs watch" formattedParameters + + if 0 <> result.ExitCode then + failwithf "fsdocs watch failed with exit code '%d'" result.ExitCode diff --git a/build/build.fs b/build/build.fs index 1ab90e2..8de1e9d 100644 --- a/build/build.fs +++ b/build/build.fs @@ -1,3 +1,5 @@ +module Build + open System open Fake.Core open Fake.DotNet @@ -25,75 +27,69 @@ let environVarAsBoolOrDefault varName defaultValue = // Metadata and Configuration //----------------------------------------------------------------------------- -let productName = "EFCore.FSharp" +let rootDirectory = + IO.Path.GetFullPath(__SOURCE_DIRECTORY__ "..") -let sln = - __SOURCE_DIRECTORY__ - ".." - "EFCore.FSharp.sln" +let productName = "EFCore.FSharp" +let sln = rootDirectory "EFCore.FSharp.slnx" let srcCodeGlob = - !!(__SOURCE_DIRECTORY__ ".." "src/**/*.fs") - ++ (__SOURCE_DIRECTORY__ ".." "src/**/*.fsx") - -- (__SOURCE_DIRECTORY__ - ".." - "src/**/obj/**/*.fs") + !!(rootDirectory "src/**/*.fs") + ++ (rootDirectory "src/**/*.fsx") + -- (rootDirectory "src/**/obj/**/*.fs") let testsCodeGlob = - !!(__SOURCE_DIRECTORY__ ".." "tests/**/*.fs") - ++ (__SOURCE_DIRECTORY__ ".." "tests/**/*.fsx") - -- (__SOURCE_DIRECTORY__ - ".." - "tests/**/obj/**/*.fs") - -let srcGlob = - __SOURCE_DIRECTORY__ - ".." - "src/**/*.??proj" - -let testsGlob = - __SOURCE_DIRECTORY__ - ".." - "tests/**/*.??proj" + !!(rootDirectory "tests/**/*.fs") + ++ (rootDirectory "tests/**/*.fsx") + -- (rootDirectory "tests/**/obj/**/*.fs") + +let srcGlob = rootDirectory "src/**/*.??proj" + +let testsGlob = rootDirectory "tests/**/*.??proj" let srcAndTest = !!srcGlob ++ testsGlob -let distDir = __SOURCE_DIRECTORY__ ".." "dist" +let distDir = rootDirectory "dist" + let distGlob = distDir "*.nupkg" -let coverageThresholdPercent = 55 +let coverageThresholdPercent = 80 -let coverageReportDir = - __SOURCE_DIRECTORY__ - ".." - "docs" - "coverage" +let coverageReportDir = rootDirectory "docs" "coverage" -let docsDir = __SOURCE_DIRECTORY__ ".." "docs" +let docsDir = rootDirectory "docs" -let docsSrcDir = - __SOURCE_DIRECTORY__ ".." "docsSrc" +let docsSrcDir = rootDirectory "docsSrc" -let docsToolDir = - __SOURCE_DIRECTORY__ ".." "docsTool" +let temp = rootDirectory "temp" + +let watchDocsDir = temp "watch-docs" let gitOwner = "efcore" let gitRepoName = "EFCore.FSharp" let gitHubRepoUrl = - sprintf "https://github.com/%s/%s" gitOwner gitRepoName + sprintf "https://github.com/%s/%s/" gitOwner gitRepoName + +let documentationRootUrl = + sprintf "https://%s.github.io/%s/" gitOwner gitRepoName + +let releaseBranch = "main" +let readme = "README.md" +let changelogFile = "CHANGELOG.md" -let releaseBranch = "master" +let READMElink = + Uri(Uri(gitHubRepoUrl), $"blob/{releaseBranch}/{readme}") -let tagFromVersionNumber versionNumber = sprintf "v%s" versionNumber +let CHANGELOGlink = + Uri(Uri(gitHubRepoUrl), $"blob/{releaseBranch}/{changelogFile}") -let changelogFilename = - __SOURCE_DIRECTORY__ ".." "CHANGELOG.md" +let changelogPath = rootDirectory changelogFile -let changelog = - Fake.Core.Changelog.load changelogFilename + +let changelog = Fake.Core.Changelog.load changelogPath let mutable latestEntry = if Seq.isEmpty changelog.Entries then @@ -101,21 +97,16 @@ let mutable latestEntry = else changelog.LatestEntry -let mutable linkReferenceForLatestEntry = "" let mutable changelogBackupFilename = "" let publishUrl = "https://www.nuget.org" -let docsSiteBaseUrl = - sprintf "https://%s.github.io/%s" gitOwner gitRepoName - -let disableCodeCoverage = - environVarAsBoolOrDefault "DISABLE_COVERAGE" false +let enableCodeCoverage = + environVarAsBoolOrDefault "ENABLE_COVERAGE" false let githubToken = Environment.environVarOrNone "GITHUB_TOKEN" - let nugetToken = Environment.environVarOrNone "NUGET_TOKEN" @@ -123,10 +114,11 @@ let nugetToken = // Helpers //----------------------------------------------------------------------------- + let isRelease (targets: Target list) = targets |> Seq.map (fun t -> t.Name) - |> Seq.exists ((=) "Release") + |> Seq.exists ((=) "PublishToNuGet") let invokeAsync f = async { f () } @@ -145,12 +137,17 @@ let configuration (targets: Target list) = let failOnBadExitAndPrint (p: ProcessResult) = if p.ExitCode <> 0 then p.Errors |> Seq.iter Trace.traceError + failwithf "failed with exitcode %d" p.ExitCode -// CI Servers can have bizzare failures that have nothing to do with your code + +let isCI = + lazy (environVarAsBoolOrDefault "CI" false) + +// CI Servers can have bizarre failures that have nothing to do with your code let rec retryIfInCI times fn = - match Environment.environVarOrNone "CI" with - | Some _ -> + match isCI.Value with + | true -> if times > 1 then try fn () @@ -160,118 +157,10 @@ let rec retryIfInCI times fn = fn () | _ -> fn () -let isReleaseBranchCheck () = +let failOnWrongBranch () = if Git.Information.getBranchName "" <> releaseBranch then failwithf "Not on %s. If you want to release please switch to this branch." releaseBranch -module Changelog = - - let isEmptyChange = - function - | Changelog.Change.Added s - | Changelog.Change.Changed s - | Changelog.Change.Deprecated s - | Changelog.Change.Fixed s - | Changelog.Change.Removed s - | Changelog.Change.Security s - | Changelog.Change.Custom (_, s) -> String.IsNullOrWhiteSpace s.CleanedText - - let isChangelogEmpty () = - let isEmpty = - (latestEntry.Changes |> Seq.forall isEmptyChange) - || latestEntry.Changes |> Seq.isEmpty - - if isEmpty then - failwith - "No changes in CHANGELOG. Please add your changes under a heading specified in https://keepachangelog.com/" - - let mkLinkReference (newVersion: SemVerInfo) (changelog: Changelog.Changelog) = - if changelog.Entries |> List.isEmpty then - // No actual changelog entries yet: link reference will just point to the Git tag - sprintf - "[%s]: %s/releases/tag/%s" - newVersion.AsString - gitHubRepoUrl - (tagFromVersionNumber newVersion.AsString) - else - let versionTuple version = - (version.Major, version.Minor, version.Patch) - // Changelog entries come already sorted, most-recent first, by the Changelog module - let prevEntry = - changelog.Entries - |> List.skipWhile - (fun entry -> - entry.SemVer.PreRelease.IsSome - && versionTuple entry.SemVer = versionTuple newVersion) - |> List.tryHead - - let linkTarget = - match prevEntry with - | Some entry -> - sprintf - "%s/compare/%s...%s" - gitHubRepoUrl - (tagFromVersionNumber entry.SemVer.AsString) - (tagFromVersionNumber newVersion.AsString) - | None -> sprintf "%s/releases/tag/%s" gitHubRepoUrl (tagFromVersionNumber newVersion.AsString) - - sprintf "[%s]: %s" newVersion.AsString linkTarget - - let mkReleaseNotes (linkReference: string) (latestEntry: Changelog.ChangelogEntry) = - if String.isNullOrEmpty linkReference then - latestEntry.ToString() - else - // Add link reference target to description before building release notes, since in main changelog file it's at the bottom of the file - let description = - match latestEntry.Description with - | None -> linkReference - | Some desc when desc.Contains(linkReference) -> desc - | Some desc -> sprintf "%s\n\n%s" (desc.Trim()) linkReference - - { latestEntry with - Description = Some description } - .ToString() - - let getVersionNumber envVarName ctx = - let args = ctx.Context.Arguments - - let verArg = - args - |> List.tryHead - |> Option.defaultWith (fun () -> Environment.environVarOrDefault envVarName "") - - if SemVer.isValid verArg then - verArg - elif - verArg.StartsWith("v") - && SemVer.isValid verArg.[1..] - then - let target = ctx.Context.FinalTarget - - Trace.traceImportantfn - "Please specify a version number without leading 'v' next time, e.g. \"./build.sh %s %s\" rather than \"./build.sh %s %s\"" - target - verArg.[1..] - target - verArg - - verArg.[1..] - elif String.isNullOrEmpty verArg then - let target = ctx.Context.FinalTarget - - Trace.traceErrorfn - "Please specify a version number, either at the command line (\"./build.sh %s 1.0.0\") or in the %s environment variable" - target - envVarName - - failwith "No version number found" - else - Trace.traceErrorfn - "Please specify a valid version number: %A could not be recognized as a version number" - verArg - - failwith "Invalid version number" - module dotnet = let watch cmdParam program args = @@ -302,64 +191,83 @@ module FSharpAnalyzers = | Fail_On_Warnings of string list | Ignore_Files of string list | Verbose + interface IArgParserTemplate with member s.Usage = "" -open DocsTool.CLIArgs - module DocsTool = - open Argu - - let buildparser = - ArgumentParser.Create(programName = "docstool") - - let buildCLI () = - [ BuildArgs.SiteBaseUrl docsSiteBaseUrl - BuildArgs.ProjectGlob srcGlob - BuildArgs.DocsOutputDirectory docsDir - BuildArgs.DocsSourceDirectory docsSrcDir - BuildArgs.GitHubRepoUrl gitHubRepoUrl - BuildArgs.ProjectName gitRepoName - BuildArgs.ReleaseVersion latestEntry.NuGetVersion ] - |> buildparser.PrintCommandLineArgumentsFlat - - let build () = - dotnet.run - (fun args -> - { args with - WorkingDirectory = docsToolDir }) - (sprintf " -- build %s" (buildCLI ())) - |> failOnBadExitAndPrint - - let watchparser = - ArgumentParser.Create(programName = "docstool") - - let watchCLI () = - [ WatchArgs.ProjectGlob srcGlob - WatchArgs.DocsSourceDirectory docsSrcDir - WatchArgs.GitHubRepoUrl gitHubRepoUrl - WatchArgs.ProjectName gitRepoName - WatchArgs.ReleaseVersion latestEntry.NuGetVersion ] - |> watchparser.PrintCommandLineArgumentsFlat - - let watch () = - dotnet.watch - (fun args -> - { args with - WorkingDirectory = docsToolDir }) - "run" - (sprintf "-- watch %s" (watchCLI ())) - |> failOnBadExitAndPrint + let quoted s = $"\"%s{s}\"" + + let fsDocsDotnetOptions (o: DotNet.Options) = + { o with + WorkingDirectory = rootDirectory } + + let fsDocsBuildParams configuration (p: Fsdocs.BuildCommandParams) = + { p with + Clean = Some true + Input = Some(quoted docsSrcDir) + Output = Some(quoted docsDir) + Eval = Some true + Projects = Some(Seq.map quoted (!!srcGlob)) + Properties = Some($"Configuration=%s{configuration}") + Parameters = + Some [ + // https://fsprojects.github.io/FSharp.Formatting/content.html#Templates-and-Substitutions + "root", quoted documentationRootUrl + "fsdocs-collection-name", quoted productName + "fsdocs-repository-branch", quoted releaseBranch + "fsdocs-package-version", quoted latestEntry.NuGetVersion + "fsdocs-readme-link", quoted (READMElink.ToString()) + "fsdocs-release-notes-link", quoted (CHANGELOGlink.ToString()) ] + Strict = Some true } + + + let cleanDocsCache () = Fsdocs.cleanCache rootDirectory + + let build (configuration) = + Fsdocs.build fsDocsDotnetOptions (fsDocsBuildParams configuration) + + + let watch (configuration) = + let buildParams bp = + let bp = + Option.defaultValue Fsdocs.BuildCommandParams.Default bp + |> fsDocsBuildParams configuration + + { bp with + Output = Some watchDocsDir + Strict = None } + + Fsdocs.watch + fsDocsDotnetOptions + (fun p -> + { p with + BuildCommandParams = Some(buildParams p.BuildCommandParams) }) let allReleaseChecks () = - isReleaseBranchCheck () - Changelog.isChangelogEmpty () + failOnWrongBranch () + Changelog.failOnEmptyChangelog latestEntry + + +let failOnLocalBuild () = + if not isCI.Value then + failwith "Not on CI. If you want to publish, please use CI." + +let failOnCIBuild () = + if isCI.Value then + failwith "On CI. If you want to run this target, please use a local build." + +let allPublishChecks () = + failOnLocalBuild () + Changelog.failOnEmptyChangelog latestEntry //----------------------------------------------------------------------------- // Target Implementations //----------------------------------------------------------------------------- +/// So we don't require always being on the latest MSBuild.StructuredLogger +let disableBinLog (p: MSBuild.CliArguments) = { p with DisableInternalBinLog = true } let clean _ = [ "bin" @@ -375,9 +283,6 @@ let clean _ = |> Seq.map (fun sp -> IO.Path.GetDirectoryName p sp)) |> Shell.cleanDirs - [ "paket-files/paket.restore.cached" ] - |> Seq.iter Shell.rm - let dotnetRestore _ = [ sln ] |> Seq.map @@ -388,6 +293,7 @@ let dotnetRestore _ = DotNet.restore (fun c -> { c with + MSBuildParams = disableBinLog c.MSBuildParams Common = c.Common |> DotNet.Options.withCustomParams (Some(args)) }) @@ -395,151 +301,39 @@ let dotnetRestore _ = |> Seq.iter (retryIfInCI 10) let updateChangelog ctx = - let description, unreleasedChanges = - match changelog.Unreleased with - | None -> None, [] - | Some u -> u.Description, u.Changes - - let verStr = - ctx - |> Changelog.getVersionNumber "RELEASE_VERSION" - - let newVersion = SemVer.parse verStr - - changelog.Entries - |> List.tryFind (fun entry -> entry.SemVer = newVersion) - |> Option.iter - (fun entry -> - Trace.traceErrorfn - "Version %s already exists in %s, released on %s" - verStr - changelogFilename - (if entry.Date.IsSome then - entry.Date.Value.ToString("yyyy-MM-dd") - else - "(no date specified)") - - failwith "Can't release with a duplicate version number") - - changelog.Entries - |> List.tryFind (fun entry -> entry.SemVer > newVersion) - |> Option.iter - (fun entry -> - Trace.traceErrorfn - "You're trying to release version %s, but a later version %s already exists, released on %s" - verStr - entry.SemVer.AsString - (if entry.Date.IsSome then - entry.Date.Value.ToString("yyyy-MM-dd") - else - "(no date specified)") - - failwith "Can't release with a version number older than an existing release") - - let versionTuple version = - (version.Major, version.Minor, version.Patch) - - let prereleaseEntries = - changelog.Entries - |> List.filter - (fun entry -> - entry.SemVer.PreRelease.IsSome - && versionTuple entry.SemVer = versionTuple newVersion) - - let prereleaseChanges = - prereleaseEntries - |> List.collect - (fun entry -> - entry.Changes - |> List.filter (not << Changelog.isEmptyChange)) - - let assemblyVersion, nugetVersion = - Changelog.parseVersions newVersion.AsString - - linkReferenceForLatestEntry <- Changelog.mkLinkReference newVersion changelog - - let newEntry = - Changelog.ChangelogEntry.New( - assemblyVersion.Value, - nugetVersion.Value, - Some System.DateTime.Today, - description, - unreleasedChanges @ prereleaseChanges, - false - ) - - let newChangelog = - Changelog.Changelog.New(changelog.Header, changelog.Description, None, newEntry :: changelog.Entries, []) - - latestEntry <- newEntry - - // Save changelog to temporary file before making any edits - changelogBackupFilename <- System.IO.Path.GetTempFileName() - - changelogFilename - |> Shell.copyFile changelogBackupFilename - - Target.activateFinal "DeleteChangelogBackupFile" - - newChangelog |> Changelog.save changelogFilename - - // Now update the link references at the end of the file - linkReferenceForLatestEntry <- Changelog.mkLinkReference newVersion changelog - - let linkReferenceForUnreleased = - sprintf "[Unreleased]: %s/compare/%s...%s" gitHubRepoUrl (tagFromVersionNumber newVersion.AsString) "HEAD" - - let tailLines = - File.read changelogFilename - |> List.ofSeq - |> List.rev - - let isRef (line: string) = - System.Text.RegularExpressions.Regex.IsMatch(line, @"^\[.+?\]:\s?[a-z]+://.*$") - - let linkReferenceTargets = - tailLines - |> List.skipWhile String.isNullOrWhiteSpace - |> List.takeWhile isRef - |> List.rev // Now most recent entry is at the head of the list - - let newLinkReferenceTargets = - match linkReferenceTargets with - | [] -> - [ linkReferenceForUnreleased - linkReferenceForLatestEntry ] - | first :: rest when first |> String.startsWith "[Unreleased]:" -> - linkReferenceForUnreleased - :: linkReferenceForLatestEntry :: rest - | first :: rest -> - linkReferenceForUnreleased - :: linkReferenceForLatestEntry :: first :: rest - - let blankLineCount = - tailLines - |> Seq.takeWhile String.isNullOrWhiteSpace - |> Seq.length - - let linkRefCount = linkReferenceTargets |> List.length - let skipCount = blankLineCount + linkRefCount - - let updatedLines = - List.rev (tailLines |> List.skip skipCount) - @ newLinkReferenceTargets - - File.write false changelogFilename updatedLines - - // If build fails after this point but before we push the release out, undo our modifications - Target.activateBuildFailure "RevertChangelog" + latestEntry <- Changelog.updateChangelog changelogPath changelog gitHubRepoUrl ctx let revertChangelog _ = - if String.isNotNullOrEmpty changelogBackupFilename then - changelogBackupFilename - |> Shell.copyFile changelogFilename + if String.isNotNullOrEmpty Changelog.changelogBackupFilename then + Changelog.changelogBackupFilename + |> Shell.copyFile changelogPath let deleteChangelogBackupFile _ = - if String.isNotNullOrEmpty changelogBackupFilename then - Shell.rm changelogBackupFilename + if String.isNotNullOrEmpty Changelog.changelogBackupFilename then + Shell.rm Changelog.changelogBackupFilename + +let assemblyInfoMsBuildArgs () = + let releaseChannel = + match latestEntry.SemVer.PreRelease with + | Some pr -> pr.Name + | _ -> "release" + + let releaseDate = latestEntry.Date.Value.ToString("o") + + let gitHash = + try + Git.Information.getCurrentSHA1 (null) + with + | _ -> "" + + [ $"/p:Version={latestEntry.AssemblyVersion}" + $"/p:AssemblyVersion={latestEntry.AssemblyVersion}" + $"/p:FileVersion={latestEntry.AssemblyVersion}" + $"/p:InformationalVersion={latestEntry.AssemblyVersion}" + $"/p:AssemblyMetadataReleaseDate={releaseDate}" + $"/p:AssemblyMetadataReleaseChannel={releaseChannel}" + $"/p:AssemblyMetadataGitHash={gitHash}" ] + let dotnetBuild ctx = let args = @@ -549,6 +343,7 @@ let dotnetBuild ctx = DotNet.build (fun c -> { c with + MSBuildParams = disableBinLog c.MSBuildParams Configuration = configuration (ctx.Context.AllExecutingTargets) Common = c.Common |> DotNet.Options.withAdditionalArgs args @@ -563,13 +358,10 @@ let fsharpAnalyzers _ = |> Seq.iter (fun proj -> let args = - [ FSharpAnalyzers.Analyzers_Path( - __SOURCE_DIRECTORY__ - ".." - "packages/analyzers" - ) + [ FSharpAnalyzers.Analyzers_Path(rootDirectory "packages/analyzers") FSharpAnalyzers.Arguments.Project proj FSharpAnalyzers.Arguments.Fail_On_Warnings [ "BDH0002" ] + FSharpAnalyzers.Arguments.Ignore_Files [ "*AssemblyInfo.fs" ] FSharpAnalyzers.Verbose ] |> argParser.PrintCommandLineArgumentsFlat @@ -581,18 +373,32 @@ let dotnetTest ctx = |> Seq.map IO.Path.GetFileNameWithoutExtension |> String.concat "|" + let isGenerateCoverageReport = + ctx + .Context + .TryFindTarget( + "GenerateCoverageReport" + ) + .IsSome + let args = [ "--no-build" - sprintf "/p:AltCover=%b" (not disableCodeCoverage) - sprintf "/p:AltCoverThreshold=%d" coverageThresholdPercent - sprintf "/p:AltCoverAssemblyExcludeFilter=%s" excludeCoverage - "/p:AltCoverLocalSource=true" ] + if enableCodeCoverage || isGenerateCoverageReport then + sprintf "/p:AltCover=true" + + if not isGenerateCoverageReport then + sprintf "/p:AltCoverThreshold=%d" coverageThresholdPercent + + sprintf "/p:AltCoverAssemblyExcludeFilter=%s" excludeCoverage + "/p:AltCoverLocalSource=true" ] DotNet.test (fun c -> { c with + MSBuildParams = disableBinLog c.MSBuildParams Configuration = configuration (ctx.Context.AllExecutingTargets) + Logger = Some "trx;LogFilePrefix=testResults" Common = c.Common |> DotNet.Options.withAdditionalArgs args }) sln @@ -615,8 +421,19 @@ let generateCoverageReport _ = sprintf "-Reporttypes:%s" "Html" ] let args = independentArgs |> String.concat " " + dotnet.reportgenerator id args +let showCoverageReport _ = + failOnCIBuild () + + coverageReportDir "index.html" + |> Command.ShellCommand + |> CreateProcess.fromCommand + |> Proc.start + |> ignore + + let watchTests _ = !!testsGlob |> Seq.map @@ -645,66 +462,20 @@ let watchTests _ = cancelEvent.Cancel <- true -let generateAssemblyInfo _ = - - let (|Fsproj|Csproj|Vbproj|) (projFileName: string) = - match projFileName with - | f when f.EndsWith("fsproj") -> Fsproj - | f when f.EndsWith("csproj") -> Csproj - | f when f.EndsWith("vbproj") -> Vbproj - | _ -> failwith (sprintf "Project file %s not supported. Unknown project type." projFileName) - - let releaseChannel = - match latestEntry.SemVer.PreRelease with - | Some pr -> pr.Name - | _ -> "release" - - let getAssemblyInfoAttributes projectName = - [ AssemblyInfo.Title(projectName) - AssemblyInfo.Product productName - AssemblyInfo.Version latestEntry.AssemblyVersion - AssemblyInfo.Metadata("ReleaseDate", latestEntry.Date.Value.ToString("o")) - AssemblyInfo.FileVersion latestEntry.AssemblyVersion - AssemblyInfo.InformationalVersion latestEntry.AssemblyVersion - AssemblyInfo.Metadata("ReleaseChannel", releaseChannel) - AssemblyInfo.Metadata("GitHash", Git.Information.getCurrentSHA1 (null)) ] - - let getProjectDetails (projectPath: string) = - let projectName = - IO.Path.GetFileNameWithoutExtension(projectPath) - - (projectPath, projectName, IO.Path.GetDirectoryName(projectPath), (getAssemblyInfoAttributes projectName)) - - srcAndTest - |> Seq.map getProjectDetails - |> Seq.iter - (fun (projFileName, _, folderName, attributes) -> - match projFileName with - | Fsproj -> AssemblyInfoFile.createFSharp (folderName "AssemblyInfo.fs") attributes - | Csproj -> - AssemblyInfoFile.createCSharp - ((folderName "Properties") - "AssemblyInfo.cs") - attributes - | Vbproj -> - AssemblyInfoFile.createVisualBasic - ((folderName "My Project") - "AssemblyInfo.vb") - attributes) - let dotnetPack ctx = // Get release notes with properly-linked version number let releaseNotes = - latestEntry - |> Changelog.mkReleaseNotes linkReferenceForLatestEntry + Changelog.mkReleaseNotes changelog latestEntry gitHubRepoUrl let args = - [ sprintf "/p:PackageVersion=%s" latestEntry.NuGetVersion - sprintf "/p:PackageReleaseNotes=\"%s\"" releaseNotes ] + [ $"/p:PackageVersion={latestEntry.NuGetVersion}" + yield! assemblyInfoMsBuildArgs () + $"/p:PackageReleaseNotes=\"{releaseNotes}\"" ] DotNet.pack (fun c -> { c with + MSBuildParams = disableBinLog c.MSBuildParams Configuration = configuration (ctx.Context.AllExecutingTargets) OutputPath = Some distDir Common = c.Common |> DotNet.Options.withAdditionalArgs args }) @@ -717,17 +488,18 @@ let sourceLinkTest _ = let publishToNuget _ = allReleaseChecks () - Paket.push + DotNet.nugetPush (fun c -> { c with - ToolType = ToolType.CreateLocalTool() - PublishUrl = publishUrl - WorkingDir = "dist" - ApiKey = - match nugetToken with - | Some s -> s - | _ -> c.ApiKey // assume paket-config was set properly - }) + Common = + { c.Common with + WorkingDirectory = distDir } + PushParams = + { c.PushParams with + Source = Some publishUrl + ApiKey = nugetToken } }) + "*.nupkg" + // If build fails after this point, we've pushed a release out with this version of CHANGELOG.md so we should keep it around Target.deactivateBuildFailure "RevertChangelog" @@ -738,23 +510,26 @@ let gitRelease _ = Git.Staging.stageFile "" "CHANGELOG.md" |> ignore - !! "src/**/AssemblyInfo.fs" - |> Seq.iter (Git.Staging.stageFile "" >> ignore) + let msg = + sprintf "Bump version to %s\n\n%s" latestEntry.NuGetVersion releaseNotesGitCommitFormat + + Git.Commit.exec "" msg + + Target.deactivateBuildFailure "RevertChangelog" - Git.Commit.exec "" (sprintf "Bump version to %s\n\n%s" latestEntry.NuGetVersion releaseNotesGitCommitFormat) Git.Branches.push "" let tag = - tagFromVersionNumber latestEntry.NuGetVersion + Changelog.tagFromVersionNumber latestEntry.NuGetVersion Git.Branches.tag "" tag Git.Branches.pushTag "" "origin" tag let githubRelease _ = - allReleaseChecks () + allPublishChecks () let token = - match githubToken with + match githubToken with | Some s -> s | _ -> failwith @@ -762,15 +537,15 @@ let githubRelease _ = let files = !!distGlob // Get release notes with properly-linked version number + let releaseNotes = - latestEntry - |> Changelog.mkReleaseNotes linkReferenceForLatestEntry + Changelog.mkReleaseNotes changelog latestEntry gitHubRepoUrl GitHub.createClientWithToken token |> GitHub.draftNewRelease gitOwner gitRepoName - (tagFromVersionNumber latestEntry.NuGetVersion) + (Changelog.tagFromVersionNumber latestEntry.NuGetVersion) (latestEntry.SemVer.PreRelease <> None) (releaseNotes |> Seq.singleton) |> GitHub.uploadFiles files @@ -778,26 +553,14 @@ let githubRelease _ = |> Async.RunSynchronously let formatCode _ = - let result = - [ srcCodeGlob; testsCodeGlob ] - |> Seq.collect id - // Ignore AssemblyInfo - |> Seq.filter (fun f -> f.EndsWith("AssemblyInfo.fs") |> not) - |> String.concat " " - |> dotnet.fantomas + let result = dotnet.fantomas $"{rootDirectory}" if not result.OK then printfn "Errors while formatting all files: %A" result.Messages -let checkFormatCode _ = +let checkFormatCode ctx = let result = - [ srcCodeGlob; testsCodeGlob ] - |> Seq.collect id - // Ignore AssemblyInfo - |> Seq.filter (fun f -> f.EndsWith("AssemblyInfo.fs") |> not) - |> String.concat " " - |> sprintf "%s --check" - |> dotnet.fantomas + dotnet.fantomas $"{rootDirectory} --check" if result.ExitCode = 0 then Trace.log "No files need formatting" @@ -806,26 +569,28 @@ let checkFormatCode _ = else Trace.logf "Errors while formatting: %A" result.Errors -let buildDocs _ = DocsTool.build () -let watchDocs _ = DocsTool.watch () +let cleanDocsCache _ = DocsTool.cleanDocsCache () + +let buildDocs ctx = + let configuration = + configuration (ctx.Context.AllExecutingTargets) -let releaseDocs ctx = - isReleaseBranchCheck () // Docs changes don't need a full release to the library + DocsTool.build (string configuration) - Git.Staging.stageAll docsDir - Git.Commit.exec "" (sprintf "Documentation release of version %s" latestEntry.NuGetVersion) +let watchDocs ctx = + let configuration = + configuration (ctx.Context.AllExecutingTargets) - if isRelease (ctx.Context.AllExecutingTargets) |> not then - // We only want to push if we're only calling "ReleaseDocs" target - // If we're calling "Release" target, we'll let the "GitRelease" target do the git push - Git.Branches.push "" + DocsTool.watch (string configuration) let initTargets () = BuildServer.install [ GitHubActions.Installer ] + /// Defines a dependency - y is dependent on x. Finishes the chain. let (==>!) x y = x ==> y |> ignore + /// Defines a soft dependency. x must run before y, if it is present, but y does not require x to be run. Finishes the chain. let (?=>!) x y = x ?=> y |> ignore //----------------------------------------------------------------------------- @@ -846,8 +611,8 @@ let initTargets () = Target.create "FSharpAnalyzers" fsharpAnalyzers Target.create "DotnetTest" dotnetTest Target.create "GenerateCoverageReport" generateCoverageReport + Target.create "ShowCoverageReport" showCoverageReport Target.create "WatchTests" watchTests - Target.create "GenerateAssemblyInfo" generateAssemblyInfo Target.create "DotnetPack" dotnetPack Target.create "SourceLinkTest" sourceLinkTest Target.create "PublishToNuGet" publishToNuget @@ -855,10 +620,11 @@ let initTargets () = Target.create "GitHubRelease" githubRelease Target.create "FormatCode" formatCode Target.create "CheckFormatCode" checkFormatCode - Target.create "Release" ignore + Target.create "Release" ignore // For local + Target.create "Publish" ignore //For CI + Target.create "CleanDocsCache" cleanDocsCache Target.create "BuildDocs" buildDocs Target.create "WatchDocs" watchDocs - Target.create "ReleaseDocs" releaseDocs //----------------------------------------------------------------------------- // Target Dependencies @@ -868,38 +634,35 @@ let initTargets () = // Only call Clean if DotnetPack was in the call chain // Ensure Clean is called before DotnetRestore "Clean" ?=>! "DotnetRestore" - "Clean" ==>! "DotnetPack" - // Only call GenerateAssemblyInfo if Publish was in the call chain - // Ensure GenerateAssemblyInfo is called after DotnetRestore and before DotnetBuild - "DotnetRestore" ?=>! "GenerateAssemblyInfo" - "GenerateAssemblyInfo" ?=>! "DotnetBuild" - "GenerateAssemblyInfo" ==>! "PublishToNuGet" + "Clean" ==>! "DotnetPack" - // Only call UpdateChangelog if Publish was in the call chain - // Ensure UpdateChangelog is called after DotnetRestore and before GenerateAssemblyInfo + // Ensure UpdateChangelog is called after DotnetRestore "DotnetRestore" ?=>! "UpdateChangelog" - "UpdateChangelog" ?=>! "GenerateAssemblyInfo" - "UpdateChangelog" ==>! "PublishToNuGet" - "BuildDocs" ==>! "ReleaseDocs" - "BuildDocs" ?=>! "PublishToNuget" - "DotnetPack" ?=>! "BuildDocs" - "GenerateCoverageReport" ?=>! "ReleaseDocs" + "CleanDocsCache" ==>! "BuildDocs" + + "DotnetBuild" ?=>! "BuildDocs" + + "DotnetBuild" ==>! "BuildDocs" + + + "DotnetBuild" ==>! "WatchDocs" + + "DotnetTest" ==> "GenerateCoverageReport" + ==>! "ShowCoverageReport" + + "UpdateChangelog" ==> "GitRelease" ==>! "Release" "DotnetRestore" - ==> "CheckFormatCode" + =?> ("CheckFormatCode", isCI.Value) ==> "DotnetBuild" - //==> "FSharpAnalyzers" ==> "DotnetTest" - =?> ("GenerateCoverageReport", not disableCodeCoverage) ==> "DotnetPack" - ==> "SourceLinkTest" ==> "PublishToNuGet" - ==> "GitRelease" ==> "GitHubRelease" - ==>! "Release" + ==>! "Publish" "DotnetRestore" ==>! "WatchTests" diff --git a/build/build.fsproj b/build/build.fsproj index 011c43f..ffd0edf 100644 --- a/build/build.fsproj +++ b/build/build.fsproj @@ -7,9 +7,23 @@ false - - + + - + + + + + + + + + + + + + + + diff --git a/build/packages.lock.json b/build/packages.lock.json new file mode 100644 index 0000000..b042c4b --- /dev/null +++ b/build/packages.lock.json @@ -0,0 +1,438 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "Argu": { + "type": "Direct", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "iqF1uE+37uOsH+G4Q4yIQLJ57BgIBQ6ItOIprWynYBVZYJWCduEfdxKKGOYv2MtgHLCLLoeVGjrxwbk5o9WdNw==", + "dependencies": { + "FSharp.Core": "4.3.2", + "System.Configuration.ConfigurationManager": "4.4.0" + } + }, + "Fake.Api.GitHub": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "ADKKH1rppvNKoJxS671dXoa/wVE8OEYOC52CzWriowqq0EJGFh6mEthL958qBBm8cLf2j6RIc87mXTvXPK3mXg==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Octokit": "13.0.1" + } + }, + "Fake.BuildServer.GitHubActions": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "ncDGwcArQodvxTKGFjV98C6tovqMBdbpJmTdQp745yZSIDLHCBkKfyx1B6UH0++RiurS2XU4QLsz8UChUrkakg==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.Trace": "6.1.3" + } + }, + "Fake.Core.Environment": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "+3f1lcEumNzIuDkAVaRuhtWtbB4bLxQJ739wGbYu9Oe+OsI2KVBC27dr8FUakhSIWe+XUfG7C16n416TaZW9qA==", + "dependencies": { + "FSharp.Core": "8.0.301" + } + }, + "Fake.Core.Process": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "q9urEiNkpcgqntTZygDFX9n0t7kPMmeVak0VQnSqFHp6efdSiJK+aN2CZVOO2eylb54G5/+URRejdN9tOs44yg==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.FakeVar": "6.1.3", + "Fake.Core.String": "6.1.3", + "Fake.Core.Trace": "6.1.3", + "Fake.IO.FileSystem": "6.1.3" + } + }, + "Fake.Core.ReleaseNotes": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "S+miDuVdVktcAKdszmzcwifnQ8ZQBD5vR9aQA3dfwG7ue50od3nS0O3LDBfICRUIaxHkwfO5JmMTVdJA9Z2thg==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.SemVer": "6.1.3", + "Fake.Core.String": "6.1.3" + } + }, + "Fake.Core.Target": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "NSjLr/p33hFzRnQfHivkXtv00OrWWlWBjmVE3fn4sxanmiMwLzGbP6cn1qW7pmy2Wclm/s7uHTAAPU7wrVaYUw==", + "dependencies": { + "FSharp.Control.Reactive": "5.0.2", + "FSharp.Core": "8.0.301", + "Fake.Core.CommandLineParsing": "6.1.3", + "Fake.Core.Context": "6.1.3", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.FakeVar": "6.1.3", + "Fake.Core.Process": "6.1.3", + "Fake.Core.String": "6.1.3", + "Fake.Core.Trace": "6.1.3" + } + }, + "Fake.DotNet.AssemblyInfoFile": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "HRzwWnOqJQDN2Qzbes4z3s0jpjk5lrkwF+woZ/jMRVVONLZ0F59D/e+JCRk4UdUwBGVc8QZNiIkPsCKL8LUCSg==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.String": "6.1.3", + "Fake.Core.Trace": "6.1.3", + "Fake.IO.FileSystem": "6.1.3" + } + }, + "Fake.DotNet.Cli": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "OmP/0A2MOqpzNuEx0ahPYUyTWcfy4SyhmWYgsSZ8IkE80zak8RwuSnonx3DjSAbVR3oHuse8LcWXnRsyoFDiDw==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.Process": "6.1.3", + "Fake.Core.String": "6.1.3", + "Fake.Core.Trace": "6.1.3", + "Fake.DotNet.MSBuild": "6.1.3", + "Fake.DotNet.NuGet": "6.1.3", + "Fake.IO.FileSystem": "6.1.3", + "Mono.Posix.NETStandard": "1.0.0", + "Newtonsoft.Json": "13.0.3" + } + }, + "Fake.IO.FileSystem": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "zQH/7eZWCmnrxfj2UGq5lMP+e6dqtEFimrVchDwOLneKyoA5+sDihL8CnJ6FRcIDkiSp4S2WHvNG2iNiZaVJxA==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.String": "6.1.3", + "Fake.Core.Trace": "6.1.3" + } + }, + "Fake.Tools.Git": { + "type": "Direct", + "requested": "[6.1.3, )", + "resolved": "6.1.3", + "contentHash": "OMG4kOH0jr8S4HPSz+WfNL6swZVnctQD+WSZC8LHDl8kwJCszxJh1iHQNnszDzyREe3utzVOrArl2M7H2afZtQ==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.Process": "6.1.3", + "Fake.Core.SemVer": "6.1.3", + "Fake.Core.String": "6.1.3", + "Fake.Core.Trace": "6.1.3", + "Fake.IO.FileSystem": "6.1.3" + } + }, + "MSBuild.StructuredLogger": { + "type": "Direct", + "requested": "[2.2.441, )", + "resolved": "2.2.441", + "contentHash": "ZeCbPs35NnxHwmnJIYeU9WEklKA1ZY3YxT0+Y/nmvie21JfVdxeKy/Dt0rn7haJwXJmM8nvhUEtxjbUaJQWAGA==", + "dependencies": { + "Microsoft.Build.Framework": "17.5.0", + "Microsoft.Build.Utilities.Core": "17.5.0" + } + }, + "BlackFox.VsWhere": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "rqIFENkurSkGU0ecXG21Ez96pXDwIXUoE9f4DhEDRE4T3iYVIKMHPaQ0XUQH4Rgf9bqUHUW1TO87UR7xEndqNQ==", + "dependencies": { + "FSharp.Core": "4.2.3" + } + }, + "Fake.Core.CommandLineParsing": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "C8psqeUCqIYIbxVjqVV5Zt6EwD3wpITImLqAJ1j9kz20kx1g1ySmgxLDgLyP349vxgXy3oN/5df87nSF6e4nLA==", + "dependencies": { + "FParsec": "1.1.1", + "FSharp.Core": "8.0.301" + } + }, + "Fake.Core.Context": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "ol84MQSE88OYXj7c2uqLfiztDLDhptHdqDqGO1sm/ks9TgOpZ2azLkGSAr8C34gd51FYtZM/Jww28ZNONovWEQ==", + "dependencies": { + "FSharp.Core": "8.0.301" + } + }, + "Fake.Core.FakeVar": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "/cBJICEsb7NU3x7Z2/rISqOvm4Fuy/pNrgA8iY3b82SoSXi5kNtVygpZW+kbihth/yvDnE14ridaTMgc6Fkwqw==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Context": "6.1.3" + } + }, + "Fake.Core.SemVer": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "c8kIgzAJHm3TzRCvUl/LLR5705J0J45lo7gZlKgAnqdzlrJxMz8af4x7dy42bjY0SKxKdtbNjudgS3y9HiN4Jw==", + "dependencies": { + "FSharp.Core": "8.0.301" + } + }, + "Fake.Core.String": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "Pdle3F5G8OyF4azOM9oyyctIztBTN1hRByei5JrF4mFS3tmmB8RFi8tcqZOeAeuqs91HvF4Tj+ZcKp1FATbH7w==", + "dependencies": { + "FSharp.Core": "8.0.301" + } + }, + "Fake.Core.Tasks": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "oSgldXn5MzsMKuXUqaUcrim5J9zWt2iYA0A4pwUNjqeuwhXUV6AmgPebE9yuAOARBD0r296plp5fd7Cv5y3vQw==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Trace": "6.1.3" + } + }, + "Fake.Core.Trace": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "zBj/BndzPZADUO4Kg7LHUS38KAHRohFz9ni7zELxDMkP/JqHUtldwaOcDxOXQhcNqHd7LtkwkIjztU+v5JwCGg==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.FakeVar": "6.1.3" + } + }, + "Fake.Core.Xml": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "MvvtUnzsThYxIfx3dxrBR48oEpUtejEdR4KsWHjtbO7rBOsJMsFvd2TvdKJwPAZhNMejYNhsJWhbBLqHWCxfWQ==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.String": "6.1.3" + } + }, + "Fake.DotNet.MSBuild": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "vkC7g7DkXj1Y24VawrNB7wQcv/8L9I0EIYGqCe+pc3fsxiebMa0LC3iKMbdO3+7UfLMiBDm/bFUgdxL4nexyIQ==", + "dependencies": { + "BlackFox.VsWhere": "1.1.0", + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.Process": "6.1.3", + "Fake.Core.String": "6.1.3", + "Fake.Core.Trace": "6.1.3", + "Fake.IO.FileSystem": "6.1.3", + "MSBuild.StructuredLogger": "2.1.815" + } + }, + "Fake.DotNet.NuGet": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "WNJgzPWZQh2jCMMDhi+BY8IbHrVxErL0289foCrAezt175tuhnpqaTf69uUpPRypNhS53oKDaFSpuvUxqyBUEQ==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Environment": "6.1.3", + "Fake.Core.Process": "6.1.3", + "Fake.Core.SemVer": "6.1.3", + "Fake.Core.String": "6.1.3", + "Fake.Core.Tasks": "6.1.3", + "Fake.Core.Trace": "6.1.3", + "Fake.Core.Xml": "6.1.3", + "Fake.IO.FileSystem": "6.1.3", + "Fake.Net.Http": "6.1.3", + "Newtonsoft.Json": "13.0.3", + "NuGet.Protocol": "6.10.1" + } + }, + "Fake.Net.Http": { + "type": "Transitive", + "resolved": "6.1.3", + "contentHash": "I+mseA8VmLwaTxrWrc/WP4lI9b+B/s6UBzXgKBNOu93nMqNYGQLm+h9ii9ohpZ1ZKWjRVzrbXvSrELrEWroPyQ==", + "dependencies": { + "FSharp.Core": "8.0.301", + "Fake.Core.Trace": "6.1.3" + } + }, + "FParsec": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "Wdjf/gCNLEwd+0nUCDh9jAIIcKGwfhRramySTnTcVVgNC6i4Vp5aJklUJJfvFkEZMYNZEDGcI8pCa36/TmwmSg==", + "dependencies": { + "FSharp.Core": "4.3.4" + } + }, + "FSharp.Control.Reactive": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "XyPAAe1xnKVF5HRMaRBdrXPkj7lPvx3sy2j0xb1cHZCv8Nrvyzb/EtbUZU/QowiRB5Oi2DTP/rChi3REUOeJRA==", + "dependencies": { + "FSharp.Core": "4.7.2", + "System.Reactive": "5.0.0" + } + }, + "Microsoft.Build.Framework": { + "type": "Transitive", + "resolved": "17.5.0", + "contentHash": "j1AJfnCY8+dfc8rB3P/9o8P4174kZbEKwhLdkvLObvTGM6kfIZEgWYgd3IN7xJbNdxDfr9rT8Vr7/DaevyWKNg==", + "dependencies": { + "System.Security.Permissions": "6.0.0" + } + }, + "Microsoft.Build.Utilities.Core": { + "type": "Transitive", + "resolved": "17.5.0", + "contentHash": "fKsS1AND9Jk8etIze+0PRK0OoxeUWEK3Ulrc+MFQr+1aekvLztnC1Tdpwt3Edp2485l0lGWFz+oSn/BIoxJV8A==", + "dependencies": { + "Microsoft.Build.Framework": "17.5.0", + "Microsoft.NET.StringTools": "17.5.0", + "System.Configuration.ConfigurationManager": "6.0.0" + } + }, + "Microsoft.NET.StringTools": { + "type": "Transitive", + "resolved": "17.5.0", + "contentHash": "EWy7NK9ZYYBDkUDyh087ML9ygKA30aFtWwxubAewyj9dxsEME85rrv4Vu6a8O9hgbLPtyN91lyWBzpVrUPuqwA==" + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==" + }, + "Mono.Posix.NETStandard": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "vSN/L1uaVwKsiLa95bYu2SGkF0iY3xMblTfxc8alSziPuVfJpj3geVqHGAA75J7cZkMuKpFVikz82Lo6y6LLdA==" + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "NuGet.Common": { + "type": "Transitive", + "resolved": "6.10.1", + "contentHash": "djIP7OOdQYamFFtLFxbGTotFhlCkRs42Nc2lYS7E1uGLq91zwLdfOUCsWLfFBMT5EA8iqQnyRYrMD/sihgTkiQ==", + "dependencies": { + "NuGet.Frameworks": "6.10.1" + } + }, + "NuGet.Configuration": { + "type": "Transitive", + "resolved": "6.10.1", + "contentHash": "SlPy3mxtMZRb281WUDA5Q+8SPR5objjFfXXOGjk5vs60/f7KeIdORJOj2UgxJal9YFFU58sJv3tVkaF51bGoyA==", + "dependencies": { + "NuGet.Common": "6.10.1", + "System.Security.Cryptography.ProtectedData": "4.4.0" + } + }, + "NuGet.Frameworks": { + "type": "Transitive", + "resolved": "6.10.1", + "contentHash": "DtppveEBKkGwLoY5fk2DLNxtVbx0iw8r7s/RjYdm2AkK7RwnfJGe+j7DriYSEuxHrvSOU7n3ELKmlnn9jbZYfQ==" + }, + "NuGet.Packaging": { + "type": "Transitive", + "resolved": "6.10.1", + "contentHash": "0YiFuHfPty9XOZXEZTj8KPjhBZhr7q91vmANttay+3IsO3ri40sMyGDoTRhFYH/A8dJzwmnD7ZNDJLFTiChwNA==", + "dependencies": { + "Newtonsoft.Json": "13.0.3", + "NuGet.Configuration": "6.10.1", + "NuGet.Versioning": "6.10.1", + "System.Security.Cryptography.Pkcs": "6.0.4" + } + }, + "NuGet.Protocol": { + "type": "Transitive", + "resolved": "6.10.1", + "contentHash": "ZWZKeFBtxBOI4MyM9DbL47APRrLzIvg6vP5YcHHuryHb4W9A0bnAPjpmR5BF6qB5KpGBioqJ0GftxWrZ+W7pUA==", + "dependencies": { + "NuGet.Packaging": "6.10.1" + } + }, + "NuGet.Versioning": { + "type": "Transitive", + "resolved": "6.10.1", + "contentHash": "tovHZ3OlMVmsTdhv2z5nwnnhoA1ryhfJMyVQ9/+iv6d3h78fp230XaGy3K/iVcLwB50DdfNfIsitW97KSOWDFg==" + }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "6.0.0", + "System.Security.Permissions": "6.0.0" + } + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "6.0.0" + } + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==" + }, + "System.Security.Cryptography.Pkcs": { + "type": "Transitive", + "resolved": "6.0.4", + "contentHash": "LGbXi1oUJ9QgCNGXRO9ndzBL/GZgANcsURpMhNR8uO+rca47SZmciS3RSQUvlQRwK3QHZSHNOXzoMUASKA+Anw==" + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==" + }, + "System.Security.Permissions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==", + "dependencies": { + "System.Windows.Extensions": "6.0.0" + } + }, + "System.Windows.Extensions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==", + "dependencies": { + "System.Drawing.Common": "6.0.0" + } + }, + "FSharp.Core": { + "type": "CentralTransitive", + "requested": "[10.0.102, )", + "resolved": "10.0.102", + "contentHash": "umz5pbtOvL/F9U5sibhREzZT2ewAs//nRTMwj8XcOOjMdOP828tipLpEhb2fZNijhiyikJ6Nr/dsMc/lj58W9w==" + }, + "Octokit": { + "type": "CentralTransitive", + "requested": "[14.0.0, )", + "resolved": "14.0.0", + "contentHash": "jGOuTH1l+TCpJH+fwYOp7USzHDuGfN1jKbLz3J2COwyn+wL08eynvpnM6rY2qkzIEXum3PN2p2QkP3BW/p9Qcw==" + } + } + } +} \ No newline at end of file diff --git a/build/paket.references b/build/paket.references deleted file mode 100644 index adc2792..0000000 --- a/build/paket.references +++ /dev/null @@ -1,15 +0,0 @@ -group Build -FSharp.Core -Fake.IO.FileSystem -Fake.Core.Target -Fake.Core.ReleaseNotes -FAKE.Core.Environment -Fake.DotNet.Cli -FAKE.Core.Process -Fake.DotNet.AssemblyInfoFile -Fake.Tools.Git -Fake.DotNet.Paket -Fake.Api.GitHub -Fake.BuildServer.GitHubActions -Argu -Octokit diff --git a/docs/Api_Reference/EFCore.FSharp/EFCore.FSharp.html b/docs/Api_Reference/EFCore.FSharp/EFCore.FSharp.html deleted file mode 100644 index 01fd2eb..0000000 --- a/docs/Api_Reference/EFCore.FSharp/EFCore.FSharp.html +++ /dev/null @@ -1,2 +0,0 @@ - -EFCore.FSharp docs / EFCore.FSharp.html-EFCore.FSharp
\ No newline at end of file diff --git a/docs/Explanations/Background.html b/docs/Explanations/Background.html deleted file mode 100644 index ccb3240..0000000 --- a/docs/Explanations/Background.html +++ /dev/null @@ -1,9 +0,0 @@ - -EFCore.FSharp docs / Background.html-EFCore.FSharp

Background

-

Every introduction to .NET Core onwards will usually start by suggesting EntityFramework Core as the go-to choice for data access.

-

Unfortunately EF Core will output all generated code in C# and C# alone. While it is the most popular .NET language, it it not the only .NET language.

-

This project brings support for F# to EF Core, allowing for database scaffolding, migrations to be created in F#.

-

Why not Dapper, or SQLProvider, or .....?

-

If that's what you want to use, please do! The sheer scale of database access libraries in .NET and in F# is one of the great strengths of the community.

-

But as EF Core is one of the most widely known ORM solutions in the .NET world, it makes sense that it should support various .NET languages. That's what this project is for.

-
\ No newline at end of file diff --git a/docs/How_Tos/Querying_Options.html b/docs/How_Tos/Querying_Options.html deleted file mode 100644 index eea6b17..0000000 --- a/docs/How_Tos/Querying_Options.html +++ /dev/null @@ -1,207 +0,0 @@ - -EFCore.FSharp docs / Querying_Options.html-EFCore.FSharp

Querying option types

-

Configuring

-

EF Core by default does not know anything about the way of F# deals with nullable values which is the Option type.

-

This project has a way to enable query for columns defined as an option, first you need to call .UseFSharpTypes() on the -context configuration builder

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-15: 
-16: 
-17: 
-18: 
-19: 
-20: 
-21: 
-22: 
-23: 
-24: 
-
open EntityFrameworkCore.FSharp.Extensions
-
-[<CLIMutable>]
-type Blog = {
-    [<Key>]
-    Id : Guid
-    Title : string
-    Content : string option
-}
-
-type MyContext () =
-    inherit DbContext()
-
-    [<DefaultValue>]
-    val mutable private _blogs : DbSet<Blog>
-    member this.Blogs with get() = this._blogs and set v = this._blogs <- v
-
-    override _.OnModelCreating builder =
-        builder.RegisterOptionTypes() // enables option values for all entities
-
-    override _.OnConfiguring(options: DbContextOptionsBuilder) : unit =
-           options.UseSqlite("Data Source=dbName.db")
-                  .UseFSharpTypes()
-           |> ignore
-
-

Note that the .UseFSharpTypes() will exist independent of the database, the UseSqlite is just for the example. -If you are using an SQL server with UseSqlServer or UsePostgres for Postgres, or any other database it will exist.

-

Querying

-

With that, you will be able to query your entity by an optional column.

-

Querying entities with Some content

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-15: 
-
let queryWhereSome (ctx: MyContext) =
-
-    // Querying entities with `Some` content
-    let blogs =
-        query {
-            for blog in ctx.Blogs do
-            where blog.Content.IsSome
-            select blog
-        }
-
-    // or using Linq extensions
-    let blog =
-        ctx.Blogs.Where(fun x -> x.Content.IsSome)
-
-    ()
-
-

Querying entities with None content

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-
let queryWhereNone (ctx: MyContext) =
-
-    let blogs =
-        query {
-            for blog in ctx.Blogs do
-            where blog.Content.IsNone
-            select blog
-        }
-
-    // or using Linq extensions
-    let blog =
-        ctx.Blogs.Where(fun x -> x.Content.IsNone)
-
-    ()
-
-

Querying optional values by value

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-
let queryWhereValue (ctx: MyContext) =
-
-    let blogs =
-        query {
-            for blog in ctx.Blogs do
-            where (blog.Content.Value = "Some text")
-            select blog
-        }
-
-    // or using Linq extensions
-    let blog =
-        ctx.Blogs.Where(fun x -> x.Content.Value = "Some text")
-
-    ()
-
-
namespace EntityFrameworkCore
-
namespace EntityFrameworkCore.FSharp
-
module Extensions

from EntityFrameworkCore.FSharp
-
Multiple items
type CLIMutableAttribute =
  inherit Attribute
  new : unit -> CLIMutableAttribute

--------------------
new : unit -> CLIMutableAttribute
-
type Blog =
  { Id: Guid
    Title: string
    Content: string option }
-
Multiple items
type KeyAttribute =
  inherit Attribute
  new : unit -> KeyAttribute

--------------------
KeyAttribute() : KeyAttribute
-
Blog.Id: Guid
-
Multiple items
type Guid =
  struct
    new : b:byte[] -> Guid + 5 overloads
    member CompareTo : value:obj -> int + 1 overload
    member Equals : o:obj -> bool + 1 overload
    member GetHashCode : unit -> int
    member ToByteArray : unit -> byte[]
    member ToString : unit -> string + 2 overloads
    member TryFormat : destination:Span<char> * charsWritten:int * ?format:ReadOnlySpan<char> -> bool
    member TryWriteBytes : destination:Span<byte> -> bool
    static val Empty : Guid
    static member NewGuid : unit -> Guid
    ...
  end

--------------------
Guid ()
Guid(b: byte []) : Guid
Guid(b: ReadOnlySpan<byte>) : Guid
Guid(g: string) : Guid
Guid(a: int, b: int16, c: int16, d: byte []) : Guid
Guid(a: uint32, b: uint16, c: uint16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
Guid(a: int, b: int16, c: int16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
-
Blog.Title: string
-
Multiple items
val string : value:'T -> string

--------------------
type string = String
-
Blog.Content: string option
-
type 'T option = Option<'T>
-
Multiple items
type MyContext =
  inherit DbContext
  new : unit -> MyContext
  val mutable private _blogs: DbSet<Blog>
  override OnConfiguring : options:DbContextOptionsBuilder -> unit
  override OnModelCreating : builder:ModelBuilder -> unit
  member Blogs : DbSet<Blog>
  member Blogs : DbSet<Blog> with set

--------------------
new : unit -> MyContext
-
Multiple items
type DbContext =
  new : options:DbContextOptions -> DbContext
  member Add<'TEntity> : entity:'TEntity -> EntityEntry<'TEntity> + 1 overload
  member AddAsync<'TEntity> : entity:'TEntity * ?cancellationToken:CancellationToken -> ValueTask<EntityEntry<'TEntity>> + 1 overload
  member AddRange : [<ParamArray>] entities:obj[] -> unit + 1 overload
  member AddRangeAsync : [<ParamArray>] entities:obj[] -> Task + 1 overload
  member Attach<'TEntity> : entity:'TEntity -> EntityEntry<'TEntity> + 1 overload
  member AttachRange : [<ParamArray>] entities:obj[] -> unit + 1 overload
  member ChangeTracker : ChangeTracker
  member ContextId : DbContextId
  member Database : DatabaseFacade
  ...

--------------------
DbContext() : DbContext
DbContext(options: DbContextOptions) : DbContext
-
Multiple items
type DefaultValueAttribute =
  inherit Attribute
  new : unit -> DefaultValueAttribute
  new : check:bool -> DefaultValueAttribute
  member Check : bool

--------------------
new : unit -> DefaultValueAttribute
new : check:bool -> DefaultValueAttribute
-
MyContext._blogs: DbSet<Blog>
-
type DbSet<'TEntity (requires reference type)> =
  member Add : entity:'TEntity -> EntityEntry<'TEntity>
  member AddAsync : entity:'TEntity * ?cancellationToken:CancellationToken -> ValueTask<EntityEntry<'TEntity>>
  member AddRange : [<ParamArray>] entities:'TEntity[] -> unit + 1 overload
  member AddRangeAsync : [<ParamArray>] entities:'TEntity[] -> Task + 1 overload
  member AsAsyncEnumerable : unit -> IAsyncEnumerable<'TEntity>
  member AsQueryable : unit -> IQueryable<'TEntity>
  member Attach : entity:'TEntity -> EntityEntry<'TEntity>
  member AttachRange : [<ParamArray>] entities:'TEntity[] -> unit + 1 overload
  member EntityType : IEntityType
  member Equals : obj:obj -> bool
  ...
-
val this : MyContext
-
val set : elements:seq<'T> -> Set<'T> (requires comparison)
-
val v : DbSet<Blog>
-
val builder : ModelBuilder
-
member ModelBuilder.RegisterOptionTypes : unit -> unit
-
val options : DbContextOptionsBuilder
-
Multiple items
type DbContextOptionsBuilder =
  new : unit -> DbContextOptionsBuilder + 1 overload
  member AddInterceptors : interceptors:IEnumerable<IInterceptor> -> DbContextOptionsBuilder + 1 overload
  member ConfigureLoggingCacheTime : timeSpan:TimeSpan -> DbContextOptionsBuilder
  member ConfigureWarnings : warningsConfigurationBuilderAction:Action<WarningsConfigurationBuilder> -> DbContextOptionsBuilder
  member EnableDetailedErrors : ?detailedErrorsEnabled:bool -> DbContextOptionsBuilder
  member EnableSensitiveDataLogging : ?sensitiveDataLoggingEnabled:bool -> DbContextOptionsBuilder
  member EnableServiceProviderCaching : ?cacheServiceProvider:bool -> DbContextOptionsBuilder
  member EnableThreadSafetyChecks : ?enableChecks:bool -> DbContextOptionsBuilder
  member Equals : obj:obj -> bool
  member GetHashCode : unit -> int
  ...

--------------------
type DbContextOptionsBuilder<'TContext (requires 'TContext :> DbContext)> =
  inherit DbContextOptionsBuilder
  new : unit -> DbContextOptionsBuilder<'TContext> + 1 overload
  member AddInterceptors : interceptors:IEnumerable<IInterceptor> -> DbContextOptionsBuilder<'TContext> + 1 overload
  member ConfigureLoggingCacheTime : timeSpan:TimeSpan -> DbContextOptionsBuilder<'TContext>
  member ConfigureWarnings : warningsConfigurationBuilderAction:Action<WarningsConfigurationBuilder> -> DbContextOptionsBuilder<'TContext>
  member EnableDetailedErrors : ?detailedErrorsEnabled:bool -> DbContextOptionsBuilder<'TContext>
  member EnableSensitiveDataLogging : ?sensitiveDataLoggingEnabled:bool -> DbContextOptionsBuilder<'TContext>
  member EnableServiceProviderCaching : ?cacheServiceProvider:bool -> DbContextOptionsBuilder<'TContext>
  member EnableThreadSafetyChecks : ?checksEnabled:bool -> DbContextOptionsBuilder<'TContext>
  member LogTo : filter:Func<EventId, LogLevel, bool> * logger:Action<EventData> -> DbContextOptionsBuilder<'TContext> + 4 overloads
  member Options : DbContextOptions<'TContext>
  ...

--------------------
DbContextOptionsBuilder() : DbContextOptionsBuilder
DbContextOptionsBuilder(options: DbContextOptions) : DbContextOptionsBuilder

--------------------
DbContextOptionsBuilder() : DbContextOptionsBuilder<'TContext>
DbContextOptionsBuilder(options: DbContextOptions<'TContext>) : DbContextOptionsBuilder<'TContext>
-
type unit = Unit
-
(extension) DbContextOptionsBuilder.UseSqlite(?sqliteOptionsAction: Action<Infrastructure.SqliteDbContextOptionsBuilder>) : DbContextOptionsBuilder
(extension) DbContextOptionsBuilder.UseSqlite(connectionString: string,?sqliteOptionsAction: Action<Infrastructure.SqliteDbContextOptionsBuilder>) : DbContextOptionsBuilder
(extension) DbContextOptionsBuilder.UseSqlite(connection: Data.Common.DbConnection,?sqliteOptionsAction: Action<Infrastructure.SqliteDbContextOptionsBuilder>) : DbContextOptionsBuilder
-
val ignore : value:'T -> unit
-
val queryWhereSome : ctx:MyContext -> unit
-
val ctx : MyContext
-
val blogs : IQueryable<Blog>
-
val query : Linq.QueryBuilder
-
val blog : Blog
-
property MyContext.Blogs: DbSet<Blog> with get, set
-
custom operation: where (bool)

Calls Linq.QueryBuilder.Where
-
property Option.IsSome: bool with get
-
custom operation: select ('Result)

Calls Linq.QueryBuilder.Select
-
val blog : IQueryable<Blog>
-
(extension) Collections.Generic.IEnumerable.Where<'TSource>(predicate: Func<'TSource,bool>) : Collections.Generic.IEnumerable<'TSource>
(extension) Collections.Generic.IEnumerable.Where<'TSource>(predicate: Func<'TSource,int,bool>) : Collections.Generic.IEnumerable<'TSource>
(extension) IQueryable.Where<'TSource>(predicate: Expressions.Expression<Func<'TSource,bool>>) : IQueryable<'TSource>
(extension) IQueryable.Where<'TSource>(predicate: Expressions.Expression<Func<'TSource,int,bool>>) : IQueryable<'TSource>
-
val x : Blog
-
val queryWhereNone : ctx:MyContext -> unit
-
property Option.IsNone: bool with get
-
val queryWhereValue : ctx:MyContext -> unit
-
property Option.Value: string with get
-
\ No newline at end of file diff --git a/docs/How_Tos/Scaffold_As_Types.html b/docs/How_Tos/Scaffold_As_Types.html deleted file mode 100644 index 2520003..0000000 --- a/docs/How_Tos/Scaffold_As_Types.html +++ /dev/null @@ -1,142 +0,0 @@ - -EFCore.FSharp docs / Scaffold_As_Types.html-EFCore.FSharp

Scaffolding code

-

EF Core allows us to scaffold a model in code, based on an existing database.

-

Because F# allows multiple ways of representing an object, we are able to provide configuration options for how that generated code is formed.

-

Record vs Class type

-

If we wanted to model a blog post with an Id, Title and Content we could do it as a record type

- - - -
1: 
-2: 
-3: 
-4: 
-5: 
-
type BlogPostRecord = {
-    Id : int
-    Title: string
-    Content: string
-}
-
-

Or we could do it as a class type, that would behave more like how a C# class would

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-
type BlogPostClass() =
-
-    [<DefaultValue>] val mutable private _Id : int
-    member this.Id with get() = this._Id and set v = this._Id <- v
-
-    [<DefaultValue>] val mutable private _Title : string
-    member this.Title with get() = this._Title and set v = this._Title <- v
-
-    [<DefaultValue>] val mutable private _Content : string
-    member this.Content with get() = this._Content and set v = this._Content <- v
-
-

Similarly, if we had a nullable column, for instance of type Guid, it might be specified as either Nullable<Guid> or in more idiomatic F#, as guid option

-

Again, we provide options for how these should be scaffolded.

-

Scaffolding Options

-

We provide EntityFramework.FSharp.ScaffoldOptions to specify how we want to create our scaffolded code.

-

By default we scaffold record types with nullable columns represented as option types, but this can be overridden.

-

To do this, you'll need your own implementation of IDesignTimeServices, where we can declare a ScaffoldOptions object.

-

The ScaffoldOptions.Default object is equivalent to ScaffoldOptions (ScaffoldTypesAs = RecordType, ScaffoldNullableColumnsAs = OptionTypes)

-

If you are happy with the default of record-type objects with option properties then you will not need to implement this at all, it is already handled automatically for you.

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-15: 
-16: 
-17: 
-18: 
-19: 
-20: 
-21: 
-22: 
-23: 
-
module DesignTimeServices =
-
-    open Microsoft.Extensions.DependencyInjection
-    open Microsoft.EntityFrameworkCore.Design
-    open EntityFrameworkCore.FSharp
-
-    type DesignTimeServices() =
-        interface IDesignTimeServices with
-            member __.ConfigureDesignTimeServices(serviceCollection: IServiceCollection) =
-                
-                // The default behaviour can be specified by calling
-                let fSharpServices = EFCoreFSharpServices.Default
-
-                // Or we can define a ScaffoldOptions use that instead
-                let scaffoldOptions =
-                    ScaffoldOptions (
-                        ScaffoldTypesAs = ScaffoldTypesAs.ClassType,
-                        ScaffoldNullableColumnsAs = ScaffoldNullableColumnsAs.NullableTypes)
-
-                let fSharpServices = EFCoreFSharpServices.WithScaffoldOptions scaffoldOptions
-
-                fSharpServices.ConfigureDesignTimeServices serviceCollection
-                ()
-
-
type BlogPostRecord =
  { Id: int
    Title: string
    Content: string }
-
BlogPostRecord.Id: int
-
Multiple items
val int : value:'T -> int (requires member op_Explicit)

--------------------
type int = int32

--------------------
type int<'Measure> = int
-
BlogPostRecord.Title: string
-
Multiple items
val string : value:'T -> string

--------------------
type string = System.String
-
BlogPostRecord.Content: string
-
Multiple items
type BlogPostClass =
  new : unit -> BlogPostClass
  val mutable private _Id: int
  val mutable private _Title: string
  val mutable private _Content: string
  member Content : string
  member Id : int
  member Title : string
  member Content : string with set
  member Id : int with set
  member Title : string with set

--------------------
new : unit -> BlogPostClass
-
Multiple items
type DefaultValueAttribute =
  inherit Attribute
  new : unit -> DefaultValueAttribute
  new : check:bool -> DefaultValueAttribute
  member Check : bool

--------------------
new : unit -> DefaultValueAttribute
new : check:bool -> DefaultValueAttribute
-
BlogPostClass._Id: int
-
val this : BlogPostClass
-
val set : elements:seq<'T> -> Set<'T> (requires comparison)
-
val v : int
-
BlogPostClass._Title: string
-
val v : string
-
BlogPostClass._Content: string
-
module DesignTimeServices

from ScaffoldAsTypes
-
namespace Microsoft
-
namespace Microsoft.Extensions
-
namespace Microsoft.Extensions.DependencyInjection
-
namespace Microsoft.EntityFrameworkCore
-
namespace Microsoft.EntityFrameworkCore.Design
-
namespace EntityFrameworkCore
-
namespace EntityFrameworkCore.FSharp
-
Multiple items
type DesignTimeServices =
  interface IDesignTimeServices
  new : unit -> DesignTimeServices

--------------------
new : unit -> DesignTimeServices
-
type IDesignTimeServices =
  member ConfigureDesignTimeServices : serviceCollection:IServiceCollection -> unit
-
val serviceCollection : IServiceCollection
-
type IServiceCollection =
  inherit IList<ServiceDescriptor>
  inherit ICollection<ServiceDescriptor>
  inherit IEnumerable<ServiceDescriptor>
  inherit IEnumerable
-
val fSharpServices : IDesignTimeServices
-
Multiple items
type EFCoreFSharpServices =
  interface IDesignTimeServices
  new : unit -> EFCoreFSharpServices
  new : scaffoldOptions:ScaffoldOptions -> EFCoreFSharpServices
  static member WithScaffoldOptions : scaffoldOptions:ScaffoldOptions -> IDesignTimeServices
  static member Default : IDesignTimeServices

--------------------
new : unit -> EFCoreFSharpServices
new : scaffoldOptions:ScaffoldOptions -> EFCoreFSharpServices
-
property EFCoreFSharpServices.Default: IDesignTimeServices with get
-
val scaffoldOptions : ScaffoldOptions
-
Multiple items
type ScaffoldOptions =
  new : unit -> ScaffoldOptions
  member ScaffoldNullableColumnsAs : ScaffoldNullableColumnsAs
  member ScaffoldTypesAs : ScaffoldTypesAs
  member ScaffoldNullableColumnsAs : ScaffoldNullableColumnsAs with set
  member ScaffoldTypesAs : ScaffoldTypesAs with set
  static member Default : ScaffoldOptions

--------------------
new : unit -> ScaffoldOptions
-
type ScaffoldTypesAs =
  | RecordType
  | ClassType
-
union case ScaffoldTypesAs.ClassType: ScaffoldTypesAs
-
type ScaffoldNullableColumnsAs =
  | OptionTypes
  | NullableTypes
-
union case ScaffoldNullableColumnsAs.NullableTypes: ScaffoldNullableColumnsAs
-
static member EFCoreFSharpServices.WithScaffoldOptions : scaffoldOptions:ScaffoldOptions -> IDesignTimeServices
-
IDesignTimeServices.ConfigureDesignTimeServices(serviceCollection: IServiceCollection) : unit
-
\ No newline at end of file diff --git a/docs/How_Tos/Use_DbContextHelpers.html b/docs/How_Tos/Use_DbContextHelpers.html deleted file mode 100644 index c8d4502..0000000 --- a/docs/How_Tos/Use_DbContextHelpers.html +++ /dev/null @@ -1,260 +0,0 @@ - -EFCore.FSharp docs / Use_DbContextHelpers.html-EFCore.FSharp

Use RecordHelpers

-

EFCore.FSharp also includes a number of helper methods for allowing a more F#-like experience while interacting with a DbContext.

-

They can be found in EntityFrameworkCore.FSharp.DbContextHelpers

-

Example Usages

-

Given a context with a Blog defined as such

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-
[<CLIMutable>]
-type Blog = {
-    [<Key>]
-    Id : Guid
-    Title : string
-    Content : string
-}
-
-type MyContext () =
-    inherit DbContext()
-
-    [<DefaultValue>]
-    val mutable private _blogs : DbSet<Blog>
-    member this.Blogs with get() = this._blogs and set v = this._blogs <- v
-
-

We can use the helper methods like so

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-15: 
-16: 
-17: 
-18: 
-19: 
-20: 
-21: 
-22: 
-23: 
-24: 
-25: 
-26: 
-27: 
-28: 
-29: 
-30: 
-
let interactWithContext (ctx:MyContext) =
-
-    let originalBlogPost = {
-        Id = (Guid.NewGuid())
-        Title = "My Title"
-        Content = "My original content"
-    }
-
-    originalBlogPost |> addEntity ctx |> ignore
-    saveChanges ctx |> ignore
-
-    let blogPostReadFromDb =
-        match tryFindEntity<Blog> ctx originalBlogPost.Id with
-        | Some b -> b
-        | None -> failwithf "Could not entity of type %A with identifier %A" typeof<Blog> originalBlogPost.Id
-
-    let modifiedBlogPost = { blogPostReadFromDb with Content = "My updated content" }
-
-    // This method is needed as we are "updating" the database with what is technically a new object
-    // We specify the key, allowing us to accommodate composite keys 
-    updateEntity ctx (fun b -> b.Id :> obj) modifiedBlogPost |> ignore
-
-    saveChanges ctx |> ignore
-
-    let updatedBlogFromDb =
-        match tryFindEntity<Blog> ctx originalBlogPost.Id with
-        | Some b -> b
-        | None -> failwithf "Could not find entity of type %A with identifier %A" typeof<Blog> originalBlogPost.Id
-
-    updatedBlogFromDb.Content = "My updated content" // This will be true
-
-

An advantage of the generalised updateEntity function is that it allows us to use partial application to easily create methods for specific entities. For example:

- - - -
1: 
-2: 
-3: 
-4: 
-5: 
-6: 
-7: 
-8: 
-9: 
-
let ctx = new MyContext()
-
-// Partially applied function, all that it needs now is the Blog entity
-let updateBlog = updateEntity ctx (fun (b:Blog) -> b.Id :> obj)
-
-let myBlog = ctx.Blogs |> Seq.head
-
-// No need to specify context or key, that's already been done
-updateBlog { myBlog with Content = "Updated content" }
-
-

We also have methods and functions for DbSet/IQueryable to replace usage of FirstOrDefault and FirstOrDefaultAsync:

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-15: 
-16: 
-17: 
-18: 
-19: 
-20: 
-21: 
-22: 
-23: 
-24: 
-25: 
-26: 
-27: 
-28: 
-29: 
-30: 
-31: 
-32: 
-33: 
-34: 
-
let queryingContext (ctx:MyContext) =
-    let allPosts = toListAsync ctx.Blogs |> Async.RunSynchronously
-
-    let firstBlog = 
-        match tryFirst ctx.Blogs with
-        | Some b -> b
-        | None -> failwithf "no blogs"
-
-    let filteredBlog = 
-        let maybeBlog = tryFilterFirst <@ fun x -> x.Title = "some title" @> ctx.Blogs
-        match maybeBlog with
-        | Some b -> b
-        | None -> failwithf "no blogs founded with the title"
-
-    let firstBlogLinq = 
-        match ctx.Blogs.TryFirst() with
-        | Some b -> b
-        | None -> failwithf "no blogs"
-
-    let filteredBlogLinq = 
-        match ctx.Blogs.TryFirst(fun x -> x.Title = "some title") with
-        | Some b -> b
-        | None -> failwithf "no blogs founded with the title"
-
-    let advancedQuery =
-        query {
-            for b in ctx.Blogs do
-            where (b.Title = "My title" && b.Content = "Some content")
-            select b.Id
-        }
-        |> tryFirstAsync
-        |> Async.RunSynchronously
-
-    ()
-
-

Async methods

-

All methods in EntityFrameworkCore.FSharp.DbContextHelpers also have Async variants with support for async { ... } expressions

-
Multiple items
type CLIMutableAttribute =
  inherit Attribute
  new : unit -> CLIMutableAttribute

--------------------
new : unit -> CLIMutableAttribute
-
type Blog =
  { Id: Guid
    Title: string
    Content: string }
-
Multiple items
type KeyAttribute =
  inherit Attribute
  new : unit -> KeyAttribute

--------------------
KeyAttribute() : KeyAttribute
-
Blog.Id: Guid
-
Multiple items
type Guid =
  struct
    new : b:byte[] -> Guid + 5 overloads
    member CompareTo : value:obj -> int + 1 overload
    member Equals : o:obj -> bool + 1 overload
    member GetHashCode : unit -> int
    member ToByteArray : unit -> byte[]
    member ToString : unit -> string + 2 overloads
    member TryFormat : destination:Span<char> * charsWritten:int * ?format:ReadOnlySpan<char> -> bool
    member TryWriteBytes : destination:Span<byte> -> bool
    static val Empty : Guid
    static member NewGuid : unit -> Guid
    ...
  end

--------------------
Guid ()
Guid(b: byte []) : Guid
Guid(b: ReadOnlySpan<byte>) : Guid
Guid(g: string) : Guid
Guid(a: int, b: int16, c: int16, d: byte []) : Guid
Guid(a: uint32, b: uint16, c: uint16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
Guid(a: int, b: int16, c: int16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
-
Blog.Title: string
-
Multiple items
val string : value:'T -> string

--------------------
type string = String
-
Blog.Content: string
-
Multiple items
type MyContext =
  inherit DbContext
  new : unit -> MyContext
  val mutable private _blogs: DbSet<Blog>
  member Blogs : DbSet<Blog>
  member Blogs : DbSet<Blog> with set

--------------------
new : unit -> MyContext
-
Multiple items
type DbContext =
  new : options:DbContextOptions -> DbContext
  member Add<'TEntity> : entity:'TEntity -> EntityEntry<'TEntity> + 1 overload
  member AddAsync<'TEntity> : entity:'TEntity * ?cancellationToken:CancellationToken -> ValueTask<EntityEntry<'TEntity>> + 1 overload
  member AddRange : [<ParamArray>] entities:obj[] -> unit + 1 overload
  member AddRangeAsync : [<ParamArray>] entities:obj[] -> Task + 1 overload
  member Attach<'TEntity> : entity:'TEntity -> EntityEntry<'TEntity> + 1 overload
  member AttachRange : [<ParamArray>] entities:obj[] -> unit + 1 overload
  member ChangeTracker : ChangeTracker
  member ContextId : DbContextId
  member Database : DatabaseFacade
  ...

--------------------
DbContext() : DbContext
DbContext(options: DbContextOptions) : DbContext
-
Multiple items
type DefaultValueAttribute =
  inherit Attribute
  new : unit -> DefaultValueAttribute
  new : check:bool -> DefaultValueAttribute
  member Check : bool

--------------------
new : unit -> DefaultValueAttribute
new : check:bool -> DefaultValueAttribute
-
MyContext._blogs: DbSet<Blog>
-
type DbSet<'TEntity (requires reference type)> =
  member Add : entity:'TEntity -> EntityEntry<'TEntity>
  member AddAsync : entity:'TEntity * ?cancellationToken:CancellationToken -> ValueTask<EntityEntry<'TEntity>>
  member AddRange : [<ParamArray>] entities:'TEntity[] -> unit + 1 overload
  member AddRangeAsync : [<ParamArray>] entities:'TEntity[] -> Task + 1 overload
  member AsAsyncEnumerable : unit -> IAsyncEnumerable<'TEntity>
  member AsQueryable : unit -> IQueryable<'TEntity>
  member Attach : entity:'TEntity -> EntityEntry<'TEntity>
  member AttachRange : [<ParamArray>] entities:'TEntity[] -> unit + 1 overload
  member EntityType : IEntityType
  member Equals : obj:obj -> bool
  ...
-
val this : MyContext
-
val set : elements:seq<'T> -> Set<'T> (requires comparison)
-
val v : DbSet<Blog>
-
val interactWithContext : ctx:MyContext -> bool
-
val ctx : MyContext
-
val originalBlogPost : Blog
-
Guid.NewGuid() : Guid
-
val addEntity : ctx:DbContext -> entity:'a -> unit (requires reference type)
-
val ignore : value:'T -> unit
-
val saveChanges : ctx:DbContext -> unit
-
val blogPostReadFromDb : Blog
-
val tryFindEntity : ctx:DbContext -> key:obj -> 'a option (requires reference type)
-
union case Option.Some: Value: 'T -> Option<'T>
-
val b : Blog
-
union case Option.None: Option<'T>
-
val failwithf : format:Printf.StringFormat<'T,'Result> -> 'T
-
val typeof<'T> : Type
-
val modifiedBlogPost : Blog
-
val updateEntity : ctx:DbContext -> key:('a -> 'b) -> entity:'a -> 'a (requires reference type)
-
type obj = Object
-
val updatedBlogFromDb : Blog
-
val updateBlog : (Blog -> Blog)
-
val myBlog : Blog
-
property MyContext.Blogs: DbSet<Blog> with get, set
-
module Seq

from Microsoft.FSharp.Collections
-
val head : source:seq<'T> -> 'T
-
val queryingContext : ctx:MyContext -> unit
-
val allPosts : Blog list
-
val toListAsync : dbset:#Linq.IQueryable<'b> -> Async<'b list>
-
Multiple items
type Async =
  static member AsBeginEnd : computation:('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit)
  static member AwaitEvent : event:IEvent<'Del,'T> * ?cancelAction:(unit -> unit) -> Async<'T> (requires delegate and 'Del :> Delegate)
  static member AwaitIAsyncResult : iar:IAsyncResult * ?millisecondsTimeout:int -> Async<bool>
  static member AwaitTask : task:Task -> Async<unit>
  static member AwaitTask : task:Task<'T> -> Async<'T>
  static member AwaitWaitHandle : waitHandle:WaitHandle * ?millisecondsTimeout:int -> Async<bool>
  static member CancelDefaultToken : unit -> unit
  static member Catch : computation:Async<'T> -> Async<Choice<'T,exn>>
  static member Choice : computations:seq<Async<'T option>> -> Async<'T option>
  static member FromBeginEnd : beginAction:(AsyncCallback * obj -> IAsyncResult) * endAction:(IAsyncResult -> 'T) * ?cancelAction:(unit -> unit) -> Async<'T>
  ...

--------------------
type Async<'T> =
-
static member Async.RunSynchronously : computation:Async<'T> * ?timeout:int * ?cancellationToken:Threading.CancellationToken -> 'T
-
val firstBlog : Blog
-
val tryFirst : dbset:#Linq.IQueryable<'b> -> 'b option
-
val filteredBlog : Blog
-
val maybeBlog : Blog option
-
val tryFilterFirst : predicate:Quotations.Expr<('a -> bool)> -> dbSet:#Linq.IQueryable<'a> -> 'a option
-
val x : Blog
-
val firstBlogLinq : Blog
-
member Linq.IQueryable.TryFirst : unit -> 'T option
member Linq.IQueryable.TryFirst : expr:Linq.Expressions.Expression<Func<'T,bool>> -> 'T option
-
val filteredBlogLinq : Blog
-
val advancedQuery : Guid option
-
val query : Linq.QueryBuilder
-
custom operation: where (bool)

Calls Linq.QueryBuilder.Where
-
custom operation: select ('Result)

Calls Linq.QueryBuilder.Select
-
val tryFirstAsync : dbset:#Linq.IQueryable<'b> -> Async<'b option>
-
\ No newline at end of file diff --git a/docs/How_Tos/Using_Single_Case_unions.html b/docs/How_Tos/Using_Single_Case_unions.html deleted file mode 100644 index e6ce614..0000000 --- a/docs/How_Tos/Using_Single_Case_unions.html +++ /dev/null @@ -1,176 +0,0 @@ - -EFCore.FSharp docs / Using_Single_Case_unions.html-EFCore.FSharp

Single case union types (aka Simple types)

-

It's common to use single case discriminated unions to meaningfully represent data values. -But EF does not know anything about this kind of type. Luckily this repository has some ways to help you to deal with they.

-

Configuring

-

We have two approaches to deal with single case union types which are a converter or an extension that searches for all Single Case Unions in your entities.

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-11: 
-12: 
-13: 
-14: 
-15: 
-16: 
-17: 
-18: 
-19: 
-20: 
-21: 
-22: 
-23: 
-24: 
-25: 
-26: 
-27: 
-28: 
-29: 
-30: 
-31: 
-32: 
-33: 
-34: 
-35: 
-36: 
-37: 
-
open EntityFrameworkCore.FSharp.Extensions
-
-type PositiveInteger = PositiveInteger of int
-
-[<CLIMutable>]
-type Blog = {
-    [<Key>]
-    Id : Guid
-    Title : string
-    Votes: PositiveInteger
-}
-
-type MyContext () =
-    inherit DbContext()
-
-    [<DefaultValue>]
-    val mutable private _blogs : DbSet<Blog>
-    member this.Blogs with get() = this._blogs and set v = this._blogs <- v
-
-    override _.OnModelCreating builder =
-       
-        // setting manually each property
-        builder.Entity<Blog>()
-            .Property(fun x -> x.Votes)
-            .HasConversion(SingleCaseUnionConverter<int, PositiveInteger>())
-        |> ignore
-        
-        // OR
-        
-        // enables single clase unions for all entities
-        builder.RegisterSingleUnionCases() 
-
-    override _.OnConfiguring(options: DbContextOptionsBuilder) : unit =
-           options
-             .UseSqlite( "Data Source=dbName.db")
-             .UseFSharpTypes() // enable queries for F# types
-           |> ignore
-
-

Querying

-

You can query for equality without any problem

- - - -
 1: 
- 2: 
- 3: 
- 4: 
- 5: 
- 6: 
- 7: 
- 8: 
- 9: 
-10: 
-
let blog =
-   query {
-       for blog in ctx.Blogs do
-       where (blog.Votes = PositiveInteger 10)
-       select blog
-       headOrDefault
-   }
-   
- // or  
-let blog' = ctx.Blogs.Where(fun b -> b.Votes = PositiveInteger 10).FirstOrDefault()
-
-

For querying with other types of operation you will need to unwrap the value inside the query

- - - -
1: 
-2: 
-3: 
-4: 
-5: 
-6: 
-7: 
-8: 
-
let blogQuery =
-   query {
-       for blog in ctx.Blogs do
-       let (PositiveInteger votes) = blog.Votes
-       where (votes > 0)
-       select blog
-       headOrDefault
-   }
-
-

Private Constructor

-

This extension doesn't support private union case constructors.

-
namespace EntityFrameworkCore
-
namespace EntityFrameworkCore.FSharp
-
module Extensions

from EntityFrameworkCore.FSharp
-
Multiple items
union case PositiveInteger.PositiveInteger: int -> PositiveInteger

--------------------
type PositiveInteger = | PositiveInteger of int
-
Multiple items
val int : value:'T -> int (requires member op_Explicit)

--------------------
type int = int32

--------------------
type int<'Measure> = int
-
Multiple items
type CLIMutableAttribute =
  inherit Attribute
  new : unit -> CLIMutableAttribute

--------------------
new : unit -> CLIMutableAttribute
-
type Blog =
  { Id: Guid
    Title: string
    Votes: PositiveInteger }
-
Multiple items
type KeyAttribute =
  inherit Attribute
  new : unit -> KeyAttribute

--------------------
KeyAttribute() : KeyAttribute
-
Blog.Id: Guid
-
Multiple items
type Guid =
  struct
    new : b:byte[] -> Guid + 5 overloads
    member CompareTo : value:obj -> int + 1 overload
    member Equals : o:obj -> bool + 1 overload
    member GetHashCode : unit -> int
    member ToByteArray : unit -> byte[]
    member ToString : unit -> string + 2 overloads
    member TryFormat : destination:Span<char> * charsWritten:int * ?format:ReadOnlySpan<char> -> bool
    member TryWriteBytes : destination:Span<byte> -> bool
    static val Empty : Guid
    static member NewGuid : unit -> Guid
    ...
  end

--------------------
Guid ()
Guid(b: byte []) : Guid
Guid(b: ReadOnlySpan<byte>) : Guid
Guid(g: string) : Guid
Guid(a: int, b: int16, c: int16, d: byte []) : Guid
Guid(a: uint32, b: uint16, c: uint16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
Guid(a: int, b: int16, c: int16, d: byte, e: byte, f: byte, g: byte, h: byte, i: byte, j: byte, k: byte) : Guid
-
Blog.Title: string
-
Multiple items
val string : value:'T -> string

--------------------
type string = String
-
Blog.Votes: PositiveInteger
-
Multiple items
type MyContext =
  inherit DbContext
  new : unit -> MyContext
  val mutable private _blogs: DbSet<Blog>
  override OnConfiguring : options:DbContextOptionsBuilder -> unit
  override OnModelCreating : builder:ModelBuilder -> unit
  member Blogs : DbSet<Blog>
  member Blogs : DbSet<Blog> with set

--------------------
new : unit -> MyContext
-
Multiple items
type DbContext =
  new : options:DbContextOptions -> DbContext
  member Add<'TEntity> : entity:'TEntity -> EntityEntry<'TEntity> + 1 overload
  member AddAsync<'TEntity> : entity:'TEntity * ?cancellationToken:CancellationToken -> ValueTask<EntityEntry<'TEntity>> + 1 overload
  member AddRange : [<ParamArray>] entities:obj[] -> unit + 1 overload
  member AddRangeAsync : [<ParamArray>] entities:obj[] -> Task + 1 overload
  member Attach<'TEntity> : entity:'TEntity -> EntityEntry<'TEntity> + 1 overload
  member AttachRange : [<ParamArray>] entities:obj[] -> unit + 1 overload
  member ChangeTracker : ChangeTracker
  member ContextId : DbContextId
  member Database : DatabaseFacade
  ...

--------------------
DbContext() : DbContext
DbContext(options: DbContextOptions) : DbContext
-
Multiple items
type DefaultValueAttribute =
  inherit Attribute
  new : unit -> DefaultValueAttribute
  new : check:bool -> DefaultValueAttribute
  member Check : bool

--------------------
new : unit -> DefaultValueAttribute
new : check:bool -> DefaultValueAttribute
-
MyContext._blogs: DbSet<Blog>
-
type DbSet<'TEntity (requires reference type)> =
  member Add : entity:'TEntity -> EntityEntry<'TEntity>
  member AddAsync : entity:'TEntity * ?cancellationToken:CancellationToken -> ValueTask<EntityEntry<'TEntity>>
  member AddRange : [<ParamArray>] entities:'TEntity[] -> unit + 1 overload
  member AddRangeAsync : [<ParamArray>] entities:'TEntity[] -> Task + 1 overload
  member AsAsyncEnumerable : unit -> IAsyncEnumerable<'TEntity>
  member AsQueryable : unit -> IQueryable<'TEntity>
  member Attach : entity:'TEntity -> EntityEntry<'TEntity>
  member AttachRange : [<ParamArray>] entities:'TEntity[] -> unit + 1 overload
  member EntityType : IEntityType
  member Equals : obj:obj -> bool
  ...
-
val this : MyContext
-
val set : elements:seq<'T> -> Set<'T> (requires comparison)
-
val v : DbSet<Blog>
-
val builder : ModelBuilder
-
ModelBuilder.Entity<'TEntity (requires reference type)>() : Metadata.Builders.EntityTypeBuilder<'TEntity>
ModelBuilder.Entity<'TEntity (requires reference type)>(buildAction: Action<Metadata.Builders.EntityTypeBuilder<'TEntity>>) : ModelBuilder
ModelBuilder.Entity(name: string) : Metadata.Builders.EntityTypeBuilder
ModelBuilder.Entity(type: Type) : Metadata.Builders.EntityTypeBuilder
ModelBuilder.Entity(name: string, buildAction: Action<Metadata.Builders.EntityTypeBuilder>) : ModelBuilder
ModelBuilder.Entity(type: Type, buildAction: Action<Metadata.Builders.EntityTypeBuilder>) : ModelBuilder
-
val x : Blog
-
Multiple items
type SingleCaseUnionConverter<'T,'U> =
  inherit ValueConverter<'U,'T>
  new : unit -> SingleCaseUnionConverter<'T,'U>

--------------------
new : unit -> SingleCaseUnionConverter<'T,'U>
-
val ignore : value:'T -> unit
-
member ModelBuilder.RegisterSingleUnionCases : unit -> unit
-
val options : DbContextOptionsBuilder
-
Multiple items
type DbContextOptionsBuilder =
  new : unit -> DbContextOptionsBuilder + 1 overload
  member AddInterceptors : interceptors:IEnumerable<IInterceptor> -> DbContextOptionsBuilder + 1 overload
  member ConfigureLoggingCacheTime : timeSpan:TimeSpan -> DbContextOptionsBuilder
  member ConfigureWarnings : warningsConfigurationBuilderAction:Action<WarningsConfigurationBuilder> -> DbContextOptionsBuilder
  member EnableDetailedErrors : ?detailedErrorsEnabled:bool -> DbContextOptionsBuilder
  member EnableSensitiveDataLogging : ?sensitiveDataLoggingEnabled:bool -> DbContextOptionsBuilder
  member EnableServiceProviderCaching : ?cacheServiceProvider:bool -> DbContextOptionsBuilder
  member EnableThreadSafetyChecks : ?enableChecks:bool -> DbContextOptionsBuilder
  member Equals : obj:obj -> bool
  member GetHashCode : unit -> int
  ...

--------------------
type DbContextOptionsBuilder<'TContext (requires 'TContext :> DbContext)> =
  inherit DbContextOptionsBuilder
  new : unit -> DbContextOptionsBuilder<'TContext> + 1 overload
  member AddInterceptors : interceptors:IEnumerable<IInterceptor> -> DbContextOptionsBuilder<'TContext> + 1 overload
  member ConfigureLoggingCacheTime : timeSpan:TimeSpan -> DbContextOptionsBuilder<'TContext>
  member ConfigureWarnings : warningsConfigurationBuilderAction:Action<WarningsConfigurationBuilder> -> DbContextOptionsBuilder<'TContext>
  member EnableDetailedErrors : ?detailedErrorsEnabled:bool -> DbContextOptionsBuilder<'TContext>
  member EnableSensitiveDataLogging : ?sensitiveDataLoggingEnabled:bool -> DbContextOptionsBuilder<'TContext>
  member EnableServiceProviderCaching : ?cacheServiceProvider:bool -> DbContextOptionsBuilder<'TContext>
  member EnableThreadSafetyChecks : ?checksEnabled:bool -> DbContextOptionsBuilder<'TContext>
  member LogTo : filter:Func<EventId, LogLevel, bool> * logger:Action<EventData> -> DbContextOptionsBuilder<'TContext> + 4 overloads
  member Options : DbContextOptions<'TContext>
  ...

--------------------
DbContextOptionsBuilder() : DbContextOptionsBuilder
DbContextOptionsBuilder(options: DbContextOptions) : DbContextOptionsBuilder

--------------------
DbContextOptionsBuilder() : DbContextOptionsBuilder<'TContext>
DbContextOptionsBuilder(options: DbContextOptions<'TContext>) : DbContextOptionsBuilder<'TContext>
-
type unit = Unit
-
val blog : Blog
-
val query : Linq.QueryBuilder
-
val ctx : MyContext
-
property MyContext.Blogs: DbSet<Blog> with get, set
-
custom operation: where (bool)

Calls Linq.QueryBuilder.Where
-
custom operation: select ('Result)

Calls Linq.QueryBuilder.Select
-
custom operation: headOrDefault

Calls Linq.QueryBuilder.HeadOrDefault
-
val blog' : Blog
-
(extension) Collections.Generic.IEnumerable.Where<'TSource>(predicate: Func<'TSource,bool>) : Collections.Generic.IEnumerable<'TSource>
(extension) Collections.Generic.IEnumerable.Where<'TSource>(predicate: Func<'TSource,int,bool>) : Collections.Generic.IEnumerable<'TSource>
(extension) IQueryable.Where<'TSource>(predicate: Expressions.Expression<Func<'TSource,bool>>) : IQueryable<'TSource>
(extension) IQueryable.Where<'TSource>(predicate: Expressions.Expression<Func<'TSource,int,bool>>) : IQueryable<'TSource>
-
val b : Blog
-
val blogQuery : Blog
-
val votes : int
-
\ No newline at end of file diff --git a/docs/Tutorials/Getting_Started.html b/docs/Tutorials/Getting_Started.html deleted file mode 100644 index bdba309..0000000 --- a/docs/Tutorials/Getting_Started.html +++ /dev/null @@ -1,27 +0,0 @@ - -EFCore.FSharp docs / Getting_Started.html-EFCore.FSharp

Getting Started

-

Prerequisites

-

This guide assumes:

-
    -
  • You have the .NET 5.0 SDK installed
  • -
  • You have created a project and added the dotnet-ef tool
  • -
-

Installing the package

-

paket

- -
1: 
-
paket install EntityFrameworkCore.FSharp
-
-

dotnet CLI

- -
1: 
-
dotnet add package EntityFrameworkCore.FSharp
-
-

That's it

-

Yes, really. Standard EF Core commands such as dotnet ef migrations add and dotnet ef dbcontext scaffold will now work as usual but the generated code will be in F#

-

Advanced Options - Configure Design Time Services

-

The necessary design time services are automatically registered by EntityFrameworkCore.FSharp. Unless you have a specific need to do so, you should not need to register your own implementation of IDesignTimeServices just to add F# support.

-

An example of where you would need to, would be if you were scaffolding a new context from an existing database.

-

By default, scaffolded objects will be created as Record types objects where nullable columns of type 'a are represented as types of 'a option.

-

If you want to change the deault behaviour to generate nullable columns as properties of type Nullable<'a> or to crete your entities as a C#-type class object, check out Scaffolding Types

-
\ No newline at end of file diff --git a/docs/content/cleanups.js b/docs/content/cleanups.js deleted file mode 100644 index 79871b2..0000000 --- a/docs/content/cleanups.js +++ /dev/null @@ -1,5 +0,0 @@ -$(function() { - // Makes code snippets responsive - $("table").addClass("table-responsive"); -}) - diff --git a/docs/content/hotload.js b/docs/content/hotload.js deleted file mode 100644 index c146f7f..0000000 --- a/docs/content/hotload.js +++ /dev/null @@ -1,4 +0,0 @@ -var refreshSocket = new WebSocket('ws://' + window.location.host) - .onmessage = () => { - location.reload(); - } diff --git a/docs/content/style.css b/docs/content/style.css deleted file mode 100644 index e9268e9..0000000 --- a/docs/content/style.css +++ /dev/null @@ -1,334 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Droid+Sans|Droid+Sans+Mono|Open+Sans:400,600,700); - -/*-------------------------------------------------------------------------- - Formatting for F# code snippets -/*--------------------------------------------------------------------------*/ - -/* strings --- and styles for other string related formats */ -span.s { color:#E0E268; } -/* printf formatters */ -span.pf { color:#E0C57F; } -/* escaped chars */ -span.e { color:#EA8675; } - -/* identifiers --- and styles for more specific identifier types */ -span.i { color:#d1d1d1; } -/* type or module */ -span.t { color:#43AEC6; } -/* function */ -span.f { color:#e1e1e1; } -/* DU case or active pattern */ -span.p { color:#4ec9b0; } - -/* keywords */ -span.k { color:#FAB11D; } -/* comment */ -span.c { color:#808080; } -/* operators */ -span.o { color:#af75c1; } -/* numbers */ -span.n { color:#96C71D; } -/* line number */ -span.l { color:#80b0b0; } -/* mutable var or ref cell */ -span.v { color:#d1d1d1; font-weight: bold; } -/* inactive code */ -span.inactive { color:#808080; } -/* preprocessor */ -span.prep { color:#af75c1; } -/* fsi output */ -span.fsi { color:#808080; } - -/* omitted */ -span.omitted { - background:#3c4e52; - border-radius:5px; - color:#808080; - padding:0px 0px 1px 0px; -} -/* tool tip */ -div.tip { - background:#475b5f; - border-radius:4px; - font:11pt 'Droid Sans', arial, sans-serif; - padding:6px 8px 6px 8px; - display:none; - color:#d1d1d1; - pointer-events:none; -} -table.pre pre { - padding:0px; - margin:0px; - border:none; -} -table.pre, pre.fssnip, pre { - line-height:13pt; - /*border:1px solid #d8d8d8;*/ - border:1px solid #000; - /* border: none; */ - border-collapse:separate; - white-space:pre-wrap; - font: 9pt 'Droid Sans Mono',consolas,monospace; - width:90%; - margin:10px 20px 20px 20px; - background-color:#212d30; - padding:10px; - /*border-radius:5px;*/ - color:#d1d1d1; - max-width: none; -} -pre.fssnip code { - font: 9pt 'Droid Sans Mono',consolas,monospace; -} -table.pre pre { - padding:0px; - margin:0px; - border-radius:0px; - width: 100%; -} -table.pre td { - padding:0px; - white-space:normal; - margin:0px; -} -table.pre td.lines { - width:30px; -} - -.table thead td.fit, -.table th.fit { - white-space: nowrap; - width: 1%; -} -/*-------------------------------------------------------------------------- - Formatting for page & standard document content -/*--------------------------------------------------------------------------*/ - -body { - font-family: 'Open Sans', serif; - background-color: #BADA55; -} - -pre { - word-wrap: inherit; -} - -/* Format the heading - nicer spacing etc. */ -.masthead { - overflow: hidden; -} -.masthead .muted a { - text-decoration:none; - color:#999999; -} -.masthead ul, .masthead li { - margin-bottom:0px; -} -.masthead .nav li { - margin-top: 15px; - font-size:110%; -} -.masthead h3 { - margin-bottom:5px; - font-size:170%; -} -hr { - margin:0px 0px 20px 0px; -} - -/* Make table headings and td.title bold */ -td.title, thead { - font-weight:bold; -} - -/* Format the right-side menu */ -#menu { - margin-top:50px; - font-size:11pt; - padding-left:20px; -} - -#menu .nav-header { - font-size:12pt; - color:#606060; - margin-top:20px; -} - -#menu li { - line-height:25px; -} - -.wrapper { - margin-top: -56px; - padding-top: 56px; -} - -/* Change font sizes for headings etc. */ -#main h1 { font-size: 26pt; margin:10px 0px 15px 0px; font-weight:400; } -#main h2 { font-size: 20pt; margin:20px 0px 0px 0px; font-weight:400; } -#main h3 { font-size: 14pt; margin:15px 0px 0px 0px; font-weight:600; } -#main p { font-size: 11pt; margin:5px 0px 15px 0px; } -#main ul { font-size: 11pt; margin-top:10px; } -#main li { font-size: 11pt; margin: 5px 0px 5px 0px; } -#main strong { font-weight:700; } - -/*-------------------------------------------------------------------------- - Formatting for API reference -/*--------------------------------------------------------------------------*/ - -.type-list .type-name, .module-list .module-name { - width:25%; - font-weight:bold; -} -.member-list .member-name { - width:35%; -} -#main .xmldoc h2 { - font-size:14pt; - margin:10px 0px 0px 0px; -} -#main .xmldoc h3 { - font-size:12pt; - margin:10px 0px 0px 0px; -} -.github-link { - float:right; - text-decoration:none; -} -.github-link img { - border-style:none; - margin-left:10px; -} -.github-link .hover { display:none; } -.github-link:hover .hover { display:block; } -.github-link .normal { display: block; } -.github-link:hover .normal { display: none; } - -/*-------------------------------------------------------------------------- - Links -/*--------------------------------------------------------------------------*/ - -.bootstrap h1 a, .bootstrap h1 a:hover, .bootstrap h1 a:focus, -.bootstrap h2 a, .bootstrap h2 a:hover, .bootstrap h2 a:focus, -.bootstrap h3 a, .bootstrap h3 a:hover, .bootstrap h3 a:focus, -.bootstrap h4 a, .bootstrap h4 a:hover, .bootstrap h4 a:focus, -.bootstrap h5 a, .bootstrap h5 a:hover, .bootstrap h5 a:focus, -.bootstrap h6 a, .bootstrap h6 a:hover, .bootstrap h6 a:focus { color : inherit; text-decoration : inherit; outline:none } - -/*-------------------------------------------------------------------------- - Additional formatting for the homepage -/*--------------------------------------------------------------------------*/ - -#nuget { - margin-top:20px; - font-size: 11pt; - padding:20px; -} - -#nuget pre { - font-size:11pt; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; - background: #404040; - border-style:none; - color: #e0e0e0; - margin-top:15px; -} - -.date { - font-style: italic; - margin-bottom: 15px; -} - -h1.header { - color: green; -} - -h1.header:hover { - color: green; -} - -h1.header:visited { - color: green; -} - -.categories, .category, .recent-posts { - font-family: 'Droid Sans', arial, sans-serif; -} - -.categories ul, -.recent-posts ul { - margin-left: 0; -} -.categories li, -.category li, -.recent-posts li -{ - list-style-type: none; - white-space: nowrap; -} - -.links { - text-align: center; - margin-bottom: 8px; -} - -.copyright { - text-align: center; - color: lightslategray; - margin-bottom: 25px; -} - -.social { - margin-bottom: 30px; -} - -/* Fixes page anchors with bootstrap navbar */ -:target::before { - display: block; - height: 59px; - margin-top: -59px; - content: ""; -} - -/* Hides first br from FSharp.Literate xml-doc rendering */ -.comment-block > br:first-child, -.xmldoc > br:first-child { - display: none; -} - -.main h1 { - padding: .5em 0em -} - -.main h2 { - padding: .5em 0em -} - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu>a:after { - content: "\f0da"; - padding-left: 5px; - vertical-align: middle; - border: none; - font-weight: 900; - font-family: 'Font Awesome 5 Free'; -} - -.dropdown-submenu>.dropdown-menu { - top: 0; - left: 100%; - margin-top: 0px; - margin-left: 0px; -} - -.fsharp-footer-logo { - width: 20px; - margin-top: -2px; - -webkit-filter: grayscale(100%) brightness(0) invert(1); /* Safari 6.0 - 9.0 */ - filter: grayscale(100%) brightness(0) invert(1); -} diff --git a/docs/content/submenu.js b/docs/content/submenu.js deleted file mode 100644 index 9874084..0000000 --- a/docs/content/submenu.js +++ /dev/null @@ -1,21 +0,0 @@ -$(function() { - // ------------------------------------------------------- // - // Multi Level dropdowns - // ------------------------------------------------------ // - $("ul.dropdown-menu [data-toggle='dropdown']").on("click", function(event) { - event.preventDefault(); - event.stopPropagation(); - - $(this).siblings().toggleClass("show"); - - - if (!$(this).next().hasClass('show')) { - $(this).parents('.dropdown-menu').first().find('.show').removeClass("show"); - } - $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function(e) { - $('.dropdown-submenu .show').removeClass("show"); - }); - - }); - }); - \ No newline at end of file diff --git a/docs/content/themes.js b/docs/content/themes.js deleted file mode 100644 index 7bb300d..0000000 --- a/docs/content/themes.js +++ /dev/null @@ -1,82 +0,0 @@ - -var themes = { - "light" : { - "button-text" : "Swap to Dark", - "button-classes" : "btn btn-dark border-light", - "next-theme" : "dark", - "body-class" : "bootstrap" - }, - "dark" : { - "button-text" : "Swap to Light", - "button-classes" : "btn btn-light", - "next-theme" : "light", - "body-class" : "bootstrap-dark" - } -}; - -var themeStorageKey = 'theme'; - -function swapThemeInDom(theme) { - var newTheme = themes[theme]; - var bootstrapCSS = document.getElementsByTagName('body')[0]; - bootstrapCSS.setAttribute('class', newTheme['body-class']) -} - -function persistNewTheme(theme) { - window.localStorage.setItem(themeStorageKey, theme); -} - -function setToggleButton(theme) { - var newTheme = themes[theme]; - var themeToggleButton = document.getElementById('theme-toggle'); - themeToggleButton.textContent = newTheme['button-text']; - themeToggleButton.className = newTheme['button-classes']; - themeToggleButton.onclick = function() { - setTheme(newTheme['next-theme']); - } -} - -function setTheme(theme) { - try { - swapThemeInDom(theme); - } - catch(e){ - } - try { - persistNewTheme(theme); - } - catch(e) { - } - try { - setToggleButton(theme); - } - catch (e) { - } -} - -function getThemeFromStorage() { - return window.localStorage.getItem(themeStorageKey); -} - -function getThemeFromScheme() { - try { - if (window.matchMedia("(prefers-color-scheme: dark)").matches){ - return 'dark'; - } - else { - return 'light'; - } - } - catch(e) { - return null; - } -} - -function loadTheme() { - var theme = getThemeFromStorage() || getThemeFromScheme() || 'light'; - setTheme(theme); -} - -document.addEventListener('readystatechange', (event) => { - loadTheme() -}); diff --git a/docs/content/tips.js b/docs/content/tips.js deleted file mode 100644 index e7ee730..0000000 --- a/docs/content/tips.js +++ /dev/null @@ -1,46 +0,0 @@ -var currentTip = null; -var currentTipElement = null; - -function hideTip(evt, name, unique) { - var el = document.getElementById(name); - el.style.display = "none"; - currentTip = null; -} - -function findPos(obj) { - // no idea why, but it behaves differently in webbrowser component - if (window.location.search == "?inapp") - return [obj.offsetLeft + 10, obj.offsetTop + 30]; - - var curleft = 0; - var curtop = obj.offsetHeight; - while (obj) { - curleft += obj.offsetLeft; - curtop += obj.offsetTop; - obj = obj.offsetParent; - }; - return [curleft, curtop]; -} - -function hideUsingEsc(e) { - if (!e) { e = event; } - hideTip(e, currentTipElement, currentTip); -} - -function showTip(evt, name, unique, owner) { - document.onkeydown = hideUsingEsc; - if (currentTip == unique) return; - currentTip = unique; - currentTipElement = name; - - var pos = findPos(owner ? owner : (evt.srcElement ? evt.srcElement : evt.target)); - var posx = pos[0]; - var posy = pos[1]; - - var el = document.getElementById(name); - var parent = (document.documentElement == null) ? document.body : document.documentElement; - el.style.position = "absolute"; - el.style.left = posx + "px"; - el.style.top = posy + "px"; - el.style.display = "block"; -} diff --git a/docs/content/toggle-bootstrap-dark.min.css b/docs/content/toggle-bootstrap-dark.min.css deleted file mode 100644 index 348ff58..0000000 --- a/docs/content/toggle-bootstrap-dark.min.css +++ /dev/null @@ -1 +0,0 @@ -html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body.bootstrap-dark{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#d3d3d3;text-align:left;background-color:#191d21}.bootstrap-dark :root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.bootstrap-dark *,.bootstrap-dark ::after,.bootstrap-dark ::before{-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-dark html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.bootstrap-dark article,.bootstrap-dark aside,.bootstrap-dark figcaption,.bootstrap-dark figure,.bootstrap-dark footer,.bootstrap-dark header,.bootstrap-dark hgroup,.bootstrap-dark main,.bootstrap-dark nav,.bootstrap-dark section{display:block}.bootstrap-dark body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#d3d3d3;text-align:left;background-color:#191d21}.bootstrap-dark [tabindex="-1"]:focus:not(:focus-visible){outline:0!important}.bootstrap-dark hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}.bootstrap-dark h1,.bootstrap-dark h2,.bootstrap-dark h3,.bootstrap-dark h4,.bootstrap-dark h5,.bootstrap-dark h6{margin-top:0;margin-bottom:.5rem}.bootstrap-dark p{margin-top:0;margin-bottom:1rem}.bootstrap-dark abbr[data-original-title],.bootstrap-dark abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}.bootstrap-dark address{margin-bottom:1rem;font-style:normal;line-height:inherit}.bootstrap-dark dl,.bootstrap-dark ol,.bootstrap-dark ul{margin-top:0;margin-bottom:1rem}.bootstrap-dark ol ol,.bootstrap-dark ol ul,.bootstrap-dark ul ol,.bootstrap-dark ul ul{margin-bottom:0}.bootstrap-dark dt{font-weight:700}.bootstrap-dark dd{margin-bottom:.5rem;margin-left:0}.bootstrap-dark blockquote{margin:0 0 1rem}.bootstrap-dark b,.bootstrap-dark strong{font-weight:bolder}.bootstrap-dark small{font-size:80%}.bootstrap-dark sub,.bootstrap-dark sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.bootstrap-dark sub{bottom:-.25em}.bootstrap-dark sup{top:-.5em}.bootstrap-dark a{color:#adadad;text-decoration:none;background-color:transparent}.bootstrap-dark a:hover{color:#878787;text-decoration:underline}.bootstrap-dark a:not([href]){color:inherit;text-decoration:none}.bootstrap-dark a:not([href]):hover{color:inherit;text-decoration:none}.bootstrap-dark code,.bootstrap-dark kbd,.bootstrap-dark pre,.bootstrap-dark samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}.bootstrap-dark pre{margin-top:0;margin-bottom:1rem;overflow:auto}.bootstrap-dark figure{margin:0 0 1rem}.bootstrap-dark img{vertical-align:middle;border-style:none}.bootstrap-dark svg{overflow:hidden;vertical-align:middle}.bootstrap-dark table{border-collapse:collapse}.bootstrap-dark caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}.bootstrap-dark th{text-align:inherit}.bootstrap-dark label{display:inline-block;margin-bottom:.5rem}.bootstrap-dark button{border-radius:0}.bootstrap-dark button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.bootstrap-dark button,.bootstrap-dark input,.bootstrap-dark optgroup,.bootstrap-dark select,.bootstrap-dark textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.bootstrap-dark button,.bootstrap-dark input{overflow:visible}.bootstrap-dark button,.bootstrap-dark select{text-transform:none}.bootstrap-dark select{word-wrap:normal}.bootstrap-dark [type=button],.bootstrap-dark [type=reset],.bootstrap-dark [type=submit],.bootstrap-dark button{-webkit-appearance:button}.bootstrap-dark [type=button]:not(:disabled),.bootstrap-dark [type=reset]:not(:disabled),.bootstrap-dark [type=submit]:not(:disabled),.bootstrap-dark button:not(:disabled){cursor:pointer}.bootstrap-dark [type=button]::-moz-focus-inner,.bootstrap-dark [type=reset]::-moz-focus-inner,.bootstrap-dark [type=submit]::-moz-focus-inner,.bootstrap-dark button::-moz-focus-inner{padding:0;border-style:none}.bootstrap-dark input[type=checkbox],.bootstrap-dark input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}.bootstrap-dark input[type=date],.bootstrap-dark input[type=datetime-local],.bootstrap-dark input[type=month],.bootstrap-dark input[type=time]{-webkit-appearance:listbox}.bootstrap-dark textarea{overflow:auto;resize:vertical}.bootstrap-dark fieldset{min-width:0;padding:0;margin:0;border:0}.bootstrap-dark legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}.bootstrap-dark progress{vertical-align:baseline}.bootstrap-dark [type=number]::-webkit-inner-spin-button,.bootstrap-dark [type=number]::-webkit-outer-spin-button{height:auto}.bootstrap-dark [type=search]{outline-offset:-2px;-webkit-appearance:none}.bootstrap-dark [type=search]::-webkit-search-decoration{-webkit-appearance:none}.bootstrap-dark ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.bootstrap-dark output{display:inline-block}.bootstrap-dark summary{display:list-item;cursor:pointer}.bootstrap-dark template{display:none}.bootstrap-dark [hidden]{display:none!important}.bootstrap-dark .h1,.bootstrap-dark .h2,.bootstrap-dark .h3,.bootstrap-dark .h4,.bootstrap-dark .h5,.bootstrap-dark .h6,.bootstrap-dark h1,.bootstrap-dark h2,.bootstrap-dark h3,.bootstrap-dark h4,.bootstrap-dark h5,.bootstrap-dark h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.bootstrap-dark .h1,.bootstrap-dark h1{font-size:2.5rem}.bootstrap-dark .h2,.bootstrap-dark h2{font-size:2rem}.bootstrap-dark .h3,.bootstrap-dark h3{font-size:1.75rem}.bootstrap-dark .h4,.bootstrap-dark h4{font-size:1.5rem}.bootstrap-dark .h5,.bootstrap-dark h5{font-size:1.25rem}.bootstrap-dark .h6,.bootstrap-dark h6{font-size:1rem}.bootstrap-dark .lead{font-size:1.25rem;font-weight:300}.bootstrap-dark .display-1{font-size:6rem;font-weight:300;line-height:1.2}.bootstrap-dark .display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.bootstrap-dark .display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.bootstrap-dark .display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.bootstrap-dark hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.bootstrap-dark .small,.bootstrap-dark small{font-size:80%;font-weight:400}.bootstrap-dark .mark,.bootstrap-dark mark{padding:.2em;background-color:#fcf8e3}.bootstrap-dark .list-unstyled{padding-left:0;list-style:none}.bootstrap-dark .list-inline{padding-left:0;list-style:none}.bootstrap-dark .list-inline-item{display:inline-block}.bootstrap-dark .list-inline-item:not(:last-child){margin-right:.5rem}.bootstrap-dark .initialism{font-size:90%;text-transform:uppercase}.bootstrap-dark .blockquote{margin-bottom:1rem;font-size:1.25rem}.bootstrap-dark .blockquote-footer{display:block;font-size:80%;color:#6c757d}.bootstrap-dark .blockquote-footer::before{content:"\2014\00A0"}.bootstrap-dark .img-fluid{max-width:100%;height:auto}.bootstrap-dark .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.bootstrap-dark .figure{display:inline-block}.bootstrap-dark .figure-img{margin-bottom:.5rem;line-height:1}.bootstrap-dark .figure-caption{font-size:90%;color:#6c757d}.bootstrap-dark code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>.bootstrap-dark code{color:inherit}.bootstrap-dark kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}.bootstrap-dark kbd kbd{padding:0;font-size:100%;font-weight:700}.bootstrap-dark pre{display:block;font-size:87.5%;color:#212529}.bootstrap-dark pre code{font-size:inherit;color:inherit;word-break:normal}.bootstrap-dark .pre-scrollable{max-height:340px;overflow-y:scroll}.bootstrap-dark .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap-dark .container{max-width:540px}}@media (min-width:768px){.bootstrap-dark .container{max-width:720px}}@media (min-width:992px){.bootstrap-dark .container{max-width:960px}}@media (min-width:1200px){.bootstrap-dark .container{max-width:1140px}}.bootstrap-dark .container-fluid,.bootstrap-dark .container-lg,.bootstrap-dark .container-md,.bootstrap-dark .container-sm,.bootstrap-dark .container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap-dark .container,.bootstrap-dark .container-sm{max-width:540px}}@media (min-width:768px){.bootstrap-dark .container,.bootstrap-dark .container-md,.bootstrap-dark .container-sm{max-width:720px}}@media (min-width:992px){.bootstrap-dark .container,.bootstrap-dark .container-lg,.bootstrap-dark .container-md,.bootstrap-dark .container-sm{max-width:960px}}@media (min-width:1200px){.bootstrap-dark .container,.bootstrap-dark .container-lg,.bootstrap-dark .container-md,.bootstrap-dark .container-sm,.bootstrap-dark .container-xl{max-width:1140px}}.bootstrap-dark .row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.bootstrap-dark .no-gutters{margin-right:0;margin-left:0}.bootstrap-dark .no-gutters>.col,.bootstrap-dark .no-gutters>[class*=col-]{padding-right:0;padding-left:0}.bootstrap-dark .col,.bootstrap-dark .col-1,.bootstrap-dark .col-10,.bootstrap-dark .col-11,.bootstrap-dark .col-12,.bootstrap-dark .col-2,.bootstrap-dark .col-3,.bootstrap-dark .col-4,.bootstrap-dark .col-5,.bootstrap-dark .col-6,.bootstrap-dark .col-7,.bootstrap-dark .col-8,.bootstrap-dark .col-9,.bootstrap-dark .col-auto,.bootstrap-dark .col-lg,.bootstrap-dark .col-lg-1,.bootstrap-dark .col-lg-10,.bootstrap-dark .col-lg-11,.bootstrap-dark .col-lg-12,.bootstrap-dark .col-lg-2,.bootstrap-dark .col-lg-3,.bootstrap-dark .col-lg-4,.bootstrap-dark .col-lg-5,.bootstrap-dark .col-lg-6,.bootstrap-dark .col-lg-7,.bootstrap-dark .col-lg-8,.bootstrap-dark .col-lg-9,.bootstrap-dark .col-lg-auto,.bootstrap-dark .col-md,.bootstrap-dark .col-md-1,.bootstrap-dark .col-md-10,.bootstrap-dark .col-md-11,.bootstrap-dark .col-md-12,.bootstrap-dark .col-md-2,.bootstrap-dark .col-md-3,.bootstrap-dark .col-md-4,.bootstrap-dark .col-md-5,.bootstrap-dark .col-md-6,.bootstrap-dark .col-md-7,.bootstrap-dark .col-md-8,.bootstrap-dark .col-md-9,.bootstrap-dark .col-md-auto,.bootstrap-dark .col-sm,.bootstrap-dark .col-sm-1,.bootstrap-dark .col-sm-10,.bootstrap-dark .col-sm-11,.bootstrap-dark .col-sm-12,.bootstrap-dark .col-sm-2,.bootstrap-dark .col-sm-3,.bootstrap-dark .col-sm-4,.bootstrap-dark .col-sm-5,.bootstrap-dark .col-sm-6,.bootstrap-dark .col-sm-7,.bootstrap-dark .col-sm-8,.bootstrap-dark .col-sm-9,.bootstrap-dark .col-sm-auto,.bootstrap-dark .col-xl,.bootstrap-dark .col-xl-1,.bootstrap-dark .col-xl-10,.bootstrap-dark .col-xl-11,.bootstrap-dark .col-xl-12,.bootstrap-dark .col-xl-2,.bootstrap-dark .col-xl-3,.bootstrap-dark .col-xl-4,.bootstrap-dark .col-xl-5,.bootstrap-dark .col-xl-6,.bootstrap-dark .col-xl-7,.bootstrap-dark .col-xl-8,.bootstrap-dark .col-xl-9,.bootstrap-dark .col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.bootstrap-dark .col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-1{margin-left:8.33333%}.bootstrap-dark .offset-2{margin-left:16.66667%}.bootstrap-dark .offset-3{margin-left:25%}.bootstrap-dark .offset-4{margin-left:33.33333%}.bootstrap-dark .offset-5{margin-left:41.66667%}.bootstrap-dark .offset-6{margin-left:50%}.bootstrap-dark .offset-7{margin-left:58.33333%}.bootstrap-dark .offset-8{margin-left:66.66667%}.bootstrap-dark .offset-9{margin-left:75%}.bootstrap-dark .offset-10{margin-left:83.33333%}.bootstrap-dark .offset-11{margin-left:91.66667%}@media (min-width:576px){.bootstrap-dark .col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-sm-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-sm-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-sm-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-sm-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-sm-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-sm-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-sm-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-sm-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-sm-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-sm-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-sm-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-sm-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-sm-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-sm-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-sm-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-sm-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-sm-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-sm-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-sm-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-sm-0{margin-left:0}.bootstrap-dark .offset-sm-1{margin-left:8.33333%}.bootstrap-dark .offset-sm-2{margin-left:16.66667%}.bootstrap-dark .offset-sm-3{margin-left:25%}.bootstrap-dark .offset-sm-4{margin-left:33.33333%}.bootstrap-dark .offset-sm-5{margin-left:41.66667%}.bootstrap-dark .offset-sm-6{margin-left:50%}.bootstrap-dark .offset-sm-7{margin-left:58.33333%}.bootstrap-dark .offset-sm-8{margin-left:66.66667%}.bootstrap-dark .offset-sm-9{margin-left:75%}.bootstrap-dark .offset-sm-10{margin-left:83.33333%}.bootstrap-dark .offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.bootstrap-dark .col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-md-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-md-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-md-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-md-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-md-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-md-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-md-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-md-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-md-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-md-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-md-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-md-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-md-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-md-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-md-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-md-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-md-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-md-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-md-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-md-0{margin-left:0}.bootstrap-dark .offset-md-1{margin-left:8.33333%}.bootstrap-dark .offset-md-2{margin-left:16.66667%}.bootstrap-dark .offset-md-3{margin-left:25%}.bootstrap-dark .offset-md-4{margin-left:33.33333%}.bootstrap-dark .offset-md-5{margin-left:41.66667%}.bootstrap-dark .offset-md-6{margin-left:50%}.bootstrap-dark .offset-md-7{margin-left:58.33333%}.bootstrap-dark .offset-md-8{margin-left:66.66667%}.bootstrap-dark .offset-md-9{margin-left:75%}.bootstrap-dark .offset-md-10{margin-left:83.33333%}.bootstrap-dark .offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.bootstrap-dark .col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-lg-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-lg-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-lg-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-lg-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-lg-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-lg-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-lg-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-lg-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-lg-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-lg-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-lg-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-lg-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-lg-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-lg-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-lg-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-lg-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-lg-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-lg-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-lg-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-lg-0{margin-left:0}.bootstrap-dark .offset-lg-1{margin-left:8.33333%}.bootstrap-dark .offset-lg-2{margin-left:16.66667%}.bootstrap-dark .offset-lg-3{margin-left:25%}.bootstrap-dark .offset-lg-4{margin-left:33.33333%}.bootstrap-dark .offset-lg-5{margin-left:41.66667%}.bootstrap-dark .offset-lg-6{margin-left:50%}.bootstrap-dark .offset-lg-7{margin-left:58.33333%}.bootstrap-dark .offset-lg-8{margin-left:66.66667%}.bootstrap-dark .offset-lg-9{margin-left:75%}.bootstrap-dark .offset-lg-10{margin-left:83.33333%}.bootstrap-dark .offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.bootstrap-dark .col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-xl-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-xl-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-xl-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-xl-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-xl-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-xl-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-xl-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-xl-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-xl-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-xl-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-xl-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-xl-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-xl-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-xl-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-xl-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-xl-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-xl-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-xl-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-xl-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-xl-0{margin-left:0}.bootstrap-dark .offset-xl-1{margin-left:8.33333%}.bootstrap-dark .offset-xl-2{margin-left:16.66667%}.bootstrap-dark .offset-xl-3{margin-left:25%}.bootstrap-dark .offset-xl-4{margin-left:33.33333%}.bootstrap-dark .offset-xl-5{margin-left:41.66667%}.bootstrap-dark .offset-xl-6{margin-left:50%}.bootstrap-dark .offset-xl-7{margin-left:58.33333%}.bootstrap-dark .offset-xl-8{margin-left:66.66667%}.bootstrap-dark .offset-xl-9{margin-left:75%}.bootstrap-dark .offset-xl-10{margin-left:83.33333%}.bootstrap-dark .offset-xl-11{margin-left:91.66667%}}.bootstrap-dark .table{width:100%;margin-bottom:1rem;color:#d3d3d3}.bootstrap-dark .table td,.bootstrap-dark .table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.bootstrap-dark .table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.bootstrap-dark .table tbody+tbody{border-top:2px solid #dee2e6}.bootstrap-dark .table-sm td,.bootstrap-dark .table-sm th{padding:.3rem}.bootstrap-dark .table-bordered{border:1px solid #dee2e6}.bootstrap-dark .table-bordered td,.bootstrap-dark .table-bordered th{border:1px solid #dee2e6}.bootstrap-dark .table-bordered thead td,.bootstrap-dark .table-bordered thead th{border-bottom-width:2px}.bootstrap-dark .table-borderless tbody+tbody,.bootstrap-dark .table-borderless td,.bootstrap-dark .table-borderless th,.bootstrap-dark .table-borderless thead th{border:0}.bootstrap-dark .table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.bootstrap-dark .table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.bootstrap-dark .table-primary,.bootstrap-dark .table-primary>td,.bootstrap-dark .table-primary>th{background-color:#b8daff}.bootstrap-dark .table-primary tbody+tbody,.bootstrap-dark .table-primary td,.bootstrap-dark .table-primary th,.bootstrap-dark .table-primary thead th{border-color:#7abaff}.bootstrap-dark .table-hover .table-primary:hover{background-color:#9fcdff}.bootstrap-dark .table-hover .table-primary:hover>td,.bootstrap-dark .table-hover .table-primary:hover>th{background-color:#9fcdff}.bootstrap-dark .table-secondary,.bootstrap-dark .table-secondary>td,.bootstrap-dark .table-secondary>th{background-color:#d6d8db}.bootstrap-dark .table-secondary tbody+tbody,.bootstrap-dark .table-secondary td,.bootstrap-dark .table-secondary th,.bootstrap-dark .table-secondary thead th{border-color:#b3b7bb}.bootstrap-dark .table-hover .table-secondary:hover{background-color:#c8cbcf}.bootstrap-dark .table-hover .table-secondary:hover>td,.bootstrap-dark .table-hover .table-secondary:hover>th{background-color:#c8cbcf}.bootstrap-dark .table-success,.bootstrap-dark .table-success>td,.bootstrap-dark .table-success>th{background-color:#c3e6cb}.bootstrap-dark .table-success tbody+tbody,.bootstrap-dark .table-success td,.bootstrap-dark .table-success th,.bootstrap-dark .table-success thead th{border-color:#8fd19e}.bootstrap-dark .table-hover .table-success:hover{background-color:#b1dfbb}.bootstrap-dark .table-hover .table-success:hover>td,.bootstrap-dark .table-hover .table-success:hover>th{background-color:#b1dfbb}.bootstrap-dark .table-info,.bootstrap-dark .table-info>td,.bootstrap-dark .table-info>th{background-color:#bee5eb}.bootstrap-dark .table-info tbody+tbody,.bootstrap-dark .table-info td,.bootstrap-dark .table-info th,.bootstrap-dark .table-info thead th{border-color:#86cfda}.bootstrap-dark .table-hover .table-info:hover{background-color:#abdde5}.bootstrap-dark .table-hover .table-info:hover>td,.bootstrap-dark .table-hover .table-info:hover>th{background-color:#abdde5}.bootstrap-dark .table-warning,.bootstrap-dark .table-warning>td,.bootstrap-dark .table-warning>th{background-color:#ffeeba}.bootstrap-dark .table-warning tbody+tbody,.bootstrap-dark .table-warning td,.bootstrap-dark .table-warning th,.bootstrap-dark .table-warning thead th{border-color:#ffdf7e}.bootstrap-dark .table-hover .table-warning:hover{background-color:#ffe8a1}.bootstrap-dark .table-hover .table-warning:hover>td,.bootstrap-dark .table-hover .table-warning:hover>th{background-color:#ffe8a1}.bootstrap-dark .table-danger,.bootstrap-dark .table-danger>td,.bootstrap-dark .table-danger>th{background-color:#f5c6cb}.bootstrap-dark .table-danger tbody+tbody,.bootstrap-dark .table-danger td,.bootstrap-dark .table-danger th,.bootstrap-dark .table-danger thead th{border-color:#ed969e}.bootstrap-dark .table-hover .table-danger:hover{background-color:#f1b0b7}.bootstrap-dark .table-hover .table-danger:hover>td,.bootstrap-dark .table-hover .table-danger:hover>th{background-color:#f1b0b7}.bootstrap-dark .table-light,.bootstrap-dark .table-light>td,.bootstrap-dark .table-light>th{background-color:#fdfdfe}.bootstrap-dark .table-light tbody+tbody,.bootstrap-dark .table-light td,.bootstrap-dark .table-light th,.bootstrap-dark .table-light thead th{border-color:#fbfcfc}.bootstrap-dark .table-hover .table-light:hover{background-color:#ececf6}.bootstrap-dark .table-hover .table-light:hover>td,.bootstrap-dark .table-hover .table-light:hover>th{background-color:#ececf6}.bootstrap-dark .table-dark,.bootstrap-dark .table-dark>td,.bootstrap-dark .table-dark>th{background-color:#c6c8ca}.bootstrap-dark .table-dark tbody+tbody,.bootstrap-dark .table-dark td,.bootstrap-dark .table-dark th,.bootstrap-dark .table-dark thead th{border-color:#95999c}.bootstrap-dark .table-hover .table-dark:hover{background-color:#b9bbbe}.bootstrap-dark .table-hover .table-dark:hover>td,.bootstrap-dark .table-hover .table-dark:hover>th{background-color:#b9bbbe}.bootstrap-dark .table-active,.bootstrap-dark .table-active>td,.bootstrap-dark .table-active>th{background-color:rgba(0,0,0,.075)}.bootstrap-dark .table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.bootstrap-dark .table-hover .table-active:hover>td,.bootstrap-dark .table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.bootstrap-dark .table .thead-dark th{color:#dee2e6;background-color:#343a40;border-color:#454d55}.bootstrap-dark .table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.bootstrap-dark .table-dark{color:#dee2e6;background-color:#343a40}.bootstrap-dark .table-dark td,.bootstrap-dark .table-dark th,.bootstrap-dark .table-dark thead th{border-color:#454d55}.bootstrap-dark .table-dark.table-bordered{border:0}.bootstrap-dark .table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.bootstrap-dark .table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.bootstrap-dark .table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.bootstrap-dark .table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.bootstrap-dark .table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.bootstrap-dark .table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-xl>.table-bordered{border:0}}.bootstrap-dark .table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive>.table-bordered{border:0}.bootstrap-dark .table-primary,.bootstrap-dark .table-primary>td,.bootstrap-dark .table-primary>th{color:#212529}.bootstrap-dark .table-hover .table-primary:hover{color:#212529}.bootstrap-dark .table-hover .table-primary:hover>td,.bootstrap-dark .table-hover .table-primary:hover>th{color:#212529}.bootstrap-dark .table-secondary,.bootstrap-dark .table-secondary>td,.bootstrap-dark .table-secondary>th{color:#212529}.bootstrap-dark .table-hover .table-secondary:hover{color:#212529}.bootstrap-dark .table-hover .table-secondary:hover>td,.bootstrap-dark .table-hover .table-secondary:hover>th{color:#212529}.bootstrap-dark .table-success,.bootstrap-dark .table-success>td,.bootstrap-dark .table-success>th{color:#212529}.bootstrap-dark .table-hover .table-success:hover{color:#212529}.bootstrap-dark .table-hover .table-success:hover>td,.bootstrap-dark .table-hover .table-success:hover>th{color:#212529}.bootstrap-dark .table-info,.bootstrap-dark .table-info>td,.bootstrap-dark .table-info>th{color:#212529}.bootstrap-dark .table-hover .table-info:hover{color:#212529}.bootstrap-dark .table-hover .table-info:hover>td,.bootstrap-dark .table-hover .table-info:hover>th{color:#212529}.bootstrap-dark .table-warning,.bootstrap-dark .table-warning>td,.bootstrap-dark .table-warning>th{color:#212529}.bootstrap-dark .table-hover .table-warning:hover{color:#212529}.bootstrap-dark .table-hover .table-warning:hover>td,.bootstrap-dark .table-hover .table-warning:hover>th{color:#212529}.bootstrap-dark .table-danger,.bootstrap-dark .table-danger>td,.bootstrap-dark .table-danger>th{color:#212529}.bootstrap-dark .table-hover .table-danger:hover{color:#212529}.bootstrap-dark .table-hover .table-danger:hover>td,.bootstrap-dark .table-hover .table-danger:hover>th{color:#212529}.bootstrap-dark .table-light,.bootstrap-dark .table-light>td,.bootstrap-dark .table-light>th{color:#212529}.bootstrap-dark .table-hover .table-light:hover{color:#212529}.bootstrap-dark .table-hover .table-light:hover>td,.bootstrap-dark .table-hover .table-light:hover>th{color:#212529}.bootstrap-dark .table-dark,.bootstrap-dark .table-dark>td,.bootstrap-dark .table-dark>th{color:#212529}.bootstrap-dark .table-hover .table-dark:hover{color:#212529}.bootstrap-dark .table-hover .table-dark:hover>td,.bootstrap-dark .table-hover .table-dark:hover>th{color:#212529}.bootstrap-dark .table-active,.bootstrap-dark .table-active>td,.bootstrap-dark .table-active>th{color:#ced4da}.bootstrap-dark .table-hover .table-active:hover{color:#ced4da}.bootstrap-dark .table-hover .table-active:hover>td,.bootstrap-dark .table-hover .table-active:hover>th{color:#ced4da}.bootstrap-dark .table-dark{color:#dee2e6}.bootstrap-dark .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#dee2e6;background-color:#000;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #6c757d;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .form-control{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .form-control::-ms-expand{background-color:transparent;border:0}.bootstrap-dark .form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #dee2e6}.bootstrap-dark .form-control:focus{color:#dee2e6;background-color:#191d21;border-color:#b3d7ff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control::-moz-placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control::placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control:disabled,.bootstrap-dark .form-control[readonly]{background-color:#343a40;opacity:1}.bootstrap-dark select.form-control:focus::-ms-value{color:#dee2e6;background-color:#000}.bootstrap-dark .form-control-file,.bootstrap-dark .form-control-range{display:block;width:100%}.bootstrap-dark .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.bootstrap-dark .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.bootstrap-dark .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.bootstrap-dark .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.bootstrap-dark .form-control-plaintext.form-control-lg,.bootstrap-dark .form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.bootstrap-dark .form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap-dark .form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap-dark select.form-control[multiple],.bootstrap-dark select.form-control[size]{height:auto}.bootstrap-dark textarea.form-control{height:auto}.bootstrap-dark .form-group{margin-bottom:1rem}.bootstrap-dark .form-text{display:block;margin-top:.25rem}.bootstrap-dark .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.bootstrap-dark .form-row>.col,.bootstrap-dark .form-row>[class*=col-]{padding-right:5px;padding-left:5px}.bootstrap-dark .form-check{position:relative;display:block;padding-left:1.25rem}.bootstrap-dark .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.bootstrap-dark .form-check-input:disabled~.form-check-label,.bootstrap-dark .form-check-input[disabled]~.form-check-label{color:#6c757d}.bootstrap-dark .form-check-label{margin-bottom:0}.bootstrap-dark .form-check-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.bootstrap-dark .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.bootstrap-dark .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.bootstrap-dark .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#ced4da;background-color:rgba(40,167,69,.9);border-radius:.25rem}.bootstrap-dark.is-valid~.valid-feedback,.bootstrap-dark.is-valid~.valid-tooltip,.was-validated .bootstrap-dark:valid~.valid-feedback,.was-validated .bootstrap-dark:valid~.valid-tooltip{display:block}.bootstrap-dark .form-control.is-valid,.was-validated .bootstrap-dark .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .form-control.is-valid:focus,.was-validated .bootstrap-dark .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark textarea.form-control.is-valid,.was-validated .bootstrap-dark textarea.form-control:valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap-dark .custom-select.is-valid,.was-validated .bootstrap-dark .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .custom-select.is-valid:focus,.was-validated .bootstrap-dark .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark .form-check-input.is-valid~.form-check-label,.was-validated .bootstrap-dark .form-check-input:valid~.form-check-label{color:#28a745}.bootstrap-dark .form-check-input.is-valid~.valid-feedback,.bootstrap-dark .form-check-input.is-valid~.valid-tooltip,.was-validated .bootstrap-dark .form-check-input:valid~.valid-feedback,.was-validated .bootstrap-dark .form-check-input:valid~.valid-tooltip{display:block}.bootstrap-dark .custom-control-input.is-valid~.custom-control-label,.was-validated .bootstrap-dark .custom-control-input:valid~.custom-control-label{color:#28a745}.bootstrap-dark .custom-control-input.is-valid~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.bootstrap-dark .custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.bootstrap-dark .custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark .custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.bootstrap-dark .custom-file-input.is-valid~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:valid~.custom-file-label{border-color:#28a745}.bootstrap-dark .custom-file-input.is-valid:focus~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.bootstrap-dark .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#ced4da;background-color:rgba(220,53,69,.9);border-radius:.25rem}.bootstrap-dark.is-invalid~.invalid-feedback,.bootstrap-dark.is-invalid~.invalid-tooltip,.was-validated .bootstrap-dark:invalid~.invalid-feedback,.was-validated .bootstrap-dark:invalid~.invalid-tooltip{display:block}.bootstrap-dark .form-control.is-invalid,.was-validated .bootstrap-dark .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .form-control.is-invalid:focus,.was-validated .bootstrap-dark .form-control:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark textarea.form-control.is-invalid,.was-validated .bootstrap-dark textarea.form-control:invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap-dark .custom-select.is-invalid,.was-validated .bootstrap-dark .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .custom-select.is-invalid:focus,.was-validated .bootstrap-dark .custom-select:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark .form-check-input.is-invalid~.form-check-label,.was-validated .bootstrap-dark .form-check-input:invalid~.form-check-label{color:#dc3545}.bootstrap-dark .form-check-input.is-invalid~.invalid-feedback,.bootstrap-dark .form-check-input.is-invalid~.invalid-tooltip,.was-validated .bootstrap-dark .form-check-input:invalid~.invalid-feedback,.was-validated .bootstrap-dark .form-check-input:invalid~.invalid-tooltip{display:block}.bootstrap-dark .custom-control-input.is-invalid~.custom-control-label,.was-validated .bootstrap-dark .custom-control-input:invalid~.custom-control-label{color:#dc3545}.bootstrap-dark .custom-control-input.is-invalid~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.bootstrap-dark .custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.bootstrap-dark .custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark .custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.bootstrap-dark .custom-file-input.is-invalid~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.bootstrap-dark .custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark .form-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap-dark .form-inline .form-check{width:100%}@media (min-width:576px){.bootstrap-dark .form-inline label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.bootstrap-dark .form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.bootstrap-dark .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.bootstrap-dark .form-inline .form-control-plaintext{display:inline-block}.bootstrap-dark .form-inline .custom-select,.bootstrap-dark .form-inline .input-group{width:auto}.bootstrap-dark .form-inline .form-check{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.bootstrap-dark .form-inline .form-check-input{position:relative;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.bootstrap-dark .form-inline .custom-control{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap-dark .form-inline .custom-control-label{margin-bottom:0}}.bootstrap-dark .btn{display:inline-block;font-weight:400;color:#d3d3d3;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .btn{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .btn:hover{color:#d3d3d3;text-decoration:none}.bootstrap-dark .btn.focus,.bootstrap-dark .btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .btn.disabled,.bootstrap-dark .btn:disabled{opacity:.65}.bootstrap-dark a.btn.disabled,.bootstrap-dark fieldset:disabled a.btn{pointer-events:none}.bootstrap-dark .btn-primary{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-primary:hover{color:#ced4da;background-color:#0069d9;border-color:#0062cc}.bootstrap-dark .btn-primary.focus,.bootstrap-dark .btn-primary:focus{color:#ced4da;background-color:#0069d9;border-color:#0062cc;-webkit-box-shadow:0 0 0 .2rem rgba(31,136,249,.5);box-shadow:0 0 0 .2rem rgba(31,136,249,.5)}.bootstrap-dark .btn-primary.disabled,.bootstrap-dark .btn-primary:disabled{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-primary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-primary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-primary.dropdown-toggle{color:#ced4da;background-color:#0062cc;border-color:#005cbf}.bootstrap-dark .btn-primary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(31,136,249,.5);box-shadow:0 0 0 .2rem rgba(31,136,249,.5)}.bootstrap-dark .btn-secondary{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-secondary:hover{color:#ced4da;background-color:#5a6268;border-color:#545b62}.bootstrap-dark .btn-secondary.focus,.bootstrap-dark .btn-secondary:focus{color:#ced4da;background-color:#5a6268;border-color:#545b62;-webkit-box-shadow:0 0 0 .2rem rgba(123,131,139,.5);box-shadow:0 0 0 .2rem rgba(123,131,139,.5)}.bootstrap-dark .btn-secondary.disabled,.bootstrap-dark .btn-secondary:disabled{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-secondary.dropdown-toggle{color:#ced4da;background-color:#545b62;border-color:#4e555b}.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(123,131,139,.5);box-shadow:0 0 0 .2rem rgba(123,131,139,.5)}.bootstrap-dark .btn-success{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-success:hover{color:#ced4da;background-color:#218838;border-color:#1e7e34}.bootstrap-dark .btn-success.focus,.bootstrap-dark .btn-success:focus{color:#ced4da;background-color:#218838;border-color:#1e7e34;-webkit-box-shadow:0 0 0 .2rem rgba(65,174,91,.5);box-shadow:0 0 0 .2rem rgba(65,174,91,.5)}.bootstrap-dark .btn-success.disabled,.bootstrap-dark .btn-success:disabled{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-success:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-success:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-success.dropdown-toggle{color:#ced4da;background-color:#1e7e34;border-color:#1c7430}.bootstrap-dark .btn-success:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(65,174,91,.5);box-shadow:0 0 0 .2rem rgba(65,174,91,.5)}.bootstrap-dark .btn-info{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-info:hover{color:#ced4da;background-color:#138496;border-color:#117a8b}.bootstrap-dark .btn-info.focus,.bootstrap-dark .btn-info:focus{color:#ced4da;background-color:#138496;border-color:#117a8b;-webkit-box-shadow:0 0 0 .2rem rgba(50,170,189,.5);box-shadow:0 0 0 .2rem rgba(50,170,189,.5)}.bootstrap-dark .btn-info.disabled,.bootstrap-dark .btn-info:disabled{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-info:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-info:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-info.dropdown-toggle{color:#ced4da;background-color:#117a8b;border-color:#10707f}.bootstrap-dark .btn-info:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(50,170,189,.5);box-shadow:0 0 0 .2rem rgba(50,170,189,.5)}.bootstrap-dark .btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.bootstrap-dark .btn-warning.focus,.bootstrap-dark .btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap-dark .btn-warning.disabled,.bootstrap-dark .btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-warning:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-warning:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.bootstrap-dark .btn-warning:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap-dark .btn-danger{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-danger:hover{color:#ced4da;background-color:#c82333;border-color:#bd2130}.bootstrap-dark .btn-danger.focus,.bootstrap-dark .btn-danger:focus{color:#ced4da;background-color:#c82333;border-color:#bd2130;-webkit-box-shadow:0 0 0 .2rem rgba(218,77,91,.5);box-shadow:0 0 0 .2rem rgba(218,77,91,.5)}.bootstrap-dark .btn-danger.disabled,.bootstrap-dark .btn-danger:disabled{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-danger:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-danger:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-danger.dropdown-toggle{color:#ced4da;background-color:#bd2130;border-color:#b21f2d}.bootstrap-dark .btn-danger:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(218,77,91,.5);box-shadow:0 0 0 .2rem rgba(218,77,91,.5)}.bootstrap-dark .btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.bootstrap-dark .btn-light.focus,.bootstrap-dark .btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap-dark .btn-light.disabled,.bootstrap-dark .btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-light:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-light:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.bootstrap-dark .btn-light:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap-dark .btn-dark{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-dark:hover{color:#ced4da;background-color:#23272b;border-color:#1d2124}.bootstrap-dark .btn-dark.focus,.bootstrap-dark .btn-dark:focus{color:#ced4da;background-color:#23272b;border-color:#1d2124;-webkit-box-shadow:0 0 0 .2rem rgba(75,81,87,.5);box-shadow:0 0 0 .2rem rgba(75,81,87,.5)}.bootstrap-dark .btn-dark.disabled,.bootstrap-dark .btn-dark:disabled{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-dark:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-dark:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-dark.dropdown-toggle{color:#ced4da;background-color:#1d2124;border-color:#171a1d}.bootstrap-dark .btn-dark:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(75,81,87,.5);box-shadow:0 0 0 .2rem rgba(75,81,87,.5)}.bootstrap-dark .btn-outline-primary{color:#007bff;border-color:#007bff}.bootstrap-dark .btn-outline-primary:hover{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-outline-primary.focus,.bootstrap-dark .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap-dark .btn-outline-primary.disabled,.bootstrap-dark .btn-outline-primary:disabled{color:#007bff;background-color:transparent}.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-primary.dropdown-toggle{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap-dark .btn-outline-secondary{color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-outline-secondary:hover{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-outline-secondary.focus,.bootstrap-dark .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap-dark .btn-outline-secondary.disabled,.bootstrap-dark .btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-secondary.dropdown-toggle{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap-dark .btn-outline-success{color:#28a745;border-color:#28a745}.bootstrap-dark .btn-outline-success:hover{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-outline-success.focus,.bootstrap-dark .btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap-dark .btn-outline-success.disabled,.bootstrap-dark .btn-outline-success:disabled{color:#28a745;background-color:transparent}.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-success.dropdown-toggle{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap-dark .btn-outline-info{color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-outline-info:hover{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-outline-info.focus,.bootstrap-dark .btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap-dark .btn-outline-info.disabled,.bootstrap-dark .btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-info.dropdown-toggle{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap-dark .btn-outline-warning{color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-outline-warning.focus,.bootstrap-dark .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap-dark .btn-outline-warning.disabled,.bootstrap-dark .btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap-dark .btn-outline-danger{color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-outline-danger:hover{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-outline-danger.focus,.bootstrap-dark .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap-dark .btn-outline-danger.disabled,.bootstrap-dark .btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-danger.dropdown-toggle{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap-dark .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-outline-light.focus,.bootstrap-dark .btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap-dark .btn-outline-light.disabled,.bootstrap-dark .btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap-dark .btn-outline-dark{color:#343a40;border-color:#343a40}.bootstrap-dark .btn-outline-dark:hover{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-outline-dark.focus,.bootstrap-dark .btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap-dark .btn-outline-dark.disabled,.bootstrap-dark .btn-outline-dark:disabled{color:#343a40;background-color:transparent}.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-dark.dropdown-toggle{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap-dark .btn-link{font-weight:400;color:#adadad;text-decoration:none}.bootstrap-dark .btn-link:hover{color:#878787;text-decoration:underline}.bootstrap-dark .btn-link.focus,.bootstrap-dark .btn-link:focus{text-decoration:underline;-webkit-box-shadow:none;box-shadow:none}.bootstrap-dark .btn-link.disabled,.bootstrap-dark .btn-link:disabled{color:#6c757d;pointer-events:none}.bootstrap-dark .btn-group-lg>.btn,.bootstrap-dark .btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap-dark .btn-group-sm>.btn,.bootstrap-dark .btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap-dark .btn-block{display:block;width:100%}.bootstrap-dark .btn-block+.btn-block{margin-top:.5rem}.bootstrap-dark input[type=button].btn-block,.bootstrap-dark input[type=reset].btn-block,.bootstrap-dark input[type=submit].btn-block{width:100%}.bootstrap-dark .fade{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.bootstrap-dark .fade{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .fade:not(.show){opacity:0}.bootstrap-dark .collapse:not(.show){display:none}.bootstrap-dark .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .collapsing{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .dropdown,.bootstrap-dark .dropleft,.bootstrap-dark .dropright,.bootstrap-dark .dropup{position:relative}.bootstrap-dark .dropdown-toggle{white-space:nowrap}.bootstrap-dark .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.bootstrap-dark .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.bootstrap-dark .dropdown-menu-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.bootstrap-dark .dropdown-menu-sm-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.bootstrap-dark .dropdown-menu-md-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.bootstrap-dark .dropdown-menu-lg-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.bootstrap-dark .dropdown-menu-xl-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-xl-right{right:0;left:auto}}.bootstrap-dark .dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.bootstrap-dark .dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.bootstrap-dark .dropup .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.bootstrap-dark .dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.bootstrap-dark .dropright .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropright .dropdown-toggle::after{vertical-align:0}.bootstrap-dark .dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.bootstrap-dark .dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.bootstrap-dark .dropleft .dropdown-toggle::after{display:none}.bootstrap-dark .dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.bootstrap-dark .dropleft .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropleft .dropdown-toggle::before{vertical-align:0}.bootstrap-dark .dropdown-menu[x-placement^=bottom],.bootstrap-dark .dropdown-menu[x-placement^=left],.bootstrap-dark .dropdown-menu[x-placement^=right],.bootstrap-dark .dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.bootstrap-dark .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.bootstrap-dark .dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.bootstrap-dark .dropdown-item:focus,.bootstrap-dark .dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.bootstrap-dark .dropdown-item.active,.bootstrap-dark .dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.bootstrap-dark .dropdown-item.disabled,.bootstrap-dark .dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.bootstrap-dark .dropdown-menu.show{display:block}.bootstrap-dark .dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.bootstrap-dark .dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.bootstrap-dark .btn-group,.bootstrap-dark .btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.bootstrap-dark .btn-group-vertical>.btn,.bootstrap-dark .btn-group>.btn{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.bootstrap-dark .btn-group-vertical>.btn:hover,.bootstrap-dark .btn-group>.btn:hover{z-index:1}.bootstrap-dark .btn-group-vertical>.btn.active,.bootstrap-dark .btn-group-vertical>.btn:active,.bootstrap-dark .btn-group-vertical>.btn:focus,.bootstrap-dark .btn-group>.btn.active,.bootstrap-dark .btn-group>.btn:active,.bootstrap-dark .btn-group>.btn:focus{z-index:1}.bootstrap-dark .btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .btn-toolbar .input-group{width:auto}.bootstrap-dark .btn-group>.btn-group:not(:first-child),.bootstrap-dark .btn-group>.btn:not(:first-child){margin-left:-1px}.bootstrap-dark .btn-group>.btn-group:not(:last-child)>.btn,.bootstrap-dark .btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .btn-group>.btn-group:not(:first-child)>.btn,.bootstrap-dark .btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.bootstrap-dark .dropdown-toggle-split::after,.dropright .bootstrap-dark .dropdown-toggle-split::after,.dropup .bootstrap-dark .dropdown-toggle-split::after{margin-left:0}.dropleft .bootstrap-dark .dropdown-toggle-split::before{margin-right:0}.bootstrap-dark .btn-group-sm>.btn+.dropdown-toggle-split,.bootstrap-dark .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.bootstrap-dark .btn-group-lg>.btn+.dropdown-toggle-split,.bootstrap-dark .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.bootstrap-dark .btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap-dark .btn-group-vertical>.btn,.bootstrap-dark .btn-group-vertical>.btn-group{width:100%}.bootstrap-dark .btn-group-vertical>.btn-group:not(:first-child),.bootstrap-dark .btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.bootstrap-dark .btn-group-vertical>.btn-group:not(:last-child)>.btn,.bootstrap-dark .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap-dark .btn-group-vertical>.btn-group:not(:first-child)>.btn,.bootstrap-dark .btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.bootstrap-dark .btn-group-toggle>.btn,.bootstrap-dark .btn-group-toggle>.btn-group>.btn{margin-bottom:0}.bootstrap-dark .btn-group-toggle>.btn input[type=checkbox],.bootstrap-dark .btn-group-toggle>.btn input[type=radio],.bootstrap-dark .btn-group-toggle>.btn-group>.btn input[type=checkbox],.bootstrap-dark .btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.bootstrap-dark .input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.bootstrap-dark .input-group>.custom-file,.bootstrap-dark .input-group>.custom-select,.bootstrap-dark .input-group>.form-control,.bootstrap-dark .input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.bootstrap-dark .input-group>.custom-file+.custom-file,.bootstrap-dark .input-group>.custom-file+.custom-select,.bootstrap-dark .input-group>.custom-file+.form-control,.bootstrap-dark .input-group>.custom-select+.custom-file,.bootstrap-dark .input-group>.custom-select+.custom-select,.bootstrap-dark .input-group>.custom-select+.form-control,.bootstrap-dark .input-group>.form-control+.custom-file,.bootstrap-dark .input-group>.form-control+.custom-select,.bootstrap-dark .input-group>.form-control+.form-control,.bootstrap-dark .input-group>.form-control-plaintext+.custom-file,.bootstrap-dark .input-group>.form-control-plaintext+.custom-select,.bootstrap-dark .input-group>.form-control-plaintext+.form-control{margin-left:-1px}.bootstrap-dark .input-group>.custom-file .custom-file-input:focus~.custom-file-label,.bootstrap-dark .input-group>.custom-select:focus,.bootstrap-dark .input-group>.form-control:focus{z-index:3}.bootstrap-dark .input-group>.custom-file .custom-file-input:focus{z-index:4}.bootstrap-dark .input-group>.custom-select:not(:last-child),.bootstrap-dark .input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .input-group>.custom-select:not(:first-child),.bootstrap-dark .input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group>.custom-file{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap-dark .input-group>.custom-file:not(:last-child) .custom-file-label,.bootstrap-dark .input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group-append,.bootstrap-dark .input-group-prepend{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.bootstrap-dark .input-group-append .btn,.bootstrap-dark .input-group-prepend .btn{position:relative;z-index:2}.bootstrap-dark .input-group-append .btn:focus,.bootstrap-dark .input-group-prepend .btn:focus{z-index:3}.bootstrap-dark .input-group-append .btn+.btn,.bootstrap-dark .input-group-append .btn+.input-group-text,.bootstrap-dark .input-group-append .input-group-text+.btn,.bootstrap-dark .input-group-append .input-group-text+.input-group-text,.bootstrap-dark .input-group-prepend .btn+.btn,.bootstrap-dark .input-group-prepend .btn+.input-group-text,.bootstrap-dark .input-group-prepend .input-group-text+.btn,.bootstrap-dark .input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.bootstrap-dark .input-group-prepend{margin-right:-1px}.bootstrap-dark .input-group-append{margin-left:-1px}.bootstrap-dark .input-group-text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#dee2e6;text-align:center;white-space:nowrap;background-color:#343a40;border:1px solid #6c757d;border-radius:.25rem}.bootstrap-dark .input-group-text input[type=checkbox],.bootstrap-dark .input-group-text input[type=radio]{margin-top:0}.bootstrap-dark .input-group-lg>.custom-select,.bootstrap-dark .input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.bootstrap-dark .input-group-lg>.custom-select,.bootstrap-dark .input-group-lg>.form-control,.bootstrap-dark .input-group-lg>.input-group-append>.btn,.bootstrap-dark .input-group-lg>.input-group-append>.input-group-text,.bootstrap-dark .input-group-lg>.input-group-prepend>.btn,.bootstrap-dark .input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap-dark .input-group-sm>.custom-select,.bootstrap-dark .input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.bootstrap-dark .input-group-sm>.custom-select,.bootstrap-dark .input-group-sm>.form-control,.bootstrap-dark .input-group-sm>.input-group-append>.btn,.bootstrap-dark .input-group-sm>.input-group-append>.input-group-text,.bootstrap-dark .input-group-sm>.input-group-prepend>.btn,.bootstrap-dark .input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap-dark .input-group-lg>.custom-select,.bootstrap-dark .input-group-sm>.custom-select{padding-right:1.75rem}.bootstrap-dark .input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.bootstrap-dark .input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.bootstrap-dark .input-group>.input-group-append:not(:last-child)>.btn,.bootstrap-dark .input-group>.input-group-append:not(:last-child)>.input-group-text,.bootstrap-dark .input-group>.input-group-prepend>.btn,.bootstrap-dark .input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .input-group>.input-group-append>.btn,.bootstrap-dark .input-group>.input-group-append>.input-group-text,.bootstrap-dark .input-group>.input-group-prepend:first-child>.btn:not(:first-child),.bootstrap-dark .input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.bootstrap-dark .input-group>.input-group-prepend:not(:first-child)>.btn,.bootstrap-dark .input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group>.input-group-append>.custom-select{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group>.input-group-prepend>.custom-select{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.bootstrap-dark .custom-control-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.bootstrap-dark .custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.bootstrap-dark .custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.bootstrap-dark .custom-control-input:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.bootstrap-dark .custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.bootstrap-dark .custom-control-input:disabled~.custom-control-label,.bootstrap-dark .custom-control-input[disabled]~.custom-control-label{color:#6c757d}.bootstrap-dark .custom-control-input:disabled~.custom-control-label::before,.bootstrap-dark .custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.bootstrap-dark .custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.bootstrap-dark .custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.bootstrap-dark .custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.bootstrap-dark .custom-checkbox .custom-control-label::before{border-radius:.25rem}.bootstrap-dark .custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.bootstrap-dark .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.bootstrap-dark .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.bootstrap-dark .custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-radio .custom-control-label::before{border-radius:50%}.bootstrap-dark .custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.bootstrap-dark .custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-switch{padding-left:2.25rem}.bootstrap-dark .custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.bootstrap-dark .custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-o-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-o-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-switch .custom-control-label::after{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);-o-transform:translateX(.75rem);transform:translateX(.75rem)}.bootstrap-dark .custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap-dark .custom-select:focus{border-color:#80bdff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-select:focus::-ms-value{color:#dee2e6;background-color:#000}.bootstrap-dark .custom-select[multiple],.bootstrap-dark .custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.bootstrap-dark .custom-select:disabled{color:#ced4da;background-color:#343a40}.bootstrap-dark .custom-select::-ms-expand{display:none}.bootstrap-dark .custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.bootstrap-dark .custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.bootstrap-dark .custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.bootstrap-dark .custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.bootstrap-dark .custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.bootstrap-dark .custom-file-input:focus~.custom-file-label{border-color:#80bdff;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-file-input:disabled~.custom-file-label,.bootstrap-dark .custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.bootstrap-dark .custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.bootstrap-dark .custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.bootstrap-dark .custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.bootstrap-dark .custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.bootstrap-dark .custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap-dark .custom-range:focus{outline:0}.bootstrap-dark .custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-range::-moz-focus-outer{border:0}.bootstrap-dark .custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-range::-webkit-slider-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.bootstrap-dark .custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap-dark .custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-range::-moz-range-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.bootstrap-dark .custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap-dark .custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-range::-ms-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-range::-ms-thumb:active{background-color:#b3d7ff}.bootstrap-dark .custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.bootstrap-dark .custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.bootstrap-dark .custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.bootstrap-dark .custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.bootstrap-dark .custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.bootstrap-dark .custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.bootstrap-dark .custom-range:disabled::-moz-range-track{cursor:default}.bootstrap-dark .custom-range:disabled::-ms-thumb{background-color:#adb5bd}.bootstrap-dark .custom-control-label::before,.bootstrap-dark .custom-file-label,.bootstrap-dark .custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-control-label::before,.bootstrap-dark .custom-file-label,.bootstrap-dark .custom-select{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.bootstrap-dark .nav-link{display:block;padding:.5rem 1rem}.bootstrap-dark .nav-link:focus,.bootstrap-dark .nav-link:hover{text-decoration:none}.bootstrap-dark .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.bootstrap-dark .nav-tabs{border-bottom:1px solid rgba(255,255,255,.125)}.bootstrap-dark .nav-tabs .nav-item{margin-bottom:-1px}.bootstrap-dark .nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap-dark .nav-tabs .nav-link:focus,.bootstrap-dark .nav-tabs .nav-link:hover{border-color:#495057 #495057 rgba(255,255,255,.125)}.bootstrap-dark .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.bootstrap-dark .nav-tabs .nav-item.show .nav-link,.bootstrap-dark .nav-tabs .nav-link.active{color:#f8f9fa;background-color:#191d21;border-color:#495057 #495057 #191d21}.bootstrap-dark .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.bootstrap-dark .nav-pills .nav-link{border-radius:.25rem}.bootstrap-dark .nav-pills .nav-link.active,.bootstrap-dark .nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.bootstrap-dark .nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.bootstrap-dark .nav-justified .nav-item{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.bootstrap-dark .tab-content>.tab-pane{display:none}.bootstrap-dark .tab-content>.active{display:block}.bootstrap-dark .navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.bootstrap-dark .navbar .container,.bootstrap-dark .navbar .container-fluid,.bootstrap-dark .navbar .container-lg,.bootstrap-dark .navbar .container-md,.bootstrap-dark .navbar .container-sm,.bootstrap-dark .navbar .container-xl{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-dark .navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.bootstrap-dark .navbar-brand:focus,.bootstrap-dark .navbar-brand:hover{text-decoration:none}.bootstrap-dark .navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.bootstrap-dark .navbar-nav .nav-link{padding-right:0;padding-left:0}.bootstrap-dark .navbar-nav .dropdown-menu{position:static;float:none}.bootstrap-dark .navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.bootstrap-dark .navbar-collapse{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap-dark .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.bootstrap-dark .navbar-toggler:focus,.bootstrap-dark .navbar-toggler:hover{text-decoration:none}.bootstrap-dark .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}@media (max-width:575.98px){.bootstrap-dark .navbar-expand-sm>.container,.bootstrap-dark .navbar-expand-sm>.container-fluid,.bootstrap-dark .navbar-expand-sm>.container-lg,.bootstrap-dark .navbar-expand-sm>.container-md,.bootstrap-dark .navbar-expand-sm>.container-sm,.bootstrap-dark .navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.bootstrap-dark .navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-sm>.container,.bootstrap-dark .navbar-expand-sm>.container-fluid,.bootstrap-dark .navbar-expand-sm>.container-lg,.bootstrap-dark .navbar-expand-sm>.container-md,.bootstrap-dark .navbar-expand-sm>.container-sm,.bootstrap-dark .navbar-expand-sm>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.bootstrap-dark .navbar-expand-md>.container,.bootstrap-dark .navbar-expand-md>.container-fluid,.bootstrap-dark .navbar-expand-md>.container-lg,.bootstrap-dark .navbar-expand-md>.container-md,.bootstrap-dark .navbar-expand-md>.container-sm,.bootstrap-dark .navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.bootstrap-dark .navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-md>.container,.bootstrap-dark .navbar-expand-md>.container-fluid,.bootstrap-dark .navbar-expand-md>.container-lg,.bootstrap-dark .navbar-expand-md>.container-md,.bootstrap-dark .navbar-expand-md>.container-sm,.bootstrap-dark .navbar-expand-md>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.bootstrap-dark .navbar-expand-lg>.container,.bootstrap-dark .navbar-expand-lg>.container-fluid,.bootstrap-dark .navbar-expand-lg>.container-lg,.bootstrap-dark .navbar-expand-lg>.container-md,.bootstrap-dark .navbar-expand-lg>.container-sm,.bootstrap-dark .navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.bootstrap-dark .navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-lg>.container,.bootstrap-dark .navbar-expand-lg>.container-fluid,.bootstrap-dark .navbar-expand-lg>.container-lg,.bootstrap-dark .navbar-expand-lg>.container-md,.bootstrap-dark .navbar-expand-lg>.container-sm,.bootstrap-dark .navbar-expand-lg>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.bootstrap-dark .navbar-expand-xl>.container,.bootstrap-dark .navbar-expand-xl>.container-fluid,.bootstrap-dark .navbar-expand-xl>.container-lg,.bootstrap-dark .navbar-expand-xl>.container-md,.bootstrap-dark .navbar-expand-xl>.container-sm,.bootstrap-dark .navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.bootstrap-dark .navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-xl>.container,.bootstrap-dark .navbar-expand-xl>.container-fluid,.bootstrap-dark .navbar-expand-xl>.container-lg,.bootstrap-dark .navbar-expand-xl>.container-md,.bootstrap-dark .navbar-expand-xl>.container-sm,.bootstrap-dark .navbar-expand-xl>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-xl .navbar-toggler{display:none}}.bootstrap-dark .navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand>.container,.bootstrap-dark .navbar-expand>.container-fluid,.bootstrap-dark .navbar-expand>.container-lg,.bootstrap-dark .navbar-expand>.container-md,.bootstrap-dark .navbar-expand>.container-sm,.bootstrap-dark .navbar-expand>.container-xl{padding-right:0;padding-left:0}.bootstrap-dark .navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand>.container,.bootstrap-dark .navbar-expand>.container-fluid,.bootstrap-dark .navbar-expand>.container-lg,.bootstrap-dark .navbar-expand>.container-md,.bootstrap-dark .navbar-expand>.container-sm,.bootstrap-dark .navbar-expand>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand .navbar-toggler{display:none}.bootstrap-dark .navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-brand:focus,.bootstrap-dark .navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.bootstrap-dark .navbar-light .navbar-nav .nav-link:focus,.bootstrap-dark .navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.bootstrap-dark .navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.bootstrap-dark .navbar-light .navbar-nav .active>.nav-link,.bootstrap-dark .navbar-light .navbar-nav .nav-link.active,.bootstrap-dark .navbar-light .navbar-nav .nav-link.show,.bootstrap-dark .navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.bootstrap-dark .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap-dark .navbar-light .navbar-text{color:rgba(0,0,0,.5)}.bootstrap-dark .navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-text a:focus,.bootstrap-dark .navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-dark .navbar-brand{color:#fff}.bootstrap-dark .navbar-dark .navbar-brand:focus,.bootstrap-dark .navbar-dark .navbar-brand:hover{color:#fff}.bootstrap-dark .navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.bootstrap-dark .navbar-dark .navbar-nav .nav-link:focus,.bootstrap-dark .navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.bootstrap-dark .navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.bootstrap-dark .navbar-dark .navbar-nav .active>.nav-link,.bootstrap-dark .navbar-dark .navbar-nav .nav-link.active,.bootstrap-dark .navbar-dark .navbar-nav .nav-link.show,.bootstrap-dark .navbar-dark .navbar-nav .show>.nav-link{color:#fff}.bootstrap-dark .navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.bootstrap-dark .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap-dark .navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.bootstrap-dark .navbar-dark .navbar-text a{color:#fff}.bootstrap-dark .navbar-dark .navbar-text a:focus,.bootstrap-dark .navbar-dark .navbar-text a:hover{color:#fff}.bootstrap-dark .card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#212529;-webkit-background-clip:border-box;background-clip:border-box;border:1px solid rgba(255,255,255,.125);border-radius:.25rem}.bootstrap-dark .card>hr{margin-right:0;margin-left:0}.bootstrap-dark .card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap-dark .card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap-dark .card-body{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem;color:#e9ecef}.bootstrap-dark .card-title{margin-bottom:.75rem}.bootstrap-dark .card-subtitle{margin-top:-.375rem;margin-bottom:0}.bootstrap-dark .card-text:last-child{margin-bottom:0}.bootstrap-dark .card-link:hover{text-decoration:none}.bootstrap-dark .card-link+.card-link{margin-left:1.25rem}.bootstrap-dark .card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(255,255,255,.03);border-bottom:1px solid rgba(255,255,255,.125)}.bootstrap-dark .card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.bootstrap-dark .card-header+.list-group .list-group-item:first-child{border-top:0}.bootstrap-dark .card-footer{padding:.75rem 1.25rem;background-color:rgba(255,255,255,.03);border-top:1px solid rgba(255,255,255,.125)}.bootstrap-dark .card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.bootstrap-dark .card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.bootstrap-dark .card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.bootstrap-dark .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.bootstrap-dark .card-img,.bootstrap-dark .card-img-bottom,.bootstrap-dark .card-img-top{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%}.bootstrap-dark .card-img,.bootstrap-dark .card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.bootstrap-dark .card-img,.bootstrap-dark .card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.bootstrap-dark .card-deck .card{margin-bottom:15px}@media (min-width:576px){.bootstrap-dark .card-deck{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.bootstrap-dark .card-deck .card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.bootstrap-dark .card-group>.card{margin-bottom:15px}@media (min-width:576px){.bootstrap-dark .card-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.bootstrap-dark .card-group>.card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.bootstrap-dark .card-group>.card+.card{margin-left:0;border-left:0}.bootstrap-dark .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .card-group>.card:not(:last-child) .card-header,.bootstrap-dark .card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.bootstrap-dark .card-group>.card:not(:last-child) .card-footer,.bootstrap-dark .card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.bootstrap-dark .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .card-group>.card:not(:first-child) .card-header,.bootstrap-dark .card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.bootstrap-dark .card-group>.card:not(:first-child) .card-footer,.bootstrap-dark .card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.bootstrap-dark .card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.bootstrap-dark .card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.bootstrap-dark .card-columns .card{display:inline-block;width:100%}}.bootstrap-dark .accordion>.card{overflow:hidden}.bootstrap-dark .accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap-dark .accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.bootstrap-dark .accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.bootstrap-dark .breadcrumb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.bootstrap-dark .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.bootstrap-dark .breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.bootstrap-dark .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.bootstrap-dark .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.bootstrap-dark .breadcrumb-item.active{color:#6c757d}.bootstrap-dark .pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.bootstrap-dark .page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.bootstrap-dark .page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.bootstrap-dark .page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap-dark .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.bootstrap-dark .page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap-dark .page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.bootstrap-dark .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.bootstrap-dark .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.bootstrap-dark .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.bootstrap-dark .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.bootstrap-dark .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.bootstrap-dark .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.bootstrap-dark .badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .badge{-webkit-transition:none;-o-transition:none;transition:none}}a.bootstrap-dark .badge:focus,a.bootstrap-dark .badge:hover{text-decoration:none}.bootstrap-dark .badge:empty{display:none}.bootstrap-dark .btn .badge{position:relative;top:-1px}.bootstrap-dark .badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.bootstrap-dark .badge-primary{color:#ced4da;background-color:#007bff}a.bootstrap-dark .badge-primary:focus,a.bootstrap-dark .badge-primary:hover{color:#ced4da;background-color:#0062cc}a.bootstrap-dark .badge-primary.focus,a.bootstrap-dark .badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap-dark .badge-secondary{color:#ced4da;background-color:#6c757d}a.bootstrap-dark .badge-secondary:focus,a.bootstrap-dark .badge-secondary:hover{color:#ced4da;background-color:#545b62}a.bootstrap-dark .badge-secondary.focus,a.bootstrap-dark .badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap-dark .badge-success{color:#ced4da;background-color:#28a745}a.bootstrap-dark .badge-success:focus,a.bootstrap-dark .badge-success:hover{color:#ced4da;background-color:#1e7e34}a.bootstrap-dark .badge-success.focus,a.bootstrap-dark .badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap-dark .badge-info{color:#ced4da;background-color:#17a2b8}a.bootstrap-dark .badge-info:focus,a.bootstrap-dark .badge-info:hover{color:#ced4da;background-color:#117a8b}a.bootstrap-dark .badge-info.focus,a.bootstrap-dark .badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap-dark .badge-warning{color:#212529;background-color:#ffc107}a.bootstrap-dark .badge-warning:focus,a.bootstrap-dark .badge-warning:hover{color:#212529;background-color:#d39e00}a.bootstrap-dark .badge-warning.focus,a.bootstrap-dark .badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap-dark .badge-danger{color:#ced4da;background-color:#dc3545}a.bootstrap-dark .badge-danger:focus,a.bootstrap-dark .badge-danger:hover{color:#ced4da;background-color:#bd2130}a.bootstrap-dark .badge-danger.focus,a.bootstrap-dark .badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap-dark .badge-light{color:#212529;background-color:#f8f9fa}a.bootstrap-dark .badge-light:focus,a.bootstrap-dark .badge-light:hover{color:#212529;background-color:#dae0e5}a.bootstrap-dark .badge-light.focus,a.bootstrap-dark .badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap-dark .badge-dark{color:#ced4da;background-color:#343a40}a.bootstrap-dark .badge-dark:focus,a.bootstrap-dark .badge-dark:hover{color:#ced4da;background-color:#1d2124}a.bootstrap-dark .badge-dark.focus,a.bootstrap-dark .badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap-dark .jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.bootstrap-dark .jumbotron{padding:4rem 2rem}}.bootstrap-dark .jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.bootstrap-dark .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.bootstrap-dark .alert-heading{color:inherit}.bootstrap-dark .alert-link{font-weight:700}.bootstrap-dark .alert-dismissible{padding-right:4rem}.bootstrap-dark .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.bootstrap-dark .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.bootstrap-dark .alert-primary hr{border-top-color:#9fcdff}.bootstrap-dark .alert-primary .alert-link{color:#002752}.bootstrap-dark .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.bootstrap-dark .alert-secondary hr{border-top-color:#c8cbcf}.bootstrap-dark .alert-secondary .alert-link{color:#202326}.bootstrap-dark .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.bootstrap-dark .alert-success hr{border-top-color:#b1dfbb}.bootstrap-dark .alert-success .alert-link{color:#0b2e13}.bootstrap-dark .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.bootstrap-dark .alert-info hr{border-top-color:#abdde5}.bootstrap-dark .alert-info .alert-link{color:#062c33}.bootstrap-dark .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.bootstrap-dark .alert-warning hr{border-top-color:#ffe8a1}.bootstrap-dark .alert-warning .alert-link{color:#533f03}.bootstrap-dark .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.bootstrap-dark .alert-danger hr{border-top-color:#f1b0b7}.bootstrap-dark .alert-danger .alert-link{color:#491217}.bootstrap-dark .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.bootstrap-dark .alert-light hr{border-top-color:#ececf6}.bootstrap-dark .alert-light .alert-link{color:#686868}.bootstrap-dark .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.bootstrap-dark .alert-dark hr{border-top-color:#b9bbbe}.bootstrap-dark .alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.bootstrap-dark .progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.bootstrap-dark .progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .progress-bar{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.bootstrap-dark .progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.bootstrap-dark .progress-bar-animated{-webkit-animation:none;-o-animation:none;animation:none}}.bootstrap-dark .media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.bootstrap-dark .media-body{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.bootstrap-dark .list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.bootstrap-dark .list-group-item-action{width:100%;color:#dee2e6;text-align:inherit}.bootstrap-dark .list-group-item-action:focus,.bootstrap-dark .list-group-item-action:hover{z-index:1;color:#dee2e6;text-decoration:none;background-color:#212529}.bootstrap-dark .list-group-item-action:active{color:#d3d3d3;background-color:#343a40}.bootstrap-dark .list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:rgba(25,29,33,.05);border:1px solid rgba(255,255,255,.125)}.bootstrap-dark .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap-dark .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap-dark .list-group-item.disabled,.bootstrap-dark .list-group-item:disabled{color:#ced4da;pointer-events:none;background-color:rgba(25,29,33,.05)}.bootstrap-dark .list-group-item.active{z-index:2;color:#000;background-color:#3395ff;border-color:#3395ff}.bootstrap-dark .list-group-item+.bootstrap-dark .list-group-item{border-top-width:0}.bootstrap-dark .list-group-item+.bootstrap-dark .list-group-item.active{margin-top:-1px;border-top-width:1px}.bootstrap-dark .list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.bootstrap-dark .list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.bootstrap-dark .list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-md .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.bootstrap-dark .list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.bootstrap-dark .list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.bootstrap-dark .list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.bootstrap-dark .list-group-flush .list-group-item:first-child{border-top-width:0}.bootstrap-dark .list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.bootstrap-dark .list-group-item-primary{color:#004085;background-color:#b8daff}.bootstrap-dark .list-group-item-primary.list-group-item-action:focus,.bootstrap-dark .list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.bootstrap-dark .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.bootstrap-dark .list-group-item-secondary{color:#383d41;background-color:#d6d8db}.bootstrap-dark .list-group-item-secondary.list-group-item-action:focus,.bootstrap-dark .list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.bootstrap-dark .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.bootstrap-dark .list-group-item-success{color:#155724;background-color:#c3e6cb}.bootstrap-dark .list-group-item-success.list-group-item-action:focus,.bootstrap-dark .list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.bootstrap-dark .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.bootstrap-dark .list-group-item-info{color:#0c5460;background-color:#bee5eb}.bootstrap-dark .list-group-item-info.list-group-item-action:focus,.bootstrap-dark .list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.bootstrap-dark .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.bootstrap-dark .list-group-item-warning{color:#856404;background-color:#ffeeba}.bootstrap-dark .list-group-item-warning.list-group-item-action:focus,.bootstrap-dark .list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.bootstrap-dark .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.bootstrap-dark .list-group-item-danger{color:#721c24;background-color:#f5c6cb}.bootstrap-dark .list-group-item-danger.list-group-item-action:focus,.bootstrap-dark .list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.bootstrap-dark .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.bootstrap-dark .list-group-item-light{color:#818182;background-color:#fdfdfe}.bootstrap-dark .list-group-item-light.list-group-item-action:focus,.bootstrap-dark .list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.bootstrap-dark .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.bootstrap-dark .list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.bootstrap-dark .list-group-item-dark.list-group-item-action:focus,.bootstrap-dark .list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.bootstrap-dark .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.bootstrap-dark .close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#fff;text-shadow:0 1px 0 #000;opacity:.5}.bootstrap-dark .close:hover{color:#fff;text-decoration:none}.bootstrap-dark .close:not(:disabled):not(.disabled):focus,.bootstrap-dark .close:not(:disabled):not(.disabled):hover{opacity:.75}.bootstrap-dark button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap-dark a.close.disabled{pointer-events:none}.bootstrap-dark .toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.bootstrap-dark .toast:not(:last-child){margin-bottom:.75rem}.bootstrap-dark .toast.showing{opacity:1}.bootstrap-dark .toast.show{display:block;opacity:1}.bootstrap-dark .toast.hide{display:none}.bootstrap-dark .toast-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.bootstrap-dark .toast-body{padding:.75rem}.bootstrap-dark .modal-open{overflow:hidden}.bootstrap-dark .modal-open .modal{overflow-x:hidden;overflow-y:auto}.bootstrap-dark .modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.bootstrap-dark .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .bootstrap-dark .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-50px);-o-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .bootstrap-dark .modal-dialog{-webkit-transition:none;-o-transition:none;transition:none}}.modal.show .bootstrap-dark .modal-dialog{-webkit-transform:none;-o-transform:none;transform:none}.modal.modal-static .bootstrap-dark .modal-dialog{-webkit-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.bootstrap-dark .modal-dialog-scrollable{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.bootstrap-dark .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.bootstrap-dark .modal-dialog-scrollable .modal-footer,.bootstrap-dark .modal-dialog-scrollable .modal-header{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.bootstrap-dark .modal-dialog-scrollable .modal-body{overflow-y:auto}.bootstrap-dark .modal-dialog-centered{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.bootstrap-dark .modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.bootstrap-dark .modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%}.bootstrap-dark .modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.bootstrap-dark .modal-dialog-centered.modal-dialog-scrollable::before{content:none}.bootstrap-dark .modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#191d21;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.3rem;outline:0}.bootstrap-dark .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.bootstrap-dark .modal-backdrop.fade{opacity:0}.bootstrap-dark .modal-backdrop.show{opacity:.5}.bootstrap-dark .modal-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #343a40;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap-dark .modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.bootstrap-dark .modal-title{margin-bottom:0;line-height:1.5}.bootstrap-dark .modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.bootstrap-dark .modal-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #343a40;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.bootstrap-dark .modal-footer>*{margin:.25rem}.bootstrap-dark .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.bootstrap-dark .modal-dialog{max-width:500px;margin:1.75rem auto}.bootstrap-dark .modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.bootstrap-dark .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.bootstrap-dark .modal-dialog-centered{min-height:calc(100% - 3.5rem)}.bootstrap-dark .modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.bootstrap-dark .modal-sm{max-width:300px}}@media (min-width:992px){.bootstrap-dark .modal-lg,.bootstrap-dark .modal-xl{max-width:800px}}@media (min-width:1200px){.bootstrap-dark .modal-xl{max-width:1140px}}.bootstrap-dark .tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.bootstrap-dark .tooltip.show{opacity:.9}.bootstrap-dark .tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.bootstrap-dark .tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bootstrap-dark .bs-tooltip-auto[x-placement^=top],.bootstrap-dark .bs-tooltip-top{padding:.4rem 0}.bootstrap-dark .bs-tooltip-auto[x-placement^=top] .arrow,.bootstrap-dark .bs-tooltip-top .arrow{bottom:0}.bootstrap-dark .bs-tooltip-auto[x-placement^=top] .arrow::before,.bootstrap-dark .bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bootstrap-dark .bs-tooltip-auto[x-placement^=right],.bootstrap-dark .bs-tooltip-right{padding:0 .4rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=right] .arrow,.bootstrap-dark .bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=right] .arrow::before,.bootstrap-dark .bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bootstrap-dark .bs-tooltip-auto[x-placement^=bottom],.bootstrap-dark .bs-tooltip-bottom{padding:.4rem 0}.bootstrap-dark .bs-tooltip-auto[x-placement^=bottom] .arrow,.bootstrap-dark .bs-tooltip-bottom .arrow{top:0}.bootstrap-dark .bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bootstrap-dark .bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bootstrap-dark .bs-tooltip-auto[x-placement^=left],.bootstrap-dark .bs-tooltip-left{padding:0 .4rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=left] .arrow,.bootstrap-dark .bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=left] .arrow::before,.bootstrap-dark .bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.bootstrap-dark .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.bootstrap-dark .popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.bootstrap-dark .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.bootstrap-dark .popover .arrow::after,.bootstrap-dark .popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bootstrap-dark .bs-popover-auto[x-placement^=top],.bootstrap-dark .bs-popover-top{margin-bottom:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=top]>.arrow,.bootstrap-dark .bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bootstrap-dark .bs-popover-auto[x-placement^=top]>.arrow::before,.bootstrap-dark .bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=top]>.arrow::after,.bootstrap-dark .bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bootstrap-dark .bs-popover-auto[x-placement^=right],.bootstrap-dark .bs-popover-right{margin-left:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=right]>.arrow,.bootstrap-dark .bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap-dark .bs-popover-auto[x-placement^=right]>.arrow::before,.bootstrap-dark .bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=right]>.arrow::after,.bootstrap-dark .bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bootstrap-dark .bs-popover-auto[x-placement^=bottom],.bootstrap-dark .bs-popover-bottom{margin-top:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=bottom]>.arrow,.bootstrap-dark .bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bootstrap-dark .bs-popover-auto[x-placement^=bottom]>.arrow::before,.bootstrap-dark .bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=bottom]>.arrow::after,.bootstrap-dark .bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bootstrap-dark .bs-popover-auto[x-placement^=bottom] .popover-header::before,.bootstrap-dark .bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bootstrap-dark .bs-popover-auto[x-placement^=left],.bootstrap-dark .bs-popover-left{margin-right:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=left]>.arrow,.bootstrap-dark .bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap-dark .bs-popover-auto[x-placement^=left]>.arrow::before,.bootstrap-dark .bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=left]>.arrow::after,.bootstrap-dark .bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.bootstrap-dark .popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap-dark .popover-header:empty{display:none}.bootstrap-dark .popover-body{padding:.5rem .75rem;color:#212529}.bootstrap-dark .carousel{position:relative}.bootstrap-dark .carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.bootstrap-dark .carousel-inner{position:relative;width:100%;overflow:hidden}.bootstrap-dark .carousel-inner::after{display:block;clear:both;content:""}.bootstrap-dark .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-item{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-item-next,.bootstrap-dark .carousel-item-prev,.bootstrap-dark .carousel-item.active{display:block}.bootstrap-dark .active.carousel-item-right,.bootstrap-dark .carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);-o-transform:translateX(100%);transform:translateX(100%)}.bootstrap-dark .active.carousel-item-left,.bootstrap-dark .carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);-o-transform:translateX(-100%);transform:translateX(-100%)}.bootstrap-dark .carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;-webkit-transform:none;-o-transform:none;transform:none}.bootstrap-dark .carousel-fade .carousel-item-next.carousel-item-left,.bootstrap-dark .carousel-fade .carousel-item-prev.carousel-item-right,.bootstrap-dark .carousel-fade .carousel-item.active{z-index:1;opacity:1}.bootstrap-dark .carousel-fade .active.carousel-item-left,.bootstrap-dark .carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;-o-transition:opacity 0s .6s;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-fade .active.carousel-item-left,.bootstrap-dark .carousel-fade .active.carousel-item-right{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-control-next,.bootstrap-dark .carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;-webkit-transition:opacity .15s ease;-o-transition:opacity .15s ease;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-control-next,.bootstrap-dark .carousel-control-prev{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-control-next:focus,.bootstrap-dark .carousel-control-next:hover,.bootstrap-dark .carousel-control-prev:focus,.bootstrap-dark .carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.bootstrap-dark .carousel-control-prev{left:0}.bootstrap-dark .carousel-control-next{right:0}.bootstrap-dark .carousel-control-next-icon,.bootstrap-dark .carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.bootstrap-dark .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.bootstrap-dark .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.bootstrap-dark .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.bootstrap-dark .carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;-o-transition:opacity .6s ease;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-indicators li{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-indicators .active{opacity:1}.bootstrap-dark .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spinner-border{to{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.bootstrap-dark .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;-o-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.bootstrap-dark .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@-o-keyframes spinner-grow{0%{-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}.bootstrap-dark .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;-o-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.bootstrap-dark .spinner-grow-sm{width:1rem;height:1rem}.bootstrap-dark .align-baseline{vertical-align:baseline!important}.bootstrap-dark .align-top{vertical-align:top!important}.bootstrap-dark .align-middle{vertical-align:middle!important}.bootstrap-dark .align-bottom{vertical-align:bottom!important}.bootstrap-dark .align-text-bottom{vertical-align:text-bottom!important}.bootstrap-dark .align-text-top{vertical-align:text-top!important}.bootstrap-dark .bg-primary{background-color:#007bff!important}.bootstrap-dark a.bg-primary:focus,.bootstrap-dark a.bg-primary:hover,.bootstrap-dark button.bg-primary:focus,.bootstrap-dark button.bg-primary:hover{background-color:#0062cc!important}.bootstrap-dark .bg-secondary{background-color:#6c757d!important}.bootstrap-dark a.bg-secondary:focus,.bootstrap-dark a.bg-secondary:hover,.bootstrap-dark button.bg-secondary:focus,.bootstrap-dark button.bg-secondary:hover{background-color:#545b62!important}.bootstrap-dark .bg-success{background-color:#28a745!important}.bootstrap-dark a.bg-success:focus,.bootstrap-dark a.bg-success:hover,.bootstrap-dark button.bg-success:focus,.bootstrap-dark button.bg-success:hover{background-color:#1e7e34!important}.bootstrap-dark .bg-info{background-color:#17a2b8!important}.bootstrap-dark a.bg-info:focus,.bootstrap-dark a.bg-info:hover,.bootstrap-dark button.bg-info:focus,.bootstrap-dark button.bg-info:hover{background-color:#117a8b!important}.bootstrap-dark .bg-warning{background-color:#ffc107!important}.bootstrap-dark a.bg-warning:focus,.bootstrap-dark a.bg-warning:hover,.bootstrap-dark button.bg-warning:focus,.bootstrap-dark button.bg-warning:hover{background-color:#d39e00!important}.bootstrap-dark .bg-danger{background-color:#dc3545!important}.bootstrap-dark a.bg-danger:focus,.bootstrap-dark a.bg-danger:hover,.bootstrap-dark button.bg-danger:focus,.bootstrap-dark button.bg-danger:hover{background-color:#bd2130!important}.bootstrap-dark .bg-light{background-color:#f8f9fa!important}.bootstrap-dark a.bg-light:focus,.bootstrap-dark a.bg-light:hover,.bootstrap-dark button.bg-light:focus,.bootstrap-dark button.bg-light:hover{background-color:#dae0e5!important}.bootstrap-dark .bg-dark{background-color:#343a40!important}.bootstrap-dark a.bg-dark:focus,.bootstrap-dark a.bg-dark:hover,.bootstrap-dark button.bg-dark:focus,.bootstrap-dark button.bg-dark:hover{background-color:#1d2124!important}.bootstrap-dark .bg-white{background-color:#fff!important}.bootstrap-dark .bg-transparent{background-color:transparent!important}.bootstrap-dark .border{border:1px solid #dee2e6!important}.bootstrap-dark .border-top{border-top:1px solid #dee2e6!important}.bootstrap-dark .border-right{border-right:1px solid #dee2e6!important}.bootstrap-dark .border-bottom{border-bottom:1px solid #dee2e6!important}.bootstrap-dark .border-left{border-left:1px solid #dee2e6!important}.bootstrap-dark .border-0{border:0!important}.bootstrap-dark .border-top-0{border-top:0!important}.bootstrap-dark .border-right-0{border-right:0!important}.bootstrap-dark .border-bottom-0{border-bottom:0!important}.bootstrap-dark .border-left-0{border-left:0!important}.bootstrap-dark .border-primary{border-color:#007bff!important}.bootstrap-dark .border-secondary{border-color:#6c757d!important}.bootstrap-dark .border-success{border-color:#28a745!important}.bootstrap-dark .border-info{border-color:#17a2b8!important}.bootstrap-dark .border-warning{border-color:#ffc107!important}.bootstrap-dark .border-danger{border-color:#dc3545!important}.bootstrap-dark .border-light{border-color:#f8f9fa!important}.bootstrap-dark .border-dark{border-color:#343a40!important}.bootstrap-dark .border-white{border-color:#fff!important}.bootstrap-dark .rounded-sm{border-radius:.2rem!important}.bootstrap-dark .rounded{border-radius:.25rem!important}.bootstrap-dark .rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.bootstrap-dark .rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.bootstrap-dark .rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap-dark .rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap-dark .rounded-lg{border-radius:.3rem!important}.bootstrap-dark .rounded-circle{border-radius:50%!important}.bootstrap-dark .rounded-pill{border-radius:50rem!important}.bootstrap-dark .rounded-0{border-radius:0!important}.bootstrap-dark .clearfix::after{display:block;clear:both;content:""}.bootstrap-dark .d-none{display:none!important}.bootstrap-dark .d-inline{display:inline!important}.bootstrap-dark .d-inline-block{display:inline-block!important}.bootstrap-dark .d-block{display:block!important}.bootstrap-dark .d-table{display:table!important}.bootstrap-dark .d-table-row{display:table-row!important}.bootstrap-dark .d-table-cell{display:table-cell!important}.bootstrap-dark .d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.bootstrap-dark .d-sm-none{display:none!important}.bootstrap-dark .d-sm-inline{display:inline!important}.bootstrap-dark .d-sm-inline-block{display:inline-block!important}.bootstrap-dark .d-sm-block{display:block!important}.bootstrap-dark .d-sm-table{display:table!important}.bootstrap-dark .d-sm-table-row{display:table-row!important}.bootstrap-dark .d-sm-table-cell{display:table-cell!important}.bootstrap-dark .d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.bootstrap-dark .d-md-none{display:none!important}.bootstrap-dark .d-md-inline{display:inline!important}.bootstrap-dark .d-md-inline-block{display:inline-block!important}.bootstrap-dark .d-md-block{display:block!important}.bootstrap-dark .d-md-table{display:table!important}.bootstrap-dark .d-md-table-row{display:table-row!important}.bootstrap-dark .d-md-table-cell{display:table-cell!important}.bootstrap-dark .d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.bootstrap-dark .d-lg-none{display:none!important}.bootstrap-dark .d-lg-inline{display:inline!important}.bootstrap-dark .d-lg-inline-block{display:inline-block!important}.bootstrap-dark .d-lg-block{display:block!important}.bootstrap-dark .d-lg-table{display:table!important}.bootstrap-dark .d-lg-table-row{display:table-row!important}.bootstrap-dark .d-lg-table-cell{display:table-cell!important}.bootstrap-dark .d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.bootstrap-dark .d-xl-none{display:none!important}.bootstrap-dark .d-xl-inline{display:inline!important}.bootstrap-dark .d-xl-inline-block{display:inline-block!important}.bootstrap-dark .d-xl-block{display:block!important}.bootstrap-dark .d-xl-table{display:table!important}.bootstrap-dark .d-xl-table-row{display:table-row!important}.bootstrap-dark .d-xl-table-cell{display:table-cell!important}.bootstrap-dark .d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.bootstrap-dark .d-print-none{display:none!important}.bootstrap-dark .d-print-inline{display:inline!important}.bootstrap-dark .d-print-inline-block{display:inline-block!important}.bootstrap-dark .d-print-block{display:block!important}.bootstrap-dark .d-print-table{display:table!important}.bootstrap-dark .d-print-table-row{display:table-row!important}.bootstrap-dark .d-print-table-cell{display:table-cell!important}.bootstrap-dark .d-print-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-print-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.bootstrap-dark .embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.bootstrap-dark .embed-responsive::before{display:block;content:""}.bootstrap-dark .embed-responsive .embed-responsive-item,.bootstrap-dark .embed-responsive embed,.bootstrap-dark .embed-responsive iframe,.bootstrap-dark .embed-responsive object,.bootstrap-dark .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.bootstrap-dark .embed-responsive-21by9::before{padding-top:42.85714%}.bootstrap-dark .embed-responsive-16by9::before{padding-top:56.25%}.bootstrap-dark .embed-responsive-4by3::before{padding-top:75%}.bootstrap-dark .embed-responsive-1by1::before{padding-top:100%}.bootstrap-dark .flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.bootstrap-dark .flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-sm-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-sm-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-sm-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-sm-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-sm-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.bootstrap-dark .flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-md-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-md-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-md-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-md-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-md-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.bootstrap-dark .flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-lg-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-lg-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-lg-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-lg-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-lg-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.bootstrap-dark .flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-xl-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-xl-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-xl-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-xl-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-xl-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}.bootstrap-dark .float-left{float:left!important}.bootstrap-dark .float-right{float:right!important}.bootstrap-dark .float-none{float:none!important}@media (min-width:576px){.bootstrap-dark .float-sm-left{float:left!important}.bootstrap-dark .float-sm-right{float:right!important}.bootstrap-dark .float-sm-none{float:none!important}}@media (min-width:768px){.bootstrap-dark .float-md-left{float:left!important}.bootstrap-dark .float-md-right{float:right!important}.bootstrap-dark .float-md-none{float:none!important}}@media (min-width:992px){.bootstrap-dark .float-lg-left{float:left!important}.bootstrap-dark .float-lg-right{float:right!important}.bootstrap-dark .float-lg-none{float:none!important}}@media (min-width:1200px){.bootstrap-dark .float-xl-left{float:left!important}.bootstrap-dark .float-xl-right{float:right!important}.bootstrap-dark .float-xl-none{float:none!important}}.bootstrap-dark .overflow-auto{overflow:auto!important}.bootstrap-dark .overflow-hidden{overflow:hidden!important}.bootstrap-dark .position-static{position:static!important}.bootstrap-dark .position-relative{position:relative!important}.bootstrap-dark .position-absolute{position:absolute!important}.bootstrap-dark .position-fixed{position:fixed!important}.bootstrap-dark .position-sticky{position:-webkit-sticky!important;position:sticky!important}.bootstrap-dark .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.bootstrap-dark .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.bootstrap-dark .sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.bootstrap-dark .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.bootstrap-dark .sr-only-focusable:active,.bootstrap-dark .sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.bootstrap-dark .shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.bootstrap-dark .shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.bootstrap-dark .shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.bootstrap-dark .shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.bootstrap-dark .w-25{width:25%!important}.bootstrap-dark .w-50{width:50%!important}.bootstrap-dark .w-75{width:75%!important}.bootstrap-dark .w-100{width:100%!important}.bootstrap-dark .w-auto{width:auto!important}.bootstrap-dark .h-25{height:25%!important}.bootstrap-dark .h-50{height:50%!important}.bootstrap-dark .h-75{height:75%!important}.bootstrap-dark .h-100{height:100%!important}.bootstrap-dark .h-auto{height:auto!important}.bootstrap-dark .mw-100{max-width:100%!important}.bootstrap-dark .mh-100{max-height:100%!important}.bootstrap-dark .min-vw-100{min-width:100vw!important}.bootstrap-dark .min-vh-100{min-height:100vh!important}.bootstrap-dark .vw-100{width:100vw!important}.bootstrap-dark .vh-100{height:100vh!important}.bootstrap-dark .stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.bootstrap-dark .m-0{margin:0!important}.bootstrap-dark .mt-0,.bootstrap-dark .my-0{margin-top:0!important}.bootstrap-dark .mr-0,.bootstrap-dark .mx-0{margin-right:0!important}.bootstrap-dark .mb-0,.bootstrap-dark .my-0{margin-bottom:0!important}.bootstrap-dark .ml-0,.bootstrap-dark .mx-0{margin-left:0!important}.bootstrap-dark .m-1{margin:.25rem!important}.bootstrap-dark .mt-1,.bootstrap-dark .my-1{margin-top:.25rem!important}.bootstrap-dark .mr-1,.bootstrap-dark .mx-1{margin-right:.25rem!important}.bootstrap-dark .mb-1,.bootstrap-dark .my-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-1,.bootstrap-dark .mx-1{margin-left:.25rem!important}.bootstrap-dark .m-2{margin:.5rem!important}.bootstrap-dark .mt-2,.bootstrap-dark .my-2{margin-top:.5rem!important}.bootstrap-dark .mr-2,.bootstrap-dark .mx-2{margin-right:.5rem!important}.bootstrap-dark .mb-2,.bootstrap-dark .my-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-2,.bootstrap-dark .mx-2{margin-left:.5rem!important}.bootstrap-dark .m-3{margin:1rem!important}.bootstrap-dark .mt-3,.bootstrap-dark .my-3{margin-top:1rem!important}.bootstrap-dark .mr-3,.bootstrap-dark .mx-3{margin-right:1rem!important}.bootstrap-dark .mb-3,.bootstrap-dark .my-3{margin-bottom:1rem!important}.bootstrap-dark .ml-3,.bootstrap-dark .mx-3{margin-left:1rem!important}.bootstrap-dark .m-4{margin:1.5rem!important}.bootstrap-dark .mt-4,.bootstrap-dark .my-4{margin-top:1.5rem!important}.bootstrap-dark .mr-4,.bootstrap-dark .mx-4{margin-right:1.5rem!important}.bootstrap-dark .mb-4,.bootstrap-dark .my-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-4,.bootstrap-dark .mx-4{margin-left:1.5rem!important}.bootstrap-dark .m-5{margin:3rem!important}.bootstrap-dark .mt-5,.bootstrap-dark .my-5{margin-top:3rem!important}.bootstrap-dark .mr-5,.bootstrap-dark .mx-5{margin-right:3rem!important}.bootstrap-dark .mb-5,.bootstrap-dark .my-5{margin-bottom:3rem!important}.bootstrap-dark .ml-5,.bootstrap-dark .mx-5{margin-left:3rem!important}.bootstrap-dark .p-0{padding:0!important}.bootstrap-dark .pt-0,.bootstrap-dark .py-0{padding-top:0!important}.bootstrap-dark .pr-0,.bootstrap-dark .px-0{padding-right:0!important}.bootstrap-dark .pb-0,.bootstrap-dark .py-0{padding-bottom:0!important}.bootstrap-dark .pl-0,.bootstrap-dark .px-0{padding-left:0!important}.bootstrap-dark .p-1{padding:.25rem!important}.bootstrap-dark .pt-1,.bootstrap-dark .py-1{padding-top:.25rem!important}.bootstrap-dark .pr-1,.bootstrap-dark .px-1{padding-right:.25rem!important}.bootstrap-dark .pb-1,.bootstrap-dark .py-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-1,.bootstrap-dark .px-1{padding-left:.25rem!important}.bootstrap-dark .p-2{padding:.5rem!important}.bootstrap-dark .pt-2,.bootstrap-dark .py-2{padding-top:.5rem!important}.bootstrap-dark .pr-2,.bootstrap-dark .px-2{padding-right:.5rem!important}.bootstrap-dark .pb-2,.bootstrap-dark .py-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-2,.bootstrap-dark .px-2{padding-left:.5rem!important}.bootstrap-dark .p-3{padding:1rem!important}.bootstrap-dark .pt-3,.bootstrap-dark .py-3{padding-top:1rem!important}.bootstrap-dark .pr-3,.bootstrap-dark .px-3{padding-right:1rem!important}.bootstrap-dark .pb-3,.bootstrap-dark .py-3{padding-bottom:1rem!important}.bootstrap-dark .pl-3,.bootstrap-dark .px-3{padding-left:1rem!important}.bootstrap-dark .p-4{padding:1.5rem!important}.bootstrap-dark .pt-4,.bootstrap-dark .py-4{padding-top:1.5rem!important}.bootstrap-dark .pr-4,.bootstrap-dark .px-4{padding-right:1.5rem!important}.bootstrap-dark .pb-4,.bootstrap-dark .py-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-4,.bootstrap-dark .px-4{padding-left:1.5rem!important}.bootstrap-dark .p-5{padding:3rem!important}.bootstrap-dark .pt-5,.bootstrap-dark .py-5{padding-top:3rem!important}.bootstrap-dark .pr-5,.bootstrap-dark .px-5{padding-right:3rem!important}.bootstrap-dark .pb-5,.bootstrap-dark .py-5{padding-bottom:3rem!important}.bootstrap-dark .pl-5,.bootstrap-dark .px-5{padding-left:3rem!important}.bootstrap-dark .m-n1{margin:-.25rem!important}.bootstrap-dark .mt-n1,.bootstrap-dark .my-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-n1,.bootstrap-dark .mx-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-n1,.bootstrap-dark .my-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-n1,.bootstrap-dark .mx-n1{margin-left:-.25rem!important}.bootstrap-dark .m-n2{margin:-.5rem!important}.bootstrap-dark .mt-n2,.bootstrap-dark .my-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-n2,.bootstrap-dark .mx-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-n2,.bootstrap-dark .my-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-n2,.bootstrap-dark .mx-n2{margin-left:-.5rem!important}.bootstrap-dark .m-n3{margin:-1rem!important}.bootstrap-dark .mt-n3,.bootstrap-dark .my-n3{margin-top:-1rem!important}.bootstrap-dark .mr-n3,.bootstrap-dark .mx-n3{margin-right:-1rem!important}.bootstrap-dark .mb-n3,.bootstrap-dark .my-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-n3,.bootstrap-dark .mx-n3{margin-left:-1rem!important}.bootstrap-dark .m-n4{margin:-1.5rem!important}.bootstrap-dark .mt-n4,.bootstrap-dark .my-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-n4,.bootstrap-dark .mx-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-n4,.bootstrap-dark .my-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-n4,.bootstrap-dark .mx-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-n5{margin:-3rem!important}.bootstrap-dark .mt-n5,.bootstrap-dark .my-n5{margin-top:-3rem!important}.bootstrap-dark .mr-n5,.bootstrap-dark .mx-n5{margin-right:-3rem!important}.bootstrap-dark .mb-n5,.bootstrap-dark .my-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-n5,.bootstrap-dark .mx-n5{margin-left:-3rem!important}.bootstrap-dark .m-auto{margin:auto!important}.bootstrap-dark .mt-auto,.bootstrap-dark .my-auto{margin-top:auto!important}.bootstrap-dark .mr-auto,.bootstrap-dark .mx-auto{margin-right:auto!important}.bootstrap-dark .mb-auto,.bootstrap-dark .my-auto{margin-bottom:auto!important}.bootstrap-dark .ml-auto,.bootstrap-dark .mx-auto{margin-left:auto!important}@media (min-width:576px){.bootstrap-dark .m-sm-0{margin:0!important}.bootstrap-dark .mt-sm-0,.bootstrap-dark .my-sm-0{margin-top:0!important}.bootstrap-dark .mr-sm-0,.bootstrap-dark .mx-sm-0{margin-right:0!important}.bootstrap-dark .mb-sm-0,.bootstrap-dark .my-sm-0{margin-bottom:0!important}.bootstrap-dark .ml-sm-0,.bootstrap-dark .mx-sm-0{margin-left:0!important}.bootstrap-dark .m-sm-1{margin:.25rem!important}.bootstrap-dark .mt-sm-1,.bootstrap-dark .my-sm-1{margin-top:.25rem!important}.bootstrap-dark .mr-sm-1,.bootstrap-dark .mx-sm-1{margin-right:.25rem!important}.bootstrap-dark .mb-sm-1,.bootstrap-dark .my-sm-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-sm-1,.bootstrap-dark .mx-sm-1{margin-left:.25rem!important}.bootstrap-dark .m-sm-2{margin:.5rem!important}.bootstrap-dark .mt-sm-2,.bootstrap-dark .my-sm-2{margin-top:.5rem!important}.bootstrap-dark .mr-sm-2,.bootstrap-dark .mx-sm-2{margin-right:.5rem!important}.bootstrap-dark .mb-sm-2,.bootstrap-dark .my-sm-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-sm-2,.bootstrap-dark .mx-sm-2{margin-left:.5rem!important}.bootstrap-dark .m-sm-3{margin:1rem!important}.bootstrap-dark .mt-sm-3,.bootstrap-dark .my-sm-3{margin-top:1rem!important}.bootstrap-dark .mr-sm-3,.bootstrap-dark .mx-sm-3{margin-right:1rem!important}.bootstrap-dark .mb-sm-3,.bootstrap-dark .my-sm-3{margin-bottom:1rem!important}.bootstrap-dark .ml-sm-3,.bootstrap-dark .mx-sm-3{margin-left:1rem!important}.bootstrap-dark .m-sm-4{margin:1.5rem!important}.bootstrap-dark .mt-sm-4,.bootstrap-dark .my-sm-4{margin-top:1.5rem!important}.bootstrap-dark .mr-sm-4,.bootstrap-dark .mx-sm-4{margin-right:1.5rem!important}.bootstrap-dark .mb-sm-4,.bootstrap-dark .my-sm-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-sm-4,.bootstrap-dark .mx-sm-4{margin-left:1.5rem!important}.bootstrap-dark .m-sm-5{margin:3rem!important}.bootstrap-dark .mt-sm-5,.bootstrap-dark .my-sm-5{margin-top:3rem!important}.bootstrap-dark .mr-sm-5,.bootstrap-dark .mx-sm-5{margin-right:3rem!important}.bootstrap-dark .mb-sm-5,.bootstrap-dark .my-sm-5{margin-bottom:3rem!important}.bootstrap-dark .ml-sm-5,.bootstrap-dark .mx-sm-5{margin-left:3rem!important}.bootstrap-dark .p-sm-0{padding:0!important}.bootstrap-dark .pt-sm-0,.bootstrap-dark .py-sm-0{padding-top:0!important}.bootstrap-dark .pr-sm-0,.bootstrap-dark .px-sm-0{padding-right:0!important}.bootstrap-dark .pb-sm-0,.bootstrap-dark .py-sm-0{padding-bottom:0!important}.bootstrap-dark .pl-sm-0,.bootstrap-dark .px-sm-0{padding-left:0!important}.bootstrap-dark .p-sm-1{padding:.25rem!important}.bootstrap-dark .pt-sm-1,.bootstrap-dark .py-sm-1{padding-top:.25rem!important}.bootstrap-dark .pr-sm-1,.bootstrap-dark .px-sm-1{padding-right:.25rem!important}.bootstrap-dark .pb-sm-1,.bootstrap-dark .py-sm-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-sm-1,.bootstrap-dark .px-sm-1{padding-left:.25rem!important}.bootstrap-dark .p-sm-2{padding:.5rem!important}.bootstrap-dark .pt-sm-2,.bootstrap-dark .py-sm-2{padding-top:.5rem!important}.bootstrap-dark .pr-sm-2,.bootstrap-dark .px-sm-2{padding-right:.5rem!important}.bootstrap-dark .pb-sm-2,.bootstrap-dark .py-sm-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-sm-2,.bootstrap-dark .px-sm-2{padding-left:.5rem!important}.bootstrap-dark .p-sm-3{padding:1rem!important}.bootstrap-dark .pt-sm-3,.bootstrap-dark .py-sm-3{padding-top:1rem!important}.bootstrap-dark .pr-sm-3,.bootstrap-dark .px-sm-3{padding-right:1rem!important}.bootstrap-dark .pb-sm-3,.bootstrap-dark .py-sm-3{padding-bottom:1rem!important}.bootstrap-dark .pl-sm-3,.bootstrap-dark .px-sm-3{padding-left:1rem!important}.bootstrap-dark .p-sm-4{padding:1.5rem!important}.bootstrap-dark .pt-sm-4,.bootstrap-dark .py-sm-4{padding-top:1.5rem!important}.bootstrap-dark .pr-sm-4,.bootstrap-dark .px-sm-4{padding-right:1.5rem!important}.bootstrap-dark .pb-sm-4,.bootstrap-dark .py-sm-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-sm-4,.bootstrap-dark .px-sm-4{padding-left:1.5rem!important}.bootstrap-dark .p-sm-5{padding:3rem!important}.bootstrap-dark .pt-sm-5,.bootstrap-dark .py-sm-5{padding-top:3rem!important}.bootstrap-dark .pr-sm-5,.bootstrap-dark .px-sm-5{padding-right:3rem!important}.bootstrap-dark .pb-sm-5,.bootstrap-dark .py-sm-5{padding-bottom:3rem!important}.bootstrap-dark .pl-sm-5,.bootstrap-dark .px-sm-5{padding-left:3rem!important}.bootstrap-dark .m-sm-n1{margin:-.25rem!important}.bootstrap-dark .mt-sm-n1,.bootstrap-dark .my-sm-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-sm-n1,.bootstrap-dark .mx-sm-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-sm-n1,.bootstrap-dark .my-sm-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-sm-n1,.bootstrap-dark .mx-sm-n1{margin-left:-.25rem!important}.bootstrap-dark .m-sm-n2{margin:-.5rem!important}.bootstrap-dark .mt-sm-n2,.bootstrap-dark .my-sm-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-sm-n2,.bootstrap-dark .mx-sm-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-sm-n2,.bootstrap-dark .my-sm-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-sm-n2,.bootstrap-dark .mx-sm-n2{margin-left:-.5rem!important}.bootstrap-dark .m-sm-n3{margin:-1rem!important}.bootstrap-dark .mt-sm-n3,.bootstrap-dark .my-sm-n3{margin-top:-1rem!important}.bootstrap-dark .mr-sm-n3,.bootstrap-dark .mx-sm-n3{margin-right:-1rem!important}.bootstrap-dark .mb-sm-n3,.bootstrap-dark .my-sm-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-sm-n3,.bootstrap-dark .mx-sm-n3{margin-left:-1rem!important}.bootstrap-dark .m-sm-n4{margin:-1.5rem!important}.bootstrap-dark .mt-sm-n4,.bootstrap-dark .my-sm-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-sm-n4,.bootstrap-dark .mx-sm-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-sm-n4,.bootstrap-dark .my-sm-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-sm-n4,.bootstrap-dark .mx-sm-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-sm-n5{margin:-3rem!important}.bootstrap-dark .mt-sm-n5,.bootstrap-dark .my-sm-n5{margin-top:-3rem!important}.bootstrap-dark .mr-sm-n5,.bootstrap-dark .mx-sm-n5{margin-right:-3rem!important}.bootstrap-dark .mb-sm-n5,.bootstrap-dark .my-sm-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-sm-n5,.bootstrap-dark .mx-sm-n5{margin-left:-3rem!important}.bootstrap-dark .m-sm-auto{margin:auto!important}.bootstrap-dark .mt-sm-auto,.bootstrap-dark .my-sm-auto{margin-top:auto!important}.bootstrap-dark .mr-sm-auto,.bootstrap-dark .mx-sm-auto{margin-right:auto!important}.bootstrap-dark .mb-sm-auto,.bootstrap-dark .my-sm-auto{margin-bottom:auto!important}.bootstrap-dark .ml-sm-auto,.bootstrap-dark .mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.bootstrap-dark .m-md-0{margin:0!important}.bootstrap-dark .mt-md-0,.bootstrap-dark .my-md-0{margin-top:0!important}.bootstrap-dark .mr-md-0,.bootstrap-dark .mx-md-0{margin-right:0!important}.bootstrap-dark .mb-md-0,.bootstrap-dark .my-md-0{margin-bottom:0!important}.bootstrap-dark .ml-md-0,.bootstrap-dark .mx-md-0{margin-left:0!important}.bootstrap-dark .m-md-1{margin:.25rem!important}.bootstrap-dark .mt-md-1,.bootstrap-dark .my-md-1{margin-top:.25rem!important}.bootstrap-dark .mr-md-1,.bootstrap-dark .mx-md-1{margin-right:.25rem!important}.bootstrap-dark .mb-md-1,.bootstrap-dark .my-md-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-md-1,.bootstrap-dark .mx-md-1{margin-left:.25rem!important}.bootstrap-dark .m-md-2{margin:.5rem!important}.bootstrap-dark .mt-md-2,.bootstrap-dark .my-md-2{margin-top:.5rem!important}.bootstrap-dark .mr-md-2,.bootstrap-dark .mx-md-2{margin-right:.5rem!important}.bootstrap-dark .mb-md-2,.bootstrap-dark .my-md-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-md-2,.bootstrap-dark .mx-md-2{margin-left:.5rem!important}.bootstrap-dark .m-md-3{margin:1rem!important}.bootstrap-dark .mt-md-3,.bootstrap-dark .my-md-3{margin-top:1rem!important}.bootstrap-dark .mr-md-3,.bootstrap-dark .mx-md-3{margin-right:1rem!important}.bootstrap-dark .mb-md-3,.bootstrap-dark .my-md-3{margin-bottom:1rem!important}.bootstrap-dark .ml-md-3,.bootstrap-dark .mx-md-3{margin-left:1rem!important}.bootstrap-dark .m-md-4{margin:1.5rem!important}.bootstrap-dark .mt-md-4,.bootstrap-dark .my-md-4{margin-top:1.5rem!important}.bootstrap-dark .mr-md-4,.bootstrap-dark .mx-md-4{margin-right:1.5rem!important}.bootstrap-dark .mb-md-4,.bootstrap-dark .my-md-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-md-4,.bootstrap-dark .mx-md-4{margin-left:1.5rem!important}.bootstrap-dark .m-md-5{margin:3rem!important}.bootstrap-dark .mt-md-5,.bootstrap-dark .my-md-5{margin-top:3rem!important}.bootstrap-dark .mr-md-5,.bootstrap-dark .mx-md-5{margin-right:3rem!important}.bootstrap-dark .mb-md-5,.bootstrap-dark .my-md-5{margin-bottom:3rem!important}.bootstrap-dark .ml-md-5,.bootstrap-dark .mx-md-5{margin-left:3rem!important}.bootstrap-dark .p-md-0{padding:0!important}.bootstrap-dark .pt-md-0,.bootstrap-dark .py-md-0{padding-top:0!important}.bootstrap-dark .pr-md-0,.bootstrap-dark .px-md-0{padding-right:0!important}.bootstrap-dark .pb-md-0,.bootstrap-dark .py-md-0{padding-bottom:0!important}.bootstrap-dark .pl-md-0,.bootstrap-dark .px-md-0{padding-left:0!important}.bootstrap-dark .p-md-1{padding:.25rem!important}.bootstrap-dark .pt-md-1,.bootstrap-dark .py-md-1{padding-top:.25rem!important}.bootstrap-dark .pr-md-1,.bootstrap-dark .px-md-1{padding-right:.25rem!important}.bootstrap-dark .pb-md-1,.bootstrap-dark .py-md-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-md-1,.bootstrap-dark .px-md-1{padding-left:.25rem!important}.bootstrap-dark .p-md-2{padding:.5rem!important}.bootstrap-dark .pt-md-2,.bootstrap-dark .py-md-2{padding-top:.5rem!important}.bootstrap-dark .pr-md-2,.bootstrap-dark .px-md-2{padding-right:.5rem!important}.bootstrap-dark .pb-md-2,.bootstrap-dark .py-md-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-md-2,.bootstrap-dark .px-md-2{padding-left:.5rem!important}.bootstrap-dark .p-md-3{padding:1rem!important}.bootstrap-dark .pt-md-3,.bootstrap-dark .py-md-3{padding-top:1rem!important}.bootstrap-dark .pr-md-3,.bootstrap-dark .px-md-3{padding-right:1rem!important}.bootstrap-dark .pb-md-3,.bootstrap-dark .py-md-3{padding-bottom:1rem!important}.bootstrap-dark .pl-md-3,.bootstrap-dark .px-md-3{padding-left:1rem!important}.bootstrap-dark .p-md-4{padding:1.5rem!important}.bootstrap-dark .pt-md-4,.bootstrap-dark .py-md-4{padding-top:1.5rem!important}.bootstrap-dark .pr-md-4,.bootstrap-dark .px-md-4{padding-right:1.5rem!important}.bootstrap-dark .pb-md-4,.bootstrap-dark .py-md-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-md-4,.bootstrap-dark .px-md-4{padding-left:1.5rem!important}.bootstrap-dark .p-md-5{padding:3rem!important}.bootstrap-dark .pt-md-5,.bootstrap-dark .py-md-5{padding-top:3rem!important}.bootstrap-dark .pr-md-5,.bootstrap-dark .px-md-5{padding-right:3rem!important}.bootstrap-dark .pb-md-5,.bootstrap-dark .py-md-5{padding-bottom:3rem!important}.bootstrap-dark .pl-md-5,.bootstrap-dark .px-md-5{padding-left:3rem!important}.bootstrap-dark .m-md-n1{margin:-.25rem!important}.bootstrap-dark .mt-md-n1,.bootstrap-dark .my-md-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-md-n1,.bootstrap-dark .mx-md-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-md-n1,.bootstrap-dark .my-md-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-md-n1,.bootstrap-dark .mx-md-n1{margin-left:-.25rem!important}.bootstrap-dark .m-md-n2{margin:-.5rem!important}.bootstrap-dark .mt-md-n2,.bootstrap-dark .my-md-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-md-n2,.bootstrap-dark .mx-md-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-md-n2,.bootstrap-dark .my-md-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-md-n2,.bootstrap-dark .mx-md-n2{margin-left:-.5rem!important}.bootstrap-dark .m-md-n3{margin:-1rem!important}.bootstrap-dark .mt-md-n3,.bootstrap-dark .my-md-n3{margin-top:-1rem!important}.bootstrap-dark .mr-md-n3,.bootstrap-dark .mx-md-n3{margin-right:-1rem!important}.bootstrap-dark .mb-md-n3,.bootstrap-dark .my-md-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-md-n3,.bootstrap-dark .mx-md-n3{margin-left:-1rem!important}.bootstrap-dark .m-md-n4{margin:-1.5rem!important}.bootstrap-dark .mt-md-n4,.bootstrap-dark .my-md-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-md-n4,.bootstrap-dark .mx-md-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-md-n4,.bootstrap-dark .my-md-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-md-n4,.bootstrap-dark .mx-md-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-md-n5{margin:-3rem!important}.bootstrap-dark .mt-md-n5,.bootstrap-dark .my-md-n5{margin-top:-3rem!important}.bootstrap-dark .mr-md-n5,.bootstrap-dark .mx-md-n5{margin-right:-3rem!important}.bootstrap-dark .mb-md-n5,.bootstrap-dark .my-md-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-md-n5,.bootstrap-dark .mx-md-n5{margin-left:-3rem!important}.bootstrap-dark .m-md-auto{margin:auto!important}.bootstrap-dark .mt-md-auto,.bootstrap-dark .my-md-auto{margin-top:auto!important}.bootstrap-dark .mr-md-auto,.bootstrap-dark .mx-md-auto{margin-right:auto!important}.bootstrap-dark .mb-md-auto,.bootstrap-dark .my-md-auto{margin-bottom:auto!important}.bootstrap-dark .ml-md-auto,.bootstrap-dark .mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.bootstrap-dark .m-lg-0{margin:0!important}.bootstrap-dark .mt-lg-0,.bootstrap-dark .my-lg-0{margin-top:0!important}.bootstrap-dark .mr-lg-0,.bootstrap-dark .mx-lg-0{margin-right:0!important}.bootstrap-dark .mb-lg-0,.bootstrap-dark .my-lg-0{margin-bottom:0!important}.bootstrap-dark .ml-lg-0,.bootstrap-dark .mx-lg-0{margin-left:0!important}.bootstrap-dark .m-lg-1{margin:.25rem!important}.bootstrap-dark .mt-lg-1,.bootstrap-dark .my-lg-1{margin-top:.25rem!important}.bootstrap-dark .mr-lg-1,.bootstrap-dark .mx-lg-1{margin-right:.25rem!important}.bootstrap-dark .mb-lg-1,.bootstrap-dark .my-lg-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-lg-1,.bootstrap-dark .mx-lg-1{margin-left:.25rem!important}.bootstrap-dark .m-lg-2{margin:.5rem!important}.bootstrap-dark .mt-lg-2,.bootstrap-dark .my-lg-2{margin-top:.5rem!important}.bootstrap-dark .mr-lg-2,.bootstrap-dark .mx-lg-2{margin-right:.5rem!important}.bootstrap-dark .mb-lg-2,.bootstrap-dark .my-lg-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-lg-2,.bootstrap-dark .mx-lg-2{margin-left:.5rem!important}.bootstrap-dark .m-lg-3{margin:1rem!important}.bootstrap-dark .mt-lg-3,.bootstrap-dark .my-lg-3{margin-top:1rem!important}.bootstrap-dark .mr-lg-3,.bootstrap-dark .mx-lg-3{margin-right:1rem!important}.bootstrap-dark .mb-lg-3,.bootstrap-dark .my-lg-3{margin-bottom:1rem!important}.bootstrap-dark .ml-lg-3,.bootstrap-dark .mx-lg-3{margin-left:1rem!important}.bootstrap-dark .m-lg-4{margin:1.5rem!important}.bootstrap-dark .mt-lg-4,.bootstrap-dark .my-lg-4{margin-top:1.5rem!important}.bootstrap-dark .mr-lg-4,.bootstrap-dark .mx-lg-4{margin-right:1.5rem!important}.bootstrap-dark .mb-lg-4,.bootstrap-dark .my-lg-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-lg-4,.bootstrap-dark .mx-lg-4{margin-left:1.5rem!important}.bootstrap-dark .m-lg-5{margin:3rem!important}.bootstrap-dark .mt-lg-5,.bootstrap-dark .my-lg-5{margin-top:3rem!important}.bootstrap-dark .mr-lg-5,.bootstrap-dark .mx-lg-5{margin-right:3rem!important}.bootstrap-dark .mb-lg-5,.bootstrap-dark .my-lg-5{margin-bottom:3rem!important}.bootstrap-dark .ml-lg-5,.bootstrap-dark .mx-lg-5{margin-left:3rem!important}.bootstrap-dark .p-lg-0{padding:0!important}.bootstrap-dark .pt-lg-0,.bootstrap-dark .py-lg-0{padding-top:0!important}.bootstrap-dark .pr-lg-0,.bootstrap-dark .px-lg-0{padding-right:0!important}.bootstrap-dark .pb-lg-0,.bootstrap-dark .py-lg-0{padding-bottom:0!important}.bootstrap-dark .pl-lg-0,.bootstrap-dark .px-lg-0{padding-left:0!important}.bootstrap-dark .p-lg-1{padding:.25rem!important}.bootstrap-dark .pt-lg-1,.bootstrap-dark .py-lg-1{padding-top:.25rem!important}.bootstrap-dark .pr-lg-1,.bootstrap-dark .px-lg-1{padding-right:.25rem!important}.bootstrap-dark .pb-lg-1,.bootstrap-dark .py-lg-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-lg-1,.bootstrap-dark .px-lg-1{padding-left:.25rem!important}.bootstrap-dark .p-lg-2{padding:.5rem!important}.bootstrap-dark .pt-lg-2,.bootstrap-dark .py-lg-2{padding-top:.5rem!important}.bootstrap-dark .pr-lg-2,.bootstrap-dark .px-lg-2{padding-right:.5rem!important}.bootstrap-dark .pb-lg-2,.bootstrap-dark .py-lg-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-lg-2,.bootstrap-dark .px-lg-2{padding-left:.5rem!important}.bootstrap-dark .p-lg-3{padding:1rem!important}.bootstrap-dark .pt-lg-3,.bootstrap-dark .py-lg-3{padding-top:1rem!important}.bootstrap-dark .pr-lg-3,.bootstrap-dark .px-lg-3{padding-right:1rem!important}.bootstrap-dark .pb-lg-3,.bootstrap-dark .py-lg-3{padding-bottom:1rem!important}.bootstrap-dark .pl-lg-3,.bootstrap-dark .px-lg-3{padding-left:1rem!important}.bootstrap-dark .p-lg-4{padding:1.5rem!important}.bootstrap-dark .pt-lg-4,.bootstrap-dark .py-lg-4{padding-top:1.5rem!important}.bootstrap-dark .pr-lg-4,.bootstrap-dark .px-lg-4{padding-right:1.5rem!important}.bootstrap-dark .pb-lg-4,.bootstrap-dark .py-lg-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-lg-4,.bootstrap-dark .px-lg-4{padding-left:1.5rem!important}.bootstrap-dark .p-lg-5{padding:3rem!important}.bootstrap-dark .pt-lg-5,.bootstrap-dark .py-lg-5{padding-top:3rem!important}.bootstrap-dark .pr-lg-5,.bootstrap-dark .px-lg-5{padding-right:3rem!important}.bootstrap-dark .pb-lg-5,.bootstrap-dark .py-lg-5{padding-bottom:3rem!important}.bootstrap-dark .pl-lg-5,.bootstrap-dark .px-lg-5{padding-left:3rem!important}.bootstrap-dark .m-lg-n1{margin:-.25rem!important}.bootstrap-dark .mt-lg-n1,.bootstrap-dark .my-lg-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-lg-n1,.bootstrap-dark .mx-lg-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-lg-n1,.bootstrap-dark .my-lg-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-lg-n1,.bootstrap-dark .mx-lg-n1{margin-left:-.25rem!important}.bootstrap-dark .m-lg-n2{margin:-.5rem!important}.bootstrap-dark .mt-lg-n2,.bootstrap-dark .my-lg-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-lg-n2,.bootstrap-dark .mx-lg-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-lg-n2,.bootstrap-dark .my-lg-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-lg-n2,.bootstrap-dark .mx-lg-n2{margin-left:-.5rem!important}.bootstrap-dark .m-lg-n3{margin:-1rem!important}.bootstrap-dark .mt-lg-n3,.bootstrap-dark .my-lg-n3{margin-top:-1rem!important}.bootstrap-dark .mr-lg-n3,.bootstrap-dark .mx-lg-n3{margin-right:-1rem!important}.bootstrap-dark .mb-lg-n3,.bootstrap-dark .my-lg-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-lg-n3,.bootstrap-dark .mx-lg-n3{margin-left:-1rem!important}.bootstrap-dark .m-lg-n4{margin:-1.5rem!important}.bootstrap-dark .mt-lg-n4,.bootstrap-dark .my-lg-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-lg-n4,.bootstrap-dark .mx-lg-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-lg-n4,.bootstrap-dark .my-lg-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-lg-n4,.bootstrap-dark .mx-lg-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-lg-n5{margin:-3rem!important}.bootstrap-dark .mt-lg-n5,.bootstrap-dark .my-lg-n5{margin-top:-3rem!important}.bootstrap-dark .mr-lg-n5,.bootstrap-dark .mx-lg-n5{margin-right:-3rem!important}.bootstrap-dark .mb-lg-n5,.bootstrap-dark .my-lg-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-lg-n5,.bootstrap-dark .mx-lg-n5{margin-left:-3rem!important}.bootstrap-dark .m-lg-auto{margin:auto!important}.bootstrap-dark .mt-lg-auto,.bootstrap-dark .my-lg-auto{margin-top:auto!important}.bootstrap-dark .mr-lg-auto,.bootstrap-dark .mx-lg-auto{margin-right:auto!important}.bootstrap-dark .mb-lg-auto,.bootstrap-dark .my-lg-auto{margin-bottom:auto!important}.bootstrap-dark .ml-lg-auto,.bootstrap-dark .mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.bootstrap-dark .m-xl-0{margin:0!important}.bootstrap-dark .mt-xl-0,.bootstrap-dark .my-xl-0{margin-top:0!important}.bootstrap-dark .mr-xl-0,.bootstrap-dark .mx-xl-0{margin-right:0!important}.bootstrap-dark .mb-xl-0,.bootstrap-dark .my-xl-0{margin-bottom:0!important}.bootstrap-dark .ml-xl-0,.bootstrap-dark .mx-xl-0{margin-left:0!important}.bootstrap-dark .m-xl-1{margin:.25rem!important}.bootstrap-dark .mt-xl-1,.bootstrap-dark .my-xl-1{margin-top:.25rem!important}.bootstrap-dark .mr-xl-1,.bootstrap-dark .mx-xl-1{margin-right:.25rem!important}.bootstrap-dark .mb-xl-1,.bootstrap-dark .my-xl-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-xl-1,.bootstrap-dark .mx-xl-1{margin-left:.25rem!important}.bootstrap-dark .m-xl-2{margin:.5rem!important}.bootstrap-dark .mt-xl-2,.bootstrap-dark .my-xl-2{margin-top:.5rem!important}.bootstrap-dark .mr-xl-2,.bootstrap-dark .mx-xl-2{margin-right:.5rem!important}.bootstrap-dark .mb-xl-2,.bootstrap-dark .my-xl-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-xl-2,.bootstrap-dark .mx-xl-2{margin-left:.5rem!important}.bootstrap-dark .m-xl-3{margin:1rem!important}.bootstrap-dark .mt-xl-3,.bootstrap-dark .my-xl-3{margin-top:1rem!important}.bootstrap-dark .mr-xl-3,.bootstrap-dark .mx-xl-3{margin-right:1rem!important}.bootstrap-dark .mb-xl-3,.bootstrap-dark .my-xl-3{margin-bottom:1rem!important}.bootstrap-dark .ml-xl-3,.bootstrap-dark .mx-xl-3{margin-left:1rem!important}.bootstrap-dark .m-xl-4{margin:1.5rem!important}.bootstrap-dark .mt-xl-4,.bootstrap-dark .my-xl-4{margin-top:1.5rem!important}.bootstrap-dark .mr-xl-4,.bootstrap-dark .mx-xl-4{margin-right:1.5rem!important}.bootstrap-dark .mb-xl-4,.bootstrap-dark .my-xl-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-xl-4,.bootstrap-dark .mx-xl-4{margin-left:1.5rem!important}.bootstrap-dark .m-xl-5{margin:3rem!important}.bootstrap-dark .mt-xl-5,.bootstrap-dark .my-xl-5{margin-top:3rem!important}.bootstrap-dark .mr-xl-5,.bootstrap-dark .mx-xl-5{margin-right:3rem!important}.bootstrap-dark .mb-xl-5,.bootstrap-dark .my-xl-5{margin-bottom:3rem!important}.bootstrap-dark .ml-xl-5,.bootstrap-dark .mx-xl-5{margin-left:3rem!important}.bootstrap-dark .p-xl-0{padding:0!important}.bootstrap-dark .pt-xl-0,.bootstrap-dark .py-xl-0{padding-top:0!important}.bootstrap-dark .pr-xl-0,.bootstrap-dark .px-xl-0{padding-right:0!important}.bootstrap-dark .pb-xl-0,.bootstrap-dark .py-xl-0{padding-bottom:0!important}.bootstrap-dark .pl-xl-0,.bootstrap-dark .px-xl-0{padding-left:0!important}.bootstrap-dark .p-xl-1{padding:.25rem!important}.bootstrap-dark .pt-xl-1,.bootstrap-dark .py-xl-1{padding-top:.25rem!important}.bootstrap-dark .pr-xl-1,.bootstrap-dark .px-xl-1{padding-right:.25rem!important}.bootstrap-dark .pb-xl-1,.bootstrap-dark .py-xl-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-xl-1,.bootstrap-dark .px-xl-1{padding-left:.25rem!important}.bootstrap-dark .p-xl-2{padding:.5rem!important}.bootstrap-dark .pt-xl-2,.bootstrap-dark .py-xl-2{padding-top:.5rem!important}.bootstrap-dark .pr-xl-2,.bootstrap-dark .px-xl-2{padding-right:.5rem!important}.bootstrap-dark .pb-xl-2,.bootstrap-dark .py-xl-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-xl-2,.bootstrap-dark .px-xl-2{padding-left:.5rem!important}.bootstrap-dark .p-xl-3{padding:1rem!important}.bootstrap-dark .pt-xl-3,.bootstrap-dark .py-xl-3{padding-top:1rem!important}.bootstrap-dark .pr-xl-3,.bootstrap-dark .px-xl-3{padding-right:1rem!important}.bootstrap-dark .pb-xl-3,.bootstrap-dark .py-xl-3{padding-bottom:1rem!important}.bootstrap-dark .pl-xl-3,.bootstrap-dark .px-xl-3{padding-left:1rem!important}.bootstrap-dark .p-xl-4{padding:1.5rem!important}.bootstrap-dark .pt-xl-4,.bootstrap-dark .py-xl-4{padding-top:1.5rem!important}.bootstrap-dark .pr-xl-4,.bootstrap-dark .px-xl-4{padding-right:1.5rem!important}.bootstrap-dark .pb-xl-4,.bootstrap-dark .py-xl-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-xl-4,.bootstrap-dark .px-xl-4{padding-left:1.5rem!important}.bootstrap-dark .p-xl-5{padding:3rem!important}.bootstrap-dark .pt-xl-5,.bootstrap-dark .py-xl-5{padding-top:3rem!important}.bootstrap-dark .pr-xl-5,.bootstrap-dark .px-xl-5{padding-right:3rem!important}.bootstrap-dark .pb-xl-5,.bootstrap-dark .py-xl-5{padding-bottom:3rem!important}.bootstrap-dark .pl-xl-5,.bootstrap-dark .px-xl-5{padding-left:3rem!important}.bootstrap-dark .m-xl-n1{margin:-.25rem!important}.bootstrap-dark .mt-xl-n1,.bootstrap-dark .my-xl-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-xl-n1,.bootstrap-dark .mx-xl-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-xl-n1,.bootstrap-dark .my-xl-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-xl-n1,.bootstrap-dark .mx-xl-n1{margin-left:-.25rem!important}.bootstrap-dark .m-xl-n2{margin:-.5rem!important}.bootstrap-dark .mt-xl-n2,.bootstrap-dark .my-xl-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-xl-n2,.bootstrap-dark .mx-xl-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-xl-n2,.bootstrap-dark .my-xl-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-xl-n2,.bootstrap-dark .mx-xl-n2{margin-left:-.5rem!important}.bootstrap-dark .m-xl-n3{margin:-1rem!important}.bootstrap-dark .mt-xl-n3,.bootstrap-dark .my-xl-n3{margin-top:-1rem!important}.bootstrap-dark .mr-xl-n3,.bootstrap-dark .mx-xl-n3{margin-right:-1rem!important}.bootstrap-dark .mb-xl-n3,.bootstrap-dark .my-xl-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-xl-n3,.bootstrap-dark .mx-xl-n3{margin-left:-1rem!important}.bootstrap-dark .m-xl-n4{margin:-1.5rem!important}.bootstrap-dark .mt-xl-n4,.bootstrap-dark .my-xl-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-xl-n4,.bootstrap-dark .mx-xl-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-xl-n4,.bootstrap-dark .my-xl-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-xl-n4,.bootstrap-dark .mx-xl-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-xl-n5{margin:-3rem!important}.bootstrap-dark .mt-xl-n5,.bootstrap-dark .my-xl-n5{margin-top:-3rem!important}.bootstrap-dark .mr-xl-n5,.bootstrap-dark .mx-xl-n5{margin-right:-3rem!important}.bootstrap-dark .mb-xl-n5,.bootstrap-dark .my-xl-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-xl-n5,.bootstrap-dark .mx-xl-n5{margin-left:-3rem!important}.bootstrap-dark .m-xl-auto{margin:auto!important}.bootstrap-dark .mt-xl-auto,.bootstrap-dark .my-xl-auto{margin-top:auto!important}.bootstrap-dark .mr-xl-auto,.bootstrap-dark .mx-xl-auto{margin-right:auto!important}.bootstrap-dark .mb-xl-auto,.bootstrap-dark .my-xl-auto{margin-bottom:auto!important}.bootstrap-dark .ml-xl-auto,.bootstrap-dark .mx-xl-auto{margin-left:auto!important}}.bootstrap-dark .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.bootstrap-dark .text-justify{text-align:justify!important}.bootstrap-dark .text-wrap{white-space:normal!important}.bootstrap-dark .text-nowrap{white-space:nowrap!important}.bootstrap-dark .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-dark .text-left{text-align:left!important}.bootstrap-dark .text-right{text-align:right!important}.bootstrap-dark .text-center{text-align:center!important}@media (min-width:576px){.bootstrap-dark .text-sm-left{text-align:left!important}.bootstrap-dark .text-sm-right{text-align:right!important}.bootstrap-dark .text-sm-center{text-align:center!important}}@media (min-width:768px){.bootstrap-dark .text-md-left{text-align:left!important}.bootstrap-dark .text-md-right{text-align:right!important}.bootstrap-dark .text-md-center{text-align:center!important}}@media (min-width:992px){.bootstrap-dark .text-lg-left{text-align:left!important}.bootstrap-dark .text-lg-right{text-align:right!important}.bootstrap-dark .text-lg-center{text-align:center!important}}@media (min-width:1200px){.bootstrap-dark .text-xl-left{text-align:left!important}.bootstrap-dark .text-xl-right{text-align:right!important}.bootstrap-dark .text-xl-center{text-align:center!important}}.bootstrap-dark .text-lowercase{text-transform:lowercase!important}.bootstrap-dark .text-uppercase{text-transform:uppercase!important}.bootstrap-dark .text-capitalize{text-transform:capitalize!important}.bootstrap-dark .font-weight-light{font-weight:300!important}.bootstrap-dark .font-weight-lighter{font-weight:lighter!important}.bootstrap-dark .font-weight-normal{font-weight:400!important}.bootstrap-dark .font-weight-bold{font-weight:700!important}.bootstrap-dark .font-weight-bolder{font-weight:bolder!important}.bootstrap-dark .font-italic{font-style:italic!important}.bootstrap-dark .text-white{color:#fff!important}.bootstrap-dark .text-primary{color:#007bff!important}.bootstrap-dark a.text-primary:focus,.bootstrap-dark a.text-primary:hover{color:#0056b3!important}.bootstrap-dark .text-secondary{color:#6c757d!important}.bootstrap-dark a.text-secondary:focus,.bootstrap-dark a.text-secondary:hover{color:#494f54!important}.bootstrap-dark .text-success{color:#28a745!important}.bootstrap-dark a.text-success:focus,.bootstrap-dark a.text-success:hover{color:#19692c!important}.bootstrap-dark .text-info{color:#17a2b8!important}.bootstrap-dark a.text-info:focus,.bootstrap-dark a.text-info:hover{color:#0f6674!important}.bootstrap-dark .text-warning{color:#ffc107!important}.bootstrap-dark a.text-warning:focus,.bootstrap-dark a.text-warning:hover{color:#ba8b00!important}.bootstrap-dark .text-danger{color:#dc3545!important}.bootstrap-dark a.text-danger:focus,.bootstrap-dark a.text-danger:hover{color:#a71d2a!important}.bootstrap-dark .text-light{color:#f8f9fa!important}.bootstrap-dark a.text-light:focus,.bootstrap-dark a.text-light:hover{color:#cbd3da!important}.bootstrap-dark .text-dark{color:#343a40!important}.bootstrap-dark a.text-dark:focus,.bootstrap-dark a.text-dark:hover{color:#121416!important}.bootstrap-dark .text-body{color:#d3d3d3!important}.bootstrap-dark .text-muted{color:#6c757d!important}.bootstrap-dark .text-black-50{color:rgba(0,0,0,.5)!important}.bootstrap-dark .text-white-50{color:rgba(255,255,255,.5)!important}.bootstrap-dark .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.bootstrap-dark .text-decoration-none{text-decoration:none!important}.bootstrap-dark .text-break{word-break:break-word!important;overflow-wrap:break-word!important}.bootstrap-dark .text-reset{color:inherit!important}.bootstrap-dark .visible{visibility:visible!important}.bootstrap-dark .invisible{visibility:hidden!important}.bootstrap-dark p a{text-decoration:underline}.bootstrap-dark hr{border-top:1px solid #495057} diff --git a/docs/content/toggle-bootstrap.min.css b/docs/content/toggle-bootstrap.min.css deleted file mode 100644 index 6ba4734..0000000 --- a/docs/content/toggle-bootstrap.min.css +++ /dev/null @@ -1 +0,0 @@ -body.bootstrap{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}.bootstrap :root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.bootstrap *,.bootstrap ::after,.bootstrap ::before{-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.bootstrap article,.bootstrap aside,.bootstrap figcaption,.bootstrap figure,.bootstrap footer,.bootstrap header,.bootstrap hgroup,.bootstrap main,.bootstrap nav,.bootstrap section{display:block}.bootstrap body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}.bootstrap [tabindex="-1"]:focus:not(:focus-visible){outline:0!important}.bootstrap hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}.bootstrap h1,.bootstrap h2,.bootstrap h3,.bootstrap h4,.bootstrap h5,.bootstrap h6{margin-top:0;margin-bottom:.5rem}.bootstrap p{margin-top:0;margin-bottom:1rem}.bootstrap abbr[data-original-title],.bootstrap abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}.bootstrap address{margin-bottom:1rem;font-style:normal;line-height:inherit}.bootstrap dl,.bootstrap ol,.bootstrap ul{margin-top:0;margin-bottom:1rem}.bootstrap ol ol,.bootstrap ol ul,.bootstrap ul ol,.bootstrap ul ul{margin-bottom:0}.bootstrap dt{font-weight:700}.bootstrap dd{margin-bottom:.5rem;margin-left:0}.bootstrap blockquote{margin:0 0 1rem}.bootstrap b,.bootstrap strong{font-weight:bolder}.bootstrap small{font-size:80%}.bootstrap sub,.bootstrap sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.bootstrap sub{bottom:-.25em}.bootstrap sup{top:-.5em}.bootstrap a{color:#007bff;text-decoration:none;background-color:transparent}.bootstrap a:hover{color:#0056b3;text-decoration:underline}.bootstrap a:not([href]){color:inherit;text-decoration:none}.bootstrap a:not([href]):hover{color:inherit;text-decoration:none}.bootstrap code,.bootstrap kbd,.bootstrap pre,.bootstrap samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}.bootstrap pre{margin-top:0;margin-bottom:1rem;overflow:auto}.bootstrap figure{margin:0 0 1rem}.bootstrap img{vertical-align:middle;border-style:none}.bootstrap svg{overflow:hidden;vertical-align:middle}.bootstrap table{border-collapse:collapse}.bootstrap caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}.bootstrap th{text-align:inherit}.bootstrap label{display:inline-block;margin-bottom:.5rem}.bootstrap button{border-radius:0}.bootstrap button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.bootstrap button,.bootstrap input,.bootstrap optgroup,.bootstrap select,.bootstrap textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.bootstrap button,.bootstrap input{overflow:visible}.bootstrap button,.bootstrap select{text-transform:none}.bootstrap select{word-wrap:normal}.bootstrap [type=button],.bootstrap [type=reset],.bootstrap [type=submit],.bootstrap button{-webkit-appearance:button}.bootstrap [type=button]:not(:disabled),.bootstrap [type=reset]:not(:disabled),.bootstrap [type=submit]:not(:disabled),.bootstrap button:not(:disabled){cursor:pointer}.bootstrap [type=button]::-moz-focus-inner,.bootstrap [type=reset]::-moz-focus-inner,.bootstrap [type=submit]::-moz-focus-inner,.bootstrap button::-moz-focus-inner{padding:0;border-style:none}.bootstrap input[type=checkbox],.bootstrap input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}.bootstrap input[type=date],.bootstrap input[type=datetime-local],.bootstrap input[type=month],.bootstrap input[type=time]{-webkit-appearance:listbox}.bootstrap textarea{overflow:auto;resize:vertical}.bootstrap fieldset{min-width:0;padding:0;margin:0;border:0}.bootstrap legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}.bootstrap progress{vertical-align:baseline}.bootstrap [type=number]::-webkit-inner-spin-button,.bootstrap [type=number]::-webkit-outer-spin-button{height:auto}.bootstrap [type=search]{outline-offset:-2px;-webkit-appearance:none}.bootstrap [type=search]::-webkit-search-decoration{-webkit-appearance:none}.bootstrap ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.bootstrap output{display:inline-block}.bootstrap summary{display:list-item;cursor:pointer}.bootstrap template{display:none}.bootstrap [hidden]{display:none!important}.bootstrap .h1,.bootstrap .h2,.bootstrap .h3,.bootstrap .h4,.bootstrap .h5,.bootstrap .h6,.bootstrap h1,.bootstrap h2,.bootstrap h3,.bootstrap h4,.bootstrap h5,.bootstrap h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.bootstrap .h1,.bootstrap h1{font-size:2.5rem}.bootstrap .h2,.bootstrap h2{font-size:2rem}.bootstrap .h3,.bootstrap h3{font-size:1.75rem}.bootstrap .h4,.bootstrap h4{font-size:1.5rem}.bootstrap .h5,.bootstrap h5{font-size:1.25rem}.bootstrap .h6,.bootstrap h6{font-size:1rem}.bootstrap .lead{font-size:1.25rem;font-weight:300}.bootstrap .display-1{font-size:6rem;font-weight:300;line-height:1.2}.bootstrap .display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.bootstrap .display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.bootstrap .display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.bootstrap hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.bootstrap .small,.bootstrap small{font-size:80%;font-weight:400}.bootstrap .mark,.bootstrap mark{padding:.2em;background-color:#fcf8e3}.bootstrap .list-unstyled{padding-left:0;list-style:none}.bootstrap .list-inline{padding-left:0;list-style:none}.bootstrap .list-inline-item{display:inline-block}.bootstrap .list-inline-item:not(:last-child){margin-right:.5rem}.bootstrap .initialism{font-size:90%;text-transform:uppercase}.bootstrap .blockquote{margin-bottom:1rem;font-size:1.25rem}.bootstrap .blockquote-footer{display:block;font-size:80%;color:#6c757d}.bootstrap .blockquote-footer::before{content:"\2014\00A0"}.bootstrap .img-fluid{max-width:100%;height:auto}.bootstrap .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.bootstrap .figure{display:inline-block}.bootstrap .figure-img{margin-bottom:.5rem;line-height:1}.bootstrap .figure-caption{font-size:90%;color:#6c757d}.bootstrap code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>.bootstrap code{color:inherit}.bootstrap kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}.bootstrap kbd kbd{padding:0;font-size:100%;font-weight:700}.bootstrap pre{display:block;font-size:87.5%;color:#212529}.bootstrap pre code{font-size:inherit;color:inherit;word-break:normal}.bootstrap .pre-scrollable{max-height:340px;overflow-y:scroll}.bootstrap .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap .container{max-width:540px}}@media (min-width:768px){.bootstrap .container{max-width:720px}}@media (min-width:992px){.bootstrap .container{max-width:960px}}@media (min-width:1200px){.bootstrap .container{max-width:1140px}}.bootstrap .container-fluid,.bootstrap .container-lg,.bootstrap .container-md,.bootstrap .container-sm,.bootstrap .container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap .container,.bootstrap .container-sm{max-width:540px}}@media (min-width:768px){.bootstrap .container,.bootstrap .container-md,.bootstrap .container-sm{max-width:720px}}@media (min-width:992px){.bootstrap .container,.bootstrap .container-lg,.bootstrap .container-md,.bootstrap .container-sm{max-width:960px}}@media (min-width:1200px){.bootstrap .container,.bootstrap .container-lg,.bootstrap .container-md,.bootstrap .container-sm,.bootstrap .container-xl{max-width:1140px}}.bootstrap .row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.bootstrap .no-gutters{margin-right:0;margin-left:0}.bootstrap .no-gutters>.col,.bootstrap .no-gutters>[class*=col-]{padding-right:0;padding-left:0}.bootstrap .col,.bootstrap .col-1,.bootstrap .col-10,.bootstrap .col-11,.bootstrap .col-12,.bootstrap .col-2,.bootstrap .col-3,.bootstrap .col-4,.bootstrap .col-5,.bootstrap .col-6,.bootstrap .col-7,.bootstrap .col-8,.bootstrap .col-9,.bootstrap .col-auto,.bootstrap .col-lg,.bootstrap .col-lg-1,.bootstrap .col-lg-10,.bootstrap .col-lg-11,.bootstrap .col-lg-12,.bootstrap .col-lg-2,.bootstrap .col-lg-3,.bootstrap .col-lg-4,.bootstrap .col-lg-5,.bootstrap .col-lg-6,.bootstrap .col-lg-7,.bootstrap .col-lg-8,.bootstrap .col-lg-9,.bootstrap .col-lg-auto,.bootstrap .col-md,.bootstrap .col-md-1,.bootstrap .col-md-10,.bootstrap .col-md-11,.bootstrap .col-md-12,.bootstrap .col-md-2,.bootstrap .col-md-3,.bootstrap .col-md-4,.bootstrap .col-md-5,.bootstrap .col-md-6,.bootstrap .col-md-7,.bootstrap .col-md-8,.bootstrap .col-md-9,.bootstrap .col-md-auto,.bootstrap .col-sm,.bootstrap .col-sm-1,.bootstrap .col-sm-10,.bootstrap .col-sm-11,.bootstrap .col-sm-12,.bootstrap .col-sm-2,.bootstrap .col-sm-3,.bootstrap .col-sm-4,.bootstrap .col-sm-5,.bootstrap .col-sm-6,.bootstrap .col-sm-7,.bootstrap .col-sm-8,.bootstrap .col-sm-9,.bootstrap .col-sm-auto,.bootstrap .col-xl,.bootstrap .col-xl-1,.bootstrap .col-xl-10,.bootstrap .col-xl-11,.bootstrap .col-xl-12,.bootstrap .col-xl-2,.bootstrap .col-xl-3,.bootstrap .col-xl-4,.bootstrap .col-xl-5,.bootstrap .col-xl-6,.bootstrap .col-xl-7,.bootstrap .col-xl-8,.bootstrap .col-xl-9,.bootstrap .col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.bootstrap .col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-1{margin-left:8.33333%}.bootstrap .offset-2{margin-left:16.66667%}.bootstrap .offset-3{margin-left:25%}.bootstrap .offset-4{margin-left:33.33333%}.bootstrap .offset-5{margin-left:41.66667%}.bootstrap .offset-6{margin-left:50%}.bootstrap .offset-7{margin-left:58.33333%}.bootstrap .offset-8{margin-left:66.66667%}.bootstrap .offset-9{margin-left:75%}.bootstrap .offset-10{margin-left:83.33333%}.bootstrap .offset-11{margin-left:91.66667%}@media (min-width:576px){.bootstrap .col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-sm-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-sm-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-sm-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-sm-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-sm-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-sm-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-sm-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-sm-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-sm-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-sm-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-sm-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-sm-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-sm-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-sm-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-sm-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-sm-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-sm-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-sm-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-sm-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-sm-0{margin-left:0}.bootstrap .offset-sm-1{margin-left:8.33333%}.bootstrap .offset-sm-2{margin-left:16.66667%}.bootstrap .offset-sm-3{margin-left:25%}.bootstrap .offset-sm-4{margin-left:33.33333%}.bootstrap .offset-sm-5{margin-left:41.66667%}.bootstrap .offset-sm-6{margin-left:50%}.bootstrap .offset-sm-7{margin-left:58.33333%}.bootstrap .offset-sm-8{margin-left:66.66667%}.bootstrap .offset-sm-9{margin-left:75%}.bootstrap .offset-sm-10{margin-left:83.33333%}.bootstrap .offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.bootstrap .col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-md-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-md-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-md-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-md-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-md-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-md-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-md-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-md-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-md-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-md-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-md-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-md-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-md-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-md-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-md-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-md-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-md-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-md-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-md-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-md-0{margin-left:0}.bootstrap .offset-md-1{margin-left:8.33333%}.bootstrap .offset-md-2{margin-left:16.66667%}.bootstrap .offset-md-3{margin-left:25%}.bootstrap .offset-md-4{margin-left:33.33333%}.bootstrap .offset-md-5{margin-left:41.66667%}.bootstrap .offset-md-6{margin-left:50%}.bootstrap .offset-md-7{margin-left:58.33333%}.bootstrap .offset-md-8{margin-left:66.66667%}.bootstrap .offset-md-9{margin-left:75%}.bootstrap .offset-md-10{margin-left:83.33333%}.bootstrap .offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.bootstrap .col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-lg-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-lg-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-lg-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-lg-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-lg-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-lg-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-lg-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-lg-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-lg-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-lg-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-lg-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-lg-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-lg-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-lg-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-lg-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-lg-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-lg-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-lg-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-lg-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-lg-0{margin-left:0}.bootstrap .offset-lg-1{margin-left:8.33333%}.bootstrap .offset-lg-2{margin-left:16.66667%}.bootstrap .offset-lg-3{margin-left:25%}.bootstrap .offset-lg-4{margin-left:33.33333%}.bootstrap .offset-lg-5{margin-left:41.66667%}.bootstrap .offset-lg-6{margin-left:50%}.bootstrap .offset-lg-7{margin-left:58.33333%}.bootstrap .offset-lg-8{margin-left:66.66667%}.bootstrap .offset-lg-9{margin-left:75%}.bootstrap .offset-lg-10{margin-left:83.33333%}.bootstrap .offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.bootstrap .col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-xl-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-xl-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-xl-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-xl-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-xl-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-xl-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-xl-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-xl-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-xl-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-xl-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-xl-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-xl-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-xl-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-xl-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-xl-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-xl-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-xl-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-xl-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-xl-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-xl-0{margin-left:0}.bootstrap .offset-xl-1{margin-left:8.33333%}.bootstrap .offset-xl-2{margin-left:16.66667%}.bootstrap .offset-xl-3{margin-left:25%}.bootstrap .offset-xl-4{margin-left:33.33333%}.bootstrap .offset-xl-5{margin-left:41.66667%}.bootstrap .offset-xl-6{margin-left:50%}.bootstrap .offset-xl-7{margin-left:58.33333%}.bootstrap .offset-xl-8{margin-left:66.66667%}.bootstrap .offset-xl-9{margin-left:75%}.bootstrap .offset-xl-10{margin-left:83.33333%}.bootstrap .offset-xl-11{margin-left:91.66667%}}.bootstrap .table{width:100%;margin-bottom:1rem;color:#212529}.bootstrap .table td,.bootstrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.bootstrap .table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.bootstrap .table tbody+tbody{border-top:2px solid #dee2e6}.bootstrap .table-sm td,.bootstrap .table-sm th{padding:.3rem}.bootstrap .table-bordered{border:1px solid #dee2e6}.bootstrap .table-bordered td,.bootstrap .table-bordered th{border:1px solid #dee2e6}.bootstrap .table-bordered thead td,.bootstrap .table-bordered thead th{border-bottom-width:2px}.bootstrap .table-borderless tbody+tbody,.bootstrap .table-borderless td,.bootstrap .table-borderless th,.bootstrap .table-borderless thead th{border:0}.bootstrap .table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.bootstrap .table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.bootstrap .table-primary,.bootstrap .table-primary>td,.bootstrap .table-primary>th{background-color:#b8daff}.bootstrap .table-primary tbody+tbody,.bootstrap .table-primary td,.bootstrap .table-primary th,.bootstrap .table-primary thead th{border-color:#7abaff}.bootstrap .table-hover .table-primary:hover{background-color:#9fcdff}.bootstrap .table-hover .table-primary:hover>td,.bootstrap .table-hover .table-primary:hover>th{background-color:#9fcdff}.bootstrap .table-secondary,.bootstrap .table-secondary>td,.bootstrap .table-secondary>th{background-color:#d6d8db}.bootstrap .table-secondary tbody+tbody,.bootstrap .table-secondary td,.bootstrap .table-secondary th,.bootstrap .table-secondary thead th{border-color:#b3b7bb}.bootstrap .table-hover .table-secondary:hover{background-color:#c8cbcf}.bootstrap .table-hover .table-secondary:hover>td,.bootstrap .table-hover .table-secondary:hover>th{background-color:#c8cbcf}.bootstrap .table-success,.bootstrap .table-success>td,.bootstrap .table-success>th{background-color:#c3e6cb}.bootstrap .table-success tbody+tbody,.bootstrap .table-success td,.bootstrap .table-success th,.bootstrap .table-success thead th{border-color:#8fd19e}.bootstrap .table-hover .table-success:hover{background-color:#b1dfbb}.bootstrap .table-hover .table-success:hover>td,.bootstrap .table-hover .table-success:hover>th{background-color:#b1dfbb}.bootstrap .table-info,.bootstrap .table-info>td,.bootstrap .table-info>th{background-color:#bee5eb}.bootstrap .table-info tbody+tbody,.bootstrap .table-info td,.bootstrap .table-info th,.bootstrap .table-info thead th{border-color:#86cfda}.bootstrap .table-hover .table-info:hover{background-color:#abdde5}.bootstrap .table-hover .table-info:hover>td,.bootstrap .table-hover .table-info:hover>th{background-color:#abdde5}.bootstrap .table-warning,.bootstrap .table-warning>td,.bootstrap .table-warning>th{background-color:#ffeeba}.bootstrap .table-warning tbody+tbody,.bootstrap .table-warning td,.bootstrap .table-warning th,.bootstrap .table-warning thead th{border-color:#ffdf7e}.bootstrap .table-hover .table-warning:hover{background-color:#ffe8a1}.bootstrap .table-hover .table-warning:hover>td,.bootstrap .table-hover .table-warning:hover>th{background-color:#ffe8a1}.bootstrap .table-danger,.bootstrap .table-danger>td,.bootstrap .table-danger>th{background-color:#f5c6cb}.bootstrap .table-danger tbody+tbody,.bootstrap .table-danger td,.bootstrap .table-danger th,.bootstrap .table-danger thead th{border-color:#ed969e}.bootstrap .table-hover .table-danger:hover{background-color:#f1b0b7}.bootstrap .table-hover .table-danger:hover>td,.bootstrap .table-hover .table-danger:hover>th{background-color:#f1b0b7}.bootstrap .table-light,.bootstrap .table-light>td,.bootstrap .table-light>th{background-color:#fdfdfe}.bootstrap .table-light tbody+tbody,.bootstrap .table-light td,.bootstrap .table-light th,.bootstrap .table-light thead th{border-color:#fbfcfc}.bootstrap .table-hover .table-light:hover{background-color:#ececf6}.bootstrap .table-hover .table-light:hover>td,.bootstrap .table-hover .table-light:hover>th{background-color:#ececf6}.bootstrap .table-dark,.bootstrap .table-dark>td,.bootstrap .table-dark>th{background-color:#c6c8ca}.bootstrap .table-dark tbody+tbody,.bootstrap .table-dark td,.bootstrap .table-dark th,.bootstrap .table-dark thead th{border-color:#95999c}.bootstrap .table-hover .table-dark:hover{background-color:#b9bbbe}.bootstrap .table-hover .table-dark:hover>td,.bootstrap .table-hover .table-dark:hover>th{background-color:#b9bbbe}.bootstrap .table-active,.bootstrap .table-active>td,.bootstrap .table-active>th{background-color:rgba(0,0,0,.075)}.bootstrap .table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.bootstrap .table-hover .table-active:hover>td,.bootstrap .table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.bootstrap .table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.bootstrap .table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.bootstrap .table-dark{color:#fff;background-color:#343a40}.bootstrap .table-dark td,.bootstrap .table-dark th,.bootstrap .table-dark thead th{border-color:#454d55}.bootstrap .table-dark.table-bordered{border:0}.bootstrap .table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.bootstrap .table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.bootstrap .table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.bootstrap .table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.bootstrap .table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.bootstrap .table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-xl>.table-bordered{border:0}}.bootstrap .table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive>.table-bordered{border:0}.bootstrap .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .form-control{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .form-control::-ms-expand{background-color:transparent;border:0}.bootstrap .form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.bootstrap .form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.bootstrap .form-control::-moz-placeholder{color:#6c757d;opacity:1}.bootstrap .form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.bootstrap .form-control::placeholder{color:#6c757d;opacity:1}.bootstrap .form-control:disabled,.bootstrap .form-control[readonly]{background-color:#e9ecef;opacity:1}.bootstrap select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.bootstrap .form-control-file,.bootstrap .form-control-range{display:block;width:100%}.bootstrap .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.bootstrap .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.bootstrap .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.bootstrap .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.bootstrap .form-control-plaintext.form-control-lg,.bootstrap .form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.bootstrap .form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap .form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap select.form-control[multiple],.bootstrap select.form-control[size]{height:auto}.bootstrap textarea.form-control{height:auto}.bootstrap .form-group{margin-bottom:1rem}.bootstrap .form-text{display:block;margin-top:.25rem}.bootstrap .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.bootstrap .form-row>.col,.bootstrap .form-row>[class*=col-]{padding-right:5px;padding-left:5px}.bootstrap .form-check{position:relative;display:block;padding-left:1.25rem}.bootstrap .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.bootstrap .form-check-input:disabled~.form-check-label,.bootstrap .form-check-input[disabled]~.form-check-label{color:#6c757d}.bootstrap .form-check-label{margin-bottom:0}.bootstrap .form-check-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.bootstrap .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.bootstrap .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.bootstrap .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.bootstrap.is-valid~.valid-feedback,.bootstrap.is-valid~.valid-tooltip,.was-validated .bootstrap:valid~.valid-feedback,.was-validated .bootstrap:valid~.valid-tooltip{display:block}.bootstrap .form-control.is-valid,.was-validated .bootstrap .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .form-control.is-valid:focus,.was-validated .bootstrap .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap textarea.form-control.is-valid,.was-validated .bootstrap textarea.form-control:valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap .custom-select.is-valid,.was-validated .bootstrap .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .custom-select.is-valid:focus,.was-validated .bootstrap .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap .form-check-input.is-valid~.form-check-label,.was-validated .bootstrap .form-check-input:valid~.form-check-label{color:#28a745}.bootstrap .form-check-input.is-valid~.valid-feedback,.bootstrap .form-check-input.is-valid~.valid-tooltip,.was-validated .bootstrap .form-check-input:valid~.valid-feedback,.was-validated .bootstrap .form-check-input:valid~.valid-tooltip{display:block}.bootstrap .custom-control-input.is-valid~.custom-control-label,.was-validated .bootstrap .custom-control-input:valid~.custom-control-label{color:#28a745}.bootstrap .custom-control-input.is-valid~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.bootstrap .custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.bootstrap .custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap .custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.bootstrap .custom-file-input.is-valid~.custom-file-label,.was-validated .bootstrap .custom-file-input:valid~.custom-file-label{border-color:#28a745}.bootstrap .custom-file-input.is-valid:focus~.custom-file-label,.was-validated .bootstrap .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.bootstrap .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.bootstrap.is-invalid~.invalid-feedback,.bootstrap.is-invalid~.invalid-tooltip,.was-validated .bootstrap:invalid~.invalid-feedback,.was-validated .bootstrap:invalid~.invalid-tooltip{display:block}.bootstrap .form-control.is-invalid,.was-validated .bootstrap .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .form-control.is-invalid:focus,.was-validated .bootstrap .form-control:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap textarea.form-control.is-invalid,.was-validated .bootstrap textarea.form-control:invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap .custom-select.is-invalid,.was-validated .bootstrap .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .custom-select.is-invalid:focus,.was-validated .bootstrap .custom-select:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap .form-check-input.is-invalid~.form-check-label,.was-validated .bootstrap .form-check-input:invalid~.form-check-label{color:#dc3545}.bootstrap .form-check-input.is-invalid~.invalid-feedback,.bootstrap .form-check-input.is-invalid~.invalid-tooltip,.was-validated .bootstrap .form-check-input:invalid~.invalid-feedback,.was-validated .bootstrap .form-check-input:invalid~.invalid-tooltip{display:block}.bootstrap .custom-control-input.is-invalid~.custom-control-label,.was-validated .bootstrap .custom-control-input:invalid~.custom-control-label{color:#dc3545}.bootstrap .custom-control-input.is-invalid~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.bootstrap .custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.bootstrap .custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap .custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.bootstrap .custom-file-input.is-invalid~.custom-file-label,.was-validated .bootstrap .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.bootstrap .custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .bootstrap .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap .form-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap .form-inline .form-check{width:100%}@media (min-width:576px){.bootstrap .form-inline label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.bootstrap .form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.bootstrap .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.bootstrap .form-inline .form-control-plaintext{display:inline-block}.bootstrap .form-inline .custom-select,.bootstrap .form-inline .input-group{width:auto}.bootstrap .form-inline .form-check{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.bootstrap .form-inline .form-check-input{position:relative;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.bootstrap .form-inline .custom-control{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap .form-inline .custom-control-label{margin-bottom:0}}.bootstrap .btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .btn{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .btn:hover{color:#212529;text-decoration:none}.bootstrap .btn.focus,.bootstrap .btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .btn.disabled,.bootstrap .btn:disabled{opacity:.65}.bootstrap a.btn.disabled,.bootstrap fieldset:disabled a.btn{pointer-events:none}.bootstrap .btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.bootstrap .btn-primary.focus,.bootstrap .btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;-webkit-box-shadow:0 0 0 .2rem rgba(38,143,255,.5);box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.bootstrap .btn-primary.disabled,.bootstrap .btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-primary:not(:disabled):not(.disabled).active,.bootstrap .btn-primary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.bootstrap .btn-primary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(38,143,255,.5);box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.bootstrap .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.bootstrap .btn-secondary.focus,.bootstrap .btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;-webkit-box-shadow:0 0 0 .2rem rgba(130,138,145,.5);box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.bootstrap .btn-secondary.disabled,.bootstrap .btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-secondary:not(:disabled):not(.disabled).active,.bootstrap .btn-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.bootstrap .btn-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(130,138,145,.5);box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.bootstrap .btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.bootstrap .btn-success.focus,.bootstrap .btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.bootstrap .btn-success.disabled,.bootstrap .btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-success:not(:disabled):not(.disabled).active,.bootstrap .btn-success:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.bootstrap .btn-success:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.bootstrap .btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.bootstrap .btn-info.focus,.bootstrap .btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.bootstrap .btn-info.disabled,.bootstrap .btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-info:not(:disabled):not(.disabled).active,.bootstrap .btn-info:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.bootstrap .btn-info:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.bootstrap .btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.bootstrap .btn-warning.focus,.bootstrap .btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap .btn-warning.disabled,.bootstrap .btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-warning:not(:disabled):not(.disabled).active,.bootstrap .btn-warning:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.bootstrap .btn-warning:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.bootstrap .btn-danger.focus,.bootstrap .btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.bootstrap .btn-danger.disabled,.bootstrap .btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-danger:not(:disabled):not(.disabled).active,.bootstrap .btn-danger:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.bootstrap .btn-danger:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.bootstrap .btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.bootstrap .btn-light.focus,.bootstrap .btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap .btn-light.disabled,.bootstrap .btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-light:not(:disabled):not(.disabled).active,.bootstrap .btn-light:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.bootstrap .btn-light:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap .btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.bootstrap .btn-dark.focus,.bootstrap .btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.bootstrap .btn-dark.disabled,.bootstrap .btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-dark:not(:disabled):not(.disabled).active,.bootstrap .btn-dark:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.bootstrap .btn-dark:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.bootstrap .btn-outline-primary{color:#007bff;border-color:#007bff}.bootstrap .btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-outline-primary.focus,.bootstrap .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap .btn-outline-primary.disabled,.bootstrap .btn-outline-primary:disabled{color:#007bff;background-color:transparent}.bootstrap .btn-outline-primary:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-primary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-outline-primary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap .btn-outline-secondary{color:#6c757d;border-color:#6c757d}.bootstrap .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-outline-secondary.focus,.bootstrap .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap .btn-outline-secondary.disabled,.bootstrap .btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap .btn-outline-success{color:#28a745;border-color:#28a745}.bootstrap .btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-outline-success.focus,.bootstrap .btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap .btn-outline-success.disabled,.bootstrap .btn-outline-success:disabled{color:#28a745;background-color:transparent}.bootstrap .btn-outline-success:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-success:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-outline-success:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap .btn-outline-info{color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-outline-info.focus,.bootstrap .btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap .btn-outline-info.disabled,.bootstrap .btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.bootstrap .btn-outline-info:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-info:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-outline-info:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap .btn-outline-warning{color:#ffc107;border-color:#ffc107}.bootstrap .btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-outline-warning.focus,.bootstrap .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap .btn-outline-warning.disabled,.bootstrap .btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.bootstrap .btn-outline-warning:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-warning:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-outline-warning:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap .btn-outline-danger{color:#dc3545;border-color:#dc3545}.bootstrap .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-outline-danger.focus,.bootstrap .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap .btn-outline-danger.disabled,.bootstrap .btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.bootstrap .btn-outline-danger:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-danger:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-outline-danger:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-outline-light.focus,.bootstrap .btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap .btn-outline-light.disabled,.bootstrap .btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.bootstrap .btn-outline-light:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-light:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-outline-light:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap .btn-outline-dark{color:#343a40;border-color:#343a40}.bootstrap .btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-outline-dark.focus,.bootstrap .btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap .btn-outline-dark.disabled,.bootstrap .btn-outline-dark:disabled{color:#343a40;background-color:transparent}.bootstrap .btn-outline-dark:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-dark:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-outline-dark:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap .btn-link{font-weight:400;color:#007bff;text-decoration:none}.bootstrap .btn-link:hover{color:#0056b3;text-decoration:underline}.bootstrap .btn-link.focus,.bootstrap .btn-link:focus{text-decoration:underline;-webkit-box-shadow:none;box-shadow:none}.bootstrap .btn-link.disabled,.bootstrap .btn-link:disabled{color:#6c757d;pointer-events:none}.bootstrap .btn-group-lg>.btn,.bootstrap .btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap .btn-group-sm>.btn,.bootstrap .btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap .btn-block{display:block;width:100%}.bootstrap .btn-block+.btn-block{margin-top:.5rem}.bootstrap input[type=button].btn-block,.bootstrap input[type=reset].btn-block,.bootstrap input[type=submit].btn-block{width:100%}.bootstrap .fade{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.bootstrap .fade{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .fade:not(.show){opacity:0}.bootstrap .collapse:not(.show){display:none}.bootstrap .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.bootstrap .collapsing{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .dropdown,.bootstrap .dropleft,.bootstrap .dropright,.bootstrap .dropup{position:relative}.bootstrap .dropdown-toggle{white-space:nowrap}.bootstrap .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.bootstrap .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.bootstrap .dropdown-menu-left{right:auto;left:0}.bootstrap .dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.bootstrap .dropdown-menu-sm-left{right:auto;left:0}.bootstrap .dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.bootstrap .dropdown-menu-md-left{right:auto;left:0}.bootstrap .dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.bootstrap .dropdown-menu-lg-left{right:auto;left:0}.bootstrap .dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.bootstrap .dropdown-menu-xl-left{right:auto;left:0}.bootstrap .dropdown-menu-xl-right{right:0;left:auto}}.bootstrap .dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.bootstrap .dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.bootstrap .dropup .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.bootstrap .dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.bootstrap .dropright .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropright .dropdown-toggle::after{vertical-align:0}.bootstrap .dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.bootstrap .dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.bootstrap .dropleft .dropdown-toggle::after{display:none}.bootstrap .dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.bootstrap .dropleft .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropleft .dropdown-toggle::before{vertical-align:0}.bootstrap .dropdown-menu[x-placement^=bottom],.bootstrap .dropdown-menu[x-placement^=left],.bootstrap .dropdown-menu[x-placement^=right],.bootstrap .dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.bootstrap .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.bootstrap .dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.bootstrap .dropdown-item:focus,.bootstrap .dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.bootstrap .dropdown-item.active,.bootstrap .dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.bootstrap .dropdown-item.disabled,.bootstrap .dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.bootstrap .dropdown-menu.show{display:block}.bootstrap .dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.bootstrap .dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.bootstrap .btn-group,.bootstrap .btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.bootstrap .btn-group-vertical>.btn,.bootstrap .btn-group>.btn{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.bootstrap .btn-group-vertical>.btn:hover,.bootstrap .btn-group>.btn:hover{z-index:1}.bootstrap .btn-group-vertical>.btn.active,.bootstrap .btn-group-vertical>.btn:active,.bootstrap .btn-group-vertical>.btn:focus,.bootstrap .btn-group>.btn.active,.bootstrap .btn-group>.btn:active,.bootstrap .btn-group>.btn:focus{z-index:1}.bootstrap .btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .btn-toolbar .input-group{width:auto}.bootstrap .btn-group>.btn-group:not(:first-child),.bootstrap .btn-group>.btn:not(:first-child){margin-left:-1px}.bootstrap .btn-group>.btn-group:not(:last-child)>.btn,.bootstrap .btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .btn-group>.btn-group:not(:first-child)>.btn,.bootstrap .btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.bootstrap .dropdown-toggle-split::after,.dropright .bootstrap .dropdown-toggle-split::after,.dropup .bootstrap .dropdown-toggle-split::after{margin-left:0}.dropleft .bootstrap .dropdown-toggle-split::before{margin-right:0}.bootstrap .btn-group-sm>.btn+.dropdown-toggle-split,.bootstrap .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.bootstrap .btn-group-lg>.btn+.dropdown-toggle-split,.bootstrap .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.bootstrap .btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap .btn-group-vertical>.btn,.bootstrap .btn-group-vertical>.btn-group{width:100%}.bootstrap .btn-group-vertical>.btn-group:not(:first-child),.bootstrap .btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.bootstrap .btn-group-vertical>.btn-group:not(:last-child)>.btn,.bootstrap .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap .btn-group-vertical>.btn-group:not(:first-child)>.btn,.bootstrap .btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.bootstrap .btn-group-toggle>.btn,.bootstrap .btn-group-toggle>.btn-group>.btn{margin-bottom:0}.bootstrap .btn-group-toggle>.btn input[type=checkbox],.bootstrap .btn-group-toggle>.btn input[type=radio],.bootstrap .btn-group-toggle>.btn-group>.btn input[type=checkbox],.bootstrap .btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.bootstrap .input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.bootstrap .input-group>.custom-file,.bootstrap .input-group>.custom-select,.bootstrap .input-group>.form-control,.bootstrap .input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.bootstrap .input-group>.custom-file+.custom-file,.bootstrap .input-group>.custom-file+.custom-select,.bootstrap .input-group>.custom-file+.form-control,.bootstrap .input-group>.custom-select+.custom-file,.bootstrap .input-group>.custom-select+.custom-select,.bootstrap .input-group>.custom-select+.form-control,.bootstrap .input-group>.form-control+.custom-file,.bootstrap .input-group>.form-control+.custom-select,.bootstrap .input-group>.form-control+.form-control,.bootstrap .input-group>.form-control-plaintext+.custom-file,.bootstrap .input-group>.form-control-plaintext+.custom-select,.bootstrap .input-group>.form-control-plaintext+.form-control{margin-left:-1px}.bootstrap .input-group>.custom-file .custom-file-input:focus~.custom-file-label,.bootstrap .input-group>.custom-select:focus,.bootstrap .input-group>.form-control:focus{z-index:3}.bootstrap .input-group>.custom-file .custom-file-input:focus{z-index:4}.bootstrap .input-group>.custom-select:not(:last-child),.bootstrap .input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .input-group>.custom-select:not(:first-child),.bootstrap .input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .input-group>.custom-file{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap .input-group>.custom-file:not(:last-child) .custom-file-label,.bootstrap .input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .input-group-append,.bootstrap .input-group-prepend{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.bootstrap .input-group-append .btn,.bootstrap .input-group-prepend .btn{position:relative;z-index:2}.bootstrap .input-group-append .btn:focus,.bootstrap .input-group-prepend .btn:focus{z-index:3}.bootstrap .input-group-append .btn+.btn,.bootstrap .input-group-append .btn+.input-group-text,.bootstrap .input-group-append .input-group-text+.btn,.bootstrap .input-group-append .input-group-text+.input-group-text,.bootstrap .input-group-prepend .btn+.btn,.bootstrap .input-group-prepend .btn+.input-group-text,.bootstrap .input-group-prepend .input-group-text+.btn,.bootstrap .input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.bootstrap .input-group-prepend{margin-right:-1px}.bootstrap .input-group-append{margin-left:-1px}.bootstrap .input-group-text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.bootstrap .input-group-text input[type=checkbox],.bootstrap .input-group-text input[type=radio]{margin-top:0}.bootstrap .input-group-lg>.custom-select,.bootstrap .input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.bootstrap .input-group-lg>.custom-select,.bootstrap .input-group-lg>.form-control,.bootstrap .input-group-lg>.input-group-append>.btn,.bootstrap .input-group-lg>.input-group-append>.input-group-text,.bootstrap .input-group-lg>.input-group-prepend>.btn,.bootstrap .input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap .input-group-sm>.custom-select,.bootstrap .input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.bootstrap .input-group-sm>.custom-select,.bootstrap .input-group-sm>.form-control,.bootstrap .input-group-sm>.input-group-append>.btn,.bootstrap .input-group-sm>.input-group-append>.input-group-text,.bootstrap .input-group-sm>.input-group-prepend>.btn,.bootstrap .input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap .input-group-lg>.custom-select,.bootstrap .input-group-sm>.custom-select{padding-right:1.75rem}.bootstrap .input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.bootstrap .input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.bootstrap .input-group>.input-group-append:not(:last-child)>.btn,.bootstrap .input-group>.input-group-append:not(:last-child)>.input-group-text,.bootstrap .input-group>.input-group-prepend>.btn,.bootstrap .input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .input-group>.input-group-append>.btn,.bootstrap .input-group>.input-group-append>.input-group-text,.bootstrap .input-group>.input-group-prepend:first-child>.btn:not(:first-child),.bootstrap .input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.bootstrap .input-group>.input-group-prepend:not(:first-child)>.btn,.bootstrap .input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.bootstrap .custom-control-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.bootstrap .custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.bootstrap .custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.bootstrap .custom-control-input:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.bootstrap .custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.bootstrap .custom-control-input:disabled~.custom-control-label,.bootstrap .custom-control-input[disabled]~.custom-control-label{color:#6c757d}.bootstrap .custom-control-input:disabled~.custom-control-label::before,.bootstrap .custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.bootstrap .custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.bootstrap .custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.bootstrap .custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.bootstrap .custom-checkbox .custom-control-label::before{border-radius:.25rem}.bootstrap .custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.bootstrap .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.bootstrap .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.bootstrap .custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-radio .custom-control-label::before{border-radius:50%}.bootstrap .custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.bootstrap .custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-switch{padding-left:2.25rem}.bootstrap .custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.bootstrap .custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-o-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-o-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .custom-switch .custom-control-label::after{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);-o-transform:translateX(.75rem);transform:translateX(.75rem)}.bootstrap .custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap .custom-select:focus{border-color:#80bdff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-select:focus::-ms-value{color:#495057;background-color:#fff}.bootstrap .custom-select[multiple],.bootstrap .custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.bootstrap .custom-select:disabled{color:#6c757d;background-color:#e9ecef}.bootstrap .custom-select::-ms-expand{display:none}.bootstrap .custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.bootstrap .custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.bootstrap .custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.bootstrap .custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.bootstrap .custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.bootstrap .custom-file-input:focus~.custom-file-label{border-color:#80bdff;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-file-input:disabled~.custom-file-label,.bootstrap .custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.bootstrap .custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.bootstrap .custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.bootstrap .custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.bootstrap .custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.bootstrap .custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap .custom-range:focus{outline:0}.bootstrap .custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-range::-moz-focus-outer{border:0}.bootstrap .custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap .custom-range::-webkit-slider-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.bootstrap .custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap .custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap .custom-range::-moz-range-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.bootstrap .custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap .custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap .custom-range::-ms-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-range::-ms-thumb:active{background-color:#b3d7ff}.bootstrap .custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.bootstrap .custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.bootstrap .custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.bootstrap .custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.bootstrap .custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.bootstrap .custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.bootstrap .custom-range:disabled::-moz-range-track{cursor:default}.bootstrap .custom-range:disabled::-ms-thumb{background-color:#adb5bd}.bootstrap .custom-control-label::before,.bootstrap .custom-file-label,.bootstrap .custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .custom-control-label::before,.bootstrap .custom-file-label,.bootstrap .custom-select{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.bootstrap .nav-link{display:block;padding:.5rem 1rem}.bootstrap .nav-link:focus,.bootstrap .nav-link:hover{text-decoration:none}.bootstrap .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.bootstrap .nav-tabs{border-bottom:1px solid #dee2e6}.bootstrap .nav-tabs .nav-item{margin-bottom:-1px}.bootstrap .nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap .nav-tabs .nav-link:focus,.bootstrap .nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.bootstrap .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.bootstrap .nav-tabs .nav-item.show .nav-link,.bootstrap .nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.bootstrap .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.bootstrap .nav-pills .nav-link{border-radius:.25rem}.bootstrap .nav-pills .nav-link.active,.bootstrap .nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.bootstrap .nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.bootstrap .nav-justified .nav-item{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.bootstrap .tab-content>.tab-pane{display:none}.bootstrap .tab-content>.active{display:block}.bootstrap .navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.bootstrap .navbar .container,.bootstrap .navbar .container-fluid,.bootstrap .navbar .container-lg,.bootstrap .navbar .container-md,.bootstrap .navbar .container-sm,.bootstrap .navbar .container-xl{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap .navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.bootstrap .navbar-brand:focus,.bootstrap .navbar-brand:hover{text-decoration:none}.bootstrap .navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.bootstrap .navbar-nav .nav-link{padding-right:0;padding-left:0}.bootstrap .navbar-nav .dropdown-menu{position:static;float:none}.bootstrap .navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.bootstrap .navbar-collapse{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.bootstrap .navbar-toggler:focus,.bootstrap .navbar-toggler:hover{text-decoration:none}.bootstrap .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}@media (max-width:575.98px){.bootstrap .navbar-expand-sm>.container,.bootstrap .navbar-expand-sm>.container-fluid,.bootstrap .navbar-expand-sm>.container-lg,.bootstrap .navbar-expand-sm>.container-md,.bootstrap .navbar-expand-sm>.container-sm,.bootstrap .navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.bootstrap .navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-sm>.container,.bootstrap .navbar-expand-sm>.container-fluid,.bootstrap .navbar-expand-sm>.container-lg,.bootstrap .navbar-expand-sm>.container-md,.bootstrap .navbar-expand-sm>.container-sm,.bootstrap .navbar-expand-sm>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.bootstrap .navbar-expand-md>.container,.bootstrap .navbar-expand-md>.container-fluid,.bootstrap .navbar-expand-md>.container-lg,.bootstrap .navbar-expand-md>.container-md,.bootstrap .navbar-expand-md>.container-sm,.bootstrap .navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.bootstrap .navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-md>.container,.bootstrap .navbar-expand-md>.container-fluid,.bootstrap .navbar-expand-md>.container-lg,.bootstrap .navbar-expand-md>.container-md,.bootstrap .navbar-expand-md>.container-sm,.bootstrap .navbar-expand-md>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.bootstrap .navbar-expand-lg>.container,.bootstrap .navbar-expand-lg>.container-fluid,.bootstrap .navbar-expand-lg>.container-lg,.bootstrap .navbar-expand-lg>.container-md,.bootstrap .navbar-expand-lg>.container-sm,.bootstrap .navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.bootstrap .navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-lg>.container,.bootstrap .navbar-expand-lg>.container-fluid,.bootstrap .navbar-expand-lg>.container-lg,.bootstrap .navbar-expand-lg>.container-md,.bootstrap .navbar-expand-lg>.container-sm,.bootstrap .navbar-expand-lg>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.bootstrap .navbar-expand-xl>.container,.bootstrap .navbar-expand-xl>.container-fluid,.bootstrap .navbar-expand-xl>.container-lg,.bootstrap .navbar-expand-xl>.container-md,.bootstrap .navbar-expand-xl>.container-sm,.bootstrap .navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.bootstrap .navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-xl>.container,.bootstrap .navbar-expand-xl>.container-fluid,.bootstrap .navbar-expand-xl>.container-lg,.bootstrap .navbar-expand-xl>.container-md,.bootstrap .navbar-expand-xl>.container-sm,.bootstrap .navbar-expand-xl>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-xl .navbar-toggler{display:none}}.bootstrap .navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand>.container,.bootstrap .navbar-expand>.container-fluid,.bootstrap .navbar-expand>.container-lg,.bootstrap .navbar-expand>.container-md,.bootstrap .navbar-expand>.container-sm,.bootstrap .navbar-expand>.container-xl{padding-right:0;padding-left:0}.bootstrap .navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand>.container,.bootstrap .navbar-expand>.container-fluid,.bootstrap .navbar-expand>.container-lg,.bootstrap .navbar-expand>.container-md,.bootstrap .navbar-expand>.container-sm,.bootstrap .navbar-expand>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand .navbar-toggler{display:none}.bootstrap .navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-brand:focus,.bootstrap .navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.bootstrap .navbar-light .navbar-nav .nav-link:focus,.bootstrap .navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.bootstrap .navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.bootstrap .navbar-light .navbar-nav .active>.nav-link,.bootstrap .navbar-light .navbar-nav .nav-link.active,.bootstrap .navbar-light .navbar-nav .nav-link.show,.bootstrap .navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.bootstrap .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap .navbar-light .navbar-text{color:rgba(0,0,0,.5)}.bootstrap .navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-text a:focus,.bootstrap .navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.bootstrap .navbar-dark .navbar-brand{color:#fff}.bootstrap .navbar-dark .navbar-brand:focus,.bootstrap .navbar-dark .navbar-brand:hover{color:#fff}.bootstrap .navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.bootstrap .navbar-dark .navbar-nav .nav-link:focus,.bootstrap .navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.bootstrap .navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.bootstrap .navbar-dark .navbar-nav .active>.nav-link,.bootstrap .navbar-dark .navbar-nav .nav-link.active,.bootstrap .navbar-dark .navbar-nav .nav-link.show,.bootstrap .navbar-dark .navbar-nav .show>.nav-link{color:#fff}.bootstrap .navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.bootstrap .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap .navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.bootstrap .navbar-dark .navbar-text a{color:#fff}.bootstrap .navbar-dark .navbar-text a:focus,.bootstrap .navbar-dark .navbar-text a:hover{color:#fff}.bootstrap .card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;-webkit-background-clip:border-box;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.bootstrap .card>hr{margin-right:0;margin-left:0}.bootstrap .card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap .card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap .card-body{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.bootstrap .card-title{margin-bottom:.75rem}.bootstrap .card-subtitle{margin-top:-.375rem;margin-bottom:0}.bootstrap .card-text:last-child{margin-bottom:0}.bootstrap .card-link:hover{text-decoration:none}.bootstrap .card-link+.card-link{margin-left:1.25rem}.bootstrap .card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.bootstrap .card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.bootstrap .card-header+.list-group .list-group-item:first-child{border-top:0}.bootstrap .card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.bootstrap .card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.bootstrap .card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.bootstrap .card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.bootstrap .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.bootstrap .card-img,.bootstrap .card-img-bottom,.bootstrap .card-img-top{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%}.bootstrap .card-img,.bootstrap .card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.bootstrap .card-img,.bootstrap .card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.bootstrap .card-deck .card{margin-bottom:15px}@media (min-width:576px){.bootstrap .card-deck{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.bootstrap .card-deck .card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.bootstrap .card-group>.card{margin-bottom:15px}@media (min-width:576px){.bootstrap .card-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.bootstrap .card-group>.card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.bootstrap .card-group>.card+.card{margin-left:0;border-left:0}.bootstrap .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .card-group>.card:not(:last-child) .card-header,.bootstrap .card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.bootstrap .card-group>.card:not(:last-child) .card-footer,.bootstrap .card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.bootstrap .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .card-group>.card:not(:first-child) .card-header,.bootstrap .card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.bootstrap .card-group>.card:not(:first-child) .card-footer,.bootstrap .card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.bootstrap .card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.bootstrap .card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.bootstrap .card-columns .card{display:inline-block;width:100%}}.bootstrap .accordion>.card{overflow:hidden}.bootstrap .accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap .accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.bootstrap .accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.bootstrap .breadcrumb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.bootstrap .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.bootstrap .breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.bootstrap .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.bootstrap .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.bootstrap .breadcrumb-item.active{color:#6c757d}.bootstrap .pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.bootstrap .page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.bootstrap .page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.bootstrap .page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.bootstrap .page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.bootstrap .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.bootstrap .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.bootstrap .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.bootstrap .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.bootstrap .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.bootstrap .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.bootstrap .badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .badge{-webkit-transition:none;-o-transition:none;transition:none}}a.bootstrap .badge:focus,a.bootstrap .badge:hover{text-decoration:none}.bootstrap .badge:empty{display:none}.bootstrap .btn .badge{position:relative;top:-1px}.bootstrap .badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.bootstrap .badge-primary{color:#fff;background-color:#007bff}a.bootstrap .badge-primary:focus,a.bootstrap .badge-primary:hover{color:#fff;background-color:#0062cc}a.bootstrap .badge-primary.focus,a.bootstrap .badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap .badge-secondary{color:#fff;background-color:#6c757d}a.bootstrap .badge-secondary:focus,a.bootstrap .badge-secondary:hover{color:#fff;background-color:#545b62}a.bootstrap .badge-secondary.focus,a.bootstrap .badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap .badge-success{color:#fff;background-color:#28a745}a.bootstrap .badge-success:focus,a.bootstrap .badge-success:hover{color:#fff;background-color:#1e7e34}a.bootstrap .badge-success.focus,a.bootstrap .badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap .badge-info{color:#fff;background-color:#17a2b8}a.bootstrap .badge-info:focus,a.bootstrap .badge-info:hover{color:#fff;background-color:#117a8b}a.bootstrap .badge-info.focus,a.bootstrap .badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap .badge-warning{color:#212529;background-color:#ffc107}a.bootstrap .badge-warning:focus,a.bootstrap .badge-warning:hover{color:#212529;background-color:#d39e00}a.bootstrap .badge-warning.focus,a.bootstrap .badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap .badge-danger{color:#fff;background-color:#dc3545}a.bootstrap .badge-danger:focus,a.bootstrap .badge-danger:hover{color:#fff;background-color:#bd2130}a.bootstrap .badge-danger.focus,a.bootstrap .badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap .badge-light{color:#212529;background-color:#f8f9fa}a.bootstrap .badge-light:focus,a.bootstrap .badge-light:hover{color:#212529;background-color:#dae0e5}a.bootstrap .badge-light.focus,a.bootstrap .badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap .badge-dark{color:#fff;background-color:#343a40}a.bootstrap .badge-dark:focus,a.bootstrap .badge-dark:hover{color:#fff;background-color:#1d2124}a.bootstrap .badge-dark.focus,a.bootstrap .badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap .jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.bootstrap .jumbotron{padding:4rem 2rem}}.bootstrap .jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.bootstrap .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.bootstrap .alert-heading{color:inherit}.bootstrap .alert-link{font-weight:700}.bootstrap .alert-dismissible{padding-right:4rem}.bootstrap .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.bootstrap .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.bootstrap .alert-primary hr{border-top-color:#9fcdff}.bootstrap .alert-primary .alert-link{color:#002752}.bootstrap .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.bootstrap .alert-secondary hr{border-top-color:#c8cbcf}.bootstrap .alert-secondary .alert-link{color:#202326}.bootstrap .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.bootstrap .alert-success hr{border-top-color:#b1dfbb}.bootstrap .alert-success .alert-link{color:#0b2e13}.bootstrap .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.bootstrap .alert-info hr{border-top-color:#abdde5}.bootstrap .alert-info .alert-link{color:#062c33}.bootstrap .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.bootstrap .alert-warning hr{border-top-color:#ffe8a1}.bootstrap .alert-warning .alert-link{color:#533f03}.bootstrap .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.bootstrap .alert-danger hr{border-top-color:#f1b0b7}.bootstrap .alert-danger .alert-link{color:#491217}.bootstrap .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.bootstrap .alert-light hr{border-top-color:#ececf6}.bootstrap .alert-light .alert-link{color:#686868}.bootstrap .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.bootstrap .alert-dark hr{border-top-color:#b9bbbe}.bootstrap .alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.bootstrap .progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.bootstrap .progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap .progress-bar{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.bootstrap .progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.bootstrap .progress-bar-animated{-webkit-animation:none;-o-animation:none;animation:none}}.bootstrap .media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.bootstrap .media-body{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.bootstrap .list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.bootstrap .list-group-item-action{width:100%;color:#495057;text-align:inherit}.bootstrap .list-group-item-action:focus,.bootstrap .list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.bootstrap .list-group-item-action:active{color:#212529;background-color:#e9ecef}.bootstrap .list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.bootstrap .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap .list-group-item.disabled,.bootstrap .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.bootstrap .list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .list-group-item+.bootstrap .list-group-item{border-top-width:0}.bootstrap .list-group-item+.bootstrap .list-group-item.active{margin-top:-1px;border-top-width:1px}.bootstrap .list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.bootstrap .list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-sm .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.bootstrap .list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-md .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.bootstrap .list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-lg .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.bootstrap .list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-xl .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.bootstrap .list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.bootstrap .list-group-flush .list-group-item:first-child{border-top-width:0}.bootstrap .list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.bootstrap .list-group-item-primary{color:#004085;background-color:#b8daff}.bootstrap .list-group-item-primary.list-group-item-action:focus,.bootstrap .list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.bootstrap .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.bootstrap .list-group-item-secondary{color:#383d41;background-color:#d6d8db}.bootstrap .list-group-item-secondary.list-group-item-action:focus,.bootstrap .list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.bootstrap .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.bootstrap .list-group-item-success{color:#155724;background-color:#c3e6cb}.bootstrap .list-group-item-success.list-group-item-action:focus,.bootstrap .list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.bootstrap .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.bootstrap .list-group-item-info{color:#0c5460;background-color:#bee5eb}.bootstrap .list-group-item-info.list-group-item-action:focus,.bootstrap .list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.bootstrap .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.bootstrap .list-group-item-warning{color:#856404;background-color:#ffeeba}.bootstrap .list-group-item-warning.list-group-item-action:focus,.bootstrap .list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.bootstrap .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.bootstrap .list-group-item-danger{color:#721c24;background-color:#f5c6cb}.bootstrap .list-group-item-danger.list-group-item-action:focus,.bootstrap .list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.bootstrap .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.bootstrap .list-group-item-light{color:#818182;background-color:#fdfdfe}.bootstrap .list-group-item-light.list-group-item-action:focus,.bootstrap .list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.bootstrap .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.bootstrap .list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.bootstrap .list-group-item-dark.list-group-item-action:focus,.bootstrap .list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.bootstrap .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.bootstrap .close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.bootstrap .close:hover{color:#000;text-decoration:none}.bootstrap .close:not(:disabled):not(.disabled):focus,.bootstrap .close:not(:disabled):not(.disabled):hover{opacity:.75}.bootstrap button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap a.close.disabled{pointer-events:none}.bootstrap .toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.bootstrap .toast:not(:last-child){margin-bottom:.75rem}.bootstrap .toast.showing{opacity:1}.bootstrap .toast.show{display:block;opacity:1}.bootstrap .toast.hide{display:none}.bootstrap .toast-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.bootstrap .toast-body{padding:.75rem}.bootstrap .modal-open{overflow:hidden}.bootstrap .modal-open .modal{overflow-x:hidden;overflow-y:auto}.bootstrap .modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.bootstrap .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .bootstrap .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-50px);-o-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .bootstrap .modal-dialog{-webkit-transition:none;-o-transition:none;transition:none}}.modal.show .bootstrap .modal-dialog{-webkit-transform:none;-o-transform:none;transform:none}.modal.modal-static .bootstrap .modal-dialog{-webkit-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.bootstrap .modal-dialog-scrollable{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.bootstrap .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.bootstrap .modal-dialog-scrollable .modal-footer,.bootstrap .modal-dialog-scrollable .modal-header{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.bootstrap .modal-dialog-scrollable .modal-body{overflow-y:auto}.bootstrap .modal-dialog-centered{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.bootstrap .modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.bootstrap .modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%}.bootstrap .modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.bootstrap .modal-dialog-centered.modal-dialog-scrollable::before{content:none}.bootstrap .modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.bootstrap .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.bootstrap .modal-backdrop.fade{opacity:0}.bootstrap .modal-backdrop.show{opacity:.5}.bootstrap .modal-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap .modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.bootstrap .modal-title{margin-bottom:0;line-height:1.5}.bootstrap .modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.bootstrap .modal-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.bootstrap .modal-footer>*{margin:.25rem}.bootstrap .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.bootstrap .modal-dialog{max-width:500px;margin:1.75rem auto}.bootstrap .modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.bootstrap .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.bootstrap .modal-dialog-centered{min-height:calc(100% - 3.5rem)}.bootstrap .modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.bootstrap .modal-sm{max-width:300px}}@media (min-width:992px){.bootstrap .modal-lg,.bootstrap .modal-xl{max-width:800px}}@media (min-width:1200px){.bootstrap .modal-xl{max-width:1140px}}.bootstrap .tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.bootstrap .tooltip.show{opacity:.9}.bootstrap .tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.bootstrap .tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bootstrap .bs-tooltip-auto[x-placement^=top],.bootstrap .bs-tooltip-top{padding:.4rem 0}.bootstrap .bs-tooltip-auto[x-placement^=top] .arrow,.bootstrap .bs-tooltip-top .arrow{bottom:0}.bootstrap .bs-tooltip-auto[x-placement^=top] .arrow::before,.bootstrap .bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bootstrap .bs-tooltip-auto[x-placement^=right],.bootstrap .bs-tooltip-right{padding:0 .4rem}.bootstrap .bs-tooltip-auto[x-placement^=right] .arrow,.bootstrap .bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bootstrap .bs-tooltip-auto[x-placement^=right] .arrow::before,.bootstrap .bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bootstrap .bs-tooltip-auto[x-placement^=bottom],.bootstrap .bs-tooltip-bottom{padding:.4rem 0}.bootstrap .bs-tooltip-auto[x-placement^=bottom] .arrow,.bootstrap .bs-tooltip-bottom .arrow{top:0}.bootstrap .bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bootstrap .bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bootstrap .bs-tooltip-auto[x-placement^=left],.bootstrap .bs-tooltip-left{padding:0 .4rem}.bootstrap .bs-tooltip-auto[x-placement^=left] .arrow,.bootstrap .bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bootstrap .bs-tooltip-auto[x-placement^=left] .arrow::before,.bootstrap .bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.bootstrap .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.bootstrap .popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.bootstrap .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.bootstrap .popover .arrow::after,.bootstrap .popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bootstrap .bs-popover-auto[x-placement^=top],.bootstrap .bs-popover-top{margin-bottom:.5rem}.bootstrap .bs-popover-auto[x-placement^=top]>.arrow,.bootstrap .bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bootstrap .bs-popover-auto[x-placement^=top]>.arrow::before,.bootstrap .bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=top]>.arrow::after,.bootstrap .bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bootstrap .bs-popover-auto[x-placement^=right],.bootstrap .bs-popover-right{margin-left:.5rem}.bootstrap .bs-popover-auto[x-placement^=right]>.arrow,.bootstrap .bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap .bs-popover-auto[x-placement^=right]>.arrow::before,.bootstrap .bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=right]>.arrow::after,.bootstrap .bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bootstrap .bs-popover-auto[x-placement^=bottom],.bootstrap .bs-popover-bottom{margin-top:.5rem}.bootstrap .bs-popover-auto[x-placement^=bottom]>.arrow,.bootstrap .bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bootstrap .bs-popover-auto[x-placement^=bottom]>.arrow::before,.bootstrap .bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=bottom]>.arrow::after,.bootstrap .bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bootstrap .bs-popover-auto[x-placement^=bottom] .popover-header::before,.bootstrap .bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bootstrap .bs-popover-auto[x-placement^=left],.bootstrap .bs-popover-left{margin-right:.5rem}.bootstrap .bs-popover-auto[x-placement^=left]>.arrow,.bootstrap .bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap .bs-popover-auto[x-placement^=left]>.arrow::before,.bootstrap .bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=left]>.arrow::after,.bootstrap .bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.bootstrap .popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap .popover-header:empty{display:none}.bootstrap .popover-body{padding:.5rem .75rem;color:#212529}.bootstrap .carousel{position:relative}.bootstrap .carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.bootstrap .carousel-inner{position:relative;width:100%;overflow:hidden}.bootstrap .carousel-inner::after{display:block;clear:both;content:""}.bootstrap .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-item{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-item-next,.bootstrap .carousel-item-prev,.bootstrap .carousel-item.active{display:block}.bootstrap .active.carousel-item-right,.bootstrap .carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);-o-transform:translateX(100%);transform:translateX(100%)}.bootstrap .active.carousel-item-left,.bootstrap .carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);-o-transform:translateX(-100%);transform:translateX(-100%)}.bootstrap .carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;-webkit-transform:none;-o-transform:none;transform:none}.bootstrap .carousel-fade .carousel-item-next.carousel-item-left,.bootstrap .carousel-fade .carousel-item-prev.carousel-item-right,.bootstrap .carousel-fade .carousel-item.active{z-index:1;opacity:1}.bootstrap .carousel-fade .active.carousel-item-left,.bootstrap .carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;-o-transition:opacity 0s .6s;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-fade .active.carousel-item-left,.bootstrap .carousel-fade .active.carousel-item-right{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-control-next,.bootstrap .carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;-webkit-transition:opacity .15s ease;-o-transition:opacity .15s ease;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-control-next,.bootstrap .carousel-control-prev{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-control-next:focus,.bootstrap .carousel-control-next:hover,.bootstrap .carousel-control-prev:focus,.bootstrap .carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.bootstrap .carousel-control-prev{left:0}.bootstrap .carousel-control-next{right:0}.bootstrap .carousel-control-next-icon,.bootstrap .carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.bootstrap .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.bootstrap .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.bootstrap .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.bootstrap .carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;-o-transition:opacity .6s ease;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-indicators li{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-indicators .active{opacity:1}.bootstrap .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spinner-border{to{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.bootstrap .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;-o-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.bootstrap .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@-o-keyframes spinner-grow{0%{-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}.bootstrap .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;-o-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.bootstrap .spinner-grow-sm{width:1rem;height:1rem}.bootstrap .align-baseline{vertical-align:baseline!important}.bootstrap .align-top{vertical-align:top!important}.bootstrap .align-middle{vertical-align:middle!important}.bootstrap .align-bottom{vertical-align:bottom!important}.bootstrap .align-text-bottom{vertical-align:text-bottom!important}.bootstrap .align-text-top{vertical-align:text-top!important}.bootstrap .bg-primary{background-color:#007bff!important}.bootstrap a.bg-primary:focus,.bootstrap a.bg-primary:hover,.bootstrap button.bg-primary:focus,.bootstrap button.bg-primary:hover{background-color:#0062cc!important}.bootstrap .bg-secondary{background-color:#6c757d!important}.bootstrap a.bg-secondary:focus,.bootstrap a.bg-secondary:hover,.bootstrap button.bg-secondary:focus,.bootstrap button.bg-secondary:hover{background-color:#545b62!important}.bootstrap .bg-success{background-color:#28a745!important}.bootstrap a.bg-success:focus,.bootstrap a.bg-success:hover,.bootstrap button.bg-success:focus,.bootstrap button.bg-success:hover{background-color:#1e7e34!important}.bootstrap .bg-info{background-color:#17a2b8!important}.bootstrap a.bg-info:focus,.bootstrap a.bg-info:hover,.bootstrap button.bg-info:focus,.bootstrap button.bg-info:hover{background-color:#117a8b!important}.bootstrap .bg-warning{background-color:#ffc107!important}.bootstrap a.bg-warning:focus,.bootstrap a.bg-warning:hover,.bootstrap button.bg-warning:focus,.bootstrap button.bg-warning:hover{background-color:#d39e00!important}.bootstrap .bg-danger{background-color:#dc3545!important}.bootstrap a.bg-danger:focus,.bootstrap a.bg-danger:hover,.bootstrap button.bg-danger:focus,.bootstrap button.bg-danger:hover{background-color:#bd2130!important}.bootstrap .bg-light{background-color:#f8f9fa!important}.bootstrap a.bg-light:focus,.bootstrap a.bg-light:hover,.bootstrap button.bg-light:focus,.bootstrap button.bg-light:hover{background-color:#dae0e5!important}.bootstrap .bg-dark{background-color:#343a40!important}.bootstrap a.bg-dark:focus,.bootstrap a.bg-dark:hover,.bootstrap button.bg-dark:focus,.bootstrap button.bg-dark:hover{background-color:#1d2124!important}.bootstrap .bg-white{background-color:#fff!important}.bootstrap .bg-transparent{background-color:transparent!important}.bootstrap .border{border:1px solid #dee2e6!important}.bootstrap .border-top{border-top:1px solid #dee2e6!important}.bootstrap .border-right{border-right:1px solid #dee2e6!important}.bootstrap .border-bottom{border-bottom:1px solid #dee2e6!important}.bootstrap .border-left{border-left:1px solid #dee2e6!important}.bootstrap .border-0{border:0!important}.bootstrap .border-top-0{border-top:0!important}.bootstrap .border-right-0{border-right:0!important}.bootstrap .border-bottom-0{border-bottom:0!important}.bootstrap .border-left-0{border-left:0!important}.bootstrap .border-primary{border-color:#007bff!important}.bootstrap .border-secondary{border-color:#6c757d!important}.bootstrap .border-success{border-color:#28a745!important}.bootstrap .border-info{border-color:#17a2b8!important}.bootstrap .border-warning{border-color:#ffc107!important}.bootstrap .border-danger{border-color:#dc3545!important}.bootstrap .border-light{border-color:#f8f9fa!important}.bootstrap .border-dark{border-color:#343a40!important}.bootstrap .border-white{border-color:#fff!important}.bootstrap .rounded-sm{border-radius:.2rem!important}.bootstrap .rounded{border-radius:.25rem!important}.bootstrap .rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.bootstrap .rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.bootstrap .rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap .rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap .rounded-lg{border-radius:.3rem!important}.bootstrap .rounded-circle{border-radius:50%!important}.bootstrap .rounded-pill{border-radius:50rem!important}.bootstrap .rounded-0{border-radius:0!important}.bootstrap .clearfix::after{display:block;clear:both;content:""}.bootstrap .d-none{display:none!important}.bootstrap .d-inline{display:inline!important}.bootstrap .d-inline-block{display:inline-block!important}.bootstrap .d-block{display:block!important}.bootstrap .d-table{display:table!important}.bootstrap .d-table-row{display:table-row!important}.bootstrap .d-table-cell{display:table-cell!important}.bootstrap .d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.bootstrap .d-sm-none{display:none!important}.bootstrap .d-sm-inline{display:inline!important}.bootstrap .d-sm-inline-block{display:inline-block!important}.bootstrap .d-sm-block{display:block!important}.bootstrap .d-sm-table{display:table!important}.bootstrap .d-sm-table-row{display:table-row!important}.bootstrap .d-sm-table-cell{display:table-cell!important}.bootstrap .d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.bootstrap .d-md-none{display:none!important}.bootstrap .d-md-inline{display:inline!important}.bootstrap .d-md-inline-block{display:inline-block!important}.bootstrap .d-md-block{display:block!important}.bootstrap .d-md-table{display:table!important}.bootstrap .d-md-table-row{display:table-row!important}.bootstrap .d-md-table-cell{display:table-cell!important}.bootstrap .d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.bootstrap .d-lg-none{display:none!important}.bootstrap .d-lg-inline{display:inline!important}.bootstrap .d-lg-inline-block{display:inline-block!important}.bootstrap .d-lg-block{display:block!important}.bootstrap .d-lg-table{display:table!important}.bootstrap .d-lg-table-row{display:table-row!important}.bootstrap .d-lg-table-cell{display:table-cell!important}.bootstrap .d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.bootstrap .d-xl-none{display:none!important}.bootstrap .d-xl-inline{display:inline!important}.bootstrap .d-xl-inline-block{display:inline-block!important}.bootstrap .d-xl-block{display:block!important}.bootstrap .d-xl-table{display:table!important}.bootstrap .d-xl-table-row{display:table-row!important}.bootstrap .d-xl-table-cell{display:table-cell!important}.bootstrap .d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.bootstrap .d-print-none{display:none!important}.bootstrap .d-print-inline{display:inline!important}.bootstrap .d-print-inline-block{display:inline-block!important}.bootstrap .d-print-block{display:block!important}.bootstrap .d-print-table{display:table!important}.bootstrap .d-print-table-row{display:table-row!important}.bootstrap .d-print-table-cell{display:table-cell!important}.bootstrap .d-print-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-print-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.bootstrap .embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.bootstrap .embed-responsive::before{display:block;content:""}.bootstrap .embed-responsive .embed-responsive-item,.bootstrap .embed-responsive embed,.bootstrap .embed-responsive iframe,.bootstrap .embed-responsive object,.bootstrap .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.bootstrap .embed-responsive-21by9::before{padding-top:42.85714%}.bootstrap .embed-responsive-16by9::before{padding-top:56.25%}.bootstrap .embed-responsive-4by3::before{padding-top:75%}.bootstrap .embed-responsive-1by1::before{padding-top:100%}.bootstrap .flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.bootstrap .flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-sm-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-sm-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-sm-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-sm-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-sm-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.bootstrap .flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-md-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-md-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-md-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-md-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-md-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.bootstrap .flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-lg-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-lg-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-lg-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-lg-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-lg-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.bootstrap .flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-xl-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-xl-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-xl-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-xl-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-xl-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}.bootstrap .float-left{float:left!important}.bootstrap .float-right{float:right!important}.bootstrap .float-none{float:none!important}@media (min-width:576px){.bootstrap .float-sm-left{float:left!important}.bootstrap .float-sm-right{float:right!important}.bootstrap .float-sm-none{float:none!important}}@media (min-width:768px){.bootstrap .float-md-left{float:left!important}.bootstrap .float-md-right{float:right!important}.bootstrap .float-md-none{float:none!important}}@media (min-width:992px){.bootstrap .float-lg-left{float:left!important}.bootstrap .float-lg-right{float:right!important}.bootstrap .float-lg-none{float:none!important}}@media (min-width:1200px){.bootstrap .float-xl-left{float:left!important}.bootstrap .float-xl-right{float:right!important}.bootstrap .float-xl-none{float:none!important}}.bootstrap .overflow-auto{overflow:auto!important}.bootstrap .overflow-hidden{overflow:hidden!important}.bootstrap .position-static{position:static!important}.bootstrap .position-relative{position:relative!important}.bootstrap .position-absolute{position:absolute!important}.bootstrap .position-fixed{position:fixed!important}.bootstrap .position-sticky{position:-webkit-sticky!important;position:sticky!important}.bootstrap .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.bootstrap .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.bootstrap .sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.bootstrap .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.bootstrap .sr-only-focusable:active,.bootstrap .sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.bootstrap .shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.bootstrap .shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.bootstrap .shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.bootstrap .shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.bootstrap .w-25{width:25%!important}.bootstrap .w-50{width:50%!important}.bootstrap .w-75{width:75%!important}.bootstrap .w-100{width:100%!important}.bootstrap .w-auto{width:auto!important}.bootstrap .h-25{height:25%!important}.bootstrap .h-50{height:50%!important}.bootstrap .h-75{height:75%!important}.bootstrap .h-100{height:100%!important}.bootstrap .h-auto{height:auto!important}.bootstrap .mw-100{max-width:100%!important}.bootstrap .mh-100{max-height:100%!important}.bootstrap .min-vw-100{min-width:100vw!important}.bootstrap .min-vh-100{min-height:100vh!important}.bootstrap .vw-100{width:100vw!important}.bootstrap .vh-100{height:100vh!important}.bootstrap .stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.bootstrap .m-0{margin:0!important}.bootstrap .mt-0,.bootstrap .my-0{margin-top:0!important}.bootstrap .mr-0,.bootstrap .mx-0{margin-right:0!important}.bootstrap .mb-0,.bootstrap .my-0{margin-bottom:0!important}.bootstrap .ml-0,.bootstrap .mx-0{margin-left:0!important}.bootstrap .m-1{margin:.25rem!important}.bootstrap .mt-1,.bootstrap .my-1{margin-top:.25rem!important}.bootstrap .mr-1,.bootstrap .mx-1{margin-right:.25rem!important}.bootstrap .mb-1,.bootstrap .my-1{margin-bottom:.25rem!important}.bootstrap .ml-1,.bootstrap .mx-1{margin-left:.25rem!important}.bootstrap .m-2{margin:.5rem!important}.bootstrap .mt-2,.bootstrap .my-2{margin-top:.5rem!important}.bootstrap .mr-2,.bootstrap .mx-2{margin-right:.5rem!important}.bootstrap .mb-2,.bootstrap .my-2{margin-bottom:.5rem!important}.bootstrap .ml-2,.bootstrap .mx-2{margin-left:.5rem!important}.bootstrap .m-3{margin:1rem!important}.bootstrap .mt-3,.bootstrap .my-3{margin-top:1rem!important}.bootstrap .mr-3,.bootstrap .mx-3{margin-right:1rem!important}.bootstrap .mb-3,.bootstrap .my-3{margin-bottom:1rem!important}.bootstrap .ml-3,.bootstrap .mx-3{margin-left:1rem!important}.bootstrap .m-4{margin:1.5rem!important}.bootstrap .mt-4,.bootstrap .my-4{margin-top:1.5rem!important}.bootstrap .mr-4,.bootstrap .mx-4{margin-right:1.5rem!important}.bootstrap .mb-4,.bootstrap .my-4{margin-bottom:1.5rem!important}.bootstrap .ml-4,.bootstrap .mx-4{margin-left:1.5rem!important}.bootstrap .m-5{margin:3rem!important}.bootstrap .mt-5,.bootstrap .my-5{margin-top:3rem!important}.bootstrap .mr-5,.bootstrap .mx-5{margin-right:3rem!important}.bootstrap .mb-5,.bootstrap .my-5{margin-bottom:3rem!important}.bootstrap .ml-5,.bootstrap .mx-5{margin-left:3rem!important}.bootstrap .p-0{padding:0!important}.bootstrap .pt-0,.bootstrap .py-0{padding-top:0!important}.bootstrap .pr-0,.bootstrap .px-0{padding-right:0!important}.bootstrap .pb-0,.bootstrap .py-0{padding-bottom:0!important}.bootstrap .pl-0,.bootstrap .px-0{padding-left:0!important}.bootstrap .p-1{padding:.25rem!important}.bootstrap .pt-1,.bootstrap .py-1{padding-top:.25rem!important}.bootstrap .pr-1,.bootstrap .px-1{padding-right:.25rem!important}.bootstrap .pb-1,.bootstrap .py-1{padding-bottom:.25rem!important}.bootstrap .pl-1,.bootstrap .px-1{padding-left:.25rem!important}.bootstrap .p-2{padding:.5rem!important}.bootstrap .pt-2,.bootstrap .py-2{padding-top:.5rem!important}.bootstrap .pr-2,.bootstrap .px-2{padding-right:.5rem!important}.bootstrap .pb-2,.bootstrap .py-2{padding-bottom:.5rem!important}.bootstrap .pl-2,.bootstrap .px-2{padding-left:.5rem!important}.bootstrap .p-3{padding:1rem!important}.bootstrap .pt-3,.bootstrap .py-3{padding-top:1rem!important}.bootstrap .pr-3,.bootstrap .px-3{padding-right:1rem!important}.bootstrap .pb-3,.bootstrap .py-3{padding-bottom:1rem!important}.bootstrap .pl-3,.bootstrap .px-3{padding-left:1rem!important}.bootstrap .p-4{padding:1.5rem!important}.bootstrap .pt-4,.bootstrap .py-4{padding-top:1.5rem!important}.bootstrap .pr-4,.bootstrap .px-4{padding-right:1.5rem!important}.bootstrap .pb-4,.bootstrap .py-4{padding-bottom:1.5rem!important}.bootstrap .pl-4,.bootstrap .px-4{padding-left:1.5rem!important}.bootstrap .p-5{padding:3rem!important}.bootstrap .pt-5,.bootstrap .py-5{padding-top:3rem!important}.bootstrap .pr-5,.bootstrap .px-5{padding-right:3rem!important}.bootstrap .pb-5,.bootstrap .py-5{padding-bottom:3rem!important}.bootstrap .pl-5,.bootstrap .px-5{padding-left:3rem!important}.bootstrap .m-n1{margin:-.25rem!important}.bootstrap .mt-n1,.bootstrap .my-n1{margin-top:-.25rem!important}.bootstrap .mr-n1,.bootstrap .mx-n1{margin-right:-.25rem!important}.bootstrap .mb-n1,.bootstrap .my-n1{margin-bottom:-.25rem!important}.bootstrap .ml-n1,.bootstrap .mx-n1{margin-left:-.25rem!important}.bootstrap .m-n2{margin:-.5rem!important}.bootstrap .mt-n2,.bootstrap .my-n2{margin-top:-.5rem!important}.bootstrap .mr-n2,.bootstrap .mx-n2{margin-right:-.5rem!important}.bootstrap .mb-n2,.bootstrap .my-n2{margin-bottom:-.5rem!important}.bootstrap .ml-n2,.bootstrap .mx-n2{margin-left:-.5rem!important}.bootstrap .m-n3{margin:-1rem!important}.bootstrap .mt-n3,.bootstrap .my-n3{margin-top:-1rem!important}.bootstrap .mr-n3,.bootstrap .mx-n3{margin-right:-1rem!important}.bootstrap .mb-n3,.bootstrap .my-n3{margin-bottom:-1rem!important}.bootstrap .ml-n3,.bootstrap .mx-n3{margin-left:-1rem!important}.bootstrap .m-n4{margin:-1.5rem!important}.bootstrap .mt-n4,.bootstrap .my-n4{margin-top:-1.5rem!important}.bootstrap .mr-n4,.bootstrap .mx-n4{margin-right:-1.5rem!important}.bootstrap .mb-n4,.bootstrap .my-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-n4,.bootstrap .mx-n4{margin-left:-1.5rem!important}.bootstrap .m-n5{margin:-3rem!important}.bootstrap .mt-n5,.bootstrap .my-n5{margin-top:-3rem!important}.bootstrap .mr-n5,.bootstrap .mx-n5{margin-right:-3rem!important}.bootstrap .mb-n5,.bootstrap .my-n5{margin-bottom:-3rem!important}.bootstrap .ml-n5,.bootstrap .mx-n5{margin-left:-3rem!important}.bootstrap .m-auto{margin:auto!important}.bootstrap .mt-auto,.bootstrap .my-auto{margin-top:auto!important}.bootstrap .mr-auto,.bootstrap .mx-auto{margin-right:auto!important}.bootstrap .mb-auto,.bootstrap .my-auto{margin-bottom:auto!important}.bootstrap .ml-auto,.bootstrap .mx-auto{margin-left:auto!important}@media (min-width:576px){.bootstrap .m-sm-0{margin:0!important}.bootstrap .mt-sm-0,.bootstrap .my-sm-0{margin-top:0!important}.bootstrap .mr-sm-0,.bootstrap .mx-sm-0{margin-right:0!important}.bootstrap .mb-sm-0,.bootstrap .my-sm-0{margin-bottom:0!important}.bootstrap .ml-sm-0,.bootstrap .mx-sm-0{margin-left:0!important}.bootstrap .m-sm-1{margin:.25rem!important}.bootstrap .mt-sm-1,.bootstrap .my-sm-1{margin-top:.25rem!important}.bootstrap .mr-sm-1,.bootstrap .mx-sm-1{margin-right:.25rem!important}.bootstrap .mb-sm-1,.bootstrap .my-sm-1{margin-bottom:.25rem!important}.bootstrap .ml-sm-1,.bootstrap .mx-sm-1{margin-left:.25rem!important}.bootstrap .m-sm-2{margin:.5rem!important}.bootstrap .mt-sm-2,.bootstrap .my-sm-2{margin-top:.5rem!important}.bootstrap .mr-sm-2,.bootstrap .mx-sm-2{margin-right:.5rem!important}.bootstrap .mb-sm-2,.bootstrap .my-sm-2{margin-bottom:.5rem!important}.bootstrap .ml-sm-2,.bootstrap .mx-sm-2{margin-left:.5rem!important}.bootstrap .m-sm-3{margin:1rem!important}.bootstrap .mt-sm-3,.bootstrap .my-sm-3{margin-top:1rem!important}.bootstrap .mr-sm-3,.bootstrap .mx-sm-3{margin-right:1rem!important}.bootstrap .mb-sm-3,.bootstrap .my-sm-3{margin-bottom:1rem!important}.bootstrap .ml-sm-3,.bootstrap .mx-sm-3{margin-left:1rem!important}.bootstrap .m-sm-4{margin:1.5rem!important}.bootstrap .mt-sm-4,.bootstrap .my-sm-4{margin-top:1.5rem!important}.bootstrap .mr-sm-4,.bootstrap .mx-sm-4{margin-right:1.5rem!important}.bootstrap .mb-sm-4,.bootstrap .my-sm-4{margin-bottom:1.5rem!important}.bootstrap .ml-sm-4,.bootstrap .mx-sm-4{margin-left:1.5rem!important}.bootstrap .m-sm-5{margin:3rem!important}.bootstrap .mt-sm-5,.bootstrap .my-sm-5{margin-top:3rem!important}.bootstrap .mr-sm-5,.bootstrap .mx-sm-5{margin-right:3rem!important}.bootstrap .mb-sm-5,.bootstrap .my-sm-5{margin-bottom:3rem!important}.bootstrap .ml-sm-5,.bootstrap .mx-sm-5{margin-left:3rem!important}.bootstrap .p-sm-0{padding:0!important}.bootstrap .pt-sm-0,.bootstrap .py-sm-0{padding-top:0!important}.bootstrap .pr-sm-0,.bootstrap .px-sm-0{padding-right:0!important}.bootstrap .pb-sm-0,.bootstrap .py-sm-0{padding-bottom:0!important}.bootstrap .pl-sm-0,.bootstrap .px-sm-0{padding-left:0!important}.bootstrap .p-sm-1{padding:.25rem!important}.bootstrap .pt-sm-1,.bootstrap .py-sm-1{padding-top:.25rem!important}.bootstrap .pr-sm-1,.bootstrap .px-sm-1{padding-right:.25rem!important}.bootstrap .pb-sm-1,.bootstrap .py-sm-1{padding-bottom:.25rem!important}.bootstrap .pl-sm-1,.bootstrap .px-sm-1{padding-left:.25rem!important}.bootstrap .p-sm-2{padding:.5rem!important}.bootstrap .pt-sm-2,.bootstrap .py-sm-2{padding-top:.5rem!important}.bootstrap .pr-sm-2,.bootstrap .px-sm-2{padding-right:.5rem!important}.bootstrap .pb-sm-2,.bootstrap .py-sm-2{padding-bottom:.5rem!important}.bootstrap .pl-sm-2,.bootstrap .px-sm-2{padding-left:.5rem!important}.bootstrap .p-sm-3{padding:1rem!important}.bootstrap .pt-sm-3,.bootstrap .py-sm-3{padding-top:1rem!important}.bootstrap .pr-sm-3,.bootstrap .px-sm-3{padding-right:1rem!important}.bootstrap .pb-sm-3,.bootstrap .py-sm-3{padding-bottom:1rem!important}.bootstrap .pl-sm-3,.bootstrap .px-sm-3{padding-left:1rem!important}.bootstrap .p-sm-4{padding:1.5rem!important}.bootstrap .pt-sm-4,.bootstrap .py-sm-4{padding-top:1.5rem!important}.bootstrap .pr-sm-4,.bootstrap .px-sm-4{padding-right:1.5rem!important}.bootstrap .pb-sm-4,.bootstrap .py-sm-4{padding-bottom:1.5rem!important}.bootstrap .pl-sm-4,.bootstrap .px-sm-4{padding-left:1.5rem!important}.bootstrap .p-sm-5{padding:3rem!important}.bootstrap .pt-sm-5,.bootstrap .py-sm-5{padding-top:3rem!important}.bootstrap .pr-sm-5,.bootstrap .px-sm-5{padding-right:3rem!important}.bootstrap .pb-sm-5,.bootstrap .py-sm-5{padding-bottom:3rem!important}.bootstrap .pl-sm-5,.bootstrap .px-sm-5{padding-left:3rem!important}.bootstrap .m-sm-n1{margin:-.25rem!important}.bootstrap .mt-sm-n1,.bootstrap .my-sm-n1{margin-top:-.25rem!important}.bootstrap .mr-sm-n1,.bootstrap .mx-sm-n1{margin-right:-.25rem!important}.bootstrap .mb-sm-n1,.bootstrap .my-sm-n1{margin-bottom:-.25rem!important}.bootstrap .ml-sm-n1,.bootstrap .mx-sm-n1{margin-left:-.25rem!important}.bootstrap .m-sm-n2{margin:-.5rem!important}.bootstrap .mt-sm-n2,.bootstrap .my-sm-n2{margin-top:-.5rem!important}.bootstrap .mr-sm-n2,.bootstrap .mx-sm-n2{margin-right:-.5rem!important}.bootstrap .mb-sm-n2,.bootstrap .my-sm-n2{margin-bottom:-.5rem!important}.bootstrap .ml-sm-n2,.bootstrap .mx-sm-n2{margin-left:-.5rem!important}.bootstrap .m-sm-n3{margin:-1rem!important}.bootstrap .mt-sm-n3,.bootstrap .my-sm-n3{margin-top:-1rem!important}.bootstrap .mr-sm-n3,.bootstrap .mx-sm-n3{margin-right:-1rem!important}.bootstrap .mb-sm-n3,.bootstrap .my-sm-n3{margin-bottom:-1rem!important}.bootstrap .ml-sm-n3,.bootstrap .mx-sm-n3{margin-left:-1rem!important}.bootstrap .m-sm-n4{margin:-1.5rem!important}.bootstrap .mt-sm-n4,.bootstrap .my-sm-n4{margin-top:-1.5rem!important}.bootstrap .mr-sm-n4,.bootstrap .mx-sm-n4{margin-right:-1.5rem!important}.bootstrap .mb-sm-n4,.bootstrap .my-sm-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-sm-n4,.bootstrap .mx-sm-n4{margin-left:-1.5rem!important}.bootstrap .m-sm-n5{margin:-3rem!important}.bootstrap .mt-sm-n5,.bootstrap .my-sm-n5{margin-top:-3rem!important}.bootstrap .mr-sm-n5,.bootstrap .mx-sm-n5{margin-right:-3rem!important}.bootstrap .mb-sm-n5,.bootstrap .my-sm-n5{margin-bottom:-3rem!important}.bootstrap .ml-sm-n5,.bootstrap .mx-sm-n5{margin-left:-3rem!important}.bootstrap .m-sm-auto{margin:auto!important}.bootstrap .mt-sm-auto,.bootstrap .my-sm-auto{margin-top:auto!important}.bootstrap .mr-sm-auto,.bootstrap .mx-sm-auto{margin-right:auto!important}.bootstrap .mb-sm-auto,.bootstrap .my-sm-auto{margin-bottom:auto!important}.bootstrap .ml-sm-auto,.bootstrap .mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.bootstrap .m-md-0{margin:0!important}.bootstrap .mt-md-0,.bootstrap .my-md-0{margin-top:0!important}.bootstrap .mr-md-0,.bootstrap .mx-md-0{margin-right:0!important}.bootstrap .mb-md-0,.bootstrap .my-md-0{margin-bottom:0!important}.bootstrap .ml-md-0,.bootstrap .mx-md-0{margin-left:0!important}.bootstrap .m-md-1{margin:.25rem!important}.bootstrap .mt-md-1,.bootstrap .my-md-1{margin-top:.25rem!important}.bootstrap .mr-md-1,.bootstrap .mx-md-1{margin-right:.25rem!important}.bootstrap .mb-md-1,.bootstrap .my-md-1{margin-bottom:.25rem!important}.bootstrap .ml-md-1,.bootstrap .mx-md-1{margin-left:.25rem!important}.bootstrap .m-md-2{margin:.5rem!important}.bootstrap .mt-md-2,.bootstrap .my-md-2{margin-top:.5rem!important}.bootstrap .mr-md-2,.bootstrap .mx-md-2{margin-right:.5rem!important}.bootstrap .mb-md-2,.bootstrap .my-md-2{margin-bottom:.5rem!important}.bootstrap .ml-md-2,.bootstrap .mx-md-2{margin-left:.5rem!important}.bootstrap .m-md-3{margin:1rem!important}.bootstrap .mt-md-3,.bootstrap .my-md-3{margin-top:1rem!important}.bootstrap .mr-md-3,.bootstrap .mx-md-3{margin-right:1rem!important}.bootstrap .mb-md-3,.bootstrap .my-md-3{margin-bottom:1rem!important}.bootstrap .ml-md-3,.bootstrap .mx-md-3{margin-left:1rem!important}.bootstrap .m-md-4{margin:1.5rem!important}.bootstrap .mt-md-4,.bootstrap .my-md-4{margin-top:1.5rem!important}.bootstrap .mr-md-4,.bootstrap .mx-md-4{margin-right:1.5rem!important}.bootstrap .mb-md-4,.bootstrap .my-md-4{margin-bottom:1.5rem!important}.bootstrap .ml-md-4,.bootstrap .mx-md-4{margin-left:1.5rem!important}.bootstrap .m-md-5{margin:3rem!important}.bootstrap .mt-md-5,.bootstrap .my-md-5{margin-top:3rem!important}.bootstrap .mr-md-5,.bootstrap .mx-md-5{margin-right:3rem!important}.bootstrap .mb-md-5,.bootstrap .my-md-5{margin-bottom:3rem!important}.bootstrap .ml-md-5,.bootstrap .mx-md-5{margin-left:3rem!important}.bootstrap .p-md-0{padding:0!important}.bootstrap .pt-md-0,.bootstrap .py-md-0{padding-top:0!important}.bootstrap .pr-md-0,.bootstrap .px-md-0{padding-right:0!important}.bootstrap .pb-md-0,.bootstrap .py-md-0{padding-bottom:0!important}.bootstrap .pl-md-0,.bootstrap .px-md-0{padding-left:0!important}.bootstrap .p-md-1{padding:.25rem!important}.bootstrap .pt-md-1,.bootstrap .py-md-1{padding-top:.25rem!important}.bootstrap .pr-md-1,.bootstrap .px-md-1{padding-right:.25rem!important}.bootstrap .pb-md-1,.bootstrap .py-md-1{padding-bottom:.25rem!important}.bootstrap .pl-md-1,.bootstrap .px-md-1{padding-left:.25rem!important}.bootstrap .p-md-2{padding:.5rem!important}.bootstrap .pt-md-2,.bootstrap .py-md-2{padding-top:.5rem!important}.bootstrap .pr-md-2,.bootstrap .px-md-2{padding-right:.5rem!important}.bootstrap .pb-md-2,.bootstrap .py-md-2{padding-bottom:.5rem!important}.bootstrap .pl-md-2,.bootstrap .px-md-2{padding-left:.5rem!important}.bootstrap .p-md-3{padding:1rem!important}.bootstrap .pt-md-3,.bootstrap .py-md-3{padding-top:1rem!important}.bootstrap .pr-md-3,.bootstrap .px-md-3{padding-right:1rem!important}.bootstrap .pb-md-3,.bootstrap .py-md-3{padding-bottom:1rem!important}.bootstrap .pl-md-3,.bootstrap .px-md-3{padding-left:1rem!important}.bootstrap .p-md-4{padding:1.5rem!important}.bootstrap .pt-md-4,.bootstrap .py-md-4{padding-top:1.5rem!important}.bootstrap .pr-md-4,.bootstrap .px-md-4{padding-right:1.5rem!important}.bootstrap .pb-md-4,.bootstrap .py-md-4{padding-bottom:1.5rem!important}.bootstrap .pl-md-4,.bootstrap .px-md-4{padding-left:1.5rem!important}.bootstrap .p-md-5{padding:3rem!important}.bootstrap .pt-md-5,.bootstrap .py-md-5{padding-top:3rem!important}.bootstrap .pr-md-5,.bootstrap .px-md-5{padding-right:3rem!important}.bootstrap .pb-md-5,.bootstrap .py-md-5{padding-bottom:3rem!important}.bootstrap .pl-md-5,.bootstrap .px-md-5{padding-left:3rem!important}.bootstrap .m-md-n1{margin:-.25rem!important}.bootstrap .mt-md-n1,.bootstrap .my-md-n1{margin-top:-.25rem!important}.bootstrap .mr-md-n1,.bootstrap .mx-md-n1{margin-right:-.25rem!important}.bootstrap .mb-md-n1,.bootstrap .my-md-n1{margin-bottom:-.25rem!important}.bootstrap .ml-md-n1,.bootstrap .mx-md-n1{margin-left:-.25rem!important}.bootstrap .m-md-n2{margin:-.5rem!important}.bootstrap .mt-md-n2,.bootstrap .my-md-n2{margin-top:-.5rem!important}.bootstrap .mr-md-n2,.bootstrap .mx-md-n2{margin-right:-.5rem!important}.bootstrap .mb-md-n2,.bootstrap .my-md-n2{margin-bottom:-.5rem!important}.bootstrap .ml-md-n2,.bootstrap .mx-md-n2{margin-left:-.5rem!important}.bootstrap .m-md-n3{margin:-1rem!important}.bootstrap .mt-md-n3,.bootstrap .my-md-n3{margin-top:-1rem!important}.bootstrap .mr-md-n3,.bootstrap .mx-md-n3{margin-right:-1rem!important}.bootstrap .mb-md-n3,.bootstrap .my-md-n3{margin-bottom:-1rem!important}.bootstrap .ml-md-n3,.bootstrap .mx-md-n3{margin-left:-1rem!important}.bootstrap .m-md-n4{margin:-1.5rem!important}.bootstrap .mt-md-n4,.bootstrap .my-md-n4{margin-top:-1.5rem!important}.bootstrap .mr-md-n4,.bootstrap .mx-md-n4{margin-right:-1.5rem!important}.bootstrap .mb-md-n4,.bootstrap .my-md-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-md-n4,.bootstrap .mx-md-n4{margin-left:-1.5rem!important}.bootstrap .m-md-n5{margin:-3rem!important}.bootstrap .mt-md-n5,.bootstrap .my-md-n5{margin-top:-3rem!important}.bootstrap .mr-md-n5,.bootstrap .mx-md-n5{margin-right:-3rem!important}.bootstrap .mb-md-n5,.bootstrap .my-md-n5{margin-bottom:-3rem!important}.bootstrap .ml-md-n5,.bootstrap .mx-md-n5{margin-left:-3rem!important}.bootstrap .m-md-auto{margin:auto!important}.bootstrap .mt-md-auto,.bootstrap .my-md-auto{margin-top:auto!important}.bootstrap .mr-md-auto,.bootstrap .mx-md-auto{margin-right:auto!important}.bootstrap .mb-md-auto,.bootstrap .my-md-auto{margin-bottom:auto!important}.bootstrap .ml-md-auto,.bootstrap .mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.bootstrap .m-lg-0{margin:0!important}.bootstrap .mt-lg-0,.bootstrap .my-lg-0{margin-top:0!important}.bootstrap .mr-lg-0,.bootstrap .mx-lg-0{margin-right:0!important}.bootstrap .mb-lg-0,.bootstrap .my-lg-0{margin-bottom:0!important}.bootstrap .ml-lg-0,.bootstrap .mx-lg-0{margin-left:0!important}.bootstrap .m-lg-1{margin:.25rem!important}.bootstrap .mt-lg-1,.bootstrap .my-lg-1{margin-top:.25rem!important}.bootstrap .mr-lg-1,.bootstrap .mx-lg-1{margin-right:.25rem!important}.bootstrap .mb-lg-1,.bootstrap .my-lg-1{margin-bottom:.25rem!important}.bootstrap .ml-lg-1,.bootstrap .mx-lg-1{margin-left:.25rem!important}.bootstrap .m-lg-2{margin:.5rem!important}.bootstrap .mt-lg-2,.bootstrap .my-lg-2{margin-top:.5rem!important}.bootstrap .mr-lg-2,.bootstrap .mx-lg-2{margin-right:.5rem!important}.bootstrap .mb-lg-2,.bootstrap .my-lg-2{margin-bottom:.5rem!important}.bootstrap .ml-lg-2,.bootstrap .mx-lg-2{margin-left:.5rem!important}.bootstrap .m-lg-3{margin:1rem!important}.bootstrap .mt-lg-3,.bootstrap .my-lg-3{margin-top:1rem!important}.bootstrap .mr-lg-3,.bootstrap .mx-lg-3{margin-right:1rem!important}.bootstrap .mb-lg-3,.bootstrap .my-lg-3{margin-bottom:1rem!important}.bootstrap .ml-lg-3,.bootstrap .mx-lg-3{margin-left:1rem!important}.bootstrap .m-lg-4{margin:1.5rem!important}.bootstrap .mt-lg-4,.bootstrap .my-lg-4{margin-top:1.5rem!important}.bootstrap .mr-lg-4,.bootstrap .mx-lg-4{margin-right:1.5rem!important}.bootstrap .mb-lg-4,.bootstrap .my-lg-4{margin-bottom:1.5rem!important}.bootstrap .ml-lg-4,.bootstrap .mx-lg-4{margin-left:1.5rem!important}.bootstrap .m-lg-5{margin:3rem!important}.bootstrap .mt-lg-5,.bootstrap .my-lg-5{margin-top:3rem!important}.bootstrap .mr-lg-5,.bootstrap .mx-lg-5{margin-right:3rem!important}.bootstrap .mb-lg-5,.bootstrap .my-lg-5{margin-bottom:3rem!important}.bootstrap .ml-lg-5,.bootstrap .mx-lg-5{margin-left:3rem!important}.bootstrap .p-lg-0{padding:0!important}.bootstrap .pt-lg-0,.bootstrap .py-lg-0{padding-top:0!important}.bootstrap .pr-lg-0,.bootstrap .px-lg-0{padding-right:0!important}.bootstrap .pb-lg-0,.bootstrap .py-lg-0{padding-bottom:0!important}.bootstrap .pl-lg-0,.bootstrap .px-lg-0{padding-left:0!important}.bootstrap .p-lg-1{padding:.25rem!important}.bootstrap .pt-lg-1,.bootstrap .py-lg-1{padding-top:.25rem!important}.bootstrap .pr-lg-1,.bootstrap .px-lg-1{padding-right:.25rem!important}.bootstrap .pb-lg-1,.bootstrap .py-lg-1{padding-bottom:.25rem!important}.bootstrap .pl-lg-1,.bootstrap .px-lg-1{padding-left:.25rem!important}.bootstrap .p-lg-2{padding:.5rem!important}.bootstrap .pt-lg-2,.bootstrap .py-lg-2{padding-top:.5rem!important}.bootstrap .pr-lg-2,.bootstrap .px-lg-2{padding-right:.5rem!important}.bootstrap .pb-lg-2,.bootstrap .py-lg-2{padding-bottom:.5rem!important}.bootstrap .pl-lg-2,.bootstrap .px-lg-2{padding-left:.5rem!important}.bootstrap .p-lg-3{padding:1rem!important}.bootstrap .pt-lg-3,.bootstrap .py-lg-3{padding-top:1rem!important}.bootstrap .pr-lg-3,.bootstrap .px-lg-3{padding-right:1rem!important}.bootstrap .pb-lg-3,.bootstrap .py-lg-3{padding-bottom:1rem!important}.bootstrap .pl-lg-3,.bootstrap .px-lg-3{padding-left:1rem!important}.bootstrap .p-lg-4{padding:1.5rem!important}.bootstrap .pt-lg-4,.bootstrap .py-lg-4{padding-top:1.5rem!important}.bootstrap .pr-lg-4,.bootstrap .px-lg-4{padding-right:1.5rem!important}.bootstrap .pb-lg-4,.bootstrap .py-lg-4{padding-bottom:1.5rem!important}.bootstrap .pl-lg-4,.bootstrap .px-lg-4{padding-left:1.5rem!important}.bootstrap .p-lg-5{padding:3rem!important}.bootstrap .pt-lg-5,.bootstrap .py-lg-5{padding-top:3rem!important}.bootstrap .pr-lg-5,.bootstrap .px-lg-5{padding-right:3rem!important}.bootstrap .pb-lg-5,.bootstrap .py-lg-5{padding-bottom:3rem!important}.bootstrap .pl-lg-5,.bootstrap .px-lg-5{padding-left:3rem!important}.bootstrap .m-lg-n1{margin:-.25rem!important}.bootstrap .mt-lg-n1,.bootstrap .my-lg-n1{margin-top:-.25rem!important}.bootstrap .mr-lg-n1,.bootstrap .mx-lg-n1{margin-right:-.25rem!important}.bootstrap .mb-lg-n1,.bootstrap .my-lg-n1{margin-bottom:-.25rem!important}.bootstrap .ml-lg-n1,.bootstrap .mx-lg-n1{margin-left:-.25rem!important}.bootstrap .m-lg-n2{margin:-.5rem!important}.bootstrap .mt-lg-n2,.bootstrap .my-lg-n2{margin-top:-.5rem!important}.bootstrap .mr-lg-n2,.bootstrap .mx-lg-n2{margin-right:-.5rem!important}.bootstrap .mb-lg-n2,.bootstrap .my-lg-n2{margin-bottom:-.5rem!important}.bootstrap .ml-lg-n2,.bootstrap .mx-lg-n2{margin-left:-.5rem!important}.bootstrap .m-lg-n3{margin:-1rem!important}.bootstrap .mt-lg-n3,.bootstrap .my-lg-n3{margin-top:-1rem!important}.bootstrap .mr-lg-n3,.bootstrap .mx-lg-n3{margin-right:-1rem!important}.bootstrap .mb-lg-n3,.bootstrap .my-lg-n3{margin-bottom:-1rem!important}.bootstrap .ml-lg-n3,.bootstrap .mx-lg-n3{margin-left:-1rem!important}.bootstrap .m-lg-n4{margin:-1.5rem!important}.bootstrap .mt-lg-n4,.bootstrap .my-lg-n4{margin-top:-1.5rem!important}.bootstrap .mr-lg-n4,.bootstrap .mx-lg-n4{margin-right:-1.5rem!important}.bootstrap .mb-lg-n4,.bootstrap .my-lg-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-lg-n4,.bootstrap .mx-lg-n4{margin-left:-1.5rem!important}.bootstrap .m-lg-n5{margin:-3rem!important}.bootstrap .mt-lg-n5,.bootstrap .my-lg-n5{margin-top:-3rem!important}.bootstrap .mr-lg-n5,.bootstrap .mx-lg-n5{margin-right:-3rem!important}.bootstrap .mb-lg-n5,.bootstrap .my-lg-n5{margin-bottom:-3rem!important}.bootstrap .ml-lg-n5,.bootstrap .mx-lg-n5{margin-left:-3rem!important}.bootstrap .m-lg-auto{margin:auto!important}.bootstrap .mt-lg-auto,.bootstrap .my-lg-auto{margin-top:auto!important}.bootstrap .mr-lg-auto,.bootstrap .mx-lg-auto{margin-right:auto!important}.bootstrap .mb-lg-auto,.bootstrap .my-lg-auto{margin-bottom:auto!important}.bootstrap .ml-lg-auto,.bootstrap .mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.bootstrap .m-xl-0{margin:0!important}.bootstrap .mt-xl-0,.bootstrap .my-xl-0{margin-top:0!important}.bootstrap .mr-xl-0,.bootstrap .mx-xl-0{margin-right:0!important}.bootstrap .mb-xl-0,.bootstrap .my-xl-0{margin-bottom:0!important}.bootstrap .ml-xl-0,.bootstrap .mx-xl-0{margin-left:0!important}.bootstrap .m-xl-1{margin:.25rem!important}.bootstrap .mt-xl-1,.bootstrap .my-xl-1{margin-top:.25rem!important}.bootstrap .mr-xl-1,.bootstrap .mx-xl-1{margin-right:.25rem!important}.bootstrap .mb-xl-1,.bootstrap .my-xl-1{margin-bottom:.25rem!important}.bootstrap .ml-xl-1,.bootstrap .mx-xl-1{margin-left:.25rem!important}.bootstrap .m-xl-2{margin:.5rem!important}.bootstrap .mt-xl-2,.bootstrap .my-xl-2{margin-top:.5rem!important}.bootstrap .mr-xl-2,.bootstrap .mx-xl-2{margin-right:.5rem!important}.bootstrap .mb-xl-2,.bootstrap .my-xl-2{margin-bottom:.5rem!important}.bootstrap .ml-xl-2,.bootstrap .mx-xl-2{margin-left:.5rem!important}.bootstrap .m-xl-3{margin:1rem!important}.bootstrap .mt-xl-3,.bootstrap .my-xl-3{margin-top:1rem!important}.bootstrap .mr-xl-3,.bootstrap .mx-xl-3{margin-right:1rem!important}.bootstrap .mb-xl-3,.bootstrap .my-xl-3{margin-bottom:1rem!important}.bootstrap .ml-xl-3,.bootstrap .mx-xl-3{margin-left:1rem!important}.bootstrap .m-xl-4{margin:1.5rem!important}.bootstrap .mt-xl-4,.bootstrap .my-xl-4{margin-top:1.5rem!important}.bootstrap .mr-xl-4,.bootstrap .mx-xl-4{margin-right:1.5rem!important}.bootstrap .mb-xl-4,.bootstrap .my-xl-4{margin-bottom:1.5rem!important}.bootstrap .ml-xl-4,.bootstrap .mx-xl-4{margin-left:1.5rem!important}.bootstrap .m-xl-5{margin:3rem!important}.bootstrap .mt-xl-5,.bootstrap .my-xl-5{margin-top:3rem!important}.bootstrap .mr-xl-5,.bootstrap .mx-xl-5{margin-right:3rem!important}.bootstrap .mb-xl-5,.bootstrap .my-xl-5{margin-bottom:3rem!important}.bootstrap .ml-xl-5,.bootstrap .mx-xl-5{margin-left:3rem!important}.bootstrap .p-xl-0{padding:0!important}.bootstrap .pt-xl-0,.bootstrap .py-xl-0{padding-top:0!important}.bootstrap .pr-xl-0,.bootstrap .px-xl-0{padding-right:0!important}.bootstrap .pb-xl-0,.bootstrap .py-xl-0{padding-bottom:0!important}.bootstrap .pl-xl-0,.bootstrap .px-xl-0{padding-left:0!important}.bootstrap .p-xl-1{padding:.25rem!important}.bootstrap .pt-xl-1,.bootstrap .py-xl-1{padding-top:.25rem!important}.bootstrap .pr-xl-1,.bootstrap .px-xl-1{padding-right:.25rem!important}.bootstrap .pb-xl-1,.bootstrap .py-xl-1{padding-bottom:.25rem!important}.bootstrap .pl-xl-1,.bootstrap .px-xl-1{padding-left:.25rem!important}.bootstrap .p-xl-2{padding:.5rem!important}.bootstrap .pt-xl-2,.bootstrap .py-xl-2{padding-top:.5rem!important}.bootstrap .pr-xl-2,.bootstrap .px-xl-2{padding-right:.5rem!important}.bootstrap .pb-xl-2,.bootstrap .py-xl-2{padding-bottom:.5rem!important}.bootstrap .pl-xl-2,.bootstrap .px-xl-2{padding-left:.5rem!important}.bootstrap .p-xl-3{padding:1rem!important}.bootstrap .pt-xl-3,.bootstrap .py-xl-3{padding-top:1rem!important}.bootstrap .pr-xl-3,.bootstrap .px-xl-3{padding-right:1rem!important}.bootstrap .pb-xl-3,.bootstrap .py-xl-3{padding-bottom:1rem!important}.bootstrap .pl-xl-3,.bootstrap .px-xl-3{padding-left:1rem!important}.bootstrap .p-xl-4{padding:1.5rem!important}.bootstrap .pt-xl-4,.bootstrap .py-xl-4{padding-top:1.5rem!important}.bootstrap .pr-xl-4,.bootstrap .px-xl-4{padding-right:1.5rem!important}.bootstrap .pb-xl-4,.bootstrap .py-xl-4{padding-bottom:1.5rem!important}.bootstrap .pl-xl-4,.bootstrap .px-xl-4{padding-left:1.5rem!important}.bootstrap .p-xl-5{padding:3rem!important}.bootstrap .pt-xl-5,.bootstrap .py-xl-5{padding-top:3rem!important}.bootstrap .pr-xl-5,.bootstrap .px-xl-5{padding-right:3rem!important}.bootstrap .pb-xl-5,.bootstrap .py-xl-5{padding-bottom:3rem!important}.bootstrap .pl-xl-5,.bootstrap .px-xl-5{padding-left:3rem!important}.bootstrap .m-xl-n1{margin:-.25rem!important}.bootstrap .mt-xl-n1,.bootstrap .my-xl-n1{margin-top:-.25rem!important}.bootstrap .mr-xl-n1,.bootstrap .mx-xl-n1{margin-right:-.25rem!important}.bootstrap .mb-xl-n1,.bootstrap .my-xl-n1{margin-bottom:-.25rem!important}.bootstrap .ml-xl-n1,.bootstrap .mx-xl-n1{margin-left:-.25rem!important}.bootstrap .m-xl-n2{margin:-.5rem!important}.bootstrap .mt-xl-n2,.bootstrap .my-xl-n2{margin-top:-.5rem!important}.bootstrap .mr-xl-n2,.bootstrap .mx-xl-n2{margin-right:-.5rem!important}.bootstrap .mb-xl-n2,.bootstrap .my-xl-n2{margin-bottom:-.5rem!important}.bootstrap .ml-xl-n2,.bootstrap .mx-xl-n2{margin-left:-.5rem!important}.bootstrap .m-xl-n3{margin:-1rem!important}.bootstrap .mt-xl-n3,.bootstrap .my-xl-n3{margin-top:-1rem!important}.bootstrap .mr-xl-n3,.bootstrap .mx-xl-n3{margin-right:-1rem!important}.bootstrap .mb-xl-n3,.bootstrap .my-xl-n3{margin-bottom:-1rem!important}.bootstrap .ml-xl-n3,.bootstrap .mx-xl-n3{margin-left:-1rem!important}.bootstrap .m-xl-n4{margin:-1.5rem!important}.bootstrap .mt-xl-n4,.bootstrap .my-xl-n4{margin-top:-1.5rem!important}.bootstrap .mr-xl-n4,.bootstrap .mx-xl-n4{margin-right:-1.5rem!important}.bootstrap .mb-xl-n4,.bootstrap .my-xl-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-xl-n4,.bootstrap .mx-xl-n4{margin-left:-1.5rem!important}.bootstrap .m-xl-n5{margin:-3rem!important}.bootstrap .mt-xl-n5,.bootstrap .my-xl-n5{margin-top:-3rem!important}.bootstrap .mr-xl-n5,.bootstrap .mx-xl-n5{margin-right:-3rem!important}.bootstrap .mb-xl-n5,.bootstrap .my-xl-n5{margin-bottom:-3rem!important}.bootstrap .ml-xl-n5,.bootstrap .mx-xl-n5{margin-left:-3rem!important}.bootstrap .m-xl-auto{margin:auto!important}.bootstrap .mt-xl-auto,.bootstrap .my-xl-auto{margin-top:auto!important}.bootstrap .mr-xl-auto,.bootstrap .mx-xl-auto{margin-right:auto!important}.bootstrap .mb-xl-auto,.bootstrap .my-xl-auto{margin-bottom:auto!important}.bootstrap .ml-xl-auto,.bootstrap .mx-xl-auto{margin-left:auto!important}}.bootstrap .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.bootstrap .text-justify{text-align:justify!important}.bootstrap .text-wrap{white-space:normal!important}.bootstrap .text-nowrap{white-space:nowrap!important}.bootstrap .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap .text-left{text-align:left!important}.bootstrap .text-right{text-align:right!important}.bootstrap .text-center{text-align:center!important}@media (min-width:576px){.bootstrap .text-sm-left{text-align:left!important}.bootstrap .text-sm-right{text-align:right!important}.bootstrap .text-sm-center{text-align:center!important}}@media (min-width:768px){.bootstrap .text-md-left{text-align:left!important}.bootstrap .text-md-right{text-align:right!important}.bootstrap .text-md-center{text-align:center!important}}@media (min-width:992px){.bootstrap .text-lg-left{text-align:left!important}.bootstrap .text-lg-right{text-align:right!important}.bootstrap .text-lg-center{text-align:center!important}}@media (min-width:1200px){.bootstrap .text-xl-left{text-align:left!important}.bootstrap .text-xl-right{text-align:right!important}.bootstrap .text-xl-center{text-align:center!important}}.bootstrap .text-lowercase{text-transform:lowercase!important}.bootstrap .text-uppercase{text-transform:uppercase!important}.bootstrap .text-capitalize{text-transform:capitalize!important}.bootstrap .font-weight-light{font-weight:300!important}.bootstrap .font-weight-lighter{font-weight:lighter!important}.bootstrap .font-weight-normal{font-weight:400!important}.bootstrap .font-weight-bold{font-weight:700!important}.bootstrap .font-weight-bolder{font-weight:bolder!important}.bootstrap .font-italic{font-style:italic!important}.bootstrap .text-white{color:#fff!important}.bootstrap .text-primary{color:#007bff!important}.bootstrap a.text-primary:focus,.bootstrap a.text-primary:hover{color:#0056b3!important}.bootstrap .text-secondary{color:#6c757d!important}.bootstrap a.text-secondary:focus,.bootstrap a.text-secondary:hover{color:#494f54!important}.bootstrap .text-success{color:#28a745!important}.bootstrap a.text-success:focus,.bootstrap a.text-success:hover{color:#19692c!important}.bootstrap .text-info{color:#17a2b8!important}.bootstrap a.text-info:focus,.bootstrap a.text-info:hover{color:#0f6674!important}.bootstrap .text-warning{color:#ffc107!important}.bootstrap a.text-warning:focus,.bootstrap a.text-warning:hover{color:#ba8b00!important}.bootstrap .text-danger{color:#dc3545!important}.bootstrap a.text-danger:focus,.bootstrap a.text-danger:hover{color:#a71d2a!important}.bootstrap .text-light{color:#f8f9fa!important}.bootstrap a.text-light:focus,.bootstrap a.text-light:hover{color:#cbd3da!important}.bootstrap .text-dark{color:#343a40!important}.bootstrap a.text-dark:focus,.bootstrap a.text-dark:hover{color:#121416!important}.bootstrap .text-body{color:#212529!important}.bootstrap .text-muted{color:#6c757d!important}.bootstrap .text-black-50{color:rgba(0,0,0,.5)!important}.bootstrap .text-white-50{color:rgba(255,255,255,.5)!important}.bootstrap .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.bootstrap .text-decoration-none{text-decoration:none!important}.bootstrap .text-break{word-break:break-word!important;overflow-wrap:break-word!important}.bootstrap .text-reset{color:inherit!important}.bootstrap .visible{visibility:visible!important}.bootstrap .invisible{visibility:hidden!important} diff --git a/docs/files/placeholder.html b/docs/files/placeholder.html deleted file mode 100644 index adf914e..0000000 --- a/docs/files/placeholder.html +++ /dev/null @@ -1,3 +0,0 @@ - -EFCore.FSharp docs / placeholder.html-EFCore.FSharp

place images or other files here

-
\ No newline at end of file diff --git a/docs/files/placeholder.md b/docs/files/placeholder.md deleted file mode 100644 index 21d4034..0000000 --- a/docs/files/placeholder.md +++ /dev/null @@ -1 +0,0 @@ -place images or other files here diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 7c2230f..0000000 --- a/docs/index.html +++ /dev/null @@ -1,59 +0,0 @@ - -EFCore.FSharp docs / index.html-EFCore.FSharp

EFCore.FSharp

-
-

What is EFCore.FSharp?

-

EFCore.FSharp provides F# design time support for EF Core.

-

Why use EFCore.FSharp?

-

EF Core is the default option for data access that most people with experience in .NET are aware of. It should be possible to use any .NET language with it, not just C#

-

This provides support for code-first and database-first use of EF Core in F#, including supporting record and option types.

-
-
-
-
-
-
Tutorials
-

The basics of getting started with EFCore.FSharp.

-
- -
-
-
-
-
-
How-To Guides
-

Guides you through the steps involved in addressing key problems and use-cases.

-
- -
-
-
-
-
-
Explanations
-

Discusses key topics and concepts at a fairly high level and provide useful background information and explanation..

-
- -
-
-
-
-
-
Api Reference
-

Contain technical reference for APIs.

-
- -
-
-
-
\ No newline at end of file diff --git a/docsSrc/Tutorials/Getting_Started.md b/docsSrc/Tutorials/Getting_Started.md index 807336e..a10a743 100644 --- a/docsSrc/Tutorials/Getting_Started.md +++ b/docsSrc/Tutorials/Getting_Started.md @@ -7,12 +7,6 @@ This guide assumes: * You have created a project and added the `dotnet-ef` tool ## Installing the package -paket - - [lang=bash] - paket install EntityFrameworkCore.FSharp - -dotnet CLI [lang=bash] dotnet add package EntityFrameworkCore.FSharp @@ -28,4 +22,4 @@ An example of where you would need to, would be if you were scaffolding a new co By default, scaffolded objects will be created as Record types objects where nullable columns of type `'a` are represented as types of `'a option`. -If you want to change the deault behaviour to generate nullable columns as properties of type `Nullable<'a>` or to crete your entities as a C#-type class object, check out Scaffolding Types +If you want to change the deault behaviour to generate nullable columns as properties of type `Nullable<'a>` or to crete your entities as a C#-type class object, check out Scaffolding Types diff --git a/docsSrc/_menu-item_template.html b/docsSrc/_menu-item_template.html new file mode 100644 index 0000000..dc1b656 --- /dev/null +++ b/docsSrc/_menu-item_template.html @@ -0,0 +1 @@ +
  • {{fsdocs-menu-item-content}}
  • \ No newline at end of file diff --git a/docsSrc/_menu_template.html b/docsSrc/_menu_template.html new file mode 100644 index 0000000..066716c --- /dev/null +++ b/docsSrc/_menu_template.html @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/docsSrc/_template.html b/docsSrc/_template.html new file mode 100644 index 0000000..039035f --- /dev/null +++ b/docsSrc/_template.html @@ -0,0 +1,166 @@ + + + + + + {{fsdocs-page-title}} + + + + + + + + + + + + + + + + {{fsdocs-watch-script}} + + + + + + +
    + {{fsdocs-content}} + {{fsdocs-tooltips}} +
    + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docsSrc/content/cleanups.js b/docsSrc/content/cleanups.js deleted file mode 100644 index 79871b2..0000000 --- a/docsSrc/content/cleanups.js +++ /dev/null @@ -1,5 +0,0 @@ -$(function() { - // Makes code snippets responsive - $("table").addClass("table-responsive"); -}) - diff --git a/docsSrc/content/fsdocs-custom.css b/docsSrc/content/fsdocs-custom.css new file mode 100644 index 0000000..62b2801 --- /dev/null +++ b/docsSrc/content/fsdocs-custom.css @@ -0,0 +1,15 @@ +.fsharp-icon-logo { + width: 25px; + margin-top: -2px; + -webkit-filter: grayscale(100%) brightness(1) invert(1); /* Safari 6.0 - 9.0 */ + filter: grayscale(100%) brightness(1) invert(1); +} + + +body .navbar .dropdown-menu .active .bi { + display: block !important; +} + +nav.navbar .dropdown-item img.fsharp-icon-logo { + margin-right: 0px; +} diff --git a/docsSrc/content/fsdocs-dark.css b/docsSrc/content/fsdocs-dark.css new file mode 100644 index 0000000..001b653 --- /dev/null +++ b/docsSrc/content/fsdocs-dark.css @@ -0,0 +1,50 @@ +@import url('https://raw.githubusercontent.com/tonsky/FiraCode/fixed/distr/fira_code.css'); +@import url('https://fonts.googleapis.com/css2?family=Hind+Vadodara&family=Roboto+Mono&display=swap'); +/*-------------------------------------------------------------------------- + Formatting for page & standard document content +/*--------------------------------------------------------------------------*/ + +:root { + --fsdocs-text-color:#d1d1d1; + --fsdocs-pre-border-color: #000000; + --fsdocs-pre-border-color-top: #070707; + --fsdocs-pre-background-color: #1E1E1E; + --fsdocs-pre-color: #e2e2e2; + --fsdocs-table-pre-background-color: #1d1d1d; + --fsdocs-table-pre-color: #c9c9c9; + + --fsdocs-code-strings-color: #ea9a75; + --fsdocs-code-printf-color: #E0C57F; + --fsdocs-code-escaped-color: #EA8675; + --fsdocs-code-identifiers-color: var(--fsdocs-text-color); + --fsdocs-code-module-color: #43AEC6; + --fsdocs-code-reference-color: #6a8dd8; + --fsdocs-code-value-color: #43AEC6; + --fsdocs-code-interface-color: #43AEC6; + --fsdocs-code-typearg-color: #43AEC6; + --fsdocs-code-disposable-color: #2f798a; + --fsdocs-code-property-color: #43AEC6; + --fsdocs-code-punctuation-color: #43AEC6; + --fsdocs-code-punctuation2-color: #e1e1e1; + --fsdocs-code-function-color: #e1e1e1; + --fsdocs-code-function2-color: #43AEC6; + --fsdocs-code-activepattern-color: #4ec9b0; + --fsdocs-code-unioncase-color: #4ec9b0; + --fsdocs-code-enumeration-color: #4ec9b0; + --fsdocs-code-keywords-color: #2248c4; + --fsdocs-code-comment-color: #329215; + --fsdocs-code-operators-color: #af75c1; + --fsdocs-code-numbers-color: #96C71D; + --fsdocs-code-linenumbers-color: #80b0b0; + --fsdocs-code-mutable-color: #997f0c; + --fsdocs-code-inactive-color: #808080; + --fsdocs-code-preprocessor-color: #af75c1; + --fsdocs-code-fsioutput-color: #808080; + --fsdocs-code-tooltip-color: #d1d1d1; +} + + +.fsdocs-source-link img { + -webkit-filter: grayscale(100%) brightness(1) invert(1); /* Safari 6.0 - 9.0 */ + filter: grayscale(100%) brightness(1) invert(1); +} \ No newline at end of file diff --git a/docsSrc/content/fsdocs-light.css b/docsSrc/content/fsdocs-light.css new file mode 100644 index 0000000..318ccd9 --- /dev/null +++ b/docsSrc/content/fsdocs-light.css @@ -0,0 +1,43 @@ +@import url('https://fonts.googleapis.com/css2?family=Hind+Vadodara&family=Roboto+Mono&display=swap'); +/*-------------------------------------------------------------------------- + Formatting for page & standard document content +/*--------------------------------------------------------------------------*/ + +:root { + --fsdocs-text-color:#262626; + --fsdocs-pre-border-color: #d8d8d8; + --fsdocs-pre-border-color-top: #e3e3e3; + --fsdocs-pre-background-color: #f3f4f7; + --fsdocs-pre-color: #8e0e2b; + --fsdocs-table-pre-background-color: #fff7ed; + --fsdocs-table-pre-color: #837b79; + + --fsdocs-code-strings-color: #dd1144; + --fsdocs-code-printf-color: #E0C57F; + --fsdocs-code-escaped-color: #EA8675; + --fsdocs-code-identifiers-color: var(--fsdocs-text-color); + --fsdocs-code-module-color: #009999; + --fsdocs-code-reference-color: #4974D1; + --fsdocs-code-value-color: #43AEC6; + --fsdocs-code-interface-color: #43AEC6; + --fsdocs-code-typearg-color: #43AEC6; + --fsdocs-code-disposable-color: #43AEC6; + --fsdocs-code-property-color: #43AEC6; + --fsdocs-code-punctuation-color: #43AEC6; + --fsdocs-code-punctuation2-color: #var(--fsdocs-text-color); + --fsdocs-code-function-color: #e1e1e1; + --fsdocs-code-function2-color: #990000; + --fsdocs-code-activepattern-color: #4ec9b0; + --fsdocs-code-unioncase-color: #4ec9b0; + --fsdocs-code-enumeration-color: #4ec9b0; + --fsdocs-code-keywords-color: #b68015; + --fsdocs-code-comment-color: #808080; + --fsdocs-code-operators-color: #af75c1; + --fsdocs-code-numbers-color: #009999; + --fsdocs-code-linenumbers-color: #80b0b0; + --fsdocs-code-mutable-color: #d1d1d1; + --fsdocs-code-inactive-color: #808080; + --fsdocs-code-preprocessor-color: #af75c1; + --fsdocs-code-fsioutput-color: #808080; + --fsdocs-code-tooltip-color: #d1d1d1; +} diff --git a/docsSrc/content/fsdocs-main.css b/docsSrc/content/fsdocs-main.css new file mode 100644 index 0000000..2ad1582 --- /dev/null +++ b/docsSrc/content/fsdocs-main.css @@ -0,0 +1,604 @@ +@import url('https://fonts.googleapis.com/css2?family=Hind+Vadodara&family=Roboto+Mono&display=swap'); +/*-------------------------------------------------------------------------- + Formatting for page & standard document content +/*--------------------------------------------------------------------------*/ + +body { + font-family: 'Hind Vadodara', sans-serif; + /* padding-top: 0px; + padding-bottom: 40px; +*/ +} + +blockquote { + margin: 0 1em 0 0.25em; + margin-top: 0px; + margin-right: 1em; + margin-bottom: 0px; + margin-left: 0.25em; + padding: 0 .75em 0 1em; + border-left: 1px solid #777; + border-right: 0px solid #777; +} + +/* Format the heading - nicer spacing etc. */ +.masthead { + overflow: hidden; +} + + .masthead .muted a { + text-decoration: none; + color: #999999; + } + + .masthead ul, .masthead li { + margin-bottom: 0px; + } + + .masthead .nav li { + margin-top: 15px; + font-size: 110%; + } + + .masthead h3 { + margin-top: 15px; + margin-bottom: 5px; + font-size: 170%; + } + +/*-------------------------------------------------------------------------- + Formatting fsdocs-content +/*--------------------------------------------------------------------------*/ + +/* Change font sizes for headings etc. */ +#fsdocs-content h1 { + margin: 30px 0px 15px 0px; + /* font-weight: 400; */ + font-size: 2rem; + letter-spacing: 1.78px; + line-height: 2.5rem; + font-weight: 400; +} + +#fsdocs-content h2 { + font-size: 1.6rem; + margin: 20px 0px 10px 0px; + font-weight: 400; +} + +#fsdocs-content h3 { + font-size: 1.2rem; + margin: 15px 0px 10px 0px; + font-weight: 400; +} + +#fsdocs-content hr { + margin: 0px 0px 20px 0px; +} + +#fsdocs-content li { + font-size: 1.0rem; + line-height: 1.375rem; + letter-spacing: 0.01px; + font-weight: 500; + margin: 0px 0px 15px 0px; +} + +#fsdocs-content p { + font-size: 1.0rem; + line-height: 1.375rem; + letter-spacing: 0.01px; + font-weight: 500; + color: var(--fsdocs-text-color);; +} + +#fsdocs-content a:not(.btn) { + color: #4974D1; +} +/* remove the default bootstrap bold on dt elements */ +#fsdocs-content dt { + font-weight: normal; +} + + + +/*-------------------------------------------------------------------------- + Formatting tables in fsdocs-content, using learn.microsoft.com tables +/*--------------------------------------------------------------------------*/ + +#fsdocs-content .table { + table-layout: auto; + width: 100%; + font-size: 0.875rem; +} + + #fsdocs-content .table caption { + font-size: 0.8rem; + font-weight: 600; + letter-spacing: 2px; + text-transform: uppercase; + padding: 1.125rem; + border-width: 0 0 1px; + border-style: solid; + border-color: #e3e3e3; + text-align: right; + } + + #fsdocs-content .table td, + #fsdocs-content .table th { + display: table-cell; + word-wrap: break-word; + padding: 0.75rem 1rem 0.75rem 0rem; + line-height: 1.5; + vertical-align: top; + border-top: 1px solid #e3e3e3; + border-right: 0; + border-left: 0; + border-bottom: 0; + border-style: solid; + } + + /* suppress the top line on inner lists such as tables of exceptions */ + #fsdocs-content .table .fsdocs-exception-list td, + #fsdocs-content .table .fsdocs-exception-list th { + border-top: 0 + } + + #fsdocs-content .table td p:first-child, + #fsdocs-content .table th p:first-child { + margin-top: 0; + } + + #fsdocs-content .table td.nowrap, + #fsdocs-content .table th.nowrap { + white-space: nowrap; + } + + #fsdocs-content .table td.is-narrow, + #fsdocs-content .table th.is-narrow { + width: 15%; + } + + #fsdocs-content .table th:not([scope='row']) { + border-top: 0; + border-bottom: 1px; + } + + #fsdocs-content .table > caption + thead > tr:first-child > td, + #fsdocs-content .table > colgroup + thead > tr:first-child > td, + #fsdocs-content .table > thead:first-child > tr:first-child > td { + border-top: 0; + } + + #fsdocs-content .table table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--box-shadow-light); + } + + #fsdocs-content .table.min { + width: unset; + } + + #fsdocs-content .table.is-left-aligned td:first-child, + #fsdocs-content .table.is-left-aligned th:first-child { + padding-left: 0; + } + + #fsdocs-content .table.is-left-aligned td:first-child a, + #fsdocs-content .table.is-left-aligned th:first-child a { + outline-offset: -0.125rem; + } + +@media screen and (max-width: 767px), screen and (min-resolution: 120dpi) and (max-width: 767.9px) { + #fsdocs-content .table.is-stacked-mobile td:nth-child(1) { + display: block; + width: 100%; + padding: 1rem 0; + } + + #fsdocs-content .table.is-stacked-mobile td:not(:nth-child(1)) { + display: block; + border-width: 0; + padding: 0 0 1rem; + } +} + +#fsdocs-content .table.has-inner-borders th, +#fsdocs-content .table.has-inner-borders td { + border-right: 1px solid #e3e3e3; +} + + #fsdocs-content .table.has-inner-borders th:last-child, + #fsdocs-content .table.has-inner-borders td:last-child { + border-right: none; + } + +.fsdocs-entity-list .fsdocs-entity-name { + width: 25%; + font-weight: bold; +} + +.fsdocs-member-list .fsdocs-member-usage { + width: 35%; +} + +/*-------------------------------------------------------------------------- + Formatting xmldoc sections in fsdocs-content +/*--------------------------------------------------------------------------*/ + +.fsdocs-xmldoc, .fsdocs-entity-xmldoc, .fsdocs-member-xmldoc { + font-size: 1.0rem; + line-height: 1.375rem; + letter-spacing: 0.01px; + font-weight: 500; + color: var(--fsdocs-text-color);; +} + +.fsdocs-xmldoc h1 { + font-size: 1.2rem; + margin: 10px 0px 0px 0px; +} + +.fsdocs-xmldoc h2 { + font-size: 1.2rem; + margin: 10px 0px 0px 0px; +} + +.fsdocs-xmldoc h3 { + font-size: 1.1rem; + margin: 10px 0px 0px 0px; +} + +/* #fsdocs-nav .searchbox { + margin-top: 30px; + margin-bottom: 30px; +} */ + +#fsdocs-nav img.logo{ + width:90%; + /* height:140px; */ + /* margin:10px 0px 0px 20px; */ + margin-top:40px; + border-style:none; +} + +#fsdocs-nav input{ + /* margin-left: 20px; */ + margin-right: 20px; + margin-top: 20px; + margin-bottom: 20px; + width: 93%; + -webkit-border-radius: 0; + border-radius: 0; +} + +#fsdocs-nav { + /* margin-left: -5px; */ + /* width: 90%; */ + font-size:0.95rem; +} + +#fsdocs-nav li.nav-header{ + /* margin-left: -5px; */ + /* width: 90%; */ + padding-left: 0; + color: var(--fsdocs-text-color);; + text-transform: none; + font-size:16px; + margin-top: 9px; + font-weight: bold; +} + +#fsdocs-nav a{ + padding-left: 0; + color: #6c6c6d; + /* margin-left: 5px; */ + /* width: 90%; */ +} + +/*-------------------------------------------------------------------------- + Formatting pre and code sections in fsdocs-content (code highlighting is + further below) +/*--------------------------------------------------------------------------*/ + +#fsdocs-content code { + /* font-size: 0.83rem; */ + font: 0.85rem 'Roboto Mono', monospace; + background-color: #f7f7f900; + border: 0px; + padding: 0px; + /* word-wrap: break-word; */ + /* white-space: pre; */ +} + +/* omitted */ +#fsdocs-content span.omitted { + background: #3c4e52; + border-radius: 5px; + color: #808080; + padding: 0px 0px 1px 0px; +} + +#fsdocs-content pre .fssnip code { + font: 0.86rem 'Roboto Mono', monospace; +} + +#fsdocs-content table.pre, +#fsdocs-content pre.fssnip, +#fsdocs-content pre { + line-height: 13pt; + border: 0px solid var(--fsdocs-pre-border-color); + border-top: 0px solid var(--fsdocs-pre-border-color-top); + border-collapse: separate; + white-space: pre; + font: 0.86rem 'Roboto Mono', monospace; + width: 100%; + margin: 10px 0px 20px 0px; + background-color: var(--fsdocs-pre-background-color); + padding: 10px; + border-radius: 5px; + color: var(--fsdocs-pre-color); + max-width: none; + box-sizing: border-box; +} + +#fsdocs-content pre.fssnip code { + font: 0.86rem 'Roboto Mono', monospace; + font-weight: 600; +} + +#fsdocs-content table.pre { + background-color: var(--fsdocs-table-pre-background-color);; +} + +#fsdocs-content table.pre pre { + padding: 0px; + margin: 0px; + border-radius: 0px; + width: 100%; + background-color: var(--fsdocs-table-pre-background-color); + color: var(--fsdocs-table-pre-color); +} + +#fsdocs-content table.pre td { + padding: 0px; + white-space: normal; + margin: 0px; + width: 100%; +} + +#fsdocs-content table.pre td.lines { + width: 30px; +} + + +#fsdocs-content pre { + word-wrap: inherit; +} + +.fsdocs-example-header { + font-size: 1.0rem; + line-height: 1.375rem; + letter-spacing: 0.01px; + font-weight: 700; + color: var(--fsdocs-text-color);; +} + +/*-------------------------------------------------------------------------- + Formatting github source links +/*--------------------------------------------------------------------------*/ + +.fsdocs-source-link { + float: right; + text-decoration: none; +} + + .fsdocs-source-link img { + border-style: none; + margin-left: 10px; + width: auto; + height: 1.4em; + } + + .fsdocs-source-link .hover { + display: none; + } + + .fsdocs-source-link:hover .hover { + display: block; + } + + .fsdocs-source-link .normal { + display: block; + } + + .fsdocs-source-link:hover .normal { + display: none; + } + +/*-------------------------------------------------------------------------- + Formatting logo +/*--------------------------------------------------------------------------*/ + +#fsdocs-logo { + width:40px; + height:40px; + margin:10px 0px 0px 0px; + border-style:none; +} + +/*-------------------------------------------------------------------------- + +/*--------------------------------------------------------------------------*/ + +#fsdocs-content table.pre pre { + padding: 0px; + margin: 0px; + border: none; +} + +/*-------------------------------------------------------------------------- + Remove formatting from links +/*--------------------------------------------------------------------------*/ + +#fsdocs-content h1 a, +#fsdocs-content h1 a:hover, +#fsdocs-content h1 a:focus, +#fsdocs-content h2 a, +#fsdocs-content h2 a:hover, +#fsdocs-content h2 a:focus, +#fsdocs-content h3 a, +#fsdocs-content h3 a:hover, +#fsdocs-content h3 a:focus, +#fsdocs-content h4 a, +#fsdocs-content h4 a:hover, #fsdocs-content +#fsdocs-content h4 a:focus, +#fsdocs-content h5 a, +#fsdocs-content h5 a:hover, +#fsdocs-content h5 a:focus, +#fsdocs-content h6 a, +#fsdocs-content h6 a:hover, +#fsdocs-content h6 a:focus { + color: var(--fsdocs-text-color);; + text-decoration: none; + text-decoration-style: none; + /* outline: none */ +} + +/*-------------------------------------------------------------------------- + Formatting for F# code snippets +/*--------------------------------------------------------------------------*/ + +.fsdocs-param-name, +.fsdocs-return-name, +.fsdocs-param { + font-weight: 900; + font-size: 0.85rem; + font-family: 'Roboto Mono', monospace; +} +/* strings --- and stlyes for other string related formats */ +#fsdocs-content span.s { + color: var(--fsdocs-code-strings-color); +} +/* printf formatters */ +#fsdocs-content span.pf { + color: var(--fsdocs-code-printf-color); +} +/* escaped chars */ +#fsdocs-content span.e { + color: var(--fsdocs-code-escaped-color); +} + +/* identifiers --- and styles for more specific identifier types */ +#fsdocs-content span.id { + color: var(--fsdocs-identifiers-color);; +} +/* module */ +#fsdocs-content span.m { + color:var(--fsdocs-code-module-color); +} +/* reference type */ +#fsdocs-content span.rt { + color: var(--fsdocs-code-reference-color); +} +/* value type */ +#fsdocs-content span.vt { + color: var(--fsdocs-code-value-color); +} +/* interface */ +#fsdocs-content span.if { + color: var(--fsdocs-code-interface-color); +} +/* type argument */ +#fsdocs-content span.ta { + color: var(--fsdocs-code-typearg-color); +} +/* disposable */ +#fsdocs-content span.d { + color: var(--fsdocs-code-disposable-color); +} +/* property */ +#fsdocs-content span.prop { + color: var(--fsdocs-code-property-color); +} +/* punctuation */ +#fsdocs-content span.p { + color: var(--fsdocs-code-punctuation-color); +} +#fsdocs-content span.pn { + color: var(--fsdocs-code-punctuation2-color); +} +/* function */ +#fsdocs-content span.f { + color: var(--fsdocs-code-function-color); +} +#fsdocs-content span.fn { + color: var(--fsdocs-code-function2-color); +} +/* active pattern */ +#fsdocs-content span.pat { + color: var(--fsdocs-code-activepattern-color); +} +/* union case */ +#fsdocs-content span.u { + color: var(--fsdocs-code-unioncase-color); +} +/* enumeration */ +#fsdocs-content span.e { + color: var(--fsdocs-code-enumeration-color); +} +/* keywords */ +#fsdocs-content span.k { + color: var(--fsdocs-code-keywords-color); + /* font-weight: bold; */ +} +/* comment */ +#fsdocs-content span.c { + color: var(--fsdocs-code-comment-color); + font-weight: 400; + font-style: italic; +} +/* operators */ +#fsdocs-content span.o { + color: var(--fsdocs-code-operators-color); +} +/* numbers */ +#fsdocs-content span.n { + color: var(--fsdocs-code-numbers-color); +} +/* line number */ +#fsdocs-content span.l { + color: var(--fsdocs-code-linenumbers-color); +} +/* mutable var or ref cell */ +#fsdocs-content span.v { + color: var(--fsdocs-code-mutable-color); + font-weight: bold; +} +/* inactive code */ +#fsdocs-content span.inactive { + color: var(--fsdocs-code-inactive-color); +} +/* preprocessor */ +#fsdocs-content span.prep { + color: var(--fsdocs-code-preprocessor-color); +} +/* fsi output */ +#fsdocs-content span.fsi { + color: var(--fsdocs-code-fsioutput-color); +} + +/* tool tip */ +div.fsdocs-tip { + background: #475b5f; + border-radius: 4px; + font: 0.85rem 'Roboto Mono', monospace; + padding: 6px 8px 6px 8px; + display: none; + color: var(--fsdocs-code-tooltip-color); + pointer-events: none; +} + + div.fsdocs-tip code { + color: var(--fsdocs-code-tooltip-color); + font: 0.85rem 'Roboto Mono', monospace; + } diff --git a/docsSrc/content/hotload.js b/docsSrc/content/hotload.js deleted file mode 100644 index c146f7f..0000000 --- a/docsSrc/content/hotload.js +++ /dev/null @@ -1,4 +0,0 @@ -var refreshSocket = new WebSocket('ws://' + window.location.host) - .onmessage = () => { - location.reload(); - } diff --git a/docsSrc/content/navbar-fixed-left.css b/docsSrc/content/navbar-fixed-left.css new file mode 100644 index 0000000..28e4c57 --- /dev/null +++ b/docsSrc/content/navbar-fixed-left.css @@ -0,0 +1,91 @@ +/* CSS for Bootstrap 5 Fixed Left Sidebar Navigation */ + + + +@media (min-width: 992px){ + + body { + padding-left: 300px; + padding-right: 60px; + } + + #fsdocs-logo { + width:140px; + height:140px; + margin:10px 0px 0px 0px; + border-style:none; + } + + + nav.navbar { + position: fixed; + left: 0; + width: 300px; + bottom: 0; + top: 0; + overflow-y: auto; + overflow-x: hidden; + display: block; + border-right: 1px solid #cecece; + } + + nav.navbar>.container { + flex-direction: column; + padding: 0; + } + + nav.navbar .navbar-nav { + flex-direction: column; + } + nav.navbar .navbar-collapse { + width: 100%; + } + + nav.navbar .navbar-nav { + width: 100%; + } + + nav.navbar .navbar-nav .dropdown-menu { + position: static; + display: block; + } + + nav.navbar .dropdown { + margin-bottom: 5px; + font-size: 14px; + } + + nav.navbar .dropdown-item { + white-space: normal; + font-size: 14px; + vertical-align: middle; + } + + nav.navbar .dropdown-item img { + margin-right: 5px; + } + + nav.navbar .dropdown-toggle { + cursor: default; + } + + nav.navbar .dropdown-menu { + border-radius: 0; + border-left: 0; + border-right: 0; + } + + nav.navbar .dropdown-toggle:not(#bd-theme)::after { + display: none; + } + + .dropdown-menu[data-bs-popper] { + top: auto; + left: auto; + margin-top: auto; + } + + .nav-link:focus, .nav-link:hover { + color: auto; + } +} \ No newline at end of file diff --git a/docsSrc/content/style.css b/docsSrc/content/style.css deleted file mode 100644 index e9268e9..0000000 --- a/docsSrc/content/style.css +++ /dev/null @@ -1,334 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Droid+Sans|Droid+Sans+Mono|Open+Sans:400,600,700); - -/*-------------------------------------------------------------------------- - Formatting for F# code snippets -/*--------------------------------------------------------------------------*/ - -/* strings --- and styles for other string related formats */ -span.s { color:#E0E268; } -/* printf formatters */ -span.pf { color:#E0C57F; } -/* escaped chars */ -span.e { color:#EA8675; } - -/* identifiers --- and styles for more specific identifier types */ -span.i { color:#d1d1d1; } -/* type or module */ -span.t { color:#43AEC6; } -/* function */ -span.f { color:#e1e1e1; } -/* DU case or active pattern */ -span.p { color:#4ec9b0; } - -/* keywords */ -span.k { color:#FAB11D; } -/* comment */ -span.c { color:#808080; } -/* operators */ -span.o { color:#af75c1; } -/* numbers */ -span.n { color:#96C71D; } -/* line number */ -span.l { color:#80b0b0; } -/* mutable var or ref cell */ -span.v { color:#d1d1d1; font-weight: bold; } -/* inactive code */ -span.inactive { color:#808080; } -/* preprocessor */ -span.prep { color:#af75c1; } -/* fsi output */ -span.fsi { color:#808080; } - -/* omitted */ -span.omitted { - background:#3c4e52; - border-radius:5px; - color:#808080; - padding:0px 0px 1px 0px; -} -/* tool tip */ -div.tip { - background:#475b5f; - border-radius:4px; - font:11pt 'Droid Sans', arial, sans-serif; - padding:6px 8px 6px 8px; - display:none; - color:#d1d1d1; - pointer-events:none; -} -table.pre pre { - padding:0px; - margin:0px; - border:none; -} -table.pre, pre.fssnip, pre { - line-height:13pt; - /*border:1px solid #d8d8d8;*/ - border:1px solid #000; - /* border: none; */ - border-collapse:separate; - white-space:pre-wrap; - font: 9pt 'Droid Sans Mono',consolas,monospace; - width:90%; - margin:10px 20px 20px 20px; - background-color:#212d30; - padding:10px; - /*border-radius:5px;*/ - color:#d1d1d1; - max-width: none; -} -pre.fssnip code { - font: 9pt 'Droid Sans Mono',consolas,monospace; -} -table.pre pre { - padding:0px; - margin:0px; - border-radius:0px; - width: 100%; -} -table.pre td { - padding:0px; - white-space:normal; - margin:0px; -} -table.pre td.lines { - width:30px; -} - -.table thead td.fit, -.table th.fit { - white-space: nowrap; - width: 1%; -} -/*-------------------------------------------------------------------------- - Formatting for page & standard document content -/*--------------------------------------------------------------------------*/ - -body { - font-family: 'Open Sans', serif; - background-color: #BADA55; -} - -pre { - word-wrap: inherit; -} - -/* Format the heading - nicer spacing etc. */ -.masthead { - overflow: hidden; -} -.masthead .muted a { - text-decoration:none; - color:#999999; -} -.masthead ul, .masthead li { - margin-bottom:0px; -} -.masthead .nav li { - margin-top: 15px; - font-size:110%; -} -.masthead h3 { - margin-bottom:5px; - font-size:170%; -} -hr { - margin:0px 0px 20px 0px; -} - -/* Make table headings and td.title bold */ -td.title, thead { - font-weight:bold; -} - -/* Format the right-side menu */ -#menu { - margin-top:50px; - font-size:11pt; - padding-left:20px; -} - -#menu .nav-header { - font-size:12pt; - color:#606060; - margin-top:20px; -} - -#menu li { - line-height:25px; -} - -.wrapper { - margin-top: -56px; - padding-top: 56px; -} - -/* Change font sizes for headings etc. */ -#main h1 { font-size: 26pt; margin:10px 0px 15px 0px; font-weight:400; } -#main h2 { font-size: 20pt; margin:20px 0px 0px 0px; font-weight:400; } -#main h3 { font-size: 14pt; margin:15px 0px 0px 0px; font-weight:600; } -#main p { font-size: 11pt; margin:5px 0px 15px 0px; } -#main ul { font-size: 11pt; margin-top:10px; } -#main li { font-size: 11pt; margin: 5px 0px 5px 0px; } -#main strong { font-weight:700; } - -/*-------------------------------------------------------------------------- - Formatting for API reference -/*--------------------------------------------------------------------------*/ - -.type-list .type-name, .module-list .module-name { - width:25%; - font-weight:bold; -} -.member-list .member-name { - width:35%; -} -#main .xmldoc h2 { - font-size:14pt; - margin:10px 0px 0px 0px; -} -#main .xmldoc h3 { - font-size:12pt; - margin:10px 0px 0px 0px; -} -.github-link { - float:right; - text-decoration:none; -} -.github-link img { - border-style:none; - margin-left:10px; -} -.github-link .hover { display:none; } -.github-link:hover .hover { display:block; } -.github-link .normal { display: block; } -.github-link:hover .normal { display: none; } - -/*-------------------------------------------------------------------------- - Links -/*--------------------------------------------------------------------------*/ - -.bootstrap h1 a, .bootstrap h1 a:hover, .bootstrap h1 a:focus, -.bootstrap h2 a, .bootstrap h2 a:hover, .bootstrap h2 a:focus, -.bootstrap h3 a, .bootstrap h3 a:hover, .bootstrap h3 a:focus, -.bootstrap h4 a, .bootstrap h4 a:hover, .bootstrap h4 a:focus, -.bootstrap h5 a, .bootstrap h5 a:hover, .bootstrap h5 a:focus, -.bootstrap h6 a, .bootstrap h6 a:hover, .bootstrap h6 a:focus { color : inherit; text-decoration : inherit; outline:none } - -/*-------------------------------------------------------------------------- - Additional formatting for the homepage -/*--------------------------------------------------------------------------*/ - -#nuget { - margin-top:20px; - font-size: 11pt; - padding:20px; -} - -#nuget pre { - font-size:11pt; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; - background: #404040; - border-style:none; - color: #e0e0e0; - margin-top:15px; -} - -.date { - font-style: italic; - margin-bottom: 15px; -} - -h1.header { - color: green; -} - -h1.header:hover { - color: green; -} - -h1.header:visited { - color: green; -} - -.categories, .category, .recent-posts { - font-family: 'Droid Sans', arial, sans-serif; -} - -.categories ul, -.recent-posts ul { - margin-left: 0; -} -.categories li, -.category li, -.recent-posts li -{ - list-style-type: none; - white-space: nowrap; -} - -.links { - text-align: center; - margin-bottom: 8px; -} - -.copyright { - text-align: center; - color: lightslategray; - margin-bottom: 25px; -} - -.social { - margin-bottom: 30px; -} - -/* Fixes page anchors with bootstrap navbar */ -:target::before { - display: block; - height: 59px; - margin-top: -59px; - content: ""; -} - -/* Hides first br from FSharp.Literate xml-doc rendering */ -.comment-block > br:first-child, -.xmldoc > br:first-child { - display: none; -} - -.main h1 { - padding: .5em 0em -} - -.main h2 { - padding: .5em 0em -} - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu>a:after { - content: "\f0da"; - padding-left: 5px; - vertical-align: middle; - border: none; - font-weight: 900; - font-family: 'Font Awesome 5 Free'; -} - -.dropdown-submenu>.dropdown-menu { - top: 0; - left: 100%; - margin-top: 0px; - margin-left: 0px; -} - -.fsharp-footer-logo { - width: 20px; - margin-top: -2px; - -webkit-filter: grayscale(100%) brightness(0) invert(1); /* Safari 6.0 - 9.0 */ - filter: grayscale(100%) brightness(0) invert(1); -} diff --git a/docsSrc/content/submenu.js b/docsSrc/content/submenu.js deleted file mode 100644 index 9874084..0000000 --- a/docsSrc/content/submenu.js +++ /dev/null @@ -1,21 +0,0 @@ -$(function() { - // ------------------------------------------------------- // - // Multi Level dropdowns - // ------------------------------------------------------ // - $("ul.dropdown-menu [data-toggle='dropdown']").on("click", function(event) { - event.preventDefault(); - event.stopPropagation(); - - $(this).siblings().toggleClass("show"); - - - if (!$(this).next().hasClass('show')) { - $(this).parents('.dropdown-menu').first().find('.show').removeClass("show"); - } - $(this).parents('li.nav-item.dropdown.show').on('hidden.bs.dropdown', function(e) { - $('.dropdown-submenu .show').removeClass("show"); - }); - - }); - }); - \ No newline at end of file diff --git a/docsSrc/content/theme-toggle.js b/docsSrc/content/theme-toggle.js new file mode 100644 index 0000000..c208c08 --- /dev/null +++ b/docsSrc/content/theme-toggle.js @@ -0,0 +1,68 @@ +/*! + * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under the Creative Commons Attribution 3.0 Unported License. + */ + +(() => { + 'use strict' + + const storedTheme = localStorage.getItem('theme') + + const getPreferredTheme = () => { + if (storedTheme) { + return storedTheme + } + + return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' + } + + const setTheme = function (theme) { + const fsdocsTheme = document.getElementById("fsdocs-theme") + const re = /fsdocs-.*.css/ + if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.documentElement.setAttribute('data-bs-theme', 'dark') + fsdocsTheme.setAttribute("href", fsdocsTheme.getAttribute("href").replace(re,"fsdocs-dark.css")) + + } else { + document.documentElement.setAttribute('data-bs-theme', theme) + + fsdocsTheme.setAttribute("href", fsdocsTheme.getAttribute("href").replace(re,`fsdocs-${theme}.css`)) + } + } + + setTheme(getPreferredTheme()) + + const showActiveTheme = theme => { + const activeThemeIcon = document.getElementById('theme-icon-active') + const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`) + const svgOfActiveBtn = btnToActive.querySelector('i').getAttribute('class') + + document.querySelectorAll('[data-bs-theme-value]').forEach(element => { + element.classList.remove('active') + }) + + btnToActive.classList.add('active') + activeThemeIcon.setAttribute('class', svgOfActiveBtn) + } + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { + if (storedTheme !== 'light' || storedTheme !== 'dark') { + setTheme(getPreferredTheme()) + } + }) + + window.addEventListener('DOMContentLoaded', () => { + showActiveTheme(getPreferredTheme()) + + document.querySelectorAll('[data-bs-theme-value]') + .forEach(toggle => { + toggle.addEventListener('click', () => { + const theme = toggle.getAttribute('data-bs-theme-value') + localStorage.setItem('theme', theme) + setTheme(theme) + showActiveTheme(theme) + }) + }) + }) +})() \ No newline at end of file diff --git a/docsSrc/content/themes.js b/docsSrc/content/themes.js deleted file mode 100644 index 7bb300d..0000000 --- a/docsSrc/content/themes.js +++ /dev/null @@ -1,82 +0,0 @@ - -var themes = { - "light" : { - "button-text" : "Swap to Dark", - "button-classes" : "btn btn-dark border-light", - "next-theme" : "dark", - "body-class" : "bootstrap" - }, - "dark" : { - "button-text" : "Swap to Light", - "button-classes" : "btn btn-light", - "next-theme" : "light", - "body-class" : "bootstrap-dark" - } -}; - -var themeStorageKey = 'theme'; - -function swapThemeInDom(theme) { - var newTheme = themes[theme]; - var bootstrapCSS = document.getElementsByTagName('body')[0]; - bootstrapCSS.setAttribute('class', newTheme['body-class']) -} - -function persistNewTheme(theme) { - window.localStorage.setItem(themeStorageKey, theme); -} - -function setToggleButton(theme) { - var newTheme = themes[theme]; - var themeToggleButton = document.getElementById('theme-toggle'); - themeToggleButton.textContent = newTheme['button-text']; - themeToggleButton.className = newTheme['button-classes']; - themeToggleButton.onclick = function() { - setTheme(newTheme['next-theme']); - } -} - -function setTheme(theme) { - try { - swapThemeInDom(theme); - } - catch(e){ - } - try { - persistNewTheme(theme); - } - catch(e) { - } - try { - setToggleButton(theme); - } - catch (e) { - } -} - -function getThemeFromStorage() { - return window.localStorage.getItem(themeStorageKey); -} - -function getThemeFromScheme() { - try { - if (window.matchMedia("(prefers-color-scheme: dark)").matches){ - return 'dark'; - } - else { - return 'light'; - } - } - catch(e) { - return null; - } -} - -function loadTheme() { - var theme = getThemeFromStorage() || getThemeFromScheme() || 'light'; - setTheme(theme); -} - -document.addEventListener('readystatechange', (event) => { - loadTheme() -}); diff --git a/docsSrc/content/tips.js b/docsSrc/content/tips.js deleted file mode 100644 index e7ee730..0000000 --- a/docsSrc/content/tips.js +++ /dev/null @@ -1,46 +0,0 @@ -var currentTip = null; -var currentTipElement = null; - -function hideTip(evt, name, unique) { - var el = document.getElementById(name); - el.style.display = "none"; - currentTip = null; -} - -function findPos(obj) { - // no idea why, but it behaves differently in webbrowser component - if (window.location.search == "?inapp") - return [obj.offsetLeft + 10, obj.offsetTop + 30]; - - var curleft = 0; - var curtop = obj.offsetHeight; - while (obj) { - curleft += obj.offsetLeft; - curtop += obj.offsetTop; - obj = obj.offsetParent; - }; - return [curleft, curtop]; -} - -function hideUsingEsc(e) { - if (!e) { e = event; } - hideTip(e, currentTipElement, currentTip); -} - -function showTip(evt, name, unique, owner) { - document.onkeydown = hideUsingEsc; - if (currentTip == unique) return; - currentTip = unique; - currentTipElement = name; - - var pos = findPos(owner ? owner : (evt.srcElement ? evt.srcElement : evt.target)); - var posx = pos[0]; - var posy = pos[1]; - - var el = document.getElementById(name); - var parent = (document.documentElement == null) ? document.body : document.documentElement; - el.style.position = "absolute"; - el.style.left = posx + "px"; - el.style.top = posy + "px"; - el.style.display = "block"; -} diff --git a/docsSrc/content/toggle-bootstrap-dark.min.css b/docsSrc/content/toggle-bootstrap-dark.min.css deleted file mode 100644 index 348ff58..0000000 --- a/docsSrc/content/toggle-bootstrap-dark.min.css +++ /dev/null @@ -1 +0,0 @@ -html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body.bootstrap-dark{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#d3d3d3;text-align:left;background-color:#191d21}.bootstrap-dark :root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.bootstrap-dark *,.bootstrap-dark ::after,.bootstrap-dark ::before{-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-dark html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.bootstrap-dark article,.bootstrap-dark aside,.bootstrap-dark figcaption,.bootstrap-dark figure,.bootstrap-dark footer,.bootstrap-dark header,.bootstrap-dark hgroup,.bootstrap-dark main,.bootstrap-dark nav,.bootstrap-dark section{display:block}.bootstrap-dark body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#d3d3d3;text-align:left;background-color:#191d21}.bootstrap-dark [tabindex="-1"]:focus:not(:focus-visible){outline:0!important}.bootstrap-dark hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}.bootstrap-dark h1,.bootstrap-dark h2,.bootstrap-dark h3,.bootstrap-dark h4,.bootstrap-dark h5,.bootstrap-dark h6{margin-top:0;margin-bottom:.5rem}.bootstrap-dark p{margin-top:0;margin-bottom:1rem}.bootstrap-dark abbr[data-original-title],.bootstrap-dark abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}.bootstrap-dark address{margin-bottom:1rem;font-style:normal;line-height:inherit}.bootstrap-dark dl,.bootstrap-dark ol,.bootstrap-dark ul{margin-top:0;margin-bottom:1rem}.bootstrap-dark ol ol,.bootstrap-dark ol ul,.bootstrap-dark ul ol,.bootstrap-dark ul ul{margin-bottom:0}.bootstrap-dark dt{font-weight:700}.bootstrap-dark dd{margin-bottom:.5rem;margin-left:0}.bootstrap-dark blockquote{margin:0 0 1rem}.bootstrap-dark b,.bootstrap-dark strong{font-weight:bolder}.bootstrap-dark small{font-size:80%}.bootstrap-dark sub,.bootstrap-dark sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.bootstrap-dark sub{bottom:-.25em}.bootstrap-dark sup{top:-.5em}.bootstrap-dark a{color:#adadad;text-decoration:none;background-color:transparent}.bootstrap-dark a:hover{color:#878787;text-decoration:underline}.bootstrap-dark a:not([href]){color:inherit;text-decoration:none}.bootstrap-dark a:not([href]):hover{color:inherit;text-decoration:none}.bootstrap-dark code,.bootstrap-dark kbd,.bootstrap-dark pre,.bootstrap-dark samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}.bootstrap-dark pre{margin-top:0;margin-bottom:1rem;overflow:auto}.bootstrap-dark figure{margin:0 0 1rem}.bootstrap-dark img{vertical-align:middle;border-style:none}.bootstrap-dark svg{overflow:hidden;vertical-align:middle}.bootstrap-dark table{border-collapse:collapse}.bootstrap-dark caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}.bootstrap-dark th{text-align:inherit}.bootstrap-dark label{display:inline-block;margin-bottom:.5rem}.bootstrap-dark button{border-radius:0}.bootstrap-dark button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.bootstrap-dark button,.bootstrap-dark input,.bootstrap-dark optgroup,.bootstrap-dark select,.bootstrap-dark textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.bootstrap-dark button,.bootstrap-dark input{overflow:visible}.bootstrap-dark button,.bootstrap-dark select{text-transform:none}.bootstrap-dark select{word-wrap:normal}.bootstrap-dark [type=button],.bootstrap-dark [type=reset],.bootstrap-dark [type=submit],.bootstrap-dark button{-webkit-appearance:button}.bootstrap-dark [type=button]:not(:disabled),.bootstrap-dark [type=reset]:not(:disabled),.bootstrap-dark [type=submit]:not(:disabled),.bootstrap-dark button:not(:disabled){cursor:pointer}.bootstrap-dark [type=button]::-moz-focus-inner,.bootstrap-dark [type=reset]::-moz-focus-inner,.bootstrap-dark [type=submit]::-moz-focus-inner,.bootstrap-dark button::-moz-focus-inner{padding:0;border-style:none}.bootstrap-dark input[type=checkbox],.bootstrap-dark input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}.bootstrap-dark input[type=date],.bootstrap-dark input[type=datetime-local],.bootstrap-dark input[type=month],.bootstrap-dark input[type=time]{-webkit-appearance:listbox}.bootstrap-dark textarea{overflow:auto;resize:vertical}.bootstrap-dark fieldset{min-width:0;padding:0;margin:0;border:0}.bootstrap-dark legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}.bootstrap-dark progress{vertical-align:baseline}.bootstrap-dark [type=number]::-webkit-inner-spin-button,.bootstrap-dark [type=number]::-webkit-outer-spin-button{height:auto}.bootstrap-dark [type=search]{outline-offset:-2px;-webkit-appearance:none}.bootstrap-dark [type=search]::-webkit-search-decoration{-webkit-appearance:none}.bootstrap-dark ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.bootstrap-dark output{display:inline-block}.bootstrap-dark summary{display:list-item;cursor:pointer}.bootstrap-dark template{display:none}.bootstrap-dark [hidden]{display:none!important}.bootstrap-dark .h1,.bootstrap-dark .h2,.bootstrap-dark .h3,.bootstrap-dark .h4,.bootstrap-dark .h5,.bootstrap-dark .h6,.bootstrap-dark h1,.bootstrap-dark h2,.bootstrap-dark h3,.bootstrap-dark h4,.bootstrap-dark h5,.bootstrap-dark h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.bootstrap-dark .h1,.bootstrap-dark h1{font-size:2.5rem}.bootstrap-dark .h2,.bootstrap-dark h2{font-size:2rem}.bootstrap-dark .h3,.bootstrap-dark h3{font-size:1.75rem}.bootstrap-dark .h4,.bootstrap-dark h4{font-size:1.5rem}.bootstrap-dark .h5,.bootstrap-dark h5{font-size:1.25rem}.bootstrap-dark .h6,.bootstrap-dark h6{font-size:1rem}.bootstrap-dark .lead{font-size:1.25rem;font-weight:300}.bootstrap-dark .display-1{font-size:6rem;font-weight:300;line-height:1.2}.bootstrap-dark .display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.bootstrap-dark .display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.bootstrap-dark .display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.bootstrap-dark hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.bootstrap-dark .small,.bootstrap-dark small{font-size:80%;font-weight:400}.bootstrap-dark .mark,.bootstrap-dark mark{padding:.2em;background-color:#fcf8e3}.bootstrap-dark .list-unstyled{padding-left:0;list-style:none}.bootstrap-dark .list-inline{padding-left:0;list-style:none}.bootstrap-dark .list-inline-item{display:inline-block}.bootstrap-dark .list-inline-item:not(:last-child){margin-right:.5rem}.bootstrap-dark .initialism{font-size:90%;text-transform:uppercase}.bootstrap-dark .blockquote{margin-bottom:1rem;font-size:1.25rem}.bootstrap-dark .blockquote-footer{display:block;font-size:80%;color:#6c757d}.bootstrap-dark .blockquote-footer::before{content:"\2014\00A0"}.bootstrap-dark .img-fluid{max-width:100%;height:auto}.bootstrap-dark .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.bootstrap-dark .figure{display:inline-block}.bootstrap-dark .figure-img{margin-bottom:.5rem;line-height:1}.bootstrap-dark .figure-caption{font-size:90%;color:#6c757d}.bootstrap-dark code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>.bootstrap-dark code{color:inherit}.bootstrap-dark kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}.bootstrap-dark kbd kbd{padding:0;font-size:100%;font-weight:700}.bootstrap-dark pre{display:block;font-size:87.5%;color:#212529}.bootstrap-dark pre code{font-size:inherit;color:inherit;word-break:normal}.bootstrap-dark .pre-scrollable{max-height:340px;overflow-y:scroll}.bootstrap-dark .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap-dark .container{max-width:540px}}@media (min-width:768px){.bootstrap-dark .container{max-width:720px}}@media (min-width:992px){.bootstrap-dark .container{max-width:960px}}@media (min-width:1200px){.bootstrap-dark .container{max-width:1140px}}.bootstrap-dark .container-fluid,.bootstrap-dark .container-lg,.bootstrap-dark .container-md,.bootstrap-dark .container-sm,.bootstrap-dark .container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap-dark .container,.bootstrap-dark .container-sm{max-width:540px}}@media (min-width:768px){.bootstrap-dark .container,.bootstrap-dark .container-md,.bootstrap-dark .container-sm{max-width:720px}}@media (min-width:992px){.bootstrap-dark .container,.bootstrap-dark .container-lg,.bootstrap-dark .container-md,.bootstrap-dark .container-sm{max-width:960px}}@media (min-width:1200px){.bootstrap-dark .container,.bootstrap-dark .container-lg,.bootstrap-dark .container-md,.bootstrap-dark .container-sm,.bootstrap-dark .container-xl{max-width:1140px}}.bootstrap-dark .row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.bootstrap-dark .no-gutters{margin-right:0;margin-left:0}.bootstrap-dark .no-gutters>.col,.bootstrap-dark .no-gutters>[class*=col-]{padding-right:0;padding-left:0}.bootstrap-dark .col,.bootstrap-dark .col-1,.bootstrap-dark .col-10,.bootstrap-dark .col-11,.bootstrap-dark .col-12,.bootstrap-dark .col-2,.bootstrap-dark .col-3,.bootstrap-dark .col-4,.bootstrap-dark .col-5,.bootstrap-dark .col-6,.bootstrap-dark .col-7,.bootstrap-dark .col-8,.bootstrap-dark .col-9,.bootstrap-dark .col-auto,.bootstrap-dark .col-lg,.bootstrap-dark .col-lg-1,.bootstrap-dark .col-lg-10,.bootstrap-dark .col-lg-11,.bootstrap-dark .col-lg-12,.bootstrap-dark .col-lg-2,.bootstrap-dark .col-lg-3,.bootstrap-dark .col-lg-4,.bootstrap-dark .col-lg-5,.bootstrap-dark .col-lg-6,.bootstrap-dark .col-lg-7,.bootstrap-dark .col-lg-8,.bootstrap-dark .col-lg-9,.bootstrap-dark .col-lg-auto,.bootstrap-dark .col-md,.bootstrap-dark .col-md-1,.bootstrap-dark .col-md-10,.bootstrap-dark .col-md-11,.bootstrap-dark .col-md-12,.bootstrap-dark .col-md-2,.bootstrap-dark .col-md-3,.bootstrap-dark .col-md-4,.bootstrap-dark .col-md-5,.bootstrap-dark .col-md-6,.bootstrap-dark .col-md-7,.bootstrap-dark .col-md-8,.bootstrap-dark .col-md-9,.bootstrap-dark .col-md-auto,.bootstrap-dark .col-sm,.bootstrap-dark .col-sm-1,.bootstrap-dark .col-sm-10,.bootstrap-dark .col-sm-11,.bootstrap-dark .col-sm-12,.bootstrap-dark .col-sm-2,.bootstrap-dark .col-sm-3,.bootstrap-dark .col-sm-4,.bootstrap-dark .col-sm-5,.bootstrap-dark .col-sm-6,.bootstrap-dark .col-sm-7,.bootstrap-dark .col-sm-8,.bootstrap-dark .col-sm-9,.bootstrap-dark .col-sm-auto,.bootstrap-dark .col-xl,.bootstrap-dark .col-xl-1,.bootstrap-dark .col-xl-10,.bootstrap-dark .col-xl-11,.bootstrap-dark .col-xl-12,.bootstrap-dark .col-xl-2,.bootstrap-dark .col-xl-3,.bootstrap-dark .col-xl-4,.bootstrap-dark .col-xl-5,.bootstrap-dark .col-xl-6,.bootstrap-dark .col-xl-7,.bootstrap-dark .col-xl-8,.bootstrap-dark .col-xl-9,.bootstrap-dark .col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.bootstrap-dark .col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-1{margin-left:8.33333%}.bootstrap-dark .offset-2{margin-left:16.66667%}.bootstrap-dark .offset-3{margin-left:25%}.bootstrap-dark .offset-4{margin-left:33.33333%}.bootstrap-dark .offset-5{margin-left:41.66667%}.bootstrap-dark .offset-6{margin-left:50%}.bootstrap-dark .offset-7{margin-left:58.33333%}.bootstrap-dark .offset-8{margin-left:66.66667%}.bootstrap-dark .offset-9{margin-left:75%}.bootstrap-dark .offset-10{margin-left:83.33333%}.bootstrap-dark .offset-11{margin-left:91.66667%}@media (min-width:576px){.bootstrap-dark .col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-sm-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-sm-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-sm-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-sm-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-sm-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-sm-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-sm-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-sm-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-sm-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-sm-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-sm-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-sm-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-sm-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-sm-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-sm-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-sm-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-sm-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-sm-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-sm-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-sm-0{margin-left:0}.bootstrap-dark .offset-sm-1{margin-left:8.33333%}.bootstrap-dark .offset-sm-2{margin-left:16.66667%}.bootstrap-dark .offset-sm-3{margin-left:25%}.bootstrap-dark .offset-sm-4{margin-left:33.33333%}.bootstrap-dark .offset-sm-5{margin-left:41.66667%}.bootstrap-dark .offset-sm-6{margin-left:50%}.bootstrap-dark .offset-sm-7{margin-left:58.33333%}.bootstrap-dark .offset-sm-8{margin-left:66.66667%}.bootstrap-dark .offset-sm-9{margin-left:75%}.bootstrap-dark .offset-sm-10{margin-left:83.33333%}.bootstrap-dark .offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.bootstrap-dark .col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-md-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-md-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-md-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-md-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-md-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-md-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-md-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-md-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-md-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-md-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-md-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-md-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-md-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-md-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-md-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-md-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-md-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-md-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-md-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-md-0{margin-left:0}.bootstrap-dark .offset-md-1{margin-left:8.33333%}.bootstrap-dark .offset-md-2{margin-left:16.66667%}.bootstrap-dark .offset-md-3{margin-left:25%}.bootstrap-dark .offset-md-4{margin-left:33.33333%}.bootstrap-dark .offset-md-5{margin-left:41.66667%}.bootstrap-dark .offset-md-6{margin-left:50%}.bootstrap-dark .offset-md-7{margin-left:58.33333%}.bootstrap-dark .offset-md-8{margin-left:66.66667%}.bootstrap-dark .offset-md-9{margin-left:75%}.bootstrap-dark .offset-md-10{margin-left:83.33333%}.bootstrap-dark .offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.bootstrap-dark .col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-lg-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-lg-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-lg-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-lg-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-lg-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-lg-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-lg-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-lg-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-lg-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-lg-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-lg-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-lg-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-lg-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-lg-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-lg-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-lg-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-lg-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-lg-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-lg-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-lg-0{margin-left:0}.bootstrap-dark .offset-lg-1{margin-left:8.33333%}.bootstrap-dark .offset-lg-2{margin-left:16.66667%}.bootstrap-dark .offset-lg-3{margin-left:25%}.bootstrap-dark .offset-lg-4{margin-left:33.33333%}.bootstrap-dark .offset-lg-5{margin-left:41.66667%}.bootstrap-dark .offset-lg-6{margin-left:50%}.bootstrap-dark .offset-lg-7{margin-left:58.33333%}.bootstrap-dark .offset-lg-8{margin-left:66.66667%}.bootstrap-dark .offset-lg-9{margin-left:75%}.bootstrap-dark .offset-lg-10{margin-left:83.33333%}.bootstrap-dark .offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.bootstrap-dark .col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap-dark .row-cols-xl-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .row-cols-xl-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .row-cols-xl-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .row-cols-xl-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .row-cols-xl-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap-dark .row-cols-xl-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap-dark .col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap-dark .col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap-dark .col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap-dark .col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap-dark .col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap-dark .col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap-dark .col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap-dark .col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap-dark .col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap-dark .col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap-dark .col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap-dark .col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap-dark .order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap-dark .order-xl-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap-dark .order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap-dark .order-xl-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap-dark .order-xl-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap-dark .order-xl-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap-dark .order-xl-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap-dark .order-xl-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap-dark .order-xl-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap-dark .order-xl-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap-dark .order-xl-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap-dark .order-xl-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap-dark .order-xl-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap-dark .order-xl-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap-dark .order-xl-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap-dark .offset-xl-0{margin-left:0}.bootstrap-dark .offset-xl-1{margin-left:8.33333%}.bootstrap-dark .offset-xl-2{margin-left:16.66667%}.bootstrap-dark .offset-xl-3{margin-left:25%}.bootstrap-dark .offset-xl-4{margin-left:33.33333%}.bootstrap-dark .offset-xl-5{margin-left:41.66667%}.bootstrap-dark .offset-xl-6{margin-left:50%}.bootstrap-dark .offset-xl-7{margin-left:58.33333%}.bootstrap-dark .offset-xl-8{margin-left:66.66667%}.bootstrap-dark .offset-xl-9{margin-left:75%}.bootstrap-dark .offset-xl-10{margin-left:83.33333%}.bootstrap-dark .offset-xl-11{margin-left:91.66667%}}.bootstrap-dark .table{width:100%;margin-bottom:1rem;color:#d3d3d3}.bootstrap-dark .table td,.bootstrap-dark .table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.bootstrap-dark .table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.bootstrap-dark .table tbody+tbody{border-top:2px solid #dee2e6}.bootstrap-dark .table-sm td,.bootstrap-dark .table-sm th{padding:.3rem}.bootstrap-dark .table-bordered{border:1px solid #dee2e6}.bootstrap-dark .table-bordered td,.bootstrap-dark .table-bordered th{border:1px solid #dee2e6}.bootstrap-dark .table-bordered thead td,.bootstrap-dark .table-bordered thead th{border-bottom-width:2px}.bootstrap-dark .table-borderless tbody+tbody,.bootstrap-dark .table-borderless td,.bootstrap-dark .table-borderless th,.bootstrap-dark .table-borderless thead th{border:0}.bootstrap-dark .table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.bootstrap-dark .table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.bootstrap-dark .table-primary,.bootstrap-dark .table-primary>td,.bootstrap-dark .table-primary>th{background-color:#b8daff}.bootstrap-dark .table-primary tbody+tbody,.bootstrap-dark .table-primary td,.bootstrap-dark .table-primary th,.bootstrap-dark .table-primary thead th{border-color:#7abaff}.bootstrap-dark .table-hover .table-primary:hover{background-color:#9fcdff}.bootstrap-dark .table-hover .table-primary:hover>td,.bootstrap-dark .table-hover .table-primary:hover>th{background-color:#9fcdff}.bootstrap-dark .table-secondary,.bootstrap-dark .table-secondary>td,.bootstrap-dark .table-secondary>th{background-color:#d6d8db}.bootstrap-dark .table-secondary tbody+tbody,.bootstrap-dark .table-secondary td,.bootstrap-dark .table-secondary th,.bootstrap-dark .table-secondary thead th{border-color:#b3b7bb}.bootstrap-dark .table-hover .table-secondary:hover{background-color:#c8cbcf}.bootstrap-dark .table-hover .table-secondary:hover>td,.bootstrap-dark .table-hover .table-secondary:hover>th{background-color:#c8cbcf}.bootstrap-dark .table-success,.bootstrap-dark .table-success>td,.bootstrap-dark .table-success>th{background-color:#c3e6cb}.bootstrap-dark .table-success tbody+tbody,.bootstrap-dark .table-success td,.bootstrap-dark .table-success th,.bootstrap-dark .table-success thead th{border-color:#8fd19e}.bootstrap-dark .table-hover .table-success:hover{background-color:#b1dfbb}.bootstrap-dark .table-hover .table-success:hover>td,.bootstrap-dark .table-hover .table-success:hover>th{background-color:#b1dfbb}.bootstrap-dark .table-info,.bootstrap-dark .table-info>td,.bootstrap-dark .table-info>th{background-color:#bee5eb}.bootstrap-dark .table-info tbody+tbody,.bootstrap-dark .table-info td,.bootstrap-dark .table-info th,.bootstrap-dark .table-info thead th{border-color:#86cfda}.bootstrap-dark .table-hover .table-info:hover{background-color:#abdde5}.bootstrap-dark .table-hover .table-info:hover>td,.bootstrap-dark .table-hover .table-info:hover>th{background-color:#abdde5}.bootstrap-dark .table-warning,.bootstrap-dark .table-warning>td,.bootstrap-dark .table-warning>th{background-color:#ffeeba}.bootstrap-dark .table-warning tbody+tbody,.bootstrap-dark .table-warning td,.bootstrap-dark .table-warning th,.bootstrap-dark .table-warning thead th{border-color:#ffdf7e}.bootstrap-dark .table-hover .table-warning:hover{background-color:#ffe8a1}.bootstrap-dark .table-hover .table-warning:hover>td,.bootstrap-dark .table-hover .table-warning:hover>th{background-color:#ffe8a1}.bootstrap-dark .table-danger,.bootstrap-dark .table-danger>td,.bootstrap-dark .table-danger>th{background-color:#f5c6cb}.bootstrap-dark .table-danger tbody+tbody,.bootstrap-dark .table-danger td,.bootstrap-dark .table-danger th,.bootstrap-dark .table-danger thead th{border-color:#ed969e}.bootstrap-dark .table-hover .table-danger:hover{background-color:#f1b0b7}.bootstrap-dark .table-hover .table-danger:hover>td,.bootstrap-dark .table-hover .table-danger:hover>th{background-color:#f1b0b7}.bootstrap-dark .table-light,.bootstrap-dark .table-light>td,.bootstrap-dark .table-light>th{background-color:#fdfdfe}.bootstrap-dark .table-light tbody+tbody,.bootstrap-dark .table-light td,.bootstrap-dark .table-light th,.bootstrap-dark .table-light thead th{border-color:#fbfcfc}.bootstrap-dark .table-hover .table-light:hover{background-color:#ececf6}.bootstrap-dark .table-hover .table-light:hover>td,.bootstrap-dark .table-hover .table-light:hover>th{background-color:#ececf6}.bootstrap-dark .table-dark,.bootstrap-dark .table-dark>td,.bootstrap-dark .table-dark>th{background-color:#c6c8ca}.bootstrap-dark .table-dark tbody+tbody,.bootstrap-dark .table-dark td,.bootstrap-dark .table-dark th,.bootstrap-dark .table-dark thead th{border-color:#95999c}.bootstrap-dark .table-hover .table-dark:hover{background-color:#b9bbbe}.bootstrap-dark .table-hover .table-dark:hover>td,.bootstrap-dark .table-hover .table-dark:hover>th{background-color:#b9bbbe}.bootstrap-dark .table-active,.bootstrap-dark .table-active>td,.bootstrap-dark .table-active>th{background-color:rgba(0,0,0,.075)}.bootstrap-dark .table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.bootstrap-dark .table-hover .table-active:hover>td,.bootstrap-dark .table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.bootstrap-dark .table .thead-dark th{color:#dee2e6;background-color:#343a40;border-color:#454d55}.bootstrap-dark .table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.bootstrap-dark .table-dark{color:#dee2e6;background-color:#343a40}.bootstrap-dark .table-dark td,.bootstrap-dark .table-dark th,.bootstrap-dark .table-dark thead th{border-color:#454d55}.bootstrap-dark .table-dark.table-bordered{border:0}.bootstrap-dark .table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.bootstrap-dark .table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.bootstrap-dark .table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.bootstrap-dark .table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.bootstrap-dark .table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.bootstrap-dark .table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive-xl>.table-bordered{border:0}}.bootstrap-dark .table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap-dark .table-responsive>.table-bordered{border:0}.bootstrap-dark .table-primary,.bootstrap-dark .table-primary>td,.bootstrap-dark .table-primary>th{color:#212529}.bootstrap-dark .table-hover .table-primary:hover{color:#212529}.bootstrap-dark .table-hover .table-primary:hover>td,.bootstrap-dark .table-hover .table-primary:hover>th{color:#212529}.bootstrap-dark .table-secondary,.bootstrap-dark .table-secondary>td,.bootstrap-dark .table-secondary>th{color:#212529}.bootstrap-dark .table-hover .table-secondary:hover{color:#212529}.bootstrap-dark .table-hover .table-secondary:hover>td,.bootstrap-dark .table-hover .table-secondary:hover>th{color:#212529}.bootstrap-dark .table-success,.bootstrap-dark .table-success>td,.bootstrap-dark .table-success>th{color:#212529}.bootstrap-dark .table-hover .table-success:hover{color:#212529}.bootstrap-dark .table-hover .table-success:hover>td,.bootstrap-dark .table-hover .table-success:hover>th{color:#212529}.bootstrap-dark .table-info,.bootstrap-dark .table-info>td,.bootstrap-dark .table-info>th{color:#212529}.bootstrap-dark .table-hover .table-info:hover{color:#212529}.bootstrap-dark .table-hover .table-info:hover>td,.bootstrap-dark .table-hover .table-info:hover>th{color:#212529}.bootstrap-dark .table-warning,.bootstrap-dark .table-warning>td,.bootstrap-dark .table-warning>th{color:#212529}.bootstrap-dark .table-hover .table-warning:hover{color:#212529}.bootstrap-dark .table-hover .table-warning:hover>td,.bootstrap-dark .table-hover .table-warning:hover>th{color:#212529}.bootstrap-dark .table-danger,.bootstrap-dark .table-danger>td,.bootstrap-dark .table-danger>th{color:#212529}.bootstrap-dark .table-hover .table-danger:hover{color:#212529}.bootstrap-dark .table-hover .table-danger:hover>td,.bootstrap-dark .table-hover .table-danger:hover>th{color:#212529}.bootstrap-dark .table-light,.bootstrap-dark .table-light>td,.bootstrap-dark .table-light>th{color:#212529}.bootstrap-dark .table-hover .table-light:hover{color:#212529}.bootstrap-dark .table-hover .table-light:hover>td,.bootstrap-dark .table-hover .table-light:hover>th{color:#212529}.bootstrap-dark .table-dark,.bootstrap-dark .table-dark>td,.bootstrap-dark .table-dark>th{color:#212529}.bootstrap-dark .table-hover .table-dark:hover{color:#212529}.bootstrap-dark .table-hover .table-dark:hover>td,.bootstrap-dark .table-hover .table-dark:hover>th{color:#212529}.bootstrap-dark .table-active,.bootstrap-dark .table-active>td,.bootstrap-dark .table-active>th{color:#ced4da}.bootstrap-dark .table-hover .table-active:hover{color:#ced4da}.bootstrap-dark .table-hover .table-active:hover>td,.bootstrap-dark .table-hover .table-active:hover>th{color:#ced4da}.bootstrap-dark .table-dark{color:#dee2e6}.bootstrap-dark .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#dee2e6;background-color:#000;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #6c757d;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .form-control{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .form-control::-ms-expand{background-color:transparent;border:0}.bootstrap-dark .form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #dee2e6}.bootstrap-dark .form-control:focus{color:#dee2e6;background-color:#191d21;border-color:#b3d7ff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control::-moz-placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control::placeholder{color:#6c757d;opacity:1}.bootstrap-dark .form-control:disabled,.bootstrap-dark .form-control[readonly]{background-color:#343a40;opacity:1}.bootstrap-dark select.form-control:focus::-ms-value{color:#dee2e6;background-color:#000}.bootstrap-dark .form-control-file,.bootstrap-dark .form-control-range{display:block;width:100%}.bootstrap-dark .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.bootstrap-dark .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.bootstrap-dark .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.bootstrap-dark .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.bootstrap-dark .form-control-plaintext.form-control-lg,.bootstrap-dark .form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.bootstrap-dark .form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap-dark .form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap-dark select.form-control[multiple],.bootstrap-dark select.form-control[size]{height:auto}.bootstrap-dark textarea.form-control{height:auto}.bootstrap-dark .form-group{margin-bottom:1rem}.bootstrap-dark .form-text{display:block;margin-top:.25rem}.bootstrap-dark .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.bootstrap-dark .form-row>.col,.bootstrap-dark .form-row>[class*=col-]{padding-right:5px;padding-left:5px}.bootstrap-dark .form-check{position:relative;display:block;padding-left:1.25rem}.bootstrap-dark .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.bootstrap-dark .form-check-input:disabled~.form-check-label,.bootstrap-dark .form-check-input[disabled]~.form-check-label{color:#6c757d}.bootstrap-dark .form-check-label{margin-bottom:0}.bootstrap-dark .form-check-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.bootstrap-dark .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.bootstrap-dark .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.bootstrap-dark .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#ced4da;background-color:rgba(40,167,69,.9);border-radius:.25rem}.bootstrap-dark.is-valid~.valid-feedback,.bootstrap-dark.is-valid~.valid-tooltip,.was-validated .bootstrap-dark:valid~.valid-feedback,.was-validated .bootstrap-dark:valid~.valid-tooltip{display:block}.bootstrap-dark .form-control.is-valid,.was-validated .bootstrap-dark .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .form-control.is-valid:focus,.was-validated .bootstrap-dark .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark textarea.form-control.is-valid,.was-validated .bootstrap-dark textarea.form-control:valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap-dark .custom-select.is-valid,.was-validated .bootstrap-dark .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .custom-select.is-valid:focus,.was-validated .bootstrap-dark .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark .form-check-input.is-valid~.form-check-label,.was-validated .bootstrap-dark .form-check-input:valid~.form-check-label{color:#28a745}.bootstrap-dark .form-check-input.is-valid~.valid-feedback,.bootstrap-dark .form-check-input.is-valid~.valid-tooltip,.was-validated .bootstrap-dark .form-check-input:valid~.valid-feedback,.was-validated .bootstrap-dark .form-check-input:valid~.valid-tooltip{display:block}.bootstrap-dark .custom-control-input.is-valid~.custom-control-label,.was-validated .bootstrap-dark .custom-control-input:valid~.custom-control-label{color:#28a745}.bootstrap-dark .custom-control-input.is-valid~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.bootstrap-dark .custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.bootstrap-dark .custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark .custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.bootstrap-dark .custom-file-input.is-valid~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:valid~.custom-file-label{border-color:#28a745}.bootstrap-dark .custom-file-input.is-valid:focus~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap-dark .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.bootstrap-dark .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#ced4da;background-color:rgba(220,53,69,.9);border-radius:.25rem}.bootstrap-dark.is-invalid~.invalid-feedback,.bootstrap-dark.is-invalid~.invalid-tooltip,.was-validated .bootstrap-dark:invalid~.invalid-feedback,.was-validated .bootstrap-dark:invalid~.invalid-tooltip{display:block}.bootstrap-dark .form-control.is-invalid,.was-validated .bootstrap-dark .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .form-control.is-invalid:focus,.was-validated .bootstrap-dark .form-control:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark textarea.form-control.is-invalid,.was-validated .bootstrap-dark textarea.form-control:invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap-dark .custom-select.is-invalid,.was-validated .bootstrap-dark .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap-dark .custom-select.is-invalid:focus,.was-validated .bootstrap-dark .custom-select:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark .form-check-input.is-invalid~.form-check-label,.was-validated .bootstrap-dark .form-check-input:invalid~.form-check-label{color:#dc3545}.bootstrap-dark .form-check-input.is-invalid~.invalid-feedback,.bootstrap-dark .form-check-input.is-invalid~.invalid-tooltip,.was-validated .bootstrap-dark .form-check-input:invalid~.invalid-feedback,.was-validated .bootstrap-dark .form-check-input:invalid~.invalid-tooltip{display:block}.bootstrap-dark .custom-control-input.is-invalid~.custom-control-label,.was-validated .bootstrap-dark .custom-control-input:invalid~.custom-control-label{color:#dc3545}.bootstrap-dark .custom-control-input.is-invalid~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.bootstrap-dark .custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.bootstrap-dark .custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark .custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap-dark .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.bootstrap-dark .custom-file-input.is-invalid~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.bootstrap-dark .custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .bootstrap-dark .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap-dark .form-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap-dark .form-inline .form-check{width:100%}@media (min-width:576px){.bootstrap-dark .form-inline label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.bootstrap-dark .form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.bootstrap-dark .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.bootstrap-dark .form-inline .form-control-plaintext{display:inline-block}.bootstrap-dark .form-inline .custom-select,.bootstrap-dark .form-inline .input-group{width:auto}.bootstrap-dark .form-inline .form-check{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.bootstrap-dark .form-inline .form-check-input{position:relative;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.bootstrap-dark .form-inline .custom-control{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap-dark .form-inline .custom-control-label{margin-bottom:0}}.bootstrap-dark .btn{display:inline-block;font-weight:400;color:#d3d3d3;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .btn{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .btn:hover{color:#d3d3d3;text-decoration:none}.bootstrap-dark .btn.focus,.bootstrap-dark .btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .btn.disabled,.bootstrap-dark .btn:disabled{opacity:.65}.bootstrap-dark a.btn.disabled,.bootstrap-dark fieldset:disabled a.btn{pointer-events:none}.bootstrap-dark .btn-primary{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-primary:hover{color:#ced4da;background-color:#0069d9;border-color:#0062cc}.bootstrap-dark .btn-primary.focus,.bootstrap-dark .btn-primary:focus{color:#ced4da;background-color:#0069d9;border-color:#0062cc;-webkit-box-shadow:0 0 0 .2rem rgba(31,136,249,.5);box-shadow:0 0 0 .2rem rgba(31,136,249,.5)}.bootstrap-dark .btn-primary.disabled,.bootstrap-dark .btn-primary:disabled{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-primary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-primary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-primary.dropdown-toggle{color:#ced4da;background-color:#0062cc;border-color:#005cbf}.bootstrap-dark .btn-primary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(31,136,249,.5);box-shadow:0 0 0 .2rem rgba(31,136,249,.5)}.bootstrap-dark .btn-secondary{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-secondary:hover{color:#ced4da;background-color:#5a6268;border-color:#545b62}.bootstrap-dark .btn-secondary.focus,.bootstrap-dark .btn-secondary:focus{color:#ced4da;background-color:#5a6268;border-color:#545b62;-webkit-box-shadow:0 0 0 .2rem rgba(123,131,139,.5);box-shadow:0 0 0 .2rem rgba(123,131,139,.5)}.bootstrap-dark .btn-secondary.disabled,.bootstrap-dark .btn-secondary:disabled{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-secondary.dropdown-toggle{color:#ced4da;background-color:#545b62;border-color:#4e555b}.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(123,131,139,.5);box-shadow:0 0 0 .2rem rgba(123,131,139,.5)}.bootstrap-dark .btn-success{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-success:hover{color:#ced4da;background-color:#218838;border-color:#1e7e34}.bootstrap-dark .btn-success.focus,.bootstrap-dark .btn-success:focus{color:#ced4da;background-color:#218838;border-color:#1e7e34;-webkit-box-shadow:0 0 0 .2rem rgba(65,174,91,.5);box-shadow:0 0 0 .2rem rgba(65,174,91,.5)}.bootstrap-dark .btn-success.disabled,.bootstrap-dark .btn-success:disabled{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-success:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-success:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-success.dropdown-toggle{color:#ced4da;background-color:#1e7e34;border-color:#1c7430}.bootstrap-dark .btn-success:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(65,174,91,.5);box-shadow:0 0 0 .2rem rgba(65,174,91,.5)}.bootstrap-dark .btn-info{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-info:hover{color:#ced4da;background-color:#138496;border-color:#117a8b}.bootstrap-dark .btn-info.focus,.bootstrap-dark .btn-info:focus{color:#ced4da;background-color:#138496;border-color:#117a8b;-webkit-box-shadow:0 0 0 .2rem rgba(50,170,189,.5);box-shadow:0 0 0 .2rem rgba(50,170,189,.5)}.bootstrap-dark .btn-info.disabled,.bootstrap-dark .btn-info:disabled{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-info:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-info:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-info.dropdown-toggle{color:#ced4da;background-color:#117a8b;border-color:#10707f}.bootstrap-dark .btn-info:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(50,170,189,.5);box-shadow:0 0 0 .2rem rgba(50,170,189,.5)}.bootstrap-dark .btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.bootstrap-dark .btn-warning.focus,.bootstrap-dark .btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap-dark .btn-warning.disabled,.bootstrap-dark .btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-warning:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-warning:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.bootstrap-dark .btn-warning:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap-dark .btn-danger{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-danger:hover{color:#ced4da;background-color:#c82333;border-color:#bd2130}.bootstrap-dark .btn-danger.focus,.bootstrap-dark .btn-danger:focus{color:#ced4da;background-color:#c82333;border-color:#bd2130;-webkit-box-shadow:0 0 0 .2rem rgba(218,77,91,.5);box-shadow:0 0 0 .2rem rgba(218,77,91,.5)}.bootstrap-dark .btn-danger.disabled,.bootstrap-dark .btn-danger:disabled{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-danger:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-danger:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-danger.dropdown-toggle{color:#ced4da;background-color:#bd2130;border-color:#b21f2d}.bootstrap-dark .btn-danger:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(218,77,91,.5);box-shadow:0 0 0 .2rem rgba(218,77,91,.5)}.bootstrap-dark .btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.bootstrap-dark .btn-light.focus,.bootstrap-dark .btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap-dark .btn-light.disabled,.bootstrap-dark .btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-light:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-light:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.bootstrap-dark .btn-light:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap-dark .btn-dark{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-dark:hover{color:#ced4da;background-color:#23272b;border-color:#1d2124}.bootstrap-dark .btn-dark.focus,.bootstrap-dark .btn-dark:focus{color:#ced4da;background-color:#23272b;border-color:#1d2124;-webkit-box-shadow:0 0 0 .2rem rgba(75,81,87,.5);box-shadow:0 0 0 .2rem rgba(75,81,87,.5)}.bootstrap-dark .btn-dark.disabled,.bootstrap-dark .btn-dark:disabled{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-dark:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-dark:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-dark.dropdown-toggle{color:#ced4da;background-color:#1d2124;border-color:#171a1d}.bootstrap-dark .btn-dark:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(75,81,87,.5);box-shadow:0 0 0 .2rem rgba(75,81,87,.5)}.bootstrap-dark .btn-outline-primary{color:#007bff;border-color:#007bff}.bootstrap-dark .btn-outline-primary:hover{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-outline-primary.focus,.bootstrap-dark .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap-dark .btn-outline-primary.disabled,.bootstrap-dark .btn-outline-primary:disabled{color:#007bff;background-color:transparent}.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-primary.dropdown-toggle{color:#ced4da;background-color:#007bff;border-color:#007bff}.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap-dark .btn-outline-secondary{color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-outline-secondary:hover{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-outline-secondary.focus,.bootstrap-dark .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap-dark .btn-outline-secondary.disabled,.bootstrap-dark .btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-secondary.dropdown-toggle{color:#ced4da;background-color:#6c757d;border-color:#6c757d}.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap-dark .btn-outline-success{color:#28a745;border-color:#28a745}.bootstrap-dark .btn-outline-success:hover{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-outline-success.focus,.bootstrap-dark .btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap-dark .btn-outline-success.disabled,.bootstrap-dark .btn-outline-success:disabled{color:#28a745;background-color:transparent}.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-success.dropdown-toggle{color:#ced4da;background-color:#28a745;border-color:#28a745}.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap-dark .btn-outline-info{color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-outline-info:hover{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-outline-info.focus,.bootstrap-dark .btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap-dark .btn-outline-info.disabled,.bootstrap-dark .btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-info.dropdown-toggle{color:#ced4da;background-color:#17a2b8;border-color:#17a2b8}.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap-dark .btn-outline-warning{color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-outline-warning.focus,.bootstrap-dark .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap-dark .btn-outline-warning.disabled,.bootstrap-dark .btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap-dark .btn-outline-danger{color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-outline-danger:hover{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-outline-danger.focus,.bootstrap-dark .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap-dark .btn-outline-danger.disabled,.bootstrap-dark .btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-danger.dropdown-toggle{color:#ced4da;background-color:#dc3545;border-color:#dc3545}.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap-dark .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-outline-light.focus,.bootstrap-dark .btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap-dark .btn-outline-light.disabled,.bootstrap-dark .btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap-dark .btn-outline-dark{color:#343a40;border-color:#343a40}.bootstrap-dark .btn-outline-dark:hover{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-outline-dark.focus,.bootstrap-dark .btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap-dark .btn-outline-dark.disabled,.bootstrap-dark .btn-outline-dark:disabled{color:#343a40;background-color:transparent}.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled).active,.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled):active,.show>.bootstrap-dark .btn-outline-dark.dropdown-toggle{color:#ced4da;background-color:#343a40;border-color:#343a40}.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled).active:focus,.bootstrap-dark .btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap-dark .btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap-dark .btn-link{font-weight:400;color:#adadad;text-decoration:none}.bootstrap-dark .btn-link:hover{color:#878787;text-decoration:underline}.bootstrap-dark .btn-link.focus,.bootstrap-dark .btn-link:focus{text-decoration:underline;-webkit-box-shadow:none;box-shadow:none}.bootstrap-dark .btn-link.disabled,.bootstrap-dark .btn-link:disabled{color:#6c757d;pointer-events:none}.bootstrap-dark .btn-group-lg>.btn,.bootstrap-dark .btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap-dark .btn-group-sm>.btn,.bootstrap-dark .btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap-dark .btn-block{display:block;width:100%}.bootstrap-dark .btn-block+.btn-block{margin-top:.5rem}.bootstrap-dark input[type=button].btn-block,.bootstrap-dark input[type=reset].btn-block,.bootstrap-dark input[type=submit].btn-block{width:100%}.bootstrap-dark .fade{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.bootstrap-dark .fade{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .fade:not(.show){opacity:0}.bootstrap-dark .collapse:not(.show){display:none}.bootstrap-dark .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .collapsing{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .dropdown,.bootstrap-dark .dropleft,.bootstrap-dark .dropright,.bootstrap-dark .dropup{position:relative}.bootstrap-dark .dropdown-toggle{white-space:nowrap}.bootstrap-dark .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.bootstrap-dark .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.bootstrap-dark .dropdown-menu-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.bootstrap-dark .dropdown-menu-sm-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.bootstrap-dark .dropdown-menu-md-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.bootstrap-dark .dropdown-menu-lg-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.bootstrap-dark .dropdown-menu-xl-left{right:auto;left:0}.bootstrap-dark .dropdown-menu-xl-right{right:0;left:auto}}.bootstrap-dark .dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.bootstrap-dark .dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.bootstrap-dark .dropup .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.bootstrap-dark .dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.bootstrap-dark .dropright .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropright .dropdown-toggle::after{vertical-align:0}.bootstrap-dark .dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.bootstrap-dark .dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.bootstrap-dark .dropleft .dropdown-toggle::after{display:none}.bootstrap-dark .dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.bootstrap-dark .dropleft .dropdown-toggle:empty::after{margin-left:0}.bootstrap-dark .dropleft .dropdown-toggle::before{vertical-align:0}.bootstrap-dark .dropdown-menu[x-placement^=bottom],.bootstrap-dark .dropdown-menu[x-placement^=left],.bootstrap-dark .dropdown-menu[x-placement^=right],.bootstrap-dark .dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.bootstrap-dark .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.bootstrap-dark .dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.bootstrap-dark .dropdown-item:focus,.bootstrap-dark .dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.bootstrap-dark .dropdown-item.active,.bootstrap-dark .dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.bootstrap-dark .dropdown-item.disabled,.bootstrap-dark .dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.bootstrap-dark .dropdown-menu.show{display:block}.bootstrap-dark .dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.bootstrap-dark .dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.bootstrap-dark .btn-group,.bootstrap-dark .btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.bootstrap-dark .btn-group-vertical>.btn,.bootstrap-dark .btn-group>.btn{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.bootstrap-dark .btn-group-vertical>.btn:hover,.bootstrap-dark .btn-group>.btn:hover{z-index:1}.bootstrap-dark .btn-group-vertical>.btn.active,.bootstrap-dark .btn-group-vertical>.btn:active,.bootstrap-dark .btn-group-vertical>.btn:focus,.bootstrap-dark .btn-group>.btn.active,.bootstrap-dark .btn-group>.btn:active,.bootstrap-dark .btn-group>.btn:focus{z-index:1}.bootstrap-dark .btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .btn-toolbar .input-group{width:auto}.bootstrap-dark .btn-group>.btn-group:not(:first-child),.bootstrap-dark .btn-group>.btn:not(:first-child){margin-left:-1px}.bootstrap-dark .btn-group>.btn-group:not(:last-child)>.btn,.bootstrap-dark .btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .btn-group>.btn-group:not(:first-child)>.btn,.bootstrap-dark .btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.bootstrap-dark .dropdown-toggle-split::after,.dropright .bootstrap-dark .dropdown-toggle-split::after,.dropup .bootstrap-dark .dropdown-toggle-split::after{margin-left:0}.dropleft .bootstrap-dark .dropdown-toggle-split::before{margin-right:0}.bootstrap-dark .btn-group-sm>.btn+.dropdown-toggle-split,.bootstrap-dark .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.bootstrap-dark .btn-group-lg>.btn+.dropdown-toggle-split,.bootstrap-dark .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.bootstrap-dark .btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap-dark .btn-group-vertical>.btn,.bootstrap-dark .btn-group-vertical>.btn-group{width:100%}.bootstrap-dark .btn-group-vertical>.btn-group:not(:first-child),.bootstrap-dark .btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.bootstrap-dark .btn-group-vertical>.btn-group:not(:last-child)>.btn,.bootstrap-dark .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap-dark .btn-group-vertical>.btn-group:not(:first-child)>.btn,.bootstrap-dark .btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.bootstrap-dark .btn-group-toggle>.btn,.bootstrap-dark .btn-group-toggle>.btn-group>.btn{margin-bottom:0}.bootstrap-dark .btn-group-toggle>.btn input[type=checkbox],.bootstrap-dark .btn-group-toggle>.btn input[type=radio],.bootstrap-dark .btn-group-toggle>.btn-group>.btn input[type=checkbox],.bootstrap-dark .btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.bootstrap-dark .input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.bootstrap-dark .input-group>.custom-file,.bootstrap-dark .input-group>.custom-select,.bootstrap-dark .input-group>.form-control,.bootstrap-dark .input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.bootstrap-dark .input-group>.custom-file+.custom-file,.bootstrap-dark .input-group>.custom-file+.custom-select,.bootstrap-dark .input-group>.custom-file+.form-control,.bootstrap-dark .input-group>.custom-select+.custom-file,.bootstrap-dark .input-group>.custom-select+.custom-select,.bootstrap-dark .input-group>.custom-select+.form-control,.bootstrap-dark .input-group>.form-control+.custom-file,.bootstrap-dark .input-group>.form-control+.custom-select,.bootstrap-dark .input-group>.form-control+.form-control,.bootstrap-dark .input-group>.form-control-plaintext+.custom-file,.bootstrap-dark .input-group>.form-control-plaintext+.custom-select,.bootstrap-dark .input-group>.form-control-plaintext+.form-control{margin-left:-1px}.bootstrap-dark .input-group>.custom-file .custom-file-input:focus~.custom-file-label,.bootstrap-dark .input-group>.custom-select:focus,.bootstrap-dark .input-group>.form-control:focus{z-index:3}.bootstrap-dark .input-group>.custom-file .custom-file-input:focus{z-index:4}.bootstrap-dark .input-group>.custom-select:not(:last-child),.bootstrap-dark .input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .input-group>.custom-select:not(:first-child),.bootstrap-dark .input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group>.custom-file{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap-dark .input-group>.custom-file:not(:last-child) .custom-file-label,.bootstrap-dark .input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group-append,.bootstrap-dark .input-group-prepend{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.bootstrap-dark .input-group-append .btn,.bootstrap-dark .input-group-prepend .btn{position:relative;z-index:2}.bootstrap-dark .input-group-append .btn:focus,.bootstrap-dark .input-group-prepend .btn:focus{z-index:3}.bootstrap-dark .input-group-append .btn+.btn,.bootstrap-dark .input-group-append .btn+.input-group-text,.bootstrap-dark .input-group-append .input-group-text+.btn,.bootstrap-dark .input-group-append .input-group-text+.input-group-text,.bootstrap-dark .input-group-prepend .btn+.btn,.bootstrap-dark .input-group-prepend .btn+.input-group-text,.bootstrap-dark .input-group-prepend .input-group-text+.btn,.bootstrap-dark .input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.bootstrap-dark .input-group-prepend{margin-right:-1px}.bootstrap-dark .input-group-append{margin-left:-1px}.bootstrap-dark .input-group-text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#dee2e6;text-align:center;white-space:nowrap;background-color:#343a40;border:1px solid #6c757d;border-radius:.25rem}.bootstrap-dark .input-group-text input[type=checkbox],.bootstrap-dark .input-group-text input[type=radio]{margin-top:0}.bootstrap-dark .input-group-lg>.custom-select,.bootstrap-dark .input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.bootstrap-dark .input-group-lg>.custom-select,.bootstrap-dark .input-group-lg>.form-control,.bootstrap-dark .input-group-lg>.input-group-append>.btn,.bootstrap-dark .input-group-lg>.input-group-append>.input-group-text,.bootstrap-dark .input-group-lg>.input-group-prepend>.btn,.bootstrap-dark .input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap-dark .input-group-sm>.custom-select,.bootstrap-dark .input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.bootstrap-dark .input-group-sm>.custom-select,.bootstrap-dark .input-group-sm>.form-control,.bootstrap-dark .input-group-sm>.input-group-append>.btn,.bootstrap-dark .input-group-sm>.input-group-append>.input-group-text,.bootstrap-dark .input-group-sm>.input-group-prepend>.btn,.bootstrap-dark .input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap-dark .input-group-lg>.custom-select,.bootstrap-dark .input-group-sm>.custom-select{padding-right:1.75rem}.bootstrap-dark .input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.bootstrap-dark .input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.bootstrap-dark .input-group>.input-group-append:not(:last-child)>.btn,.bootstrap-dark .input-group>.input-group-append:not(:last-child)>.input-group-text,.bootstrap-dark .input-group>.input-group-prepend>.btn,.bootstrap-dark .input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .input-group>.input-group-append>.btn,.bootstrap-dark .input-group>.input-group-append>.input-group-text,.bootstrap-dark .input-group>.input-group-prepend:first-child>.btn:not(:first-child),.bootstrap-dark .input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.bootstrap-dark .input-group>.input-group-prepend:not(:first-child)>.btn,.bootstrap-dark .input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group>.input-group-append>.custom-select{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .input-group>.input-group-prepend>.custom-select{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.bootstrap-dark .custom-control-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.bootstrap-dark .custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.bootstrap-dark .custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.bootstrap-dark .custom-control-input:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.bootstrap-dark .custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.bootstrap-dark .custom-control-input:disabled~.custom-control-label,.bootstrap-dark .custom-control-input[disabled]~.custom-control-label{color:#6c757d}.bootstrap-dark .custom-control-input:disabled~.custom-control-label::before,.bootstrap-dark .custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.bootstrap-dark .custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.bootstrap-dark .custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.bootstrap-dark .custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.bootstrap-dark .custom-checkbox .custom-control-label::before{border-radius:.25rem}.bootstrap-dark .custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.bootstrap-dark .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.bootstrap-dark .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.bootstrap-dark .custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-radio .custom-control-label::before{border-radius:50%}.bootstrap-dark .custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.bootstrap-dark .custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-switch{padding-left:2.25rem}.bootstrap-dark .custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.bootstrap-dark .custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-o-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-o-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-switch .custom-control-label::after{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);-o-transform:translateX(.75rem);transform:translateX(.75rem)}.bootstrap-dark .custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap-dark .custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap-dark .custom-select:focus{border-color:#80bdff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-select:focus::-ms-value{color:#dee2e6;background-color:#000}.bootstrap-dark .custom-select[multiple],.bootstrap-dark .custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.bootstrap-dark .custom-select:disabled{color:#ced4da;background-color:#343a40}.bootstrap-dark .custom-select::-ms-expand{display:none}.bootstrap-dark .custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.bootstrap-dark .custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.bootstrap-dark .custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.bootstrap-dark .custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.bootstrap-dark .custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.bootstrap-dark .custom-file-input:focus~.custom-file-label{border-color:#80bdff;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-file-input:disabled~.custom-file-label,.bootstrap-dark .custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.bootstrap-dark .custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.bootstrap-dark .custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.bootstrap-dark .custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.bootstrap-dark .custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.bootstrap-dark .custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap-dark .custom-range:focus{outline:0}.bootstrap-dark .custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .custom-range::-moz-focus-outer{border:0}.bootstrap-dark .custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-range::-webkit-slider-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.bootstrap-dark .custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap-dark .custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-range::-moz-range-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.bootstrap-dark .custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap-dark .custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-range::-ms-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .custom-range::-ms-thumb:active{background-color:#b3d7ff}.bootstrap-dark .custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.bootstrap-dark .custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.bootstrap-dark .custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.bootstrap-dark .custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.bootstrap-dark .custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.bootstrap-dark .custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.bootstrap-dark .custom-range:disabled::-moz-range-track{cursor:default}.bootstrap-dark .custom-range:disabled::-ms-thumb{background-color:#adb5bd}.bootstrap-dark .custom-control-label::before,.bootstrap-dark .custom-file-label,.bootstrap-dark .custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .custom-control-label::before,.bootstrap-dark .custom-file-label,.bootstrap-dark .custom-select{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.bootstrap-dark .nav-link{display:block;padding:.5rem 1rem}.bootstrap-dark .nav-link:focus,.bootstrap-dark .nav-link:hover{text-decoration:none}.bootstrap-dark .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.bootstrap-dark .nav-tabs{border-bottom:1px solid rgba(255,255,255,.125)}.bootstrap-dark .nav-tabs .nav-item{margin-bottom:-1px}.bootstrap-dark .nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap-dark .nav-tabs .nav-link:focus,.bootstrap-dark .nav-tabs .nav-link:hover{border-color:#495057 #495057 rgba(255,255,255,.125)}.bootstrap-dark .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.bootstrap-dark .nav-tabs .nav-item.show .nav-link,.bootstrap-dark .nav-tabs .nav-link.active{color:#f8f9fa;background-color:#191d21;border-color:#495057 #495057 #191d21}.bootstrap-dark .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.bootstrap-dark .nav-pills .nav-link{border-radius:.25rem}.bootstrap-dark .nav-pills .nav-link.active,.bootstrap-dark .nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.bootstrap-dark .nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.bootstrap-dark .nav-justified .nav-item{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.bootstrap-dark .tab-content>.tab-pane{display:none}.bootstrap-dark .tab-content>.active{display:block}.bootstrap-dark .navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.bootstrap-dark .navbar .container,.bootstrap-dark .navbar .container-fluid,.bootstrap-dark .navbar .container-lg,.bootstrap-dark .navbar .container-md,.bootstrap-dark .navbar .container-sm,.bootstrap-dark .navbar .container-xl{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-dark .navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.bootstrap-dark .navbar-brand:focus,.bootstrap-dark .navbar-brand:hover{text-decoration:none}.bootstrap-dark .navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.bootstrap-dark .navbar-nav .nav-link{padding-right:0;padding-left:0}.bootstrap-dark .navbar-nav .dropdown-menu{position:static;float:none}.bootstrap-dark .navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.bootstrap-dark .navbar-collapse{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap-dark .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.bootstrap-dark .navbar-toggler:focus,.bootstrap-dark .navbar-toggler:hover{text-decoration:none}.bootstrap-dark .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}@media (max-width:575.98px){.bootstrap-dark .navbar-expand-sm>.container,.bootstrap-dark .navbar-expand-sm>.container-fluid,.bootstrap-dark .navbar-expand-sm>.container-lg,.bootstrap-dark .navbar-expand-sm>.container-md,.bootstrap-dark .navbar-expand-sm>.container-sm,.bootstrap-dark .navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.bootstrap-dark .navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-sm>.container,.bootstrap-dark .navbar-expand-sm>.container-fluid,.bootstrap-dark .navbar-expand-sm>.container-lg,.bootstrap-dark .navbar-expand-sm>.container-md,.bootstrap-dark .navbar-expand-sm>.container-sm,.bootstrap-dark .navbar-expand-sm>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.bootstrap-dark .navbar-expand-md>.container,.bootstrap-dark .navbar-expand-md>.container-fluid,.bootstrap-dark .navbar-expand-md>.container-lg,.bootstrap-dark .navbar-expand-md>.container-md,.bootstrap-dark .navbar-expand-md>.container-sm,.bootstrap-dark .navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.bootstrap-dark .navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-md>.container,.bootstrap-dark .navbar-expand-md>.container-fluid,.bootstrap-dark .navbar-expand-md>.container-lg,.bootstrap-dark .navbar-expand-md>.container-md,.bootstrap-dark .navbar-expand-md>.container-sm,.bootstrap-dark .navbar-expand-md>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.bootstrap-dark .navbar-expand-lg>.container,.bootstrap-dark .navbar-expand-lg>.container-fluid,.bootstrap-dark .navbar-expand-lg>.container-lg,.bootstrap-dark .navbar-expand-lg>.container-md,.bootstrap-dark .navbar-expand-lg>.container-sm,.bootstrap-dark .navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.bootstrap-dark .navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-lg>.container,.bootstrap-dark .navbar-expand-lg>.container-fluid,.bootstrap-dark .navbar-expand-lg>.container-lg,.bootstrap-dark .navbar-expand-lg>.container-md,.bootstrap-dark .navbar-expand-lg>.container-sm,.bootstrap-dark .navbar-expand-lg>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.bootstrap-dark .navbar-expand-xl>.container,.bootstrap-dark .navbar-expand-xl>.container-fluid,.bootstrap-dark .navbar-expand-xl>.container-lg,.bootstrap-dark .navbar-expand-xl>.container-md,.bootstrap-dark .navbar-expand-xl>.container-sm,.bootstrap-dark .navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.bootstrap-dark .navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand-xl>.container,.bootstrap-dark .navbar-expand-xl>.container-fluid,.bootstrap-dark .navbar-expand-xl>.container-lg,.bootstrap-dark .navbar-expand-xl>.container-md,.bootstrap-dark .navbar-expand-xl>.container-sm,.bootstrap-dark .navbar-expand-xl>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand-xl .navbar-toggler{display:none}}.bootstrap-dark .navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap-dark .navbar-expand>.container,.bootstrap-dark .navbar-expand>.container-fluid,.bootstrap-dark .navbar-expand>.container-lg,.bootstrap-dark .navbar-expand>.container-md,.bootstrap-dark .navbar-expand>.container-sm,.bootstrap-dark .navbar-expand>.container-xl{padding-right:0;padding-left:0}.bootstrap-dark .navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .navbar-expand .navbar-nav .dropdown-menu{position:absolute}.bootstrap-dark .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap-dark .navbar-expand>.container,.bootstrap-dark .navbar-expand>.container-fluid,.bootstrap-dark .navbar-expand>.container-lg,.bootstrap-dark .navbar-expand>.container-md,.bootstrap-dark .navbar-expand>.container-sm,.bootstrap-dark .navbar-expand>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap-dark .navbar-expand .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap-dark .navbar-expand .navbar-toggler{display:none}.bootstrap-dark .navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-brand:focus,.bootstrap-dark .navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.bootstrap-dark .navbar-light .navbar-nav .nav-link:focus,.bootstrap-dark .navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.bootstrap-dark .navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.bootstrap-dark .navbar-light .navbar-nav .active>.nav-link,.bootstrap-dark .navbar-light .navbar-nav .nav-link.active,.bootstrap-dark .navbar-light .navbar-nav .nav-link.show,.bootstrap-dark .navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.bootstrap-dark .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap-dark .navbar-light .navbar-text{color:rgba(0,0,0,.5)}.bootstrap-dark .navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-light .navbar-text a:focus,.bootstrap-dark .navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.bootstrap-dark .navbar-dark .navbar-brand{color:#fff}.bootstrap-dark .navbar-dark .navbar-brand:focus,.bootstrap-dark .navbar-dark .navbar-brand:hover{color:#fff}.bootstrap-dark .navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.bootstrap-dark .navbar-dark .navbar-nav .nav-link:focus,.bootstrap-dark .navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.bootstrap-dark .navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.bootstrap-dark .navbar-dark .navbar-nav .active>.nav-link,.bootstrap-dark .navbar-dark .navbar-nav .nav-link.active,.bootstrap-dark .navbar-dark .navbar-nav .nav-link.show,.bootstrap-dark .navbar-dark .navbar-nav .show>.nav-link{color:#fff}.bootstrap-dark .navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.bootstrap-dark .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap-dark .navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.bootstrap-dark .navbar-dark .navbar-text a{color:#fff}.bootstrap-dark .navbar-dark .navbar-text a:focus,.bootstrap-dark .navbar-dark .navbar-text a:hover{color:#fff}.bootstrap-dark .card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#212529;-webkit-background-clip:border-box;background-clip:border-box;border:1px solid rgba(255,255,255,.125);border-radius:.25rem}.bootstrap-dark .card>hr{margin-right:0;margin-left:0}.bootstrap-dark .card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap-dark .card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap-dark .card-body{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem;color:#e9ecef}.bootstrap-dark .card-title{margin-bottom:.75rem}.bootstrap-dark .card-subtitle{margin-top:-.375rem;margin-bottom:0}.bootstrap-dark .card-text:last-child{margin-bottom:0}.bootstrap-dark .card-link:hover{text-decoration:none}.bootstrap-dark .card-link+.card-link{margin-left:1.25rem}.bootstrap-dark .card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(255,255,255,.03);border-bottom:1px solid rgba(255,255,255,.125)}.bootstrap-dark .card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.bootstrap-dark .card-header+.list-group .list-group-item:first-child{border-top:0}.bootstrap-dark .card-footer{padding:.75rem 1.25rem;background-color:rgba(255,255,255,.03);border-top:1px solid rgba(255,255,255,.125)}.bootstrap-dark .card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.bootstrap-dark .card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.bootstrap-dark .card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.bootstrap-dark .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.bootstrap-dark .card-img,.bootstrap-dark .card-img-bottom,.bootstrap-dark .card-img-top{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%}.bootstrap-dark .card-img,.bootstrap-dark .card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.bootstrap-dark .card-img,.bootstrap-dark .card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.bootstrap-dark .card-deck .card{margin-bottom:15px}@media (min-width:576px){.bootstrap-dark .card-deck{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.bootstrap-dark .card-deck .card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.bootstrap-dark .card-group>.card{margin-bottom:15px}@media (min-width:576px){.bootstrap-dark .card-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.bootstrap-dark .card-group>.card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.bootstrap-dark .card-group>.card+.card{margin-left:0;border-left:0}.bootstrap-dark .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap-dark .card-group>.card:not(:last-child) .card-header,.bootstrap-dark .card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.bootstrap-dark .card-group>.card:not(:last-child) .card-footer,.bootstrap-dark .card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.bootstrap-dark .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap-dark .card-group>.card:not(:first-child) .card-header,.bootstrap-dark .card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.bootstrap-dark .card-group>.card:not(:first-child) .card-footer,.bootstrap-dark .card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.bootstrap-dark .card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.bootstrap-dark .card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.bootstrap-dark .card-columns .card{display:inline-block;width:100%}}.bootstrap-dark .accordion>.card{overflow:hidden}.bootstrap-dark .accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap-dark .accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.bootstrap-dark .accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.bootstrap-dark .breadcrumb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.bootstrap-dark .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.bootstrap-dark .breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.bootstrap-dark .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.bootstrap-dark .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.bootstrap-dark .breadcrumb-item.active{color:#6c757d}.bootstrap-dark .pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.bootstrap-dark .page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.bootstrap-dark .page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.bootstrap-dark .page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap-dark .page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap-dark .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.bootstrap-dark .page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap-dark .page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.bootstrap-dark .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.bootstrap-dark .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.bootstrap-dark .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.bootstrap-dark .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.bootstrap-dark .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.bootstrap-dark .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.bootstrap-dark .badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .badge{-webkit-transition:none;-o-transition:none;transition:none}}a.bootstrap-dark .badge:focus,a.bootstrap-dark .badge:hover{text-decoration:none}.bootstrap-dark .badge:empty{display:none}.bootstrap-dark .btn .badge{position:relative;top:-1px}.bootstrap-dark .badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.bootstrap-dark .badge-primary{color:#ced4da;background-color:#007bff}a.bootstrap-dark .badge-primary:focus,a.bootstrap-dark .badge-primary:hover{color:#ced4da;background-color:#0062cc}a.bootstrap-dark .badge-primary.focus,a.bootstrap-dark .badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap-dark .badge-secondary{color:#ced4da;background-color:#6c757d}a.bootstrap-dark .badge-secondary:focus,a.bootstrap-dark .badge-secondary:hover{color:#ced4da;background-color:#545b62}a.bootstrap-dark .badge-secondary.focus,a.bootstrap-dark .badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap-dark .badge-success{color:#ced4da;background-color:#28a745}a.bootstrap-dark .badge-success:focus,a.bootstrap-dark .badge-success:hover{color:#ced4da;background-color:#1e7e34}a.bootstrap-dark .badge-success.focus,a.bootstrap-dark .badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap-dark .badge-info{color:#ced4da;background-color:#17a2b8}a.bootstrap-dark .badge-info:focus,a.bootstrap-dark .badge-info:hover{color:#ced4da;background-color:#117a8b}a.bootstrap-dark .badge-info.focus,a.bootstrap-dark .badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap-dark .badge-warning{color:#212529;background-color:#ffc107}a.bootstrap-dark .badge-warning:focus,a.bootstrap-dark .badge-warning:hover{color:#212529;background-color:#d39e00}a.bootstrap-dark .badge-warning.focus,a.bootstrap-dark .badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap-dark .badge-danger{color:#ced4da;background-color:#dc3545}a.bootstrap-dark .badge-danger:focus,a.bootstrap-dark .badge-danger:hover{color:#ced4da;background-color:#bd2130}a.bootstrap-dark .badge-danger.focus,a.bootstrap-dark .badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap-dark .badge-light{color:#212529;background-color:#f8f9fa}a.bootstrap-dark .badge-light:focus,a.bootstrap-dark .badge-light:hover{color:#212529;background-color:#dae0e5}a.bootstrap-dark .badge-light.focus,a.bootstrap-dark .badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap-dark .badge-dark{color:#ced4da;background-color:#343a40}a.bootstrap-dark .badge-dark:focus,a.bootstrap-dark .badge-dark:hover{color:#ced4da;background-color:#1d2124}a.bootstrap-dark .badge-dark.focus,a.bootstrap-dark .badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap-dark .jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.bootstrap-dark .jumbotron{padding:4rem 2rem}}.bootstrap-dark .jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.bootstrap-dark .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.bootstrap-dark .alert-heading{color:inherit}.bootstrap-dark .alert-link{font-weight:700}.bootstrap-dark .alert-dismissible{padding-right:4rem}.bootstrap-dark .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.bootstrap-dark .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.bootstrap-dark .alert-primary hr{border-top-color:#9fcdff}.bootstrap-dark .alert-primary .alert-link{color:#002752}.bootstrap-dark .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.bootstrap-dark .alert-secondary hr{border-top-color:#c8cbcf}.bootstrap-dark .alert-secondary .alert-link{color:#202326}.bootstrap-dark .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.bootstrap-dark .alert-success hr{border-top-color:#b1dfbb}.bootstrap-dark .alert-success .alert-link{color:#0b2e13}.bootstrap-dark .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.bootstrap-dark .alert-info hr{border-top-color:#abdde5}.bootstrap-dark .alert-info .alert-link{color:#062c33}.bootstrap-dark .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.bootstrap-dark .alert-warning hr{border-top-color:#ffe8a1}.bootstrap-dark .alert-warning .alert-link{color:#533f03}.bootstrap-dark .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.bootstrap-dark .alert-danger hr{border-top-color:#f1b0b7}.bootstrap-dark .alert-danger .alert-link{color:#491217}.bootstrap-dark .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.bootstrap-dark .alert-light hr{border-top-color:#ececf6}.bootstrap-dark .alert-light .alert-link{color:#686868}.bootstrap-dark .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.bootstrap-dark .alert-dark hr{border-top-color:#b9bbbe}.bootstrap-dark .alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.bootstrap-dark .progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.bootstrap-dark .progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .progress-bar{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.bootstrap-dark .progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.bootstrap-dark .progress-bar-animated{-webkit-animation:none;-o-animation:none;animation:none}}.bootstrap-dark .media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.bootstrap-dark .media-body{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.bootstrap-dark .list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.bootstrap-dark .list-group-item-action{width:100%;color:#dee2e6;text-align:inherit}.bootstrap-dark .list-group-item-action:focus,.bootstrap-dark .list-group-item-action:hover{z-index:1;color:#dee2e6;text-decoration:none;background-color:#212529}.bootstrap-dark .list-group-item-action:active{color:#d3d3d3;background-color:#343a40}.bootstrap-dark .list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:rgba(25,29,33,.05);border:1px solid rgba(255,255,255,.125)}.bootstrap-dark .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap-dark .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap-dark .list-group-item.disabled,.bootstrap-dark .list-group-item:disabled{color:#ced4da;pointer-events:none;background-color:rgba(25,29,33,.05)}.bootstrap-dark .list-group-item.active{z-index:2;color:#000;background-color:#3395ff;border-color:#3395ff}.bootstrap-dark .list-group-item+.bootstrap-dark .list-group-item{border-top-width:0}.bootstrap-dark .list-group-item+.bootstrap-dark .list-group-item.active{margin-top:-1px;border-top-width:1px}.bootstrap-dark .list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.bootstrap-dark .list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.bootstrap-dark .list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-md .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.bootstrap-dark .list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.bootstrap-dark .list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap-dark .list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item.active{margin-top:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap-dark .list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.bootstrap-dark .list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.bootstrap-dark .list-group-flush .list-group-item:first-child{border-top-width:0}.bootstrap-dark .list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.bootstrap-dark .list-group-item-primary{color:#004085;background-color:#b8daff}.bootstrap-dark .list-group-item-primary.list-group-item-action:focus,.bootstrap-dark .list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.bootstrap-dark .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.bootstrap-dark .list-group-item-secondary{color:#383d41;background-color:#d6d8db}.bootstrap-dark .list-group-item-secondary.list-group-item-action:focus,.bootstrap-dark .list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.bootstrap-dark .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.bootstrap-dark .list-group-item-success{color:#155724;background-color:#c3e6cb}.bootstrap-dark .list-group-item-success.list-group-item-action:focus,.bootstrap-dark .list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.bootstrap-dark .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.bootstrap-dark .list-group-item-info{color:#0c5460;background-color:#bee5eb}.bootstrap-dark .list-group-item-info.list-group-item-action:focus,.bootstrap-dark .list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.bootstrap-dark .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.bootstrap-dark .list-group-item-warning{color:#856404;background-color:#ffeeba}.bootstrap-dark .list-group-item-warning.list-group-item-action:focus,.bootstrap-dark .list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.bootstrap-dark .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.bootstrap-dark .list-group-item-danger{color:#721c24;background-color:#f5c6cb}.bootstrap-dark .list-group-item-danger.list-group-item-action:focus,.bootstrap-dark .list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.bootstrap-dark .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.bootstrap-dark .list-group-item-light{color:#818182;background-color:#fdfdfe}.bootstrap-dark .list-group-item-light.list-group-item-action:focus,.bootstrap-dark .list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.bootstrap-dark .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.bootstrap-dark .list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.bootstrap-dark .list-group-item-dark.list-group-item-action:focus,.bootstrap-dark .list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.bootstrap-dark .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.bootstrap-dark .close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#fff;text-shadow:0 1px 0 #000;opacity:.5}.bootstrap-dark .close:hover{color:#fff;text-decoration:none}.bootstrap-dark .close:not(:disabled):not(.disabled):focus,.bootstrap-dark .close:not(:disabled):not(.disabled):hover{opacity:.75}.bootstrap-dark button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap-dark a.close.disabled{pointer-events:none}.bootstrap-dark .toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.bootstrap-dark .toast:not(:last-child){margin-bottom:.75rem}.bootstrap-dark .toast.showing{opacity:1}.bootstrap-dark .toast.show{display:block;opacity:1}.bootstrap-dark .toast.hide{display:none}.bootstrap-dark .toast-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.bootstrap-dark .toast-body{padding:.75rem}.bootstrap-dark .modal-open{overflow:hidden}.bootstrap-dark .modal-open .modal{overflow-x:hidden;overflow-y:auto}.bootstrap-dark .modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.bootstrap-dark .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .bootstrap-dark .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-50px);-o-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .bootstrap-dark .modal-dialog{-webkit-transition:none;-o-transition:none;transition:none}}.modal.show .bootstrap-dark .modal-dialog{-webkit-transform:none;-o-transform:none;transform:none}.modal.modal-static .bootstrap-dark .modal-dialog{-webkit-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.bootstrap-dark .modal-dialog-scrollable{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.bootstrap-dark .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.bootstrap-dark .modal-dialog-scrollable .modal-footer,.bootstrap-dark .modal-dialog-scrollable .modal-header{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.bootstrap-dark .modal-dialog-scrollable .modal-body{overflow-y:auto}.bootstrap-dark .modal-dialog-centered{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.bootstrap-dark .modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.bootstrap-dark .modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%}.bootstrap-dark .modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.bootstrap-dark .modal-dialog-centered.modal-dialog-scrollable::before{content:none}.bootstrap-dark .modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#191d21;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.3rem;outline:0}.bootstrap-dark .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.bootstrap-dark .modal-backdrop.fade{opacity:0}.bootstrap-dark .modal-backdrop.show{opacity:.5}.bootstrap-dark .modal-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #343a40;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap-dark .modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.bootstrap-dark .modal-title{margin-bottom:0;line-height:1.5}.bootstrap-dark .modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.bootstrap-dark .modal-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #343a40;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.bootstrap-dark .modal-footer>*{margin:.25rem}.bootstrap-dark .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.bootstrap-dark .modal-dialog{max-width:500px;margin:1.75rem auto}.bootstrap-dark .modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.bootstrap-dark .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.bootstrap-dark .modal-dialog-centered{min-height:calc(100% - 3.5rem)}.bootstrap-dark .modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.bootstrap-dark .modal-sm{max-width:300px}}@media (min-width:992px){.bootstrap-dark .modal-lg,.bootstrap-dark .modal-xl{max-width:800px}}@media (min-width:1200px){.bootstrap-dark .modal-xl{max-width:1140px}}.bootstrap-dark .tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.bootstrap-dark .tooltip.show{opacity:.9}.bootstrap-dark .tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.bootstrap-dark .tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bootstrap-dark .bs-tooltip-auto[x-placement^=top],.bootstrap-dark .bs-tooltip-top{padding:.4rem 0}.bootstrap-dark .bs-tooltip-auto[x-placement^=top] .arrow,.bootstrap-dark .bs-tooltip-top .arrow{bottom:0}.bootstrap-dark .bs-tooltip-auto[x-placement^=top] .arrow::before,.bootstrap-dark .bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bootstrap-dark .bs-tooltip-auto[x-placement^=right],.bootstrap-dark .bs-tooltip-right{padding:0 .4rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=right] .arrow,.bootstrap-dark .bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=right] .arrow::before,.bootstrap-dark .bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bootstrap-dark .bs-tooltip-auto[x-placement^=bottom],.bootstrap-dark .bs-tooltip-bottom{padding:.4rem 0}.bootstrap-dark .bs-tooltip-auto[x-placement^=bottom] .arrow,.bootstrap-dark .bs-tooltip-bottom .arrow{top:0}.bootstrap-dark .bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bootstrap-dark .bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bootstrap-dark .bs-tooltip-auto[x-placement^=left],.bootstrap-dark .bs-tooltip-left{padding:0 .4rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=left] .arrow,.bootstrap-dark .bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bootstrap-dark .bs-tooltip-auto[x-placement^=left] .arrow::before,.bootstrap-dark .bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.bootstrap-dark .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.bootstrap-dark .popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.bootstrap-dark .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.bootstrap-dark .popover .arrow::after,.bootstrap-dark .popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bootstrap-dark .bs-popover-auto[x-placement^=top],.bootstrap-dark .bs-popover-top{margin-bottom:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=top]>.arrow,.bootstrap-dark .bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bootstrap-dark .bs-popover-auto[x-placement^=top]>.arrow::before,.bootstrap-dark .bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=top]>.arrow::after,.bootstrap-dark .bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bootstrap-dark .bs-popover-auto[x-placement^=right],.bootstrap-dark .bs-popover-right{margin-left:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=right]>.arrow,.bootstrap-dark .bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap-dark .bs-popover-auto[x-placement^=right]>.arrow::before,.bootstrap-dark .bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=right]>.arrow::after,.bootstrap-dark .bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bootstrap-dark .bs-popover-auto[x-placement^=bottom],.bootstrap-dark .bs-popover-bottom{margin-top:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=bottom]>.arrow,.bootstrap-dark .bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bootstrap-dark .bs-popover-auto[x-placement^=bottom]>.arrow::before,.bootstrap-dark .bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=bottom]>.arrow::after,.bootstrap-dark .bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bootstrap-dark .bs-popover-auto[x-placement^=bottom] .popover-header::before,.bootstrap-dark .bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bootstrap-dark .bs-popover-auto[x-placement^=left],.bootstrap-dark .bs-popover-left{margin-right:.5rem}.bootstrap-dark .bs-popover-auto[x-placement^=left]>.arrow,.bootstrap-dark .bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap-dark .bs-popover-auto[x-placement^=left]>.arrow::before,.bootstrap-dark .bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bootstrap-dark .bs-popover-auto[x-placement^=left]>.arrow::after,.bootstrap-dark .bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.bootstrap-dark .popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap-dark .popover-header:empty{display:none}.bootstrap-dark .popover-body{padding:.5rem .75rem;color:#212529}.bootstrap-dark .carousel{position:relative}.bootstrap-dark .carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.bootstrap-dark .carousel-inner{position:relative;width:100%;overflow:hidden}.bootstrap-dark .carousel-inner::after{display:block;clear:both;content:""}.bootstrap-dark .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-item{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-item-next,.bootstrap-dark .carousel-item-prev,.bootstrap-dark .carousel-item.active{display:block}.bootstrap-dark .active.carousel-item-right,.bootstrap-dark .carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);-o-transform:translateX(100%);transform:translateX(100%)}.bootstrap-dark .active.carousel-item-left,.bootstrap-dark .carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);-o-transform:translateX(-100%);transform:translateX(-100%)}.bootstrap-dark .carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;-webkit-transform:none;-o-transform:none;transform:none}.bootstrap-dark .carousel-fade .carousel-item-next.carousel-item-left,.bootstrap-dark .carousel-fade .carousel-item-prev.carousel-item-right,.bootstrap-dark .carousel-fade .carousel-item.active{z-index:1;opacity:1}.bootstrap-dark .carousel-fade .active.carousel-item-left,.bootstrap-dark .carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;-o-transition:opacity 0s .6s;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-fade .active.carousel-item-left,.bootstrap-dark .carousel-fade .active.carousel-item-right{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-control-next,.bootstrap-dark .carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;-webkit-transition:opacity .15s ease;-o-transition:opacity .15s ease;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-control-next,.bootstrap-dark .carousel-control-prev{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-control-next:focus,.bootstrap-dark .carousel-control-next:hover,.bootstrap-dark .carousel-control-prev:focus,.bootstrap-dark .carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.bootstrap-dark .carousel-control-prev{left:0}.bootstrap-dark .carousel-control-next{right:0}.bootstrap-dark .carousel-control-next-icon,.bootstrap-dark .carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.bootstrap-dark .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.bootstrap-dark .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.bootstrap-dark .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.bootstrap-dark .carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;-o-transition:opacity .6s ease;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap-dark .carousel-indicators li{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap-dark .carousel-indicators .active{opacity:1}.bootstrap-dark .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spinner-border{to{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.bootstrap-dark .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;-o-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.bootstrap-dark .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@-o-keyframes spinner-grow{0%{-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}.bootstrap-dark .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;-o-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.bootstrap-dark .spinner-grow-sm{width:1rem;height:1rem}.bootstrap-dark .align-baseline{vertical-align:baseline!important}.bootstrap-dark .align-top{vertical-align:top!important}.bootstrap-dark .align-middle{vertical-align:middle!important}.bootstrap-dark .align-bottom{vertical-align:bottom!important}.bootstrap-dark .align-text-bottom{vertical-align:text-bottom!important}.bootstrap-dark .align-text-top{vertical-align:text-top!important}.bootstrap-dark .bg-primary{background-color:#007bff!important}.bootstrap-dark a.bg-primary:focus,.bootstrap-dark a.bg-primary:hover,.bootstrap-dark button.bg-primary:focus,.bootstrap-dark button.bg-primary:hover{background-color:#0062cc!important}.bootstrap-dark .bg-secondary{background-color:#6c757d!important}.bootstrap-dark a.bg-secondary:focus,.bootstrap-dark a.bg-secondary:hover,.bootstrap-dark button.bg-secondary:focus,.bootstrap-dark button.bg-secondary:hover{background-color:#545b62!important}.bootstrap-dark .bg-success{background-color:#28a745!important}.bootstrap-dark a.bg-success:focus,.bootstrap-dark a.bg-success:hover,.bootstrap-dark button.bg-success:focus,.bootstrap-dark button.bg-success:hover{background-color:#1e7e34!important}.bootstrap-dark .bg-info{background-color:#17a2b8!important}.bootstrap-dark a.bg-info:focus,.bootstrap-dark a.bg-info:hover,.bootstrap-dark button.bg-info:focus,.bootstrap-dark button.bg-info:hover{background-color:#117a8b!important}.bootstrap-dark .bg-warning{background-color:#ffc107!important}.bootstrap-dark a.bg-warning:focus,.bootstrap-dark a.bg-warning:hover,.bootstrap-dark button.bg-warning:focus,.bootstrap-dark button.bg-warning:hover{background-color:#d39e00!important}.bootstrap-dark .bg-danger{background-color:#dc3545!important}.bootstrap-dark a.bg-danger:focus,.bootstrap-dark a.bg-danger:hover,.bootstrap-dark button.bg-danger:focus,.bootstrap-dark button.bg-danger:hover{background-color:#bd2130!important}.bootstrap-dark .bg-light{background-color:#f8f9fa!important}.bootstrap-dark a.bg-light:focus,.bootstrap-dark a.bg-light:hover,.bootstrap-dark button.bg-light:focus,.bootstrap-dark button.bg-light:hover{background-color:#dae0e5!important}.bootstrap-dark .bg-dark{background-color:#343a40!important}.bootstrap-dark a.bg-dark:focus,.bootstrap-dark a.bg-dark:hover,.bootstrap-dark button.bg-dark:focus,.bootstrap-dark button.bg-dark:hover{background-color:#1d2124!important}.bootstrap-dark .bg-white{background-color:#fff!important}.bootstrap-dark .bg-transparent{background-color:transparent!important}.bootstrap-dark .border{border:1px solid #dee2e6!important}.bootstrap-dark .border-top{border-top:1px solid #dee2e6!important}.bootstrap-dark .border-right{border-right:1px solid #dee2e6!important}.bootstrap-dark .border-bottom{border-bottom:1px solid #dee2e6!important}.bootstrap-dark .border-left{border-left:1px solid #dee2e6!important}.bootstrap-dark .border-0{border:0!important}.bootstrap-dark .border-top-0{border-top:0!important}.bootstrap-dark .border-right-0{border-right:0!important}.bootstrap-dark .border-bottom-0{border-bottom:0!important}.bootstrap-dark .border-left-0{border-left:0!important}.bootstrap-dark .border-primary{border-color:#007bff!important}.bootstrap-dark .border-secondary{border-color:#6c757d!important}.bootstrap-dark .border-success{border-color:#28a745!important}.bootstrap-dark .border-info{border-color:#17a2b8!important}.bootstrap-dark .border-warning{border-color:#ffc107!important}.bootstrap-dark .border-danger{border-color:#dc3545!important}.bootstrap-dark .border-light{border-color:#f8f9fa!important}.bootstrap-dark .border-dark{border-color:#343a40!important}.bootstrap-dark .border-white{border-color:#fff!important}.bootstrap-dark .rounded-sm{border-radius:.2rem!important}.bootstrap-dark .rounded{border-radius:.25rem!important}.bootstrap-dark .rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.bootstrap-dark .rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.bootstrap-dark .rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap-dark .rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap-dark .rounded-lg{border-radius:.3rem!important}.bootstrap-dark .rounded-circle{border-radius:50%!important}.bootstrap-dark .rounded-pill{border-radius:50rem!important}.bootstrap-dark .rounded-0{border-radius:0!important}.bootstrap-dark .clearfix::after{display:block;clear:both;content:""}.bootstrap-dark .d-none{display:none!important}.bootstrap-dark .d-inline{display:inline!important}.bootstrap-dark .d-inline-block{display:inline-block!important}.bootstrap-dark .d-block{display:block!important}.bootstrap-dark .d-table{display:table!important}.bootstrap-dark .d-table-row{display:table-row!important}.bootstrap-dark .d-table-cell{display:table-cell!important}.bootstrap-dark .d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.bootstrap-dark .d-sm-none{display:none!important}.bootstrap-dark .d-sm-inline{display:inline!important}.bootstrap-dark .d-sm-inline-block{display:inline-block!important}.bootstrap-dark .d-sm-block{display:block!important}.bootstrap-dark .d-sm-table{display:table!important}.bootstrap-dark .d-sm-table-row{display:table-row!important}.bootstrap-dark .d-sm-table-cell{display:table-cell!important}.bootstrap-dark .d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.bootstrap-dark .d-md-none{display:none!important}.bootstrap-dark .d-md-inline{display:inline!important}.bootstrap-dark .d-md-inline-block{display:inline-block!important}.bootstrap-dark .d-md-block{display:block!important}.bootstrap-dark .d-md-table{display:table!important}.bootstrap-dark .d-md-table-row{display:table-row!important}.bootstrap-dark .d-md-table-cell{display:table-cell!important}.bootstrap-dark .d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.bootstrap-dark .d-lg-none{display:none!important}.bootstrap-dark .d-lg-inline{display:inline!important}.bootstrap-dark .d-lg-inline-block{display:inline-block!important}.bootstrap-dark .d-lg-block{display:block!important}.bootstrap-dark .d-lg-table{display:table!important}.bootstrap-dark .d-lg-table-row{display:table-row!important}.bootstrap-dark .d-lg-table-cell{display:table-cell!important}.bootstrap-dark .d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.bootstrap-dark .d-xl-none{display:none!important}.bootstrap-dark .d-xl-inline{display:inline!important}.bootstrap-dark .d-xl-inline-block{display:inline-block!important}.bootstrap-dark .d-xl-block{display:block!important}.bootstrap-dark .d-xl-table{display:table!important}.bootstrap-dark .d-xl-table-row{display:table-row!important}.bootstrap-dark .d-xl-table-cell{display:table-cell!important}.bootstrap-dark .d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.bootstrap-dark .d-print-none{display:none!important}.bootstrap-dark .d-print-inline{display:inline!important}.bootstrap-dark .d-print-inline-block{display:inline-block!important}.bootstrap-dark .d-print-block{display:block!important}.bootstrap-dark .d-print-table{display:table!important}.bootstrap-dark .d-print-table-row{display:table-row!important}.bootstrap-dark .d-print-table-cell{display:table-cell!important}.bootstrap-dark .d-print-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap-dark .d-print-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.bootstrap-dark .embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.bootstrap-dark .embed-responsive::before{display:block;content:""}.bootstrap-dark .embed-responsive .embed-responsive-item,.bootstrap-dark .embed-responsive embed,.bootstrap-dark .embed-responsive iframe,.bootstrap-dark .embed-responsive object,.bootstrap-dark .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.bootstrap-dark .embed-responsive-21by9::before{padding-top:42.85714%}.bootstrap-dark .embed-responsive-16by9::before{padding-top:56.25%}.bootstrap-dark .embed-responsive-4by3::before{padding-top:75%}.bootstrap-dark .embed-responsive-1by1::before{padding-top:100%}.bootstrap-dark .flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.bootstrap-dark .flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-sm-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-sm-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-sm-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-sm-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-sm-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.bootstrap-dark .flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-md-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-md-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-md-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-md-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-md-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.bootstrap-dark .flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-lg-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-lg-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-lg-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-lg-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-lg-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.bootstrap-dark .flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap-dark .flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap-dark .flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap-dark .flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap-dark .flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap-dark .flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap-dark .flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap-dark .flex-xl-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap-dark .flex-xl-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap-dark .flex-xl-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap-dark .flex-xl-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap-dark .flex-xl-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap-dark .justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap-dark .justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap-dark .justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap-dark .justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap-dark .justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap-dark .align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap-dark .align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap-dark .align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap-dark .align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap-dark .align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap-dark .align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap-dark .align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap-dark .align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap-dark .align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap-dark .align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap-dark .align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap-dark .align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap-dark .align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap-dark .align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap-dark .align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap-dark .align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap-dark .align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}.bootstrap-dark .float-left{float:left!important}.bootstrap-dark .float-right{float:right!important}.bootstrap-dark .float-none{float:none!important}@media (min-width:576px){.bootstrap-dark .float-sm-left{float:left!important}.bootstrap-dark .float-sm-right{float:right!important}.bootstrap-dark .float-sm-none{float:none!important}}@media (min-width:768px){.bootstrap-dark .float-md-left{float:left!important}.bootstrap-dark .float-md-right{float:right!important}.bootstrap-dark .float-md-none{float:none!important}}@media (min-width:992px){.bootstrap-dark .float-lg-left{float:left!important}.bootstrap-dark .float-lg-right{float:right!important}.bootstrap-dark .float-lg-none{float:none!important}}@media (min-width:1200px){.bootstrap-dark .float-xl-left{float:left!important}.bootstrap-dark .float-xl-right{float:right!important}.bootstrap-dark .float-xl-none{float:none!important}}.bootstrap-dark .overflow-auto{overflow:auto!important}.bootstrap-dark .overflow-hidden{overflow:hidden!important}.bootstrap-dark .position-static{position:static!important}.bootstrap-dark .position-relative{position:relative!important}.bootstrap-dark .position-absolute{position:absolute!important}.bootstrap-dark .position-fixed{position:fixed!important}.bootstrap-dark .position-sticky{position:-webkit-sticky!important;position:sticky!important}.bootstrap-dark .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.bootstrap-dark .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.bootstrap-dark .sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.bootstrap-dark .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.bootstrap-dark .sr-only-focusable:active,.bootstrap-dark .sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.bootstrap-dark .shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.bootstrap-dark .shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.bootstrap-dark .shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.bootstrap-dark .shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.bootstrap-dark .w-25{width:25%!important}.bootstrap-dark .w-50{width:50%!important}.bootstrap-dark .w-75{width:75%!important}.bootstrap-dark .w-100{width:100%!important}.bootstrap-dark .w-auto{width:auto!important}.bootstrap-dark .h-25{height:25%!important}.bootstrap-dark .h-50{height:50%!important}.bootstrap-dark .h-75{height:75%!important}.bootstrap-dark .h-100{height:100%!important}.bootstrap-dark .h-auto{height:auto!important}.bootstrap-dark .mw-100{max-width:100%!important}.bootstrap-dark .mh-100{max-height:100%!important}.bootstrap-dark .min-vw-100{min-width:100vw!important}.bootstrap-dark .min-vh-100{min-height:100vh!important}.bootstrap-dark .vw-100{width:100vw!important}.bootstrap-dark .vh-100{height:100vh!important}.bootstrap-dark .stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.bootstrap-dark .m-0{margin:0!important}.bootstrap-dark .mt-0,.bootstrap-dark .my-0{margin-top:0!important}.bootstrap-dark .mr-0,.bootstrap-dark .mx-0{margin-right:0!important}.bootstrap-dark .mb-0,.bootstrap-dark .my-0{margin-bottom:0!important}.bootstrap-dark .ml-0,.bootstrap-dark .mx-0{margin-left:0!important}.bootstrap-dark .m-1{margin:.25rem!important}.bootstrap-dark .mt-1,.bootstrap-dark .my-1{margin-top:.25rem!important}.bootstrap-dark .mr-1,.bootstrap-dark .mx-1{margin-right:.25rem!important}.bootstrap-dark .mb-1,.bootstrap-dark .my-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-1,.bootstrap-dark .mx-1{margin-left:.25rem!important}.bootstrap-dark .m-2{margin:.5rem!important}.bootstrap-dark .mt-2,.bootstrap-dark .my-2{margin-top:.5rem!important}.bootstrap-dark .mr-2,.bootstrap-dark .mx-2{margin-right:.5rem!important}.bootstrap-dark .mb-2,.bootstrap-dark .my-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-2,.bootstrap-dark .mx-2{margin-left:.5rem!important}.bootstrap-dark .m-3{margin:1rem!important}.bootstrap-dark .mt-3,.bootstrap-dark .my-3{margin-top:1rem!important}.bootstrap-dark .mr-3,.bootstrap-dark .mx-3{margin-right:1rem!important}.bootstrap-dark .mb-3,.bootstrap-dark .my-3{margin-bottom:1rem!important}.bootstrap-dark .ml-3,.bootstrap-dark .mx-3{margin-left:1rem!important}.bootstrap-dark .m-4{margin:1.5rem!important}.bootstrap-dark .mt-4,.bootstrap-dark .my-4{margin-top:1.5rem!important}.bootstrap-dark .mr-4,.bootstrap-dark .mx-4{margin-right:1.5rem!important}.bootstrap-dark .mb-4,.bootstrap-dark .my-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-4,.bootstrap-dark .mx-4{margin-left:1.5rem!important}.bootstrap-dark .m-5{margin:3rem!important}.bootstrap-dark .mt-5,.bootstrap-dark .my-5{margin-top:3rem!important}.bootstrap-dark .mr-5,.bootstrap-dark .mx-5{margin-right:3rem!important}.bootstrap-dark .mb-5,.bootstrap-dark .my-5{margin-bottom:3rem!important}.bootstrap-dark .ml-5,.bootstrap-dark .mx-5{margin-left:3rem!important}.bootstrap-dark .p-0{padding:0!important}.bootstrap-dark .pt-0,.bootstrap-dark .py-0{padding-top:0!important}.bootstrap-dark .pr-0,.bootstrap-dark .px-0{padding-right:0!important}.bootstrap-dark .pb-0,.bootstrap-dark .py-0{padding-bottom:0!important}.bootstrap-dark .pl-0,.bootstrap-dark .px-0{padding-left:0!important}.bootstrap-dark .p-1{padding:.25rem!important}.bootstrap-dark .pt-1,.bootstrap-dark .py-1{padding-top:.25rem!important}.bootstrap-dark .pr-1,.bootstrap-dark .px-1{padding-right:.25rem!important}.bootstrap-dark .pb-1,.bootstrap-dark .py-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-1,.bootstrap-dark .px-1{padding-left:.25rem!important}.bootstrap-dark .p-2{padding:.5rem!important}.bootstrap-dark .pt-2,.bootstrap-dark .py-2{padding-top:.5rem!important}.bootstrap-dark .pr-2,.bootstrap-dark .px-2{padding-right:.5rem!important}.bootstrap-dark .pb-2,.bootstrap-dark .py-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-2,.bootstrap-dark .px-2{padding-left:.5rem!important}.bootstrap-dark .p-3{padding:1rem!important}.bootstrap-dark .pt-3,.bootstrap-dark .py-3{padding-top:1rem!important}.bootstrap-dark .pr-3,.bootstrap-dark .px-3{padding-right:1rem!important}.bootstrap-dark .pb-3,.bootstrap-dark .py-3{padding-bottom:1rem!important}.bootstrap-dark .pl-3,.bootstrap-dark .px-3{padding-left:1rem!important}.bootstrap-dark .p-4{padding:1.5rem!important}.bootstrap-dark .pt-4,.bootstrap-dark .py-4{padding-top:1.5rem!important}.bootstrap-dark .pr-4,.bootstrap-dark .px-4{padding-right:1.5rem!important}.bootstrap-dark .pb-4,.bootstrap-dark .py-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-4,.bootstrap-dark .px-4{padding-left:1.5rem!important}.bootstrap-dark .p-5{padding:3rem!important}.bootstrap-dark .pt-5,.bootstrap-dark .py-5{padding-top:3rem!important}.bootstrap-dark .pr-5,.bootstrap-dark .px-5{padding-right:3rem!important}.bootstrap-dark .pb-5,.bootstrap-dark .py-5{padding-bottom:3rem!important}.bootstrap-dark .pl-5,.bootstrap-dark .px-5{padding-left:3rem!important}.bootstrap-dark .m-n1{margin:-.25rem!important}.bootstrap-dark .mt-n1,.bootstrap-dark .my-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-n1,.bootstrap-dark .mx-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-n1,.bootstrap-dark .my-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-n1,.bootstrap-dark .mx-n1{margin-left:-.25rem!important}.bootstrap-dark .m-n2{margin:-.5rem!important}.bootstrap-dark .mt-n2,.bootstrap-dark .my-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-n2,.bootstrap-dark .mx-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-n2,.bootstrap-dark .my-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-n2,.bootstrap-dark .mx-n2{margin-left:-.5rem!important}.bootstrap-dark .m-n3{margin:-1rem!important}.bootstrap-dark .mt-n3,.bootstrap-dark .my-n3{margin-top:-1rem!important}.bootstrap-dark .mr-n3,.bootstrap-dark .mx-n3{margin-right:-1rem!important}.bootstrap-dark .mb-n3,.bootstrap-dark .my-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-n3,.bootstrap-dark .mx-n3{margin-left:-1rem!important}.bootstrap-dark .m-n4{margin:-1.5rem!important}.bootstrap-dark .mt-n4,.bootstrap-dark .my-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-n4,.bootstrap-dark .mx-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-n4,.bootstrap-dark .my-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-n4,.bootstrap-dark .mx-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-n5{margin:-3rem!important}.bootstrap-dark .mt-n5,.bootstrap-dark .my-n5{margin-top:-3rem!important}.bootstrap-dark .mr-n5,.bootstrap-dark .mx-n5{margin-right:-3rem!important}.bootstrap-dark .mb-n5,.bootstrap-dark .my-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-n5,.bootstrap-dark .mx-n5{margin-left:-3rem!important}.bootstrap-dark .m-auto{margin:auto!important}.bootstrap-dark .mt-auto,.bootstrap-dark .my-auto{margin-top:auto!important}.bootstrap-dark .mr-auto,.bootstrap-dark .mx-auto{margin-right:auto!important}.bootstrap-dark .mb-auto,.bootstrap-dark .my-auto{margin-bottom:auto!important}.bootstrap-dark .ml-auto,.bootstrap-dark .mx-auto{margin-left:auto!important}@media (min-width:576px){.bootstrap-dark .m-sm-0{margin:0!important}.bootstrap-dark .mt-sm-0,.bootstrap-dark .my-sm-0{margin-top:0!important}.bootstrap-dark .mr-sm-0,.bootstrap-dark .mx-sm-0{margin-right:0!important}.bootstrap-dark .mb-sm-0,.bootstrap-dark .my-sm-0{margin-bottom:0!important}.bootstrap-dark .ml-sm-0,.bootstrap-dark .mx-sm-0{margin-left:0!important}.bootstrap-dark .m-sm-1{margin:.25rem!important}.bootstrap-dark .mt-sm-1,.bootstrap-dark .my-sm-1{margin-top:.25rem!important}.bootstrap-dark .mr-sm-1,.bootstrap-dark .mx-sm-1{margin-right:.25rem!important}.bootstrap-dark .mb-sm-1,.bootstrap-dark .my-sm-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-sm-1,.bootstrap-dark .mx-sm-1{margin-left:.25rem!important}.bootstrap-dark .m-sm-2{margin:.5rem!important}.bootstrap-dark .mt-sm-2,.bootstrap-dark .my-sm-2{margin-top:.5rem!important}.bootstrap-dark .mr-sm-2,.bootstrap-dark .mx-sm-2{margin-right:.5rem!important}.bootstrap-dark .mb-sm-2,.bootstrap-dark .my-sm-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-sm-2,.bootstrap-dark .mx-sm-2{margin-left:.5rem!important}.bootstrap-dark .m-sm-3{margin:1rem!important}.bootstrap-dark .mt-sm-3,.bootstrap-dark .my-sm-3{margin-top:1rem!important}.bootstrap-dark .mr-sm-3,.bootstrap-dark .mx-sm-3{margin-right:1rem!important}.bootstrap-dark .mb-sm-3,.bootstrap-dark .my-sm-3{margin-bottom:1rem!important}.bootstrap-dark .ml-sm-3,.bootstrap-dark .mx-sm-3{margin-left:1rem!important}.bootstrap-dark .m-sm-4{margin:1.5rem!important}.bootstrap-dark .mt-sm-4,.bootstrap-dark .my-sm-4{margin-top:1.5rem!important}.bootstrap-dark .mr-sm-4,.bootstrap-dark .mx-sm-4{margin-right:1.5rem!important}.bootstrap-dark .mb-sm-4,.bootstrap-dark .my-sm-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-sm-4,.bootstrap-dark .mx-sm-4{margin-left:1.5rem!important}.bootstrap-dark .m-sm-5{margin:3rem!important}.bootstrap-dark .mt-sm-5,.bootstrap-dark .my-sm-5{margin-top:3rem!important}.bootstrap-dark .mr-sm-5,.bootstrap-dark .mx-sm-5{margin-right:3rem!important}.bootstrap-dark .mb-sm-5,.bootstrap-dark .my-sm-5{margin-bottom:3rem!important}.bootstrap-dark .ml-sm-5,.bootstrap-dark .mx-sm-5{margin-left:3rem!important}.bootstrap-dark .p-sm-0{padding:0!important}.bootstrap-dark .pt-sm-0,.bootstrap-dark .py-sm-0{padding-top:0!important}.bootstrap-dark .pr-sm-0,.bootstrap-dark .px-sm-0{padding-right:0!important}.bootstrap-dark .pb-sm-0,.bootstrap-dark .py-sm-0{padding-bottom:0!important}.bootstrap-dark .pl-sm-0,.bootstrap-dark .px-sm-0{padding-left:0!important}.bootstrap-dark .p-sm-1{padding:.25rem!important}.bootstrap-dark .pt-sm-1,.bootstrap-dark .py-sm-1{padding-top:.25rem!important}.bootstrap-dark .pr-sm-1,.bootstrap-dark .px-sm-1{padding-right:.25rem!important}.bootstrap-dark .pb-sm-1,.bootstrap-dark .py-sm-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-sm-1,.bootstrap-dark .px-sm-1{padding-left:.25rem!important}.bootstrap-dark .p-sm-2{padding:.5rem!important}.bootstrap-dark .pt-sm-2,.bootstrap-dark .py-sm-2{padding-top:.5rem!important}.bootstrap-dark .pr-sm-2,.bootstrap-dark .px-sm-2{padding-right:.5rem!important}.bootstrap-dark .pb-sm-2,.bootstrap-dark .py-sm-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-sm-2,.bootstrap-dark .px-sm-2{padding-left:.5rem!important}.bootstrap-dark .p-sm-3{padding:1rem!important}.bootstrap-dark .pt-sm-3,.bootstrap-dark .py-sm-3{padding-top:1rem!important}.bootstrap-dark .pr-sm-3,.bootstrap-dark .px-sm-3{padding-right:1rem!important}.bootstrap-dark .pb-sm-3,.bootstrap-dark .py-sm-3{padding-bottom:1rem!important}.bootstrap-dark .pl-sm-3,.bootstrap-dark .px-sm-3{padding-left:1rem!important}.bootstrap-dark .p-sm-4{padding:1.5rem!important}.bootstrap-dark .pt-sm-4,.bootstrap-dark .py-sm-4{padding-top:1.5rem!important}.bootstrap-dark .pr-sm-4,.bootstrap-dark .px-sm-4{padding-right:1.5rem!important}.bootstrap-dark .pb-sm-4,.bootstrap-dark .py-sm-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-sm-4,.bootstrap-dark .px-sm-4{padding-left:1.5rem!important}.bootstrap-dark .p-sm-5{padding:3rem!important}.bootstrap-dark .pt-sm-5,.bootstrap-dark .py-sm-5{padding-top:3rem!important}.bootstrap-dark .pr-sm-5,.bootstrap-dark .px-sm-5{padding-right:3rem!important}.bootstrap-dark .pb-sm-5,.bootstrap-dark .py-sm-5{padding-bottom:3rem!important}.bootstrap-dark .pl-sm-5,.bootstrap-dark .px-sm-5{padding-left:3rem!important}.bootstrap-dark .m-sm-n1{margin:-.25rem!important}.bootstrap-dark .mt-sm-n1,.bootstrap-dark .my-sm-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-sm-n1,.bootstrap-dark .mx-sm-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-sm-n1,.bootstrap-dark .my-sm-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-sm-n1,.bootstrap-dark .mx-sm-n1{margin-left:-.25rem!important}.bootstrap-dark .m-sm-n2{margin:-.5rem!important}.bootstrap-dark .mt-sm-n2,.bootstrap-dark .my-sm-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-sm-n2,.bootstrap-dark .mx-sm-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-sm-n2,.bootstrap-dark .my-sm-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-sm-n2,.bootstrap-dark .mx-sm-n2{margin-left:-.5rem!important}.bootstrap-dark .m-sm-n3{margin:-1rem!important}.bootstrap-dark .mt-sm-n3,.bootstrap-dark .my-sm-n3{margin-top:-1rem!important}.bootstrap-dark .mr-sm-n3,.bootstrap-dark .mx-sm-n3{margin-right:-1rem!important}.bootstrap-dark .mb-sm-n3,.bootstrap-dark .my-sm-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-sm-n3,.bootstrap-dark .mx-sm-n3{margin-left:-1rem!important}.bootstrap-dark .m-sm-n4{margin:-1.5rem!important}.bootstrap-dark .mt-sm-n4,.bootstrap-dark .my-sm-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-sm-n4,.bootstrap-dark .mx-sm-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-sm-n4,.bootstrap-dark .my-sm-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-sm-n4,.bootstrap-dark .mx-sm-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-sm-n5{margin:-3rem!important}.bootstrap-dark .mt-sm-n5,.bootstrap-dark .my-sm-n5{margin-top:-3rem!important}.bootstrap-dark .mr-sm-n5,.bootstrap-dark .mx-sm-n5{margin-right:-3rem!important}.bootstrap-dark .mb-sm-n5,.bootstrap-dark .my-sm-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-sm-n5,.bootstrap-dark .mx-sm-n5{margin-left:-3rem!important}.bootstrap-dark .m-sm-auto{margin:auto!important}.bootstrap-dark .mt-sm-auto,.bootstrap-dark .my-sm-auto{margin-top:auto!important}.bootstrap-dark .mr-sm-auto,.bootstrap-dark .mx-sm-auto{margin-right:auto!important}.bootstrap-dark .mb-sm-auto,.bootstrap-dark .my-sm-auto{margin-bottom:auto!important}.bootstrap-dark .ml-sm-auto,.bootstrap-dark .mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.bootstrap-dark .m-md-0{margin:0!important}.bootstrap-dark .mt-md-0,.bootstrap-dark .my-md-0{margin-top:0!important}.bootstrap-dark .mr-md-0,.bootstrap-dark .mx-md-0{margin-right:0!important}.bootstrap-dark .mb-md-0,.bootstrap-dark .my-md-0{margin-bottom:0!important}.bootstrap-dark .ml-md-0,.bootstrap-dark .mx-md-0{margin-left:0!important}.bootstrap-dark .m-md-1{margin:.25rem!important}.bootstrap-dark .mt-md-1,.bootstrap-dark .my-md-1{margin-top:.25rem!important}.bootstrap-dark .mr-md-1,.bootstrap-dark .mx-md-1{margin-right:.25rem!important}.bootstrap-dark .mb-md-1,.bootstrap-dark .my-md-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-md-1,.bootstrap-dark .mx-md-1{margin-left:.25rem!important}.bootstrap-dark .m-md-2{margin:.5rem!important}.bootstrap-dark .mt-md-2,.bootstrap-dark .my-md-2{margin-top:.5rem!important}.bootstrap-dark .mr-md-2,.bootstrap-dark .mx-md-2{margin-right:.5rem!important}.bootstrap-dark .mb-md-2,.bootstrap-dark .my-md-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-md-2,.bootstrap-dark .mx-md-2{margin-left:.5rem!important}.bootstrap-dark .m-md-3{margin:1rem!important}.bootstrap-dark .mt-md-3,.bootstrap-dark .my-md-3{margin-top:1rem!important}.bootstrap-dark .mr-md-3,.bootstrap-dark .mx-md-3{margin-right:1rem!important}.bootstrap-dark .mb-md-3,.bootstrap-dark .my-md-3{margin-bottom:1rem!important}.bootstrap-dark .ml-md-3,.bootstrap-dark .mx-md-3{margin-left:1rem!important}.bootstrap-dark .m-md-4{margin:1.5rem!important}.bootstrap-dark .mt-md-4,.bootstrap-dark .my-md-4{margin-top:1.5rem!important}.bootstrap-dark .mr-md-4,.bootstrap-dark .mx-md-4{margin-right:1.5rem!important}.bootstrap-dark .mb-md-4,.bootstrap-dark .my-md-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-md-4,.bootstrap-dark .mx-md-4{margin-left:1.5rem!important}.bootstrap-dark .m-md-5{margin:3rem!important}.bootstrap-dark .mt-md-5,.bootstrap-dark .my-md-5{margin-top:3rem!important}.bootstrap-dark .mr-md-5,.bootstrap-dark .mx-md-5{margin-right:3rem!important}.bootstrap-dark .mb-md-5,.bootstrap-dark .my-md-5{margin-bottom:3rem!important}.bootstrap-dark .ml-md-5,.bootstrap-dark .mx-md-5{margin-left:3rem!important}.bootstrap-dark .p-md-0{padding:0!important}.bootstrap-dark .pt-md-0,.bootstrap-dark .py-md-0{padding-top:0!important}.bootstrap-dark .pr-md-0,.bootstrap-dark .px-md-0{padding-right:0!important}.bootstrap-dark .pb-md-0,.bootstrap-dark .py-md-0{padding-bottom:0!important}.bootstrap-dark .pl-md-0,.bootstrap-dark .px-md-0{padding-left:0!important}.bootstrap-dark .p-md-1{padding:.25rem!important}.bootstrap-dark .pt-md-1,.bootstrap-dark .py-md-1{padding-top:.25rem!important}.bootstrap-dark .pr-md-1,.bootstrap-dark .px-md-1{padding-right:.25rem!important}.bootstrap-dark .pb-md-1,.bootstrap-dark .py-md-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-md-1,.bootstrap-dark .px-md-1{padding-left:.25rem!important}.bootstrap-dark .p-md-2{padding:.5rem!important}.bootstrap-dark .pt-md-2,.bootstrap-dark .py-md-2{padding-top:.5rem!important}.bootstrap-dark .pr-md-2,.bootstrap-dark .px-md-2{padding-right:.5rem!important}.bootstrap-dark .pb-md-2,.bootstrap-dark .py-md-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-md-2,.bootstrap-dark .px-md-2{padding-left:.5rem!important}.bootstrap-dark .p-md-3{padding:1rem!important}.bootstrap-dark .pt-md-3,.bootstrap-dark .py-md-3{padding-top:1rem!important}.bootstrap-dark .pr-md-3,.bootstrap-dark .px-md-3{padding-right:1rem!important}.bootstrap-dark .pb-md-3,.bootstrap-dark .py-md-3{padding-bottom:1rem!important}.bootstrap-dark .pl-md-3,.bootstrap-dark .px-md-3{padding-left:1rem!important}.bootstrap-dark .p-md-4{padding:1.5rem!important}.bootstrap-dark .pt-md-4,.bootstrap-dark .py-md-4{padding-top:1.5rem!important}.bootstrap-dark .pr-md-4,.bootstrap-dark .px-md-4{padding-right:1.5rem!important}.bootstrap-dark .pb-md-4,.bootstrap-dark .py-md-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-md-4,.bootstrap-dark .px-md-4{padding-left:1.5rem!important}.bootstrap-dark .p-md-5{padding:3rem!important}.bootstrap-dark .pt-md-5,.bootstrap-dark .py-md-5{padding-top:3rem!important}.bootstrap-dark .pr-md-5,.bootstrap-dark .px-md-5{padding-right:3rem!important}.bootstrap-dark .pb-md-5,.bootstrap-dark .py-md-5{padding-bottom:3rem!important}.bootstrap-dark .pl-md-5,.bootstrap-dark .px-md-5{padding-left:3rem!important}.bootstrap-dark .m-md-n1{margin:-.25rem!important}.bootstrap-dark .mt-md-n1,.bootstrap-dark .my-md-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-md-n1,.bootstrap-dark .mx-md-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-md-n1,.bootstrap-dark .my-md-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-md-n1,.bootstrap-dark .mx-md-n1{margin-left:-.25rem!important}.bootstrap-dark .m-md-n2{margin:-.5rem!important}.bootstrap-dark .mt-md-n2,.bootstrap-dark .my-md-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-md-n2,.bootstrap-dark .mx-md-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-md-n2,.bootstrap-dark .my-md-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-md-n2,.bootstrap-dark .mx-md-n2{margin-left:-.5rem!important}.bootstrap-dark .m-md-n3{margin:-1rem!important}.bootstrap-dark .mt-md-n3,.bootstrap-dark .my-md-n3{margin-top:-1rem!important}.bootstrap-dark .mr-md-n3,.bootstrap-dark .mx-md-n3{margin-right:-1rem!important}.bootstrap-dark .mb-md-n3,.bootstrap-dark .my-md-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-md-n3,.bootstrap-dark .mx-md-n3{margin-left:-1rem!important}.bootstrap-dark .m-md-n4{margin:-1.5rem!important}.bootstrap-dark .mt-md-n4,.bootstrap-dark .my-md-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-md-n4,.bootstrap-dark .mx-md-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-md-n4,.bootstrap-dark .my-md-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-md-n4,.bootstrap-dark .mx-md-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-md-n5{margin:-3rem!important}.bootstrap-dark .mt-md-n5,.bootstrap-dark .my-md-n5{margin-top:-3rem!important}.bootstrap-dark .mr-md-n5,.bootstrap-dark .mx-md-n5{margin-right:-3rem!important}.bootstrap-dark .mb-md-n5,.bootstrap-dark .my-md-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-md-n5,.bootstrap-dark .mx-md-n5{margin-left:-3rem!important}.bootstrap-dark .m-md-auto{margin:auto!important}.bootstrap-dark .mt-md-auto,.bootstrap-dark .my-md-auto{margin-top:auto!important}.bootstrap-dark .mr-md-auto,.bootstrap-dark .mx-md-auto{margin-right:auto!important}.bootstrap-dark .mb-md-auto,.bootstrap-dark .my-md-auto{margin-bottom:auto!important}.bootstrap-dark .ml-md-auto,.bootstrap-dark .mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.bootstrap-dark .m-lg-0{margin:0!important}.bootstrap-dark .mt-lg-0,.bootstrap-dark .my-lg-0{margin-top:0!important}.bootstrap-dark .mr-lg-0,.bootstrap-dark .mx-lg-0{margin-right:0!important}.bootstrap-dark .mb-lg-0,.bootstrap-dark .my-lg-0{margin-bottom:0!important}.bootstrap-dark .ml-lg-0,.bootstrap-dark .mx-lg-0{margin-left:0!important}.bootstrap-dark .m-lg-1{margin:.25rem!important}.bootstrap-dark .mt-lg-1,.bootstrap-dark .my-lg-1{margin-top:.25rem!important}.bootstrap-dark .mr-lg-1,.bootstrap-dark .mx-lg-1{margin-right:.25rem!important}.bootstrap-dark .mb-lg-1,.bootstrap-dark .my-lg-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-lg-1,.bootstrap-dark .mx-lg-1{margin-left:.25rem!important}.bootstrap-dark .m-lg-2{margin:.5rem!important}.bootstrap-dark .mt-lg-2,.bootstrap-dark .my-lg-2{margin-top:.5rem!important}.bootstrap-dark .mr-lg-2,.bootstrap-dark .mx-lg-2{margin-right:.5rem!important}.bootstrap-dark .mb-lg-2,.bootstrap-dark .my-lg-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-lg-2,.bootstrap-dark .mx-lg-2{margin-left:.5rem!important}.bootstrap-dark .m-lg-3{margin:1rem!important}.bootstrap-dark .mt-lg-3,.bootstrap-dark .my-lg-3{margin-top:1rem!important}.bootstrap-dark .mr-lg-3,.bootstrap-dark .mx-lg-3{margin-right:1rem!important}.bootstrap-dark .mb-lg-3,.bootstrap-dark .my-lg-3{margin-bottom:1rem!important}.bootstrap-dark .ml-lg-3,.bootstrap-dark .mx-lg-3{margin-left:1rem!important}.bootstrap-dark .m-lg-4{margin:1.5rem!important}.bootstrap-dark .mt-lg-4,.bootstrap-dark .my-lg-4{margin-top:1.5rem!important}.bootstrap-dark .mr-lg-4,.bootstrap-dark .mx-lg-4{margin-right:1.5rem!important}.bootstrap-dark .mb-lg-4,.bootstrap-dark .my-lg-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-lg-4,.bootstrap-dark .mx-lg-4{margin-left:1.5rem!important}.bootstrap-dark .m-lg-5{margin:3rem!important}.bootstrap-dark .mt-lg-5,.bootstrap-dark .my-lg-5{margin-top:3rem!important}.bootstrap-dark .mr-lg-5,.bootstrap-dark .mx-lg-5{margin-right:3rem!important}.bootstrap-dark .mb-lg-5,.bootstrap-dark .my-lg-5{margin-bottom:3rem!important}.bootstrap-dark .ml-lg-5,.bootstrap-dark .mx-lg-5{margin-left:3rem!important}.bootstrap-dark .p-lg-0{padding:0!important}.bootstrap-dark .pt-lg-0,.bootstrap-dark .py-lg-0{padding-top:0!important}.bootstrap-dark .pr-lg-0,.bootstrap-dark .px-lg-0{padding-right:0!important}.bootstrap-dark .pb-lg-0,.bootstrap-dark .py-lg-0{padding-bottom:0!important}.bootstrap-dark .pl-lg-0,.bootstrap-dark .px-lg-0{padding-left:0!important}.bootstrap-dark .p-lg-1{padding:.25rem!important}.bootstrap-dark .pt-lg-1,.bootstrap-dark .py-lg-1{padding-top:.25rem!important}.bootstrap-dark .pr-lg-1,.bootstrap-dark .px-lg-1{padding-right:.25rem!important}.bootstrap-dark .pb-lg-1,.bootstrap-dark .py-lg-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-lg-1,.bootstrap-dark .px-lg-1{padding-left:.25rem!important}.bootstrap-dark .p-lg-2{padding:.5rem!important}.bootstrap-dark .pt-lg-2,.bootstrap-dark .py-lg-2{padding-top:.5rem!important}.bootstrap-dark .pr-lg-2,.bootstrap-dark .px-lg-2{padding-right:.5rem!important}.bootstrap-dark .pb-lg-2,.bootstrap-dark .py-lg-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-lg-2,.bootstrap-dark .px-lg-2{padding-left:.5rem!important}.bootstrap-dark .p-lg-3{padding:1rem!important}.bootstrap-dark .pt-lg-3,.bootstrap-dark .py-lg-3{padding-top:1rem!important}.bootstrap-dark .pr-lg-3,.bootstrap-dark .px-lg-3{padding-right:1rem!important}.bootstrap-dark .pb-lg-3,.bootstrap-dark .py-lg-3{padding-bottom:1rem!important}.bootstrap-dark .pl-lg-3,.bootstrap-dark .px-lg-3{padding-left:1rem!important}.bootstrap-dark .p-lg-4{padding:1.5rem!important}.bootstrap-dark .pt-lg-4,.bootstrap-dark .py-lg-4{padding-top:1.5rem!important}.bootstrap-dark .pr-lg-4,.bootstrap-dark .px-lg-4{padding-right:1.5rem!important}.bootstrap-dark .pb-lg-4,.bootstrap-dark .py-lg-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-lg-4,.bootstrap-dark .px-lg-4{padding-left:1.5rem!important}.bootstrap-dark .p-lg-5{padding:3rem!important}.bootstrap-dark .pt-lg-5,.bootstrap-dark .py-lg-5{padding-top:3rem!important}.bootstrap-dark .pr-lg-5,.bootstrap-dark .px-lg-5{padding-right:3rem!important}.bootstrap-dark .pb-lg-5,.bootstrap-dark .py-lg-5{padding-bottom:3rem!important}.bootstrap-dark .pl-lg-5,.bootstrap-dark .px-lg-5{padding-left:3rem!important}.bootstrap-dark .m-lg-n1{margin:-.25rem!important}.bootstrap-dark .mt-lg-n1,.bootstrap-dark .my-lg-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-lg-n1,.bootstrap-dark .mx-lg-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-lg-n1,.bootstrap-dark .my-lg-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-lg-n1,.bootstrap-dark .mx-lg-n1{margin-left:-.25rem!important}.bootstrap-dark .m-lg-n2{margin:-.5rem!important}.bootstrap-dark .mt-lg-n2,.bootstrap-dark .my-lg-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-lg-n2,.bootstrap-dark .mx-lg-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-lg-n2,.bootstrap-dark .my-lg-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-lg-n2,.bootstrap-dark .mx-lg-n2{margin-left:-.5rem!important}.bootstrap-dark .m-lg-n3{margin:-1rem!important}.bootstrap-dark .mt-lg-n3,.bootstrap-dark .my-lg-n3{margin-top:-1rem!important}.bootstrap-dark .mr-lg-n3,.bootstrap-dark .mx-lg-n3{margin-right:-1rem!important}.bootstrap-dark .mb-lg-n3,.bootstrap-dark .my-lg-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-lg-n3,.bootstrap-dark .mx-lg-n3{margin-left:-1rem!important}.bootstrap-dark .m-lg-n4{margin:-1.5rem!important}.bootstrap-dark .mt-lg-n4,.bootstrap-dark .my-lg-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-lg-n4,.bootstrap-dark .mx-lg-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-lg-n4,.bootstrap-dark .my-lg-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-lg-n4,.bootstrap-dark .mx-lg-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-lg-n5{margin:-3rem!important}.bootstrap-dark .mt-lg-n5,.bootstrap-dark .my-lg-n5{margin-top:-3rem!important}.bootstrap-dark .mr-lg-n5,.bootstrap-dark .mx-lg-n5{margin-right:-3rem!important}.bootstrap-dark .mb-lg-n5,.bootstrap-dark .my-lg-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-lg-n5,.bootstrap-dark .mx-lg-n5{margin-left:-3rem!important}.bootstrap-dark .m-lg-auto{margin:auto!important}.bootstrap-dark .mt-lg-auto,.bootstrap-dark .my-lg-auto{margin-top:auto!important}.bootstrap-dark .mr-lg-auto,.bootstrap-dark .mx-lg-auto{margin-right:auto!important}.bootstrap-dark .mb-lg-auto,.bootstrap-dark .my-lg-auto{margin-bottom:auto!important}.bootstrap-dark .ml-lg-auto,.bootstrap-dark .mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.bootstrap-dark .m-xl-0{margin:0!important}.bootstrap-dark .mt-xl-0,.bootstrap-dark .my-xl-0{margin-top:0!important}.bootstrap-dark .mr-xl-0,.bootstrap-dark .mx-xl-0{margin-right:0!important}.bootstrap-dark .mb-xl-0,.bootstrap-dark .my-xl-0{margin-bottom:0!important}.bootstrap-dark .ml-xl-0,.bootstrap-dark .mx-xl-0{margin-left:0!important}.bootstrap-dark .m-xl-1{margin:.25rem!important}.bootstrap-dark .mt-xl-1,.bootstrap-dark .my-xl-1{margin-top:.25rem!important}.bootstrap-dark .mr-xl-1,.bootstrap-dark .mx-xl-1{margin-right:.25rem!important}.bootstrap-dark .mb-xl-1,.bootstrap-dark .my-xl-1{margin-bottom:.25rem!important}.bootstrap-dark .ml-xl-1,.bootstrap-dark .mx-xl-1{margin-left:.25rem!important}.bootstrap-dark .m-xl-2{margin:.5rem!important}.bootstrap-dark .mt-xl-2,.bootstrap-dark .my-xl-2{margin-top:.5rem!important}.bootstrap-dark .mr-xl-2,.bootstrap-dark .mx-xl-2{margin-right:.5rem!important}.bootstrap-dark .mb-xl-2,.bootstrap-dark .my-xl-2{margin-bottom:.5rem!important}.bootstrap-dark .ml-xl-2,.bootstrap-dark .mx-xl-2{margin-left:.5rem!important}.bootstrap-dark .m-xl-3{margin:1rem!important}.bootstrap-dark .mt-xl-3,.bootstrap-dark .my-xl-3{margin-top:1rem!important}.bootstrap-dark .mr-xl-3,.bootstrap-dark .mx-xl-3{margin-right:1rem!important}.bootstrap-dark .mb-xl-3,.bootstrap-dark .my-xl-3{margin-bottom:1rem!important}.bootstrap-dark .ml-xl-3,.bootstrap-dark .mx-xl-3{margin-left:1rem!important}.bootstrap-dark .m-xl-4{margin:1.5rem!important}.bootstrap-dark .mt-xl-4,.bootstrap-dark .my-xl-4{margin-top:1.5rem!important}.bootstrap-dark .mr-xl-4,.bootstrap-dark .mx-xl-4{margin-right:1.5rem!important}.bootstrap-dark .mb-xl-4,.bootstrap-dark .my-xl-4{margin-bottom:1.5rem!important}.bootstrap-dark .ml-xl-4,.bootstrap-dark .mx-xl-4{margin-left:1.5rem!important}.bootstrap-dark .m-xl-5{margin:3rem!important}.bootstrap-dark .mt-xl-5,.bootstrap-dark .my-xl-5{margin-top:3rem!important}.bootstrap-dark .mr-xl-5,.bootstrap-dark .mx-xl-5{margin-right:3rem!important}.bootstrap-dark .mb-xl-5,.bootstrap-dark .my-xl-5{margin-bottom:3rem!important}.bootstrap-dark .ml-xl-5,.bootstrap-dark .mx-xl-5{margin-left:3rem!important}.bootstrap-dark .p-xl-0{padding:0!important}.bootstrap-dark .pt-xl-0,.bootstrap-dark .py-xl-0{padding-top:0!important}.bootstrap-dark .pr-xl-0,.bootstrap-dark .px-xl-0{padding-right:0!important}.bootstrap-dark .pb-xl-0,.bootstrap-dark .py-xl-0{padding-bottom:0!important}.bootstrap-dark .pl-xl-0,.bootstrap-dark .px-xl-0{padding-left:0!important}.bootstrap-dark .p-xl-1{padding:.25rem!important}.bootstrap-dark .pt-xl-1,.bootstrap-dark .py-xl-1{padding-top:.25rem!important}.bootstrap-dark .pr-xl-1,.bootstrap-dark .px-xl-1{padding-right:.25rem!important}.bootstrap-dark .pb-xl-1,.bootstrap-dark .py-xl-1{padding-bottom:.25rem!important}.bootstrap-dark .pl-xl-1,.bootstrap-dark .px-xl-1{padding-left:.25rem!important}.bootstrap-dark .p-xl-2{padding:.5rem!important}.bootstrap-dark .pt-xl-2,.bootstrap-dark .py-xl-2{padding-top:.5rem!important}.bootstrap-dark .pr-xl-2,.bootstrap-dark .px-xl-2{padding-right:.5rem!important}.bootstrap-dark .pb-xl-2,.bootstrap-dark .py-xl-2{padding-bottom:.5rem!important}.bootstrap-dark .pl-xl-2,.bootstrap-dark .px-xl-2{padding-left:.5rem!important}.bootstrap-dark .p-xl-3{padding:1rem!important}.bootstrap-dark .pt-xl-3,.bootstrap-dark .py-xl-3{padding-top:1rem!important}.bootstrap-dark .pr-xl-3,.bootstrap-dark .px-xl-3{padding-right:1rem!important}.bootstrap-dark .pb-xl-3,.bootstrap-dark .py-xl-3{padding-bottom:1rem!important}.bootstrap-dark .pl-xl-3,.bootstrap-dark .px-xl-3{padding-left:1rem!important}.bootstrap-dark .p-xl-4{padding:1.5rem!important}.bootstrap-dark .pt-xl-4,.bootstrap-dark .py-xl-4{padding-top:1.5rem!important}.bootstrap-dark .pr-xl-4,.bootstrap-dark .px-xl-4{padding-right:1.5rem!important}.bootstrap-dark .pb-xl-4,.bootstrap-dark .py-xl-4{padding-bottom:1.5rem!important}.bootstrap-dark .pl-xl-4,.bootstrap-dark .px-xl-4{padding-left:1.5rem!important}.bootstrap-dark .p-xl-5{padding:3rem!important}.bootstrap-dark .pt-xl-5,.bootstrap-dark .py-xl-5{padding-top:3rem!important}.bootstrap-dark .pr-xl-5,.bootstrap-dark .px-xl-5{padding-right:3rem!important}.bootstrap-dark .pb-xl-5,.bootstrap-dark .py-xl-5{padding-bottom:3rem!important}.bootstrap-dark .pl-xl-5,.bootstrap-dark .px-xl-5{padding-left:3rem!important}.bootstrap-dark .m-xl-n1{margin:-.25rem!important}.bootstrap-dark .mt-xl-n1,.bootstrap-dark .my-xl-n1{margin-top:-.25rem!important}.bootstrap-dark .mr-xl-n1,.bootstrap-dark .mx-xl-n1{margin-right:-.25rem!important}.bootstrap-dark .mb-xl-n1,.bootstrap-dark .my-xl-n1{margin-bottom:-.25rem!important}.bootstrap-dark .ml-xl-n1,.bootstrap-dark .mx-xl-n1{margin-left:-.25rem!important}.bootstrap-dark .m-xl-n2{margin:-.5rem!important}.bootstrap-dark .mt-xl-n2,.bootstrap-dark .my-xl-n2{margin-top:-.5rem!important}.bootstrap-dark .mr-xl-n2,.bootstrap-dark .mx-xl-n2{margin-right:-.5rem!important}.bootstrap-dark .mb-xl-n2,.bootstrap-dark .my-xl-n2{margin-bottom:-.5rem!important}.bootstrap-dark .ml-xl-n2,.bootstrap-dark .mx-xl-n2{margin-left:-.5rem!important}.bootstrap-dark .m-xl-n3{margin:-1rem!important}.bootstrap-dark .mt-xl-n3,.bootstrap-dark .my-xl-n3{margin-top:-1rem!important}.bootstrap-dark .mr-xl-n3,.bootstrap-dark .mx-xl-n3{margin-right:-1rem!important}.bootstrap-dark .mb-xl-n3,.bootstrap-dark .my-xl-n3{margin-bottom:-1rem!important}.bootstrap-dark .ml-xl-n3,.bootstrap-dark .mx-xl-n3{margin-left:-1rem!important}.bootstrap-dark .m-xl-n4{margin:-1.5rem!important}.bootstrap-dark .mt-xl-n4,.bootstrap-dark .my-xl-n4{margin-top:-1.5rem!important}.bootstrap-dark .mr-xl-n4,.bootstrap-dark .mx-xl-n4{margin-right:-1.5rem!important}.bootstrap-dark .mb-xl-n4,.bootstrap-dark .my-xl-n4{margin-bottom:-1.5rem!important}.bootstrap-dark .ml-xl-n4,.bootstrap-dark .mx-xl-n4{margin-left:-1.5rem!important}.bootstrap-dark .m-xl-n5{margin:-3rem!important}.bootstrap-dark .mt-xl-n5,.bootstrap-dark .my-xl-n5{margin-top:-3rem!important}.bootstrap-dark .mr-xl-n5,.bootstrap-dark .mx-xl-n5{margin-right:-3rem!important}.bootstrap-dark .mb-xl-n5,.bootstrap-dark .my-xl-n5{margin-bottom:-3rem!important}.bootstrap-dark .ml-xl-n5,.bootstrap-dark .mx-xl-n5{margin-left:-3rem!important}.bootstrap-dark .m-xl-auto{margin:auto!important}.bootstrap-dark .mt-xl-auto,.bootstrap-dark .my-xl-auto{margin-top:auto!important}.bootstrap-dark .mr-xl-auto,.bootstrap-dark .mx-xl-auto{margin-right:auto!important}.bootstrap-dark .mb-xl-auto,.bootstrap-dark .my-xl-auto{margin-bottom:auto!important}.bootstrap-dark .ml-xl-auto,.bootstrap-dark .mx-xl-auto{margin-left:auto!important}}.bootstrap-dark .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.bootstrap-dark .text-justify{text-align:justify!important}.bootstrap-dark .text-wrap{white-space:normal!important}.bootstrap-dark .text-nowrap{white-space:nowrap!important}.bootstrap-dark .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-dark .text-left{text-align:left!important}.bootstrap-dark .text-right{text-align:right!important}.bootstrap-dark .text-center{text-align:center!important}@media (min-width:576px){.bootstrap-dark .text-sm-left{text-align:left!important}.bootstrap-dark .text-sm-right{text-align:right!important}.bootstrap-dark .text-sm-center{text-align:center!important}}@media (min-width:768px){.bootstrap-dark .text-md-left{text-align:left!important}.bootstrap-dark .text-md-right{text-align:right!important}.bootstrap-dark .text-md-center{text-align:center!important}}@media (min-width:992px){.bootstrap-dark .text-lg-left{text-align:left!important}.bootstrap-dark .text-lg-right{text-align:right!important}.bootstrap-dark .text-lg-center{text-align:center!important}}@media (min-width:1200px){.bootstrap-dark .text-xl-left{text-align:left!important}.bootstrap-dark .text-xl-right{text-align:right!important}.bootstrap-dark .text-xl-center{text-align:center!important}}.bootstrap-dark .text-lowercase{text-transform:lowercase!important}.bootstrap-dark .text-uppercase{text-transform:uppercase!important}.bootstrap-dark .text-capitalize{text-transform:capitalize!important}.bootstrap-dark .font-weight-light{font-weight:300!important}.bootstrap-dark .font-weight-lighter{font-weight:lighter!important}.bootstrap-dark .font-weight-normal{font-weight:400!important}.bootstrap-dark .font-weight-bold{font-weight:700!important}.bootstrap-dark .font-weight-bolder{font-weight:bolder!important}.bootstrap-dark .font-italic{font-style:italic!important}.bootstrap-dark .text-white{color:#fff!important}.bootstrap-dark .text-primary{color:#007bff!important}.bootstrap-dark a.text-primary:focus,.bootstrap-dark a.text-primary:hover{color:#0056b3!important}.bootstrap-dark .text-secondary{color:#6c757d!important}.bootstrap-dark a.text-secondary:focus,.bootstrap-dark a.text-secondary:hover{color:#494f54!important}.bootstrap-dark .text-success{color:#28a745!important}.bootstrap-dark a.text-success:focus,.bootstrap-dark a.text-success:hover{color:#19692c!important}.bootstrap-dark .text-info{color:#17a2b8!important}.bootstrap-dark a.text-info:focus,.bootstrap-dark a.text-info:hover{color:#0f6674!important}.bootstrap-dark .text-warning{color:#ffc107!important}.bootstrap-dark a.text-warning:focus,.bootstrap-dark a.text-warning:hover{color:#ba8b00!important}.bootstrap-dark .text-danger{color:#dc3545!important}.bootstrap-dark a.text-danger:focus,.bootstrap-dark a.text-danger:hover{color:#a71d2a!important}.bootstrap-dark .text-light{color:#f8f9fa!important}.bootstrap-dark a.text-light:focus,.bootstrap-dark a.text-light:hover{color:#cbd3da!important}.bootstrap-dark .text-dark{color:#343a40!important}.bootstrap-dark a.text-dark:focus,.bootstrap-dark a.text-dark:hover{color:#121416!important}.bootstrap-dark .text-body{color:#d3d3d3!important}.bootstrap-dark .text-muted{color:#6c757d!important}.bootstrap-dark .text-black-50{color:rgba(0,0,0,.5)!important}.bootstrap-dark .text-white-50{color:rgba(255,255,255,.5)!important}.bootstrap-dark .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.bootstrap-dark .text-decoration-none{text-decoration:none!important}.bootstrap-dark .text-break{word-break:break-word!important;overflow-wrap:break-word!important}.bootstrap-dark .text-reset{color:inherit!important}.bootstrap-dark .visible{visibility:visible!important}.bootstrap-dark .invisible{visibility:hidden!important}.bootstrap-dark p a{text-decoration:underline}.bootstrap-dark hr{border-top:1px solid #495057} diff --git a/docsSrc/content/toggle-bootstrap.min.css b/docsSrc/content/toggle-bootstrap.min.css deleted file mode 100644 index 6ba4734..0000000 --- a/docsSrc/content/toggle-bootstrap.min.css +++ /dev/null @@ -1 +0,0 @@ -body.bootstrap{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}.bootstrap :root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.bootstrap *,.bootstrap ::after,.bootstrap ::before{-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.bootstrap article,.bootstrap aside,.bootstrap figcaption,.bootstrap figure,.bootstrap footer,.bootstrap header,.bootstrap hgroup,.bootstrap main,.bootstrap nav,.bootstrap section{display:block}.bootstrap body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}.bootstrap [tabindex="-1"]:focus:not(:focus-visible){outline:0!important}.bootstrap hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}.bootstrap h1,.bootstrap h2,.bootstrap h3,.bootstrap h4,.bootstrap h5,.bootstrap h6{margin-top:0;margin-bottom:.5rem}.bootstrap p{margin-top:0;margin-bottom:1rem}.bootstrap abbr[data-original-title],.bootstrap abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}.bootstrap address{margin-bottom:1rem;font-style:normal;line-height:inherit}.bootstrap dl,.bootstrap ol,.bootstrap ul{margin-top:0;margin-bottom:1rem}.bootstrap ol ol,.bootstrap ol ul,.bootstrap ul ol,.bootstrap ul ul{margin-bottom:0}.bootstrap dt{font-weight:700}.bootstrap dd{margin-bottom:.5rem;margin-left:0}.bootstrap blockquote{margin:0 0 1rem}.bootstrap b,.bootstrap strong{font-weight:bolder}.bootstrap small{font-size:80%}.bootstrap sub,.bootstrap sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.bootstrap sub{bottom:-.25em}.bootstrap sup{top:-.5em}.bootstrap a{color:#007bff;text-decoration:none;background-color:transparent}.bootstrap a:hover{color:#0056b3;text-decoration:underline}.bootstrap a:not([href]){color:inherit;text-decoration:none}.bootstrap a:not([href]):hover{color:inherit;text-decoration:none}.bootstrap code,.bootstrap kbd,.bootstrap pre,.bootstrap samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}.bootstrap pre{margin-top:0;margin-bottom:1rem;overflow:auto}.bootstrap figure{margin:0 0 1rem}.bootstrap img{vertical-align:middle;border-style:none}.bootstrap svg{overflow:hidden;vertical-align:middle}.bootstrap table{border-collapse:collapse}.bootstrap caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}.bootstrap th{text-align:inherit}.bootstrap label{display:inline-block;margin-bottom:.5rem}.bootstrap button{border-radius:0}.bootstrap button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.bootstrap button,.bootstrap input,.bootstrap optgroup,.bootstrap select,.bootstrap textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.bootstrap button,.bootstrap input{overflow:visible}.bootstrap button,.bootstrap select{text-transform:none}.bootstrap select{word-wrap:normal}.bootstrap [type=button],.bootstrap [type=reset],.bootstrap [type=submit],.bootstrap button{-webkit-appearance:button}.bootstrap [type=button]:not(:disabled),.bootstrap [type=reset]:not(:disabled),.bootstrap [type=submit]:not(:disabled),.bootstrap button:not(:disabled){cursor:pointer}.bootstrap [type=button]::-moz-focus-inner,.bootstrap [type=reset]::-moz-focus-inner,.bootstrap [type=submit]::-moz-focus-inner,.bootstrap button::-moz-focus-inner{padding:0;border-style:none}.bootstrap input[type=checkbox],.bootstrap input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}.bootstrap input[type=date],.bootstrap input[type=datetime-local],.bootstrap input[type=month],.bootstrap input[type=time]{-webkit-appearance:listbox}.bootstrap textarea{overflow:auto;resize:vertical}.bootstrap fieldset{min-width:0;padding:0;margin:0;border:0}.bootstrap legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}.bootstrap progress{vertical-align:baseline}.bootstrap [type=number]::-webkit-inner-spin-button,.bootstrap [type=number]::-webkit-outer-spin-button{height:auto}.bootstrap [type=search]{outline-offset:-2px;-webkit-appearance:none}.bootstrap [type=search]::-webkit-search-decoration{-webkit-appearance:none}.bootstrap ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}.bootstrap output{display:inline-block}.bootstrap summary{display:list-item;cursor:pointer}.bootstrap template{display:none}.bootstrap [hidden]{display:none!important}.bootstrap .h1,.bootstrap .h2,.bootstrap .h3,.bootstrap .h4,.bootstrap .h5,.bootstrap .h6,.bootstrap h1,.bootstrap h2,.bootstrap h3,.bootstrap h4,.bootstrap h5,.bootstrap h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.bootstrap .h1,.bootstrap h1{font-size:2.5rem}.bootstrap .h2,.bootstrap h2{font-size:2rem}.bootstrap .h3,.bootstrap h3{font-size:1.75rem}.bootstrap .h4,.bootstrap h4{font-size:1.5rem}.bootstrap .h5,.bootstrap h5{font-size:1.25rem}.bootstrap .h6,.bootstrap h6{font-size:1rem}.bootstrap .lead{font-size:1.25rem;font-weight:300}.bootstrap .display-1{font-size:6rem;font-weight:300;line-height:1.2}.bootstrap .display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.bootstrap .display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.bootstrap .display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.bootstrap hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.bootstrap .small,.bootstrap small{font-size:80%;font-weight:400}.bootstrap .mark,.bootstrap mark{padding:.2em;background-color:#fcf8e3}.bootstrap .list-unstyled{padding-left:0;list-style:none}.bootstrap .list-inline{padding-left:0;list-style:none}.bootstrap .list-inline-item{display:inline-block}.bootstrap .list-inline-item:not(:last-child){margin-right:.5rem}.bootstrap .initialism{font-size:90%;text-transform:uppercase}.bootstrap .blockquote{margin-bottom:1rem;font-size:1.25rem}.bootstrap .blockquote-footer{display:block;font-size:80%;color:#6c757d}.bootstrap .blockquote-footer::before{content:"\2014\00A0"}.bootstrap .img-fluid{max-width:100%;height:auto}.bootstrap .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.bootstrap .figure{display:inline-block}.bootstrap .figure-img{margin-bottom:.5rem;line-height:1}.bootstrap .figure-caption{font-size:90%;color:#6c757d}.bootstrap code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>.bootstrap code{color:inherit}.bootstrap kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}.bootstrap kbd kbd{padding:0;font-size:100%;font-weight:700}.bootstrap pre{display:block;font-size:87.5%;color:#212529}.bootstrap pre code{font-size:inherit;color:inherit;word-break:normal}.bootstrap .pre-scrollable{max-height:340px;overflow-y:scroll}.bootstrap .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap .container{max-width:540px}}@media (min-width:768px){.bootstrap .container{max-width:720px}}@media (min-width:992px){.bootstrap .container{max-width:960px}}@media (min-width:1200px){.bootstrap .container{max-width:1140px}}.bootstrap .container-fluid,.bootstrap .container-lg,.bootstrap .container-md,.bootstrap .container-sm,.bootstrap .container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.bootstrap .container,.bootstrap .container-sm{max-width:540px}}@media (min-width:768px){.bootstrap .container,.bootstrap .container-md,.bootstrap .container-sm{max-width:720px}}@media (min-width:992px){.bootstrap .container,.bootstrap .container-lg,.bootstrap .container-md,.bootstrap .container-sm{max-width:960px}}@media (min-width:1200px){.bootstrap .container,.bootstrap .container-lg,.bootstrap .container-md,.bootstrap .container-sm,.bootstrap .container-xl{max-width:1140px}}.bootstrap .row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.bootstrap .no-gutters{margin-right:0;margin-left:0}.bootstrap .no-gutters>.col,.bootstrap .no-gutters>[class*=col-]{padding-right:0;padding-left:0}.bootstrap .col,.bootstrap .col-1,.bootstrap .col-10,.bootstrap .col-11,.bootstrap .col-12,.bootstrap .col-2,.bootstrap .col-3,.bootstrap .col-4,.bootstrap .col-5,.bootstrap .col-6,.bootstrap .col-7,.bootstrap .col-8,.bootstrap .col-9,.bootstrap .col-auto,.bootstrap .col-lg,.bootstrap .col-lg-1,.bootstrap .col-lg-10,.bootstrap .col-lg-11,.bootstrap .col-lg-12,.bootstrap .col-lg-2,.bootstrap .col-lg-3,.bootstrap .col-lg-4,.bootstrap .col-lg-5,.bootstrap .col-lg-6,.bootstrap .col-lg-7,.bootstrap .col-lg-8,.bootstrap .col-lg-9,.bootstrap .col-lg-auto,.bootstrap .col-md,.bootstrap .col-md-1,.bootstrap .col-md-10,.bootstrap .col-md-11,.bootstrap .col-md-12,.bootstrap .col-md-2,.bootstrap .col-md-3,.bootstrap .col-md-4,.bootstrap .col-md-5,.bootstrap .col-md-6,.bootstrap .col-md-7,.bootstrap .col-md-8,.bootstrap .col-md-9,.bootstrap .col-md-auto,.bootstrap .col-sm,.bootstrap .col-sm-1,.bootstrap .col-sm-10,.bootstrap .col-sm-11,.bootstrap .col-sm-12,.bootstrap .col-sm-2,.bootstrap .col-sm-3,.bootstrap .col-sm-4,.bootstrap .col-sm-5,.bootstrap .col-sm-6,.bootstrap .col-sm-7,.bootstrap .col-sm-8,.bootstrap .col-sm-9,.bootstrap .col-sm-auto,.bootstrap .col-xl,.bootstrap .col-xl-1,.bootstrap .col-xl-10,.bootstrap .col-xl-11,.bootstrap .col-xl-12,.bootstrap .col-xl-2,.bootstrap .col-xl-3,.bootstrap .col-xl-4,.bootstrap .col-xl-5,.bootstrap .col-xl-6,.bootstrap .col-xl-7,.bootstrap .col-xl-8,.bootstrap .col-xl-9,.bootstrap .col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.bootstrap .col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-1{margin-left:8.33333%}.bootstrap .offset-2{margin-left:16.66667%}.bootstrap .offset-3{margin-left:25%}.bootstrap .offset-4{margin-left:33.33333%}.bootstrap .offset-5{margin-left:41.66667%}.bootstrap .offset-6{margin-left:50%}.bootstrap .offset-7{margin-left:58.33333%}.bootstrap .offset-8{margin-left:66.66667%}.bootstrap .offset-9{margin-left:75%}.bootstrap .offset-10{margin-left:83.33333%}.bootstrap .offset-11{margin-left:91.66667%}@media (min-width:576px){.bootstrap .col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-sm-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-sm-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-sm-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-sm-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-sm-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-sm-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-sm-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-sm-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-sm-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-sm-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-sm-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-sm-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-sm-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-sm-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-sm-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-sm-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-sm-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-sm-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-sm-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-sm-0{margin-left:0}.bootstrap .offset-sm-1{margin-left:8.33333%}.bootstrap .offset-sm-2{margin-left:16.66667%}.bootstrap .offset-sm-3{margin-left:25%}.bootstrap .offset-sm-4{margin-left:33.33333%}.bootstrap .offset-sm-5{margin-left:41.66667%}.bootstrap .offset-sm-6{margin-left:50%}.bootstrap .offset-sm-7{margin-left:58.33333%}.bootstrap .offset-sm-8{margin-left:66.66667%}.bootstrap .offset-sm-9{margin-left:75%}.bootstrap .offset-sm-10{margin-left:83.33333%}.bootstrap .offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.bootstrap .col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-md-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-md-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-md-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-md-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-md-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-md-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-md-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-md-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-md-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-md-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-md-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-md-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-md-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-md-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-md-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-md-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-md-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-md-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-md-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-md-0{margin-left:0}.bootstrap .offset-md-1{margin-left:8.33333%}.bootstrap .offset-md-2{margin-left:16.66667%}.bootstrap .offset-md-3{margin-left:25%}.bootstrap .offset-md-4{margin-left:33.33333%}.bootstrap .offset-md-5{margin-left:41.66667%}.bootstrap .offset-md-6{margin-left:50%}.bootstrap .offset-md-7{margin-left:58.33333%}.bootstrap .offset-md-8{margin-left:66.66667%}.bootstrap .offset-md-9{margin-left:75%}.bootstrap .offset-md-10{margin-left:83.33333%}.bootstrap .offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.bootstrap .col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-lg-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-lg-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-lg-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-lg-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-lg-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-lg-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-lg-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-lg-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-lg-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-lg-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-lg-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-lg-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-lg-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-lg-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-lg-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-lg-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-lg-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-lg-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-lg-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-lg-0{margin-left:0}.bootstrap .offset-lg-1{margin-left:8.33333%}.bootstrap .offset-lg-2{margin-left:16.66667%}.bootstrap .offset-lg-3{margin-left:25%}.bootstrap .offset-lg-4{margin-left:33.33333%}.bootstrap .offset-lg-5{margin-left:41.66667%}.bootstrap .offset-lg-6{margin-left:50%}.bootstrap .offset-lg-7{margin-left:58.33333%}.bootstrap .offset-lg-8{margin-left:66.66667%}.bootstrap .offset-lg-9{margin-left:75%}.bootstrap .offset-lg-10{margin-left:83.33333%}.bootstrap .offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.bootstrap .col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.bootstrap .row-cols-xl-1>*{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .row-cols-xl-2>*{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .row-cols-xl-3>*{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .row-cols-xl-4>*{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .row-cols-xl-5>*{-webkit-box-flex:0;-webkit-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.bootstrap .row-cols-xl-6>*{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.bootstrap .col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.33333%;-ms-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.bootstrap .col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.66667%;-ms-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.bootstrap .col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.bootstrap .col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.33333%;-ms-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.bootstrap .col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.66667%;-ms-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.bootstrap .col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.bootstrap .col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.33333%;-ms-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.bootstrap .col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.66667%;-ms-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.bootstrap .col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.bootstrap .col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.33333%;-ms-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.bootstrap .col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.66667%;-ms-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.bootstrap .col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.bootstrap .order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.bootstrap .order-xl-last{-webkit-box-ordinal-group:14;-webkit-order:13;-ms-flex-order:13;order:13}.bootstrap .order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.bootstrap .order-xl-1{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.bootstrap .order-xl-2{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2}.bootstrap .order-xl-3{-webkit-box-ordinal-group:4;-webkit-order:3;-ms-flex-order:3;order:3}.bootstrap .order-xl-4{-webkit-box-ordinal-group:5;-webkit-order:4;-ms-flex-order:4;order:4}.bootstrap .order-xl-5{-webkit-box-ordinal-group:6;-webkit-order:5;-ms-flex-order:5;order:5}.bootstrap .order-xl-6{-webkit-box-ordinal-group:7;-webkit-order:6;-ms-flex-order:6;order:6}.bootstrap .order-xl-7{-webkit-box-ordinal-group:8;-webkit-order:7;-ms-flex-order:7;order:7}.bootstrap .order-xl-8{-webkit-box-ordinal-group:9;-webkit-order:8;-ms-flex-order:8;order:8}.bootstrap .order-xl-9{-webkit-box-ordinal-group:10;-webkit-order:9;-ms-flex-order:9;order:9}.bootstrap .order-xl-10{-webkit-box-ordinal-group:11;-webkit-order:10;-ms-flex-order:10;order:10}.bootstrap .order-xl-11{-webkit-box-ordinal-group:12;-webkit-order:11;-ms-flex-order:11;order:11}.bootstrap .order-xl-12{-webkit-box-ordinal-group:13;-webkit-order:12;-ms-flex-order:12;order:12}.bootstrap .offset-xl-0{margin-left:0}.bootstrap .offset-xl-1{margin-left:8.33333%}.bootstrap .offset-xl-2{margin-left:16.66667%}.bootstrap .offset-xl-3{margin-left:25%}.bootstrap .offset-xl-4{margin-left:33.33333%}.bootstrap .offset-xl-5{margin-left:41.66667%}.bootstrap .offset-xl-6{margin-left:50%}.bootstrap .offset-xl-7{margin-left:58.33333%}.bootstrap .offset-xl-8{margin-left:66.66667%}.bootstrap .offset-xl-9{margin-left:75%}.bootstrap .offset-xl-10{margin-left:83.33333%}.bootstrap .offset-xl-11{margin-left:91.66667%}}.bootstrap .table{width:100%;margin-bottom:1rem;color:#212529}.bootstrap .table td,.bootstrap .table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.bootstrap .table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.bootstrap .table tbody+tbody{border-top:2px solid #dee2e6}.bootstrap .table-sm td,.bootstrap .table-sm th{padding:.3rem}.bootstrap .table-bordered{border:1px solid #dee2e6}.bootstrap .table-bordered td,.bootstrap .table-bordered th{border:1px solid #dee2e6}.bootstrap .table-bordered thead td,.bootstrap .table-bordered thead th{border-bottom-width:2px}.bootstrap .table-borderless tbody+tbody,.bootstrap .table-borderless td,.bootstrap .table-borderless th,.bootstrap .table-borderless thead th{border:0}.bootstrap .table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.bootstrap .table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.bootstrap .table-primary,.bootstrap .table-primary>td,.bootstrap .table-primary>th{background-color:#b8daff}.bootstrap .table-primary tbody+tbody,.bootstrap .table-primary td,.bootstrap .table-primary th,.bootstrap .table-primary thead th{border-color:#7abaff}.bootstrap .table-hover .table-primary:hover{background-color:#9fcdff}.bootstrap .table-hover .table-primary:hover>td,.bootstrap .table-hover .table-primary:hover>th{background-color:#9fcdff}.bootstrap .table-secondary,.bootstrap .table-secondary>td,.bootstrap .table-secondary>th{background-color:#d6d8db}.bootstrap .table-secondary tbody+tbody,.bootstrap .table-secondary td,.bootstrap .table-secondary th,.bootstrap .table-secondary thead th{border-color:#b3b7bb}.bootstrap .table-hover .table-secondary:hover{background-color:#c8cbcf}.bootstrap .table-hover .table-secondary:hover>td,.bootstrap .table-hover .table-secondary:hover>th{background-color:#c8cbcf}.bootstrap .table-success,.bootstrap .table-success>td,.bootstrap .table-success>th{background-color:#c3e6cb}.bootstrap .table-success tbody+tbody,.bootstrap .table-success td,.bootstrap .table-success th,.bootstrap .table-success thead th{border-color:#8fd19e}.bootstrap .table-hover .table-success:hover{background-color:#b1dfbb}.bootstrap .table-hover .table-success:hover>td,.bootstrap .table-hover .table-success:hover>th{background-color:#b1dfbb}.bootstrap .table-info,.bootstrap .table-info>td,.bootstrap .table-info>th{background-color:#bee5eb}.bootstrap .table-info tbody+tbody,.bootstrap .table-info td,.bootstrap .table-info th,.bootstrap .table-info thead th{border-color:#86cfda}.bootstrap .table-hover .table-info:hover{background-color:#abdde5}.bootstrap .table-hover .table-info:hover>td,.bootstrap .table-hover .table-info:hover>th{background-color:#abdde5}.bootstrap .table-warning,.bootstrap .table-warning>td,.bootstrap .table-warning>th{background-color:#ffeeba}.bootstrap .table-warning tbody+tbody,.bootstrap .table-warning td,.bootstrap .table-warning th,.bootstrap .table-warning thead th{border-color:#ffdf7e}.bootstrap .table-hover .table-warning:hover{background-color:#ffe8a1}.bootstrap .table-hover .table-warning:hover>td,.bootstrap .table-hover .table-warning:hover>th{background-color:#ffe8a1}.bootstrap .table-danger,.bootstrap .table-danger>td,.bootstrap .table-danger>th{background-color:#f5c6cb}.bootstrap .table-danger tbody+tbody,.bootstrap .table-danger td,.bootstrap .table-danger th,.bootstrap .table-danger thead th{border-color:#ed969e}.bootstrap .table-hover .table-danger:hover{background-color:#f1b0b7}.bootstrap .table-hover .table-danger:hover>td,.bootstrap .table-hover .table-danger:hover>th{background-color:#f1b0b7}.bootstrap .table-light,.bootstrap .table-light>td,.bootstrap .table-light>th{background-color:#fdfdfe}.bootstrap .table-light tbody+tbody,.bootstrap .table-light td,.bootstrap .table-light th,.bootstrap .table-light thead th{border-color:#fbfcfc}.bootstrap .table-hover .table-light:hover{background-color:#ececf6}.bootstrap .table-hover .table-light:hover>td,.bootstrap .table-hover .table-light:hover>th{background-color:#ececf6}.bootstrap .table-dark,.bootstrap .table-dark>td,.bootstrap .table-dark>th{background-color:#c6c8ca}.bootstrap .table-dark tbody+tbody,.bootstrap .table-dark td,.bootstrap .table-dark th,.bootstrap .table-dark thead th{border-color:#95999c}.bootstrap .table-hover .table-dark:hover{background-color:#b9bbbe}.bootstrap .table-hover .table-dark:hover>td,.bootstrap .table-hover .table-dark:hover>th{background-color:#b9bbbe}.bootstrap .table-active,.bootstrap .table-active>td,.bootstrap .table-active>th{background-color:rgba(0,0,0,.075)}.bootstrap .table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.bootstrap .table-hover .table-active:hover>td,.bootstrap .table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.bootstrap .table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.bootstrap .table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.bootstrap .table-dark{color:#fff;background-color:#343a40}.bootstrap .table-dark td,.bootstrap .table-dark th,.bootstrap .table-dark thead th{border-color:#454d55}.bootstrap .table-dark.table-bordered{border:0}.bootstrap .table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.bootstrap .table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.bootstrap .table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.bootstrap .table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.bootstrap .table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.bootstrap .table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive-xl>.table-bordered{border:0}}.bootstrap .table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.bootstrap .table-responsive>.table-bordered{border:0}.bootstrap .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .form-control{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .form-control::-ms-expand{background-color:transparent;border:0}.bootstrap .form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.bootstrap .form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.bootstrap .form-control::-moz-placeholder{color:#6c757d;opacity:1}.bootstrap .form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.bootstrap .form-control::placeholder{color:#6c757d;opacity:1}.bootstrap .form-control:disabled,.bootstrap .form-control[readonly]{background-color:#e9ecef;opacity:1}.bootstrap select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.bootstrap .form-control-file,.bootstrap .form-control-range{display:block;width:100%}.bootstrap .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.bootstrap .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.bootstrap .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.bootstrap .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.bootstrap .form-control-plaintext.form-control-lg,.bootstrap .form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.bootstrap .form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap .form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap select.form-control[multiple],.bootstrap select.form-control[size]{height:auto}.bootstrap textarea.form-control{height:auto}.bootstrap .form-group{margin-bottom:1rem}.bootstrap .form-text{display:block;margin-top:.25rem}.bootstrap .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.bootstrap .form-row>.col,.bootstrap .form-row>[class*=col-]{padding-right:5px;padding-left:5px}.bootstrap .form-check{position:relative;display:block;padding-left:1.25rem}.bootstrap .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.bootstrap .form-check-input:disabled~.form-check-label,.bootstrap .form-check-input[disabled]~.form-check-label{color:#6c757d}.bootstrap .form-check-label{margin-bottom:0}.bootstrap .form-check-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.bootstrap .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.bootstrap .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.bootstrap .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.bootstrap.is-valid~.valid-feedback,.bootstrap.is-valid~.valid-tooltip,.was-validated .bootstrap:valid~.valid-feedback,.was-validated .bootstrap:valid~.valid-tooltip{display:block}.bootstrap .form-control.is-valid,.was-validated .bootstrap .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .form-control.is-valid:focus,.was-validated .bootstrap .form-control:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap textarea.form-control.is-valid,.was-validated .bootstrap textarea.form-control:valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap .custom-select.is-valid,.was-validated .bootstrap .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .custom-select.is-valid:focus,.was-validated .bootstrap .custom-select:valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap .form-check-input.is-valid~.form-check-label,.was-validated .bootstrap .form-check-input:valid~.form-check-label{color:#28a745}.bootstrap .form-check-input.is-valid~.valid-feedback,.bootstrap .form-check-input.is-valid~.valid-tooltip,.was-validated .bootstrap .form-check-input:valid~.valid-feedback,.was-validated .bootstrap .form-check-input:valid~.valid-tooltip{display:block}.bootstrap .custom-control-input.is-valid~.custom-control-label,.was-validated .bootstrap .custom-control-input:valid~.custom-control-label{color:#28a745}.bootstrap .custom-control-input.is-valid~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.bootstrap .custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.bootstrap .custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap .custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.bootstrap .custom-file-input.is-valid~.custom-file-label,.was-validated .bootstrap .custom-file-input:valid~.custom-file-label{border-color:#28a745}.bootstrap .custom-file-input.is-valid:focus~.custom-file-label,.was-validated .bootstrap .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.25);box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.bootstrap .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.bootstrap .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.bootstrap.is-invalid~.invalid-feedback,.bootstrap.is-invalid~.invalid-tooltip,.was-validated .bootstrap:invalid~.invalid-feedback,.was-validated .bootstrap:invalid~.invalid-tooltip{display:block}.bootstrap .form-control.is-invalid,.was-validated .bootstrap .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;-webkit-background-size:calc(.75em + .375rem) calc(.75em + .375rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .form-control.is-invalid:focus,.was-validated .bootstrap .form-control:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap textarea.form-control.is-invalid,.was-validated .bootstrap textarea.form-control:invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.bootstrap .custom-select.is-invalid,.was-validated .bootstrap .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.bootstrap .custom-select.is-invalid:focus,.was-validated .bootstrap .custom-select:invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap .form-check-input.is-invalid~.form-check-label,.was-validated .bootstrap .form-check-input:invalid~.form-check-label{color:#dc3545}.bootstrap .form-check-input.is-invalid~.invalid-feedback,.bootstrap .form-check-input.is-invalid~.invalid-tooltip,.was-validated .bootstrap .form-check-input:invalid~.invalid-feedback,.was-validated .bootstrap .form-check-input:invalid~.invalid-tooltip{display:block}.bootstrap .custom-control-input.is-invalid~.custom-control-label,.was-validated .bootstrap .custom-control-input:invalid~.custom-control-label{color:#dc3545}.bootstrap .custom-control-input.is-invalid~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.bootstrap .custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.bootstrap .custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap .custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .bootstrap .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.bootstrap .custom-file-input.is-invalid~.custom-file-label,.was-validated .bootstrap .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.bootstrap .custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .bootstrap .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.25);box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.bootstrap .form-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap .form-inline .form-check{width:100%}@media (min-width:576px){.bootstrap .form-inline label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.bootstrap .form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.bootstrap .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.bootstrap .form-inline .form-control-plaintext{display:inline-block}.bootstrap .form-inline .custom-select,.bootstrap .form-inline .input-group{width:auto}.bootstrap .form-inline .form-check{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.bootstrap .form-inline .form-check-input{position:relative;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.bootstrap .form-inline .custom-control{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap .form-inline .custom-control-label{margin-bottom:0}}.bootstrap .btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .btn{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .btn:hover{color:#212529;text-decoration:none}.bootstrap .btn.focus,.bootstrap .btn:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .btn.disabled,.bootstrap .btn:disabled{opacity:.65}.bootstrap a.btn.disabled,.bootstrap fieldset:disabled a.btn{pointer-events:none}.bootstrap .btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.bootstrap .btn-primary.focus,.bootstrap .btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;-webkit-box-shadow:0 0 0 .2rem rgba(38,143,255,.5);box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.bootstrap .btn-primary.disabled,.bootstrap .btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-primary:not(:disabled):not(.disabled).active,.bootstrap .btn-primary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.bootstrap .btn-primary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(38,143,255,.5);box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.bootstrap .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.bootstrap .btn-secondary.focus,.bootstrap .btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;-webkit-box-shadow:0 0 0 .2rem rgba(130,138,145,.5);box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.bootstrap .btn-secondary.disabled,.bootstrap .btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-secondary:not(:disabled):not(.disabled).active,.bootstrap .btn-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.bootstrap .btn-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(130,138,145,.5);box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.bootstrap .btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.bootstrap .btn-success.focus,.bootstrap .btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.bootstrap .btn-success.disabled,.bootstrap .btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-success:not(:disabled):not(.disabled).active,.bootstrap .btn-success:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.bootstrap .btn-success:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(72,180,97,.5);box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.bootstrap .btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.bootstrap .btn-info.focus,.bootstrap .btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.bootstrap .btn-info.disabled,.bootstrap .btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-info:not(:disabled):not(.disabled).active,.bootstrap .btn-info:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.bootstrap .btn-info:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(58,176,195,.5);box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.bootstrap .btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.bootstrap .btn-warning.focus,.bootstrap .btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap .btn-warning.disabled,.bootstrap .btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-warning:not(:disabled):not(.disabled).active,.bootstrap .btn-warning:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.bootstrap .btn-warning:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(222,170,12,.5);box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.bootstrap .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.bootstrap .btn-danger.focus,.bootstrap .btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.bootstrap .btn-danger.disabled,.bootstrap .btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-danger:not(:disabled):not(.disabled).active,.bootstrap .btn-danger:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.bootstrap .btn-danger:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(225,83,97,.5);box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.bootstrap .btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.bootstrap .btn-light.focus,.bootstrap .btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap .btn-light.disabled,.bootstrap .btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-light:not(:disabled):not(.disabled).active,.bootstrap .btn-light:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.bootstrap .btn-light:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(216,217,219,.5);box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.bootstrap .btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.bootstrap .btn-dark.focus,.bootstrap .btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.bootstrap .btn-dark.disabled,.bootstrap .btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-dark:not(:disabled):not(.disabled).active,.bootstrap .btn-dark:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.bootstrap .btn-dark:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(82,88,93,.5);box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.bootstrap .btn-outline-primary{color:#007bff;border-color:#007bff}.bootstrap .btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-outline-primary.focus,.bootstrap .btn-outline-primary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap .btn-outline-primary.disabled,.bootstrap .btn-outline-primary:disabled{color:#007bff;background-color:transparent}.bootstrap .btn-outline-primary:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-primary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .btn-outline-primary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap .btn-outline-secondary{color:#6c757d;border-color:#6c757d}.bootstrap .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-outline-secondary.focus,.bootstrap .btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap .btn-outline-secondary.disabled,.bootstrap .btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap .btn-outline-success{color:#28a745;border-color:#28a745}.bootstrap .btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-outline-success.focus,.bootstrap .btn-outline-success:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap .btn-outline-success.disabled,.bootstrap .btn-outline-success:disabled{color:#28a745;background-color:transparent}.bootstrap .btn-outline-success:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-success:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.bootstrap .btn-outline-success:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap .btn-outline-info{color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-outline-info.focus,.bootstrap .btn-outline-info:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap .btn-outline-info.disabled,.bootstrap .btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.bootstrap .btn-outline-info:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-info:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.bootstrap .btn-outline-info:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap .btn-outline-warning{color:#ffc107;border-color:#ffc107}.bootstrap .btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-outline-warning.focus,.bootstrap .btn-outline-warning:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap .btn-outline-warning.disabled,.bootstrap .btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.bootstrap .btn-outline-warning:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-warning:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.bootstrap .btn-outline-warning:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap .btn-outline-danger{color:#dc3545;border-color:#dc3545}.bootstrap .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-outline-danger.focus,.bootstrap .btn-outline-danger:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap .btn-outline-danger.disabled,.bootstrap .btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.bootstrap .btn-outline-danger:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-danger:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.bootstrap .btn-outline-danger:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-outline-light.focus,.bootstrap .btn-outline-light:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap .btn-outline-light.disabled,.bootstrap .btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.bootstrap .btn-outline-light:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-light:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.bootstrap .btn-outline-light:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap .btn-outline-dark{color:#343a40;border-color:#343a40}.bootstrap .btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-outline-dark.focus,.bootstrap .btn-outline-dark:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap .btn-outline-dark.disabled,.bootstrap .btn-outline-dark:disabled{color:#343a40;background-color:transparent}.bootstrap .btn-outline-dark:not(:disabled):not(.disabled).active,.bootstrap .btn-outline-dark:not(:disabled):not(.disabled):active,.show>.bootstrap .btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.bootstrap .btn-outline-dark:not(:disabled):not(.disabled).active:focus,.bootstrap .btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.bootstrap .btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap .btn-link{font-weight:400;color:#007bff;text-decoration:none}.bootstrap .btn-link:hover{color:#0056b3;text-decoration:underline}.bootstrap .btn-link.focus,.bootstrap .btn-link:focus{text-decoration:underline;-webkit-box-shadow:none;box-shadow:none}.bootstrap .btn-link.disabled,.bootstrap .btn-link:disabled{color:#6c757d;pointer-events:none}.bootstrap .btn-group-lg>.btn,.bootstrap .btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap .btn-group-sm>.btn,.bootstrap .btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap .btn-block{display:block;width:100%}.bootstrap .btn-block+.btn-block{margin-top:.5rem}.bootstrap input[type=button].btn-block,.bootstrap input[type=reset].btn-block,.bootstrap input[type=submit].btn-block{width:100%}.bootstrap .fade{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.bootstrap .fade{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .fade:not(.show){opacity:0}.bootstrap .collapse:not(.show){display:none}.bootstrap .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.bootstrap .collapsing{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .dropdown,.bootstrap .dropleft,.bootstrap .dropright,.bootstrap .dropup{position:relative}.bootstrap .dropdown-toggle{white-space:nowrap}.bootstrap .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.bootstrap .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.bootstrap .dropdown-menu-left{right:auto;left:0}.bootstrap .dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.bootstrap .dropdown-menu-sm-left{right:auto;left:0}.bootstrap .dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.bootstrap .dropdown-menu-md-left{right:auto;left:0}.bootstrap .dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.bootstrap .dropdown-menu-lg-left{right:auto;left:0}.bootstrap .dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.bootstrap .dropdown-menu-xl-left{right:auto;left:0}.bootstrap .dropdown-menu-xl-right{right:0;left:auto}}.bootstrap .dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.bootstrap .dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.bootstrap .dropup .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.bootstrap .dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.bootstrap .dropright .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropright .dropdown-toggle::after{vertical-align:0}.bootstrap .dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.bootstrap .dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.bootstrap .dropleft .dropdown-toggle::after{display:none}.bootstrap .dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.bootstrap .dropleft .dropdown-toggle:empty::after{margin-left:0}.bootstrap .dropleft .dropdown-toggle::before{vertical-align:0}.bootstrap .dropdown-menu[x-placement^=bottom],.bootstrap .dropdown-menu[x-placement^=left],.bootstrap .dropdown-menu[x-placement^=right],.bootstrap .dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.bootstrap .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.bootstrap .dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.bootstrap .dropdown-item:focus,.bootstrap .dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.bootstrap .dropdown-item.active,.bootstrap .dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.bootstrap .dropdown-item.disabled,.bootstrap .dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.bootstrap .dropdown-menu.show{display:block}.bootstrap .dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.bootstrap .dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.bootstrap .btn-group,.bootstrap .btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.bootstrap .btn-group-vertical>.btn,.bootstrap .btn-group>.btn{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.bootstrap .btn-group-vertical>.btn:hover,.bootstrap .btn-group>.btn:hover{z-index:1}.bootstrap .btn-group-vertical>.btn.active,.bootstrap .btn-group-vertical>.btn:active,.bootstrap .btn-group-vertical>.btn:focus,.bootstrap .btn-group>.btn.active,.bootstrap .btn-group>.btn:active,.bootstrap .btn-group>.btn:focus{z-index:1}.bootstrap .btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .btn-toolbar .input-group{width:auto}.bootstrap .btn-group>.btn-group:not(:first-child),.bootstrap .btn-group>.btn:not(:first-child){margin-left:-1px}.bootstrap .btn-group>.btn-group:not(:last-child)>.btn,.bootstrap .btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .btn-group>.btn-group:not(:first-child)>.btn,.bootstrap .btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.bootstrap .dropdown-toggle-split::after,.dropright .bootstrap .dropdown-toggle-split::after,.dropup .bootstrap .dropdown-toggle-split::after{margin-left:0}.dropleft .bootstrap .dropdown-toggle-split::before{margin-right:0}.bootstrap .btn-group-sm>.btn+.dropdown-toggle-split,.bootstrap .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.bootstrap .btn-group-lg>.btn+.dropdown-toggle-split,.bootstrap .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.bootstrap .btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.bootstrap .btn-group-vertical>.btn,.bootstrap .btn-group-vertical>.btn-group{width:100%}.bootstrap .btn-group-vertical>.btn-group:not(:first-child),.bootstrap .btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.bootstrap .btn-group-vertical>.btn-group:not(:last-child)>.btn,.bootstrap .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap .btn-group-vertical>.btn-group:not(:first-child)>.btn,.bootstrap .btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.bootstrap .btn-group-toggle>.btn,.bootstrap .btn-group-toggle>.btn-group>.btn{margin-bottom:0}.bootstrap .btn-group-toggle>.btn input[type=checkbox],.bootstrap .btn-group-toggle>.btn input[type=radio],.bootstrap .btn-group-toggle>.btn-group>.btn input[type=checkbox],.bootstrap .btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.bootstrap .input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.bootstrap .input-group>.custom-file,.bootstrap .input-group>.custom-select,.bootstrap .input-group>.form-control,.bootstrap .input-group>.form-control-plaintext{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.bootstrap .input-group>.custom-file+.custom-file,.bootstrap .input-group>.custom-file+.custom-select,.bootstrap .input-group>.custom-file+.form-control,.bootstrap .input-group>.custom-select+.custom-file,.bootstrap .input-group>.custom-select+.custom-select,.bootstrap .input-group>.custom-select+.form-control,.bootstrap .input-group>.form-control+.custom-file,.bootstrap .input-group>.form-control+.custom-select,.bootstrap .input-group>.form-control+.form-control,.bootstrap .input-group>.form-control-plaintext+.custom-file,.bootstrap .input-group>.form-control-plaintext+.custom-select,.bootstrap .input-group>.form-control-plaintext+.form-control{margin-left:-1px}.bootstrap .input-group>.custom-file .custom-file-input:focus~.custom-file-label,.bootstrap .input-group>.custom-select:focus,.bootstrap .input-group>.form-control:focus{z-index:3}.bootstrap .input-group>.custom-file .custom-file-input:focus{z-index:4}.bootstrap .input-group>.custom-select:not(:last-child),.bootstrap .input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .input-group>.custom-select:not(:first-child),.bootstrap .input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .input-group>.custom-file{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap .input-group>.custom-file:not(:last-child) .custom-file-label,.bootstrap .input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .input-group-append,.bootstrap .input-group-prepend{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.bootstrap .input-group-append .btn,.bootstrap .input-group-prepend .btn{position:relative;z-index:2}.bootstrap .input-group-append .btn:focus,.bootstrap .input-group-prepend .btn:focus{z-index:3}.bootstrap .input-group-append .btn+.btn,.bootstrap .input-group-append .btn+.input-group-text,.bootstrap .input-group-append .input-group-text+.btn,.bootstrap .input-group-append .input-group-text+.input-group-text,.bootstrap .input-group-prepend .btn+.btn,.bootstrap .input-group-prepend .btn+.input-group-text,.bootstrap .input-group-prepend .input-group-text+.btn,.bootstrap .input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.bootstrap .input-group-prepend{margin-right:-1px}.bootstrap .input-group-append{margin-left:-1px}.bootstrap .input-group-text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.bootstrap .input-group-text input[type=checkbox],.bootstrap .input-group-text input[type=radio]{margin-top:0}.bootstrap .input-group-lg>.custom-select,.bootstrap .input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.bootstrap .input-group-lg>.custom-select,.bootstrap .input-group-lg>.form-control,.bootstrap .input-group-lg>.input-group-append>.btn,.bootstrap .input-group-lg>.input-group-append>.input-group-text,.bootstrap .input-group-lg>.input-group-prepend>.btn,.bootstrap .input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.bootstrap .input-group-sm>.custom-select,.bootstrap .input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.bootstrap .input-group-sm>.custom-select,.bootstrap .input-group-sm>.form-control,.bootstrap .input-group-sm>.input-group-append>.btn,.bootstrap .input-group-sm>.input-group-append>.input-group-text,.bootstrap .input-group-sm>.input-group-prepend>.btn,.bootstrap .input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.bootstrap .input-group-lg>.custom-select,.bootstrap .input-group-sm>.custom-select{padding-right:1.75rem}.bootstrap .input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.bootstrap .input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.bootstrap .input-group>.input-group-append:not(:last-child)>.btn,.bootstrap .input-group>.input-group-append:not(:last-child)>.input-group-text,.bootstrap .input-group>.input-group-prepend>.btn,.bootstrap .input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .input-group>.input-group-append>.btn,.bootstrap .input-group>.input-group-append>.input-group-text,.bootstrap .input-group>.input-group-prepend:first-child>.btn:not(:first-child),.bootstrap .input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.bootstrap .input-group>.input-group-prepend:not(:first-child)>.btn,.bootstrap .input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.bootstrap .custom-control-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.bootstrap .custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.bootstrap .custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.bootstrap .custom-control-input:focus~.custom-control-label::before{-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.bootstrap .custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.bootstrap .custom-control-input:disabled~.custom-control-label,.bootstrap .custom-control-input[disabled]~.custom-control-label{color:#6c757d}.bootstrap .custom-control-input:disabled~.custom-control-label::before,.bootstrap .custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.bootstrap .custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.bootstrap .custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.bootstrap .custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.bootstrap .custom-checkbox .custom-control-label::before{border-radius:.25rem}.bootstrap .custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.bootstrap .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.bootstrap .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.bootstrap .custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-radio .custom-control-label::before{border-radius:50%}.bootstrap .custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.bootstrap .custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-switch{padding-left:2.25rem}.bootstrap .custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.bootstrap .custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-o-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out,-o-transform .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .custom-switch .custom-control-label::after{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);-o-transform:translateX(.75rem);transform:translateX(.75rem)}.bootstrap .custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.bootstrap .custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap .custom-select:focus{border-color:#80bdff;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-select:focus::-ms-value{color:#495057;background-color:#fff}.bootstrap .custom-select[multiple],.bootstrap .custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.bootstrap .custom-select:disabled{color:#6c757d;background-color:#e9ecef}.bootstrap .custom-select::-ms-expand{display:none}.bootstrap .custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.bootstrap .custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.bootstrap .custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.bootstrap .custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.bootstrap .custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.bootstrap .custom-file-input:focus~.custom-file-label{border-color:#80bdff;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-file-input:disabled~.custom-file-label,.bootstrap .custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.bootstrap .custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.bootstrap .custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.bootstrap .custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.bootstrap .custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.bootstrap .custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap .custom-range:focus{outline:0}.bootstrap .custom-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .custom-range::-moz-focus-outer{border:0}.bootstrap .custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap .custom-range::-webkit-slider-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.bootstrap .custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap .custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap .custom-range::-moz-range-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.bootstrap .custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.bootstrap .custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.bootstrap .custom-range::-ms-thumb{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .custom-range::-ms-thumb:active{background-color:#b3d7ff}.bootstrap .custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.bootstrap .custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.bootstrap .custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.bootstrap .custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.bootstrap .custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.bootstrap .custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.bootstrap .custom-range:disabled::-moz-range-track{cursor:default}.bootstrap .custom-range:disabled::-ms-thumb{background-color:#adb5bd}.bootstrap .custom-control-label::before,.bootstrap .custom-file-label,.bootstrap .custom-select{-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .custom-control-label::before,.bootstrap .custom-file-label,.bootstrap .custom-select{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.bootstrap .nav-link{display:block;padding:.5rem 1rem}.bootstrap .nav-link:focus,.bootstrap .nav-link:hover{text-decoration:none}.bootstrap .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.bootstrap .nav-tabs{border-bottom:1px solid #dee2e6}.bootstrap .nav-tabs .nav-item{margin-bottom:-1px}.bootstrap .nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap .nav-tabs .nav-link:focus,.bootstrap .nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.bootstrap .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.bootstrap .nav-tabs .nav-item.show .nav-link,.bootstrap .nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.bootstrap .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.bootstrap .nav-pills .nav-link{border-radius:.25rem}.bootstrap .nav-pills .nav-link.active,.bootstrap .nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.bootstrap .nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.bootstrap .nav-justified .nav-item{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.bootstrap .tab-content>.tab-pane{display:none}.bootstrap .tab-content>.active{display:block}.bootstrap .navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.bootstrap .navbar .container,.bootstrap .navbar .container-fluid,.bootstrap .navbar .container-lg,.bootstrap .navbar .container-md,.bootstrap .navbar .container-sm,.bootstrap .navbar .container-xl{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap .navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.bootstrap .navbar-brand:focus,.bootstrap .navbar-brand:hover{text-decoration:none}.bootstrap .navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.bootstrap .navbar-nav .nav-link{padding-right:0;padding-left:0}.bootstrap .navbar-nav .dropdown-menu{position:static;float:none}.bootstrap .navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.bootstrap .navbar-collapse{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.bootstrap .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.bootstrap .navbar-toggler:focus,.bootstrap .navbar-toggler:hover{text-decoration:none}.bootstrap .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}@media (max-width:575.98px){.bootstrap .navbar-expand-sm>.container,.bootstrap .navbar-expand-sm>.container-fluid,.bootstrap .navbar-expand-sm>.container-lg,.bootstrap .navbar-expand-sm>.container-md,.bootstrap .navbar-expand-sm>.container-sm,.bootstrap .navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.bootstrap .navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-sm>.container,.bootstrap .navbar-expand-sm>.container-fluid,.bootstrap .navbar-expand-sm>.container-lg,.bootstrap .navbar-expand-sm>.container-md,.bootstrap .navbar-expand-sm>.container-sm,.bootstrap .navbar-expand-sm>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.bootstrap .navbar-expand-md>.container,.bootstrap .navbar-expand-md>.container-fluid,.bootstrap .navbar-expand-md>.container-lg,.bootstrap .navbar-expand-md>.container-md,.bootstrap .navbar-expand-md>.container-sm,.bootstrap .navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.bootstrap .navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-md>.container,.bootstrap .navbar-expand-md>.container-fluid,.bootstrap .navbar-expand-md>.container-lg,.bootstrap .navbar-expand-md>.container-md,.bootstrap .navbar-expand-md>.container-sm,.bootstrap .navbar-expand-md>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.bootstrap .navbar-expand-lg>.container,.bootstrap .navbar-expand-lg>.container-fluid,.bootstrap .navbar-expand-lg>.container-lg,.bootstrap .navbar-expand-lg>.container-md,.bootstrap .navbar-expand-lg>.container-sm,.bootstrap .navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.bootstrap .navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-lg>.container,.bootstrap .navbar-expand-lg>.container-fluid,.bootstrap .navbar-expand-lg>.container-lg,.bootstrap .navbar-expand-lg>.container-md,.bootstrap .navbar-expand-lg>.container-sm,.bootstrap .navbar-expand-lg>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.bootstrap .navbar-expand-xl>.container,.bootstrap .navbar-expand-xl>.container-fluid,.bootstrap .navbar-expand-xl>.container-lg,.bootstrap .navbar-expand-xl>.container-md,.bootstrap .navbar-expand-xl>.container-sm,.bootstrap .navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.bootstrap .navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand-xl>.container,.bootstrap .navbar-expand-xl>.container-fluid,.bootstrap .navbar-expand-xl>.container-lg,.bootstrap .navbar-expand-xl>.container-md,.bootstrap .navbar-expand-xl>.container-sm,.bootstrap .navbar-expand-xl>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand-xl .navbar-toggler{display:none}}.bootstrap .navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.bootstrap .navbar-expand>.container,.bootstrap .navbar-expand>.container-fluid,.bootstrap .navbar-expand>.container-lg,.bootstrap .navbar-expand>.container-md,.bootstrap .navbar-expand>.container-sm,.bootstrap .navbar-expand>.container-xl{padding-right:0;padding-left:0}.bootstrap .navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .navbar-expand .navbar-nav .dropdown-menu{position:absolute}.bootstrap .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.bootstrap .navbar-expand>.container,.bootstrap .navbar-expand>.container-fluid,.bootstrap .navbar-expand>.container-lg,.bootstrap .navbar-expand>.container-md,.bootstrap .navbar-expand>.container-sm,.bootstrap .navbar-expand>.container-xl{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bootstrap .navbar-expand .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto}.bootstrap .navbar-expand .navbar-toggler{display:none}.bootstrap .navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-brand:focus,.bootstrap .navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.bootstrap .navbar-light .navbar-nav .nav-link:focus,.bootstrap .navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.bootstrap .navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.bootstrap .navbar-light .navbar-nav .active>.nav-link,.bootstrap .navbar-light .navbar-nav .nav-link.active,.bootstrap .navbar-light .navbar-nav .nav-link.show,.bootstrap .navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.bootstrap .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap .navbar-light .navbar-text{color:rgba(0,0,0,.5)}.bootstrap .navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.bootstrap .navbar-light .navbar-text a:focus,.bootstrap .navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.bootstrap .navbar-dark .navbar-brand{color:#fff}.bootstrap .navbar-dark .navbar-brand:focus,.bootstrap .navbar-dark .navbar-brand:hover{color:#fff}.bootstrap .navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.bootstrap .navbar-dark .navbar-nav .nav-link:focus,.bootstrap .navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.bootstrap .navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.bootstrap .navbar-dark .navbar-nav .active>.nav-link,.bootstrap .navbar-dark .navbar-nav .nav-link.active,.bootstrap .navbar-dark .navbar-nav .nav-link.show,.bootstrap .navbar-dark .navbar-nav .show>.nav-link{color:#fff}.bootstrap .navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.bootstrap .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.bootstrap .navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.bootstrap .navbar-dark .navbar-text a{color:#fff}.bootstrap .navbar-dark .navbar-text a:focus,.bootstrap .navbar-dark .navbar-text a:hover{color:#fff}.bootstrap .card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;-webkit-background-clip:border-box;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.bootstrap .card>hr{margin-right:0;margin-left:0}.bootstrap .card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap .card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap .card-body{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.bootstrap .card-title{margin-bottom:.75rem}.bootstrap .card-subtitle{margin-top:-.375rem;margin-bottom:0}.bootstrap .card-text:last-child{margin-bottom:0}.bootstrap .card-link:hover{text-decoration:none}.bootstrap .card-link+.card-link{margin-left:1.25rem}.bootstrap .card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.bootstrap .card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.bootstrap .card-header+.list-group .list-group-item:first-child{border-top:0}.bootstrap .card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.bootstrap .card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.bootstrap .card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.bootstrap .card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.bootstrap .card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.bootstrap .card-img,.bootstrap .card-img-bottom,.bootstrap .card-img-top{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%}.bootstrap .card-img,.bootstrap .card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.bootstrap .card-img,.bootstrap .card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.bootstrap .card-deck .card{margin-bottom:15px}@media (min-width:576px){.bootstrap .card-deck{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.bootstrap .card-deck .card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.bootstrap .card-group>.card{margin-bottom:15px}@media (min-width:576px){.bootstrap .card-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.bootstrap .card-group>.card{-webkit-box-flex:1;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.bootstrap .card-group>.card+.card{margin-left:0;border-left:0}.bootstrap .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.bootstrap .card-group>.card:not(:last-child) .card-header,.bootstrap .card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.bootstrap .card-group>.card:not(:last-child) .card-footer,.bootstrap .card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.bootstrap .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.bootstrap .card-group>.card:not(:first-child) .card-header,.bootstrap .card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.bootstrap .card-group>.card:not(:first-child) .card-footer,.bootstrap .card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.bootstrap .card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.bootstrap .card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.bootstrap .card-columns .card{display:inline-block;width:100%}}.bootstrap .accordion>.card{overflow:hidden}.bootstrap .accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.bootstrap .accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.bootstrap .accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.bootstrap .breadcrumb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.bootstrap .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.bootstrap .breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.bootstrap .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.bootstrap .breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.bootstrap .breadcrumb-item.active{color:#6c757d}.bootstrap .pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.bootstrap .page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.bootstrap .page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.bootstrap .page-link:focus{z-index:3;outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.25);box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.bootstrap .page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.bootstrap .page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.bootstrap .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.bootstrap .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.bootstrap .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.bootstrap .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.bootstrap .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.bootstrap .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.bootstrap .badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .badge{-webkit-transition:none;-o-transition:none;transition:none}}a.bootstrap .badge:focus,a.bootstrap .badge:hover{text-decoration:none}.bootstrap .badge:empty{display:none}.bootstrap .btn .badge{position:relative;top:-1px}.bootstrap .badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.bootstrap .badge-primary{color:#fff;background-color:#007bff}a.bootstrap .badge-primary:focus,a.bootstrap .badge-primary:hover{color:#fff;background-color:#0062cc}a.bootstrap .badge-primary.focus,a.bootstrap .badge-primary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(0,123,255,.5);box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.bootstrap .badge-secondary{color:#fff;background-color:#6c757d}a.bootstrap .badge-secondary:focus,a.bootstrap .badge-secondary:hover{color:#fff;background-color:#545b62}a.bootstrap .badge-secondary.focus,a.bootstrap .badge-secondary:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(108,117,125,.5);box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.bootstrap .badge-success{color:#fff;background-color:#28a745}a.bootstrap .badge-success:focus,a.bootstrap .badge-success:hover{color:#fff;background-color:#1e7e34}a.bootstrap .badge-success.focus,a.bootstrap .badge-success:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(40,167,69,.5);box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.bootstrap .badge-info{color:#fff;background-color:#17a2b8}a.bootstrap .badge-info:focus,a.bootstrap .badge-info:hover{color:#fff;background-color:#117a8b}a.bootstrap .badge-info.focus,a.bootstrap .badge-info:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(23,162,184,.5);box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.bootstrap .badge-warning{color:#212529;background-color:#ffc107}a.bootstrap .badge-warning:focus,a.bootstrap .badge-warning:hover{color:#212529;background-color:#d39e00}a.bootstrap .badge-warning.focus,a.bootstrap .badge-warning:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(255,193,7,.5);box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.bootstrap .badge-danger{color:#fff;background-color:#dc3545}a.bootstrap .badge-danger:focus,a.bootstrap .badge-danger:hover{color:#fff;background-color:#bd2130}a.bootstrap .badge-danger.focus,a.bootstrap .badge-danger:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(220,53,69,.5);box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.bootstrap .badge-light{color:#212529;background-color:#f8f9fa}a.bootstrap .badge-light:focus,a.bootstrap .badge-light:hover{color:#212529;background-color:#dae0e5}a.bootstrap .badge-light.focus,a.bootstrap .badge-light:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(248,249,250,.5);box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.bootstrap .badge-dark{color:#fff;background-color:#343a40}a.bootstrap .badge-dark:focus,a.bootstrap .badge-dark:hover{color:#fff;background-color:#1d2124}a.bootstrap .badge-dark.focus,a.bootstrap .badge-dark:focus{outline:0;-webkit-box-shadow:0 0 0 .2rem rgba(52,58,64,.5);box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.bootstrap .jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.bootstrap .jumbotron{padding:4rem 2rem}}.bootstrap .jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.bootstrap .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.bootstrap .alert-heading{color:inherit}.bootstrap .alert-link{font-weight:700}.bootstrap .alert-dismissible{padding-right:4rem}.bootstrap .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.bootstrap .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.bootstrap .alert-primary hr{border-top-color:#9fcdff}.bootstrap .alert-primary .alert-link{color:#002752}.bootstrap .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.bootstrap .alert-secondary hr{border-top-color:#c8cbcf}.bootstrap .alert-secondary .alert-link{color:#202326}.bootstrap .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.bootstrap .alert-success hr{border-top-color:#b1dfbb}.bootstrap .alert-success .alert-link{color:#0b2e13}.bootstrap .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.bootstrap .alert-info hr{border-top-color:#abdde5}.bootstrap .alert-info .alert-link{color:#062c33}.bootstrap .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.bootstrap .alert-warning hr{border-top-color:#ffe8a1}.bootstrap .alert-warning .alert-link{color:#533f03}.bootstrap .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.bootstrap .alert-danger hr{border-top-color:#f1b0b7}.bootstrap .alert-danger .alert-link{color:#491217}.bootstrap .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.bootstrap .alert-light hr{border-top-color:#ececf6}.bootstrap .alert-light .alert-link{color:#686868}.bootstrap .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.bootstrap .alert-dark hr{border-top-color:#b9bbbe}.bootstrap .alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.bootstrap .progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.bootstrap .progress-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap .progress-bar{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.bootstrap .progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.bootstrap .progress-bar-animated{-webkit-animation:none;-o-animation:none;animation:none}}.bootstrap .media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.bootstrap .media-body{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.bootstrap .list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.bootstrap .list-group-item-action{width:100%;color:#495057;text-align:inherit}.bootstrap .list-group-item-action:focus,.bootstrap .list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.bootstrap .list-group-item-action:active{color:#212529;background-color:#e9ecef}.bootstrap .list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.bootstrap .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bootstrap .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.bootstrap .list-group-item.disabled,.bootstrap .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.bootstrap .list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.bootstrap .list-group-item+.bootstrap .list-group-item{border-top-width:0}.bootstrap .list-group-item+.bootstrap .list-group-item.active{margin-top:-1px;border-top-width:1px}.bootstrap .list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.bootstrap .list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-sm .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.bootstrap .list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-md .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.bootstrap .list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-lg .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.bootstrap .list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.bootstrap .list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.bootstrap .list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.bootstrap .list-group-horizontal-xl .list-group-item.active{margin-top:0}.bootstrap .list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.bootstrap .list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.bootstrap .list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.bootstrap .list-group-flush .list-group-item:first-child{border-top-width:0}.bootstrap .list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.bootstrap .list-group-item-primary{color:#004085;background-color:#b8daff}.bootstrap .list-group-item-primary.list-group-item-action:focus,.bootstrap .list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.bootstrap .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.bootstrap .list-group-item-secondary{color:#383d41;background-color:#d6d8db}.bootstrap .list-group-item-secondary.list-group-item-action:focus,.bootstrap .list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.bootstrap .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.bootstrap .list-group-item-success{color:#155724;background-color:#c3e6cb}.bootstrap .list-group-item-success.list-group-item-action:focus,.bootstrap .list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.bootstrap .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.bootstrap .list-group-item-info{color:#0c5460;background-color:#bee5eb}.bootstrap .list-group-item-info.list-group-item-action:focus,.bootstrap .list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.bootstrap .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.bootstrap .list-group-item-warning{color:#856404;background-color:#ffeeba}.bootstrap .list-group-item-warning.list-group-item-action:focus,.bootstrap .list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.bootstrap .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.bootstrap .list-group-item-danger{color:#721c24;background-color:#f5c6cb}.bootstrap .list-group-item-danger.list-group-item-action:focus,.bootstrap .list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.bootstrap .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.bootstrap .list-group-item-light{color:#818182;background-color:#fdfdfe}.bootstrap .list-group-item-light.list-group-item-action:focus,.bootstrap .list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.bootstrap .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.bootstrap .list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.bootstrap .list-group-item-dark.list-group-item-action:focus,.bootstrap .list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.bootstrap .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.bootstrap .close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.bootstrap .close:hover{color:#000;text-decoration:none}.bootstrap .close:not(:disabled):not(.disabled):focus,.bootstrap .close:not(:disabled):not(.disabled):hover{opacity:.75}.bootstrap button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.bootstrap a.close.disabled{pointer-events:none}.bootstrap .toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);-webkit-box-shadow:0 .25rem .75rem rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.bootstrap .toast:not(:last-child){margin-bottom:.75rem}.bootstrap .toast.showing{opacity:1}.bootstrap .toast.show{display:block;opacity:1}.bootstrap .toast.hide{display:none}.bootstrap .toast-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);-webkit-background-clip:padding-box;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.bootstrap .toast-body{padding:.75rem}.bootstrap .modal-open{overflow:hidden}.bootstrap .modal-open .modal{overflow-x:hidden;overflow-y:auto}.bootstrap .modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.bootstrap .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .bootstrap .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-50px);-o-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .bootstrap .modal-dialog{-webkit-transition:none;-o-transition:none;transition:none}}.modal.show .bootstrap .modal-dialog{-webkit-transform:none;-o-transform:none;transform:none}.modal.modal-static .bootstrap .modal-dialog{-webkit-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.bootstrap .modal-dialog-scrollable{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.bootstrap .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.bootstrap .modal-dialog-scrollable .modal-footer,.bootstrap .modal-dialog-scrollable .modal-header{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.bootstrap .modal-dialog-scrollable .modal-body{overflow-y:auto}.bootstrap .modal-dialog-centered{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.bootstrap .modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.bootstrap .modal-dialog-centered.modal-dialog-scrollable{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%}.bootstrap .modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.bootstrap .modal-dialog-centered.modal-dialog-scrollable::before{content:none}.bootstrap .modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.bootstrap .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.bootstrap .modal-backdrop.fade{opacity:0}.bootstrap .modal-backdrop.show{opacity:.5}.bootstrap .modal-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap .modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.bootstrap .modal-title{margin-bottom:0;line-height:1.5}.bootstrap .modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.bootstrap .modal-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.bootstrap .modal-footer>*{margin:.25rem}.bootstrap .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.bootstrap .modal-dialog{max-width:500px;margin:1.75rem auto}.bootstrap .modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.bootstrap .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.bootstrap .modal-dialog-centered{min-height:calc(100% - 3.5rem)}.bootstrap .modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.bootstrap .modal-sm{max-width:300px}}@media (min-width:992px){.bootstrap .modal-lg,.bootstrap .modal-xl{max-width:800px}}@media (min-width:1200px){.bootstrap .modal-xl{max-width:1140px}}.bootstrap .tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.bootstrap .tooltip.show{opacity:.9}.bootstrap .tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.bootstrap .tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bootstrap .bs-tooltip-auto[x-placement^=top],.bootstrap .bs-tooltip-top{padding:.4rem 0}.bootstrap .bs-tooltip-auto[x-placement^=top] .arrow,.bootstrap .bs-tooltip-top .arrow{bottom:0}.bootstrap .bs-tooltip-auto[x-placement^=top] .arrow::before,.bootstrap .bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bootstrap .bs-tooltip-auto[x-placement^=right],.bootstrap .bs-tooltip-right{padding:0 .4rem}.bootstrap .bs-tooltip-auto[x-placement^=right] .arrow,.bootstrap .bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bootstrap .bs-tooltip-auto[x-placement^=right] .arrow::before,.bootstrap .bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bootstrap .bs-tooltip-auto[x-placement^=bottom],.bootstrap .bs-tooltip-bottom{padding:.4rem 0}.bootstrap .bs-tooltip-auto[x-placement^=bottom] .arrow,.bootstrap .bs-tooltip-bottom .arrow{top:0}.bootstrap .bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bootstrap .bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bootstrap .bs-tooltip-auto[x-placement^=left],.bootstrap .bs-tooltip-left{padding:0 .4rem}.bootstrap .bs-tooltip-auto[x-placement^=left] .arrow,.bootstrap .bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bootstrap .bs-tooltip-auto[x-placement^=left] .arrow::before,.bootstrap .bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.bootstrap .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.bootstrap .popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.bootstrap .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.bootstrap .popover .arrow::after,.bootstrap .popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bootstrap .bs-popover-auto[x-placement^=top],.bootstrap .bs-popover-top{margin-bottom:.5rem}.bootstrap .bs-popover-auto[x-placement^=top]>.arrow,.bootstrap .bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bootstrap .bs-popover-auto[x-placement^=top]>.arrow::before,.bootstrap .bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=top]>.arrow::after,.bootstrap .bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bootstrap .bs-popover-auto[x-placement^=right],.bootstrap .bs-popover-right{margin-left:.5rem}.bootstrap .bs-popover-auto[x-placement^=right]>.arrow,.bootstrap .bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap .bs-popover-auto[x-placement^=right]>.arrow::before,.bootstrap .bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=right]>.arrow::after,.bootstrap .bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bootstrap .bs-popover-auto[x-placement^=bottom],.bootstrap .bs-popover-bottom{margin-top:.5rem}.bootstrap .bs-popover-auto[x-placement^=bottom]>.arrow,.bootstrap .bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bootstrap .bs-popover-auto[x-placement^=bottom]>.arrow::before,.bootstrap .bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=bottom]>.arrow::after,.bootstrap .bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bootstrap .bs-popover-auto[x-placement^=bottom] .popover-header::before,.bootstrap .bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bootstrap .bs-popover-auto[x-placement^=left],.bootstrap .bs-popover-left{margin-right:.5rem}.bootstrap .bs-popover-auto[x-placement^=left]>.arrow,.bootstrap .bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bootstrap .bs-popover-auto[x-placement^=left]>.arrow::before,.bootstrap .bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bootstrap .bs-popover-auto[x-placement^=left]>.arrow::after,.bootstrap .bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.bootstrap .popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.bootstrap .popover-header:empty{display:none}.bootstrap .popover-body{padding:.5rem .75rem;color:#212529}.bootstrap .carousel{position:relative}.bootstrap .carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.bootstrap .carousel-inner{position:relative;width:100%;overflow:hidden}.bootstrap .carousel-inner::after{display:block;clear:both;content:""}.bootstrap .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-item{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-item-next,.bootstrap .carousel-item-prev,.bootstrap .carousel-item.active{display:block}.bootstrap .active.carousel-item-right,.bootstrap .carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);-o-transform:translateX(100%);transform:translateX(100%)}.bootstrap .active.carousel-item-left,.bootstrap .carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);-o-transform:translateX(-100%);transform:translateX(-100%)}.bootstrap .carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity;-webkit-transform:none;-o-transform:none;transform:none}.bootstrap .carousel-fade .carousel-item-next.carousel-item-left,.bootstrap .carousel-fade .carousel-item-prev.carousel-item-right,.bootstrap .carousel-fade .carousel-item.active{z-index:1;opacity:1}.bootstrap .carousel-fade .active.carousel-item-left,.bootstrap .carousel-fade .active.carousel-item-right{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;-o-transition:opacity 0s .6s;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-fade .active.carousel-item-left,.bootstrap .carousel-fade .active.carousel-item-right{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-control-next,.bootstrap .carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;-webkit-transition:opacity .15s ease;-o-transition:opacity .15s ease;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-control-next,.bootstrap .carousel-control-prev{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-control-next:focus,.bootstrap .carousel-control-next:hover,.bootstrap .carousel-control-prev:focus,.bootstrap .carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.bootstrap .carousel-control-prev{left:0}.bootstrap .carousel-control-next{right:0}.bootstrap .carousel-control-next-icon,.bootstrap .carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.bootstrap .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.bootstrap .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.bootstrap .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.bootstrap .carousel-indicators li{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s ease;-o-transition:opacity .6s ease;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.bootstrap .carousel-indicators li{-webkit-transition:none;-o-transition:none;transition:none}}.bootstrap .carousel-indicators .active{opacity:1}.bootstrap .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes spinner-border{to{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.bootstrap .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;-o-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.bootstrap .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@-o-keyframes spinner-grow{0%{-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);-o-transform:scale(0);transform:scale(0)}50%{opacity:1}}.bootstrap .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;-o-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.bootstrap .spinner-grow-sm{width:1rem;height:1rem}.bootstrap .align-baseline{vertical-align:baseline!important}.bootstrap .align-top{vertical-align:top!important}.bootstrap .align-middle{vertical-align:middle!important}.bootstrap .align-bottom{vertical-align:bottom!important}.bootstrap .align-text-bottom{vertical-align:text-bottom!important}.bootstrap .align-text-top{vertical-align:text-top!important}.bootstrap .bg-primary{background-color:#007bff!important}.bootstrap a.bg-primary:focus,.bootstrap a.bg-primary:hover,.bootstrap button.bg-primary:focus,.bootstrap button.bg-primary:hover{background-color:#0062cc!important}.bootstrap .bg-secondary{background-color:#6c757d!important}.bootstrap a.bg-secondary:focus,.bootstrap a.bg-secondary:hover,.bootstrap button.bg-secondary:focus,.bootstrap button.bg-secondary:hover{background-color:#545b62!important}.bootstrap .bg-success{background-color:#28a745!important}.bootstrap a.bg-success:focus,.bootstrap a.bg-success:hover,.bootstrap button.bg-success:focus,.bootstrap button.bg-success:hover{background-color:#1e7e34!important}.bootstrap .bg-info{background-color:#17a2b8!important}.bootstrap a.bg-info:focus,.bootstrap a.bg-info:hover,.bootstrap button.bg-info:focus,.bootstrap button.bg-info:hover{background-color:#117a8b!important}.bootstrap .bg-warning{background-color:#ffc107!important}.bootstrap a.bg-warning:focus,.bootstrap a.bg-warning:hover,.bootstrap button.bg-warning:focus,.bootstrap button.bg-warning:hover{background-color:#d39e00!important}.bootstrap .bg-danger{background-color:#dc3545!important}.bootstrap a.bg-danger:focus,.bootstrap a.bg-danger:hover,.bootstrap button.bg-danger:focus,.bootstrap button.bg-danger:hover{background-color:#bd2130!important}.bootstrap .bg-light{background-color:#f8f9fa!important}.bootstrap a.bg-light:focus,.bootstrap a.bg-light:hover,.bootstrap button.bg-light:focus,.bootstrap button.bg-light:hover{background-color:#dae0e5!important}.bootstrap .bg-dark{background-color:#343a40!important}.bootstrap a.bg-dark:focus,.bootstrap a.bg-dark:hover,.bootstrap button.bg-dark:focus,.bootstrap button.bg-dark:hover{background-color:#1d2124!important}.bootstrap .bg-white{background-color:#fff!important}.bootstrap .bg-transparent{background-color:transparent!important}.bootstrap .border{border:1px solid #dee2e6!important}.bootstrap .border-top{border-top:1px solid #dee2e6!important}.bootstrap .border-right{border-right:1px solid #dee2e6!important}.bootstrap .border-bottom{border-bottom:1px solid #dee2e6!important}.bootstrap .border-left{border-left:1px solid #dee2e6!important}.bootstrap .border-0{border:0!important}.bootstrap .border-top-0{border-top:0!important}.bootstrap .border-right-0{border-right:0!important}.bootstrap .border-bottom-0{border-bottom:0!important}.bootstrap .border-left-0{border-left:0!important}.bootstrap .border-primary{border-color:#007bff!important}.bootstrap .border-secondary{border-color:#6c757d!important}.bootstrap .border-success{border-color:#28a745!important}.bootstrap .border-info{border-color:#17a2b8!important}.bootstrap .border-warning{border-color:#ffc107!important}.bootstrap .border-danger{border-color:#dc3545!important}.bootstrap .border-light{border-color:#f8f9fa!important}.bootstrap .border-dark{border-color:#343a40!important}.bootstrap .border-white{border-color:#fff!important}.bootstrap .rounded-sm{border-radius:.2rem!important}.bootstrap .rounded{border-radius:.25rem!important}.bootstrap .rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.bootstrap .rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.bootstrap .rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap .rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.bootstrap .rounded-lg{border-radius:.3rem!important}.bootstrap .rounded-circle{border-radius:50%!important}.bootstrap .rounded-pill{border-radius:50rem!important}.bootstrap .rounded-0{border-radius:0!important}.bootstrap .clearfix::after{display:block;clear:both;content:""}.bootstrap .d-none{display:none!important}.bootstrap .d-inline{display:inline!important}.bootstrap .d-inline-block{display:inline-block!important}.bootstrap .d-block{display:block!important}.bootstrap .d-table{display:table!important}.bootstrap .d-table-row{display:table-row!important}.bootstrap .d-table-cell{display:table-cell!important}.bootstrap .d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.bootstrap .d-sm-none{display:none!important}.bootstrap .d-sm-inline{display:inline!important}.bootstrap .d-sm-inline-block{display:inline-block!important}.bootstrap .d-sm-block{display:block!important}.bootstrap .d-sm-table{display:table!important}.bootstrap .d-sm-table-row{display:table-row!important}.bootstrap .d-sm-table-cell{display:table-cell!important}.bootstrap .d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.bootstrap .d-md-none{display:none!important}.bootstrap .d-md-inline{display:inline!important}.bootstrap .d-md-inline-block{display:inline-block!important}.bootstrap .d-md-block{display:block!important}.bootstrap .d-md-table{display:table!important}.bootstrap .d-md-table-row{display:table-row!important}.bootstrap .d-md-table-cell{display:table-cell!important}.bootstrap .d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.bootstrap .d-lg-none{display:none!important}.bootstrap .d-lg-inline{display:inline!important}.bootstrap .d-lg-inline-block{display:inline-block!important}.bootstrap .d-lg-block{display:block!important}.bootstrap .d-lg-table{display:table!important}.bootstrap .d-lg-table-row{display:table-row!important}.bootstrap .d-lg-table-cell{display:table-cell!important}.bootstrap .d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.bootstrap .d-xl-none{display:none!important}.bootstrap .d-xl-inline{display:inline!important}.bootstrap .d-xl-inline-block{display:inline-block!important}.bootstrap .d-xl-block{display:block!important}.bootstrap .d-xl-table{display:table!important}.bootstrap .d-xl-table-row{display:table-row!important}.bootstrap .d-xl-table-cell{display:table-cell!important}.bootstrap .d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.bootstrap .d-print-none{display:none!important}.bootstrap .d-print-inline{display:inline!important}.bootstrap .d-print-inline-block{display:inline-block!important}.bootstrap .d-print-block{display:block!important}.bootstrap .d-print-table{display:table!important}.bootstrap .d-print-table-row{display:table-row!important}.bootstrap .d-print-table-cell{display:table-cell!important}.bootstrap .d-print-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.bootstrap .d-print-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.bootstrap .embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.bootstrap .embed-responsive::before{display:block;content:""}.bootstrap .embed-responsive .embed-responsive-item,.bootstrap .embed-responsive embed,.bootstrap .embed-responsive iframe,.bootstrap .embed-responsive object,.bootstrap .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.bootstrap .embed-responsive-21by9::before{padding-top:42.85714%}.bootstrap .embed-responsive-16by9::before{padding-top:56.25%}.bootstrap .embed-responsive-4by3::before{padding-top:75%}.bootstrap .embed-responsive-1by1::before{padding-top:100%}.bootstrap .flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.bootstrap .flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-sm-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-sm-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-sm-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-sm-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-sm-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.bootstrap .flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-md-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-md-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-md-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-md-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-md-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.bootstrap .flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-lg-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-lg-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-lg-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-lg-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-lg-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.bootstrap .flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.bootstrap .flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.bootstrap .flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.bootstrap .flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.bootstrap .flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.bootstrap .flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.bootstrap .flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.bootstrap .flex-xl-fill{-webkit-box-flex:1!important;-webkit-flex:1 1 auto!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.bootstrap .flex-xl-grow-0{-webkit-box-flex:0!important;-webkit-flex-grow:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.bootstrap .flex-xl-grow-1{-webkit-box-flex:1!important;-webkit-flex-grow:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.bootstrap .flex-xl-shrink-0{-webkit-flex-shrink:0!important;-ms-flex-negative:0!important;flex-shrink:0!important}.bootstrap .flex-xl-shrink-1{-webkit-flex-shrink:1!important;-ms-flex-negative:1!important;flex-shrink:1!important}.bootstrap .justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.bootstrap .justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.bootstrap .justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.bootstrap .justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.bootstrap .justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.bootstrap .align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.bootstrap .align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.bootstrap .align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.bootstrap .align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.bootstrap .align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.bootstrap .align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.bootstrap .align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.bootstrap .align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.bootstrap .align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.bootstrap .align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.bootstrap .align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.bootstrap .align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;align-self:auto!important}.bootstrap .align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.bootstrap .align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.bootstrap .align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;align-self:center!important}.bootstrap .align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.bootstrap .align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;align-self:stretch!important}}.bootstrap .float-left{float:left!important}.bootstrap .float-right{float:right!important}.bootstrap .float-none{float:none!important}@media (min-width:576px){.bootstrap .float-sm-left{float:left!important}.bootstrap .float-sm-right{float:right!important}.bootstrap .float-sm-none{float:none!important}}@media (min-width:768px){.bootstrap .float-md-left{float:left!important}.bootstrap .float-md-right{float:right!important}.bootstrap .float-md-none{float:none!important}}@media (min-width:992px){.bootstrap .float-lg-left{float:left!important}.bootstrap .float-lg-right{float:right!important}.bootstrap .float-lg-none{float:none!important}}@media (min-width:1200px){.bootstrap .float-xl-left{float:left!important}.bootstrap .float-xl-right{float:right!important}.bootstrap .float-xl-none{float:none!important}}.bootstrap .overflow-auto{overflow:auto!important}.bootstrap .overflow-hidden{overflow:hidden!important}.bootstrap .position-static{position:static!important}.bootstrap .position-relative{position:relative!important}.bootstrap .position-absolute{position:absolute!important}.bootstrap .position-fixed{position:fixed!important}.bootstrap .position-sticky{position:-webkit-sticky!important;position:sticky!important}.bootstrap .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.bootstrap .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.bootstrap .sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.bootstrap .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.bootstrap .sr-only-focusable:active,.bootstrap .sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.bootstrap .shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.bootstrap .shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.bootstrap .shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.bootstrap .shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.bootstrap .w-25{width:25%!important}.bootstrap .w-50{width:50%!important}.bootstrap .w-75{width:75%!important}.bootstrap .w-100{width:100%!important}.bootstrap .w-auto{width:auto!important}.bootstrap .h-25{height:25%!important}.bootstrap .h-50{height:50%!important}.bootstrap .h-75{height:75%!important}.bootstrap .h-100{height:100%!important}.bootstrap .h-auto{height:auto!important}.bootstrap .mw-100{max-width:100%!important}.bootstrap .mh-100{max-height:100%!important}.bootstrap .min-vw-100{min-width:100vw!important}.bootstrap .min-vh-100{min-height:100vh!important}.bootstrap .vw-100{width:100vw!important}.bootstrap .vh-100{height:100vh!important}.bootstrap .stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.bootstrap .m-0{margin:0!important}.bootstrap .mt-0,.bootstrap .my-0{margin-top:0!important}.bootstrap .mr-0,.bootstrap .mx-0{margin-right:0!important}.bootstrap .mb-0,.bootstrap .my-0{margin-bottom:0!important}.bootstrap .ml-0,.bootstrap .mx-0{margin-left:0!important}.bootstrap .m-1{margin:.25rem!important}.bootstrap .mt-1,.bootstrap .my-1{margin-top:.25rem!important}.bootstrap .mr-1,.bootstrap .mx-1{margin-right:.25rem!important}.bootstrap .mb-1,.bootstrap .my-1{margin-bottom:.25rem!important}.bootstrap .ml-1,.bootstrap .mx-1{margin-left:.25rem!important}.bootstrap .m-2{margin:.5rem!important}.bootstrap .mt-2,.bootstrap .my-2{margin-top:.5rem!important}.bootstrap .mr-2,.bootstrap .mx-2{margin-right:.5rem!important}.bootstrap .mb-2,.bootstrap .my-2{margin-bottom:.5rem!important}.bootstrap .ml-2,.bootstrap .mx-2{margin-left:.5rem!important}.bootstrap .m-3{margin:1rem!important}.bootstrap .mt-3,.bootstrap .my-3{margin-top:1rem!important}.bootstrap .mr-3,.bootstrap .mx-3{margin-right:1rem!important}.bootstrap .mb-3,.bootstrap .my-3{margin-bottom:1rem!important}.bootstrap .ml-3,.bootstrap .mx-3{margin-left:1rem!important}.bootstrap .m-4{margin:1.5rem!important}.bootstrap .mt-4,.bootstrap .my-4{margin-top:1.5rem!important}.bootstrap .mr-4,.bootstrap .mx-4{margin-right:1.5rem!important}.bootstrap .mb-4,.bootstrap .my-4{margin-bottom:1.5rem!important}.bootstrap .ml-4,.bootstrap .mx-4{margin-left:1.5rem!important}.bootstrap .m-5{margin:3rem!important}.bootstrap .mt-5,.bootstrap .my-5{margin-top:3rem!important}.bootstrap .mr-5,.bootstrap .mx-5{margin-right:3rem!important}.bootstrap .mb-5,.bootstrap .my-5{margin-bottom:3rem!important}.bootstrap .ml-5,.bootstrap .mx-5{margin-left:3rem!important}.bootstrap .p-0{padding:0!important}.bootstrap .pt-0,.bootstrap .py-0{padding-top:0!important}.bootstrap .pr-0,.bootstrap .px-0{padding-right:0!important}.bootstrap .pb-0,.bootstrap .py-0{padding-bottom:0!important}.bootstrap .pl-0,.bootstrap .px-0{padding-left:0!important}.bootstrap .p-1{padding:.25rem!important}.bootstrap .pt-1,.bootstrap .py-1{padding-top:.25rem!important}.bootstrap .pr-1,.bootstrap .px-1{padding-right:.25rem!important}.bootstrap .pb-1,.bootstrap .py-1{padding-bottom:.25rem!important}.bootstrap .pl-1,.bootstrap .px-1{padding-left:.25rem!important}.bootstrap .p-2{padding:.5rem!important}.bootstrap .pt-2,.bootstrap .py-2{padding-top:.5rem!important}.bootstrap .pr-2,.bootstrap .px-2{padding-right:.5rem!important}.bootstrap .pb-2,.bootstrap .py-2{padding-bottom:.5rem!important}.bootstrap .pl-2,.bootstrap .px-2{padding-left:.5rem!important}.bootstrap .p-3{padding:1rem!important}.bootstrap .pt-3,.bootstrap .py-3{padding-top:1rem!important}.bootstrap .pr-3,.bootstrap .px-3{padding-right:1rem!important}.bootstrap .pb-3,.bootstrap .py-3{padding-bottom:1rem!important}.bootstrap .pl-3,.bootstrap .px-3{padding-left:1rem!important}.bootstrap .p-4{padding:1.5rem!important}.bootstrap .pt-4,.bootstrap .py-4{padding-top:1.5rem!important}.bootstrap .pr-4,.bootstrap .px-4{padding-right:1.5rem!important}.bootstrap .pb-4,.bootstrap .py-4{padding-bottom:1.5rem!important}.bootstrap .pl-4,.bootstrap .px-4{padding-left:1.5rem!important}.bootstrap .p-5{padding:3rem!important}.bootstrap .pt-5,.bootstrap .py-5{padding-top:3rem!important}.bootstrap .pr-5,.bootstrap .px-5{padding-right:3rem!important}.bootstrap .pb-5,.bootstrap .py-5{padding-bottom:3rem!important}.bootstrap .pl-5,.bootstrap .px-5{padding-left:3rem!important}.bootstrap .m-n1{margin:-.25rem!important}.bootstrap .mt-n1,.bootstrap .my-n1{margin-top:-.25rem!important}.bootstrap .mr-n1,.bootstrap .mx-n1{margin-right:-.25rem!important}.bootstrap .mb-n1,.bootstrap .my-n1{margin-bottom:-.25rem!important}.bootstrap .ml-n1,.bootstrap .mx-n1{margin-left:-.25rem!important}.bootstrap .m-n2{margin:-.5rem!important}.bootstrap .mt-n2,.bootstrap .my-n2{margin-top:-.5rem!important}.bootstrap .mr-n2,.bootstrap .mx-n2{margin-right:-.5rem!important}.bootstrap .mb-n2,.bootstrap .my-n2{margin-bottom:-.5rem!important}.bootstrap .ml-n2,.bootstrap .mx-n2{margin-left:-.5rem!important}.bootstrap .m-n3{margin:-1rem!important}.bootstrap .mt-n3,.bootstrap .my-n3{margin-top:-1rem!important}.bootstrap .mr-n3,.bootstrap .mx-n3{margin-right:-1rem!important}.bootstrap .mb-n3,.bootstrap .my-n3{margin-bottom:-1rem!important}.bootstrap .ml-n3,.bootstrap .mx-n3{margin-left:-1rem!important}.bootstrap .m-n4{margin:-1.5rem!important}.bootstrap .mt-n4,.bootstrap .my-n4{margin-top:-1.5rem!important}.bootstrap .mr-n4,.bootstrap .mx-n4{margin-right:-1.5rem!important}.bootstrap .mb-n4,.bootstrap .my-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-n4,.bootstrap .mx-n4{margin-left:-1.5rem!important}.bootstrap .m-n5{margin:-3rem!important}.bootstrap .mt-n5,.bootstrap .my-n5{margin-top:-3rem!important}.bootstrap .mr-n5,.bootstrap .mx-n5{margin-right:-3rem!important}.bootstrap .mb-n5,.bootstrap .my-n5{margin-bottom:-3rem!important}.bootstrap .ml-n5,.bootstrap .mx-n5{margin-left:-3rem!important}.bootstrap .m-auto{margin:auto!important}.bootstrap .mt-auto,.bootstrap .my-auto{margin-top:auto!important}.bootstrap .mr-auto,.bootstrap .mx-auto{margin-right:auto!important}.bootstrap .mb-auto,.bootstrap .my-auto{margin-bottom:auto!important}.bootstrap .ml-auto,.bootstrap .mx-auto{margin-left:auto!important}@media (min-width:576px){.bootstrap .m-sm-0{margin:0!important}.bootstrap .mt-sm-0,.bootstrap .my-sm-0{margin-top:0!important}.bootstrap .mr-sm-0,.bootstrap .mx-sm-0{margin-right:0!important}.bootstrap .mb-sm-0,.bootstrap .my-sm-0{margin-bottom:0!important}.bootstrap .ml-sm-0,.bootstrap .mx-sm-0{margin-left:0!important}.bootstrap .m-sm-1{margin:.25rem!important}.bootstrap .mt-sm-1,.bootstrap .my-sm-1{margin-top:.25rem!important}.bootstrap .mr-sm-1,.bootstrap .mx-sm-1{margin-right:.25rem!important}.bootstrap .mb-sm-1,.bootstrap .my-sm-1{margin-bottom:.25rem!important}.bootstrap .ml-sm-1,.bootstrap .mx-sm-1{margin-left:.25rem!important}.bootstrap .m-sm-2{margin:.5rem!important}.bootstrap .mt-sm-2,.bootstrap .my-sm-2{margin-top:.5rem!important}.bootstrap .mr-sm-2,.bootstrap .mx-sm-2{margin-right:.5rem!important}.bootstrap .mb-sm-2,.bootstrap .my-sm-2{margin-bottom:.5rem!important}.bootstrap .ml-sm-2,.bootstrap .mx-sm-2{margin-left:.5rem!important}.bootstrap .m-sm-3{margin:1rem!important}.bootstrap .mt-sm-3,.bootstrap .my-sm-3{margin-top:1rem!important}.bootstrap .mr-sm-3,.bootstrap .mx-sm-3{margin-right:1rem!important}.bootstrap .mb-sm-3,.bootstrap .my-sm-3{margin-bottom:1rem!important}.bootstrap .ml-sm-3,.bootstrap .mx-sm-3{margin-left:1rem!important}.bootstrap .m-sm-4{margin:1.5rem!important}.bootstrap .mt-sm-4,.bootstrap .my-sm-4{margin-top:1.5rem!important}.bootstrap .mr-sm-4,.bootstrap .mx-sm-4{margin-right:1.5rem!important}.bootstrap .mb-sm-4,.bootstrap .my-sm-4{margin-bottom:1.5rem!important}.bootstrap .ml-sm-4,.bootstrap .mx-sm-4{margin-left:1.5rem!important}.bootstrap .m-sm-5{margin:3rem!important}.bootstrap .mt-sm-5,.bootstrap .my-sm-5{margin-top:3rem!important}.bootstrap .mr-sm-5,.bootstrap .mx-sm-5{margin-right:3rem!important}.bootstrap .mb-sm-5,.bootstrap .my-sm-5{margin-bottom:3rem!important}.bootstrap .ml-sm-5,.bootstrap .mx-sm-5{margin-left:3rem!important}.bootstrap .p-sm-0{padding:0!important}.bootstrap .pt-sm-0,.bootstrap .py-sm-0{padding-top:0!important}.bootstrap .pr-sm-0,.bootstrap .px-sm-0{padding-right:0!important}.bootstrap .pb-sm-0,.bootstrap .py-sm-0{padding-bottom:0!important}.bootstrap .pl-sm-0,.bootstrap .px-sm-0{padding-left:0!important}.bootstrap .p-sm-1{padding:.25rem!important}.bootstrap .pt-sm-1,.bootstrap .py-sm-1{padding-top:.25rem!important}.bootstrap .pr-sm-1,.bootstrap .px-sm-1{padding-right:.25rem!important}.bootstrap .pb-sm-1,.bootstrap .py-sm-1{padding-bottom:.25rem!important}.bootstrap .pl-sm-1,.bootstrap .px-sm-1{padding-left:.25rem!important}.bootstrap .p-sm-2{padding:.5rem!important}.bootstrap .pt-sm-2,.bootstrap .py-sm-2{padding-top:.5rem!important}.bootstrap .pr-sm-2,.bootstrap .px-sm-2{padding-right:.5rem!important}.bootstrap .pb-sm-2,.bootstrap .py-sm-2{padding-bottom:.5rem!important}.bootstrap .pl-sm-2,.bootstrap .px-sm-2{padding-left:.5rem!important}.bootstrap .p-sm-3{padding:1rem!important}.bootstrap .pt-sm-3,.bootstrap .py-sm-3{padding-top:1rem!important}.bootstrap .pr-sm-3,.bootstrap .px-sm-3{padding-right:1rem!important}.bootstrap .pb-sm-3,.bootstrap .py-sm-3{padding-bottom:1rem!important}.bootstrap .pl-sm-3,.bootstrap .px-sm-3{padding-left:1rem!important}.bootstrap .p-sm-4{padding:1.5rem!important}.bootstrap .pt-sm-4,.bootstrap .py-sm-4{padding-top:1.5rem!important}.bootstrap .pr-sm-4,.bootstrap .px-sm-4{padding-right:1.5rem!important}.bootstrap .pb-sm-4,.bootstrap .py-sm-4{padding-bottom:1.5rem!important}.bootstrap .pl-sm-4,.bootstrap .px-sm-4{padding-left:1.5rem!important}.bootstrap .p-sm-5{padding:3rem!important}.bootstrap .pt-sm-5,.bootstrap .py-sm-5{padding-top:3rem!important}.bootstrap .pr-sm-5,.bootstrap .px-sm-5{padding-right:3rem!important}.bootstrap .pb-sm-5,.bootstrap .py-sm-5{padding-bottom:3rem!important}.bootstrap .pl-sm-5,.bootstrap .px-sm-5{padding-left:3rem!important}.bootstrap .m-sm-n1{margin:-.25rem!important}.bootstrap .mt-sm-n1,.bootstrap .my-sm-n1{margin-top:-.25rem!important}.bootstrap .mr-sm-n1,.bootstrap .mx-sm-n1{margin-right:-.25rem!important}.bootstrap .mb-sm-n1,.bootstrap .my-sm-n1{margin-bottom:-.25rem!important}.bootstrap .ml-sm-n1,.bootstrap .mx-sm-n1{margin-left:-.25rem!important}.bootstrap .m-sm-n2{margin:-.5rem!important}.bootstrap .mt-sm-n2,.bootstrap .my-sm-n2{margin-top:-.5rem!important}.bootstrap .mr-sm-n2,.bootstrap .mx-sm-n2{margin-right:-.5rem!important}.bootstrap .mb-sm-n2,.bootstrap .my-sm-n2{margin-bottom:-.5rem!important}.bootstrap .ml-sm-n2,.bootstrap .mx-sm-n2{margin-left:-.5rem!important}.bootstrap .m-sm-n3{margin:-1rem!important}.bootstrap .mt-sm-n3,.bootstrap .my-sm-n3{margin-top:-1rem!important}.bootstrap .mr-sm-n3,.bootstrap .mx-sm-n3{margin-right:-1rem!important}.bootstrap .mb-sm-n3,.bootstrap .my-sm-n3{margin-bottom:-1rem!important}.bootstrap .ml-sm-n3,.bootstrap .mx-sm-n3{margin-left:-1rem!important}.bootstrap .m-sm-n4{margin:-1.5rem!important}.bootstrap .mt-sm-n4,.bootstrap .my-sm-n4{margin-top:-1.5rem!important}.bootstrap .mr-sm-n4,.bootstrap .mx-sm-n4{margin-right:-1.5rem!important}.bootstrap .mb-sm-n4,.bootstrap .my-sm-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-sm-n4,.bootstrap .mx-sm-n4{margin-left:-1.5rem!important}.bootstrap .m-sm-n5{margin:-3rem!important}.bootstrap .mt-sm-n5,.bootstrap .my-sm-n5{margin-top:-3rem!important}.bootstrap .mr-sm-n5,.bootstrap .mx-sm-n5{margin-right:-3rem!important}.bootstrap .mb-sm-n5,.bootstrap .my-sm-n5{margin-bottom:-3rem!important}.bootstrap .ml-sm-n5,.bootstrap .mx-sm-n5{margin-left:-3rem!important}.bootstrap .m-sm-auto{margin:auto!important}.bootstrap .mt-sm-auto,.bootstrap .my-sm-auto{margin-top:auto!important}.bootstrap .mr-sm-auto,.bootstrap .mx-sm-auto{margin-right:auto!important}.bootstrap .mb-sm-auto,.bootstrap .my-sm-auto{margin-bottom:auto!important}.bootstrap .ml-sm-auto,.bootstrap .mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.bootstrap .m-md-0{margin:0!important}.bootstrap .mt-md-0,.bootstrap .my-md-0{margin-top:0!important}.bootstrap .mr-md-0,.bootstrap .mx-md-0{margin-right:0!important}.bootstrap .mb-md-0,.bootstrap .my-md-0{margin-bottom:0!important}.bootstrap .ml-md-0,.bootstrap .mx-md-0{margin-left:0!important}.bootstrap .m-md-1{margin:.25rem!important}.bootstrap .mt-md-1,.bootstrap .my-md-1{margin-top:.25rem!important}.bootstrap .mr-md-1,.bootstrap .mx-md-1{margin-right:.25rem!important}.bootstrap .mb-md-1,.bootstrap .my-md-1{margin-bottom:.25rem!important}.bootstrap .ml-md-1,.bootstrap .mx-md-1{margin-left:.25rem!important}.bootstrap .m-md-2{margin:.5rem!important}.bootstrap .mt-md-2,.bootstrap .my-md-2{margin-top:.5rem!important}.bootstrap .mr-md-2,.bootstrap .mx-md-2{margin-right:.5rem!important}.bootstrap .mb-md-2,.bootstrap .my-md-2{margin-bottom:.5rem!important}.bootstrap .ml-md-2,.bootstrap .mx-md-2{margin-left:.5rem!important}.bootstrap .m-md-3{margin:1rem!important}.bootstrap .mt-md-3,.bootstrap .my-md-3{margin-top:1rem!important}.bootstrap .mr-md-3,.bootstrap .mx-md-3{margin-right:1rem!important}.bootstrap .mb-md-3,.bootstrap .my-md-3{margin-bottom:1rem!important}.bootstrap .ml-md-3,.bootstrap .mx-md-3{margin-left:1rem!important}.bootstrap .m-md-4{margin:1.5rem!important}.bootstrap .mt-md-4,.bootstrap .my-md-4{margin-top:1.5rem!important}.bootstrap .mr-md-4,.bootstrap .mx-md-4{margin-right:1.5rem!important}.bootstrap .mb-md-4,.bootstrap .my-md-4{margin-bottom:1.5rem!important}.bootstrap .ml-md-4,.bootstrap .mx-md-4{margin-left:1.5rem!important}.bootstrap .m-md-5{margin:3rem!important}.bootstrap .mt-md-5,.bootstrap .my-md-5{margin-top:3rem!important}.bootstrap .mr-md-5,.bootstrap .mx-md-5{margin-right:3rem!important}.bootstrap .mb-md-5,.bootstrap .my-md-5{margin-bottom:3rem!important}.bootstrap .ml-md-5,.bootstrap .mx-md-5{margin-left:3rem!important}.bootstrap .p-md-0{padding:0!important}.bootstrap .pt-md-0,.bootstrap .py-md-0{padding-top:0!important}.bootstrap .pr-md-0,.bootstrap .px-md-0{padding-right:0!important}.bootstrap .pb-md-0,.bootstrap .py-md-0{padding-bottom:0!important}.bootstrap .pl-md-0,.bootstrap .px-md-0{padding-left:0!important}.bootstrap .p-md-1{padding:.25rem!important}.bootstrap .pt-md-1,.bootstrap .py-md-1{padding-top:.25rem!important}.bootstrap .pr-md-1,.bootstrap .px-md-1{padding-right:.25rem!important}.bootstrap .pb-md-1,.bootstrap .py-md-1{padding-bottom:.25rem!important}.bootstrap .pl-md-1,.bootstrap .px-md-1{padding-left:.25rem!important}.bootstrap .p-md-2{padding:.5rem!important}.bootstrap .pt-md-2,.bootstrap .py-md-2{padding-top:.5rem!important}.bootstrap .pr-md-2,.bootstrap .px-md-2{padding-right:.5rem!important}.bootstrap .pb-md-2,.bootstrap .py-md-2{padding-bottom:.5rem!important}.bootstrap .pl-md-2,.bootstrap .px-md-2{padding-left:.5rem!important}.bootstrap .p-md-3{padding:1rem!important}.bootstrap .pt-md-3,.bootstrap .py-md-3{padding-top:1rem!important}.bootstrap .pr-md-3,.bootstrap .px-md-3{padding-right:1rem!important}.bootstrap .pb-md-3,.bootstrap .py-md-3{padding-bottom:1rem!important}.bootstrap .pl-md-3,.bootstrap .px-md-3{padding-left:1rem!important}.bootstrap .p-md-4{padding:1.5rem!important}.bootstrap .pt-md-4,.bootstrap .py-md-4{padding-top:1.5rem!important}.bootstrap .pr-md-4,.bootstrap .px-md-4{padding-right:1.5rem!important}.bootstrap .pb-md-4,.bootstrap .py-md-4{padding-bottom:1.5rem!important}.bootstrap .pl-md-4,.bootstrap .px-md-4{padding-left:1.5rem!important}.bootstrap .p-md-5{padding:3rem!important}.bootstrap .pt-md-5,.bootstrap .py-md-5{padding-top:3rem!important}.bootstrap .pr-md-5,.bootstrap .px-md-5{padding-right:3rem!important}.bootstrap .pb-md-5,.bootstrap .py-md-5{padding-bottom:3rem!important}.bootstrap .pl-md-5,.bootstrap .px-md-5{padding-left:3rem!important}.bootstrap .m-md-n1{margin:-.25rem!important}.bootstrap .mt-md-n1,.bootstrap .my-md-n1{margin-top:-.25rem!important}.bootstrap .mr-md-n1,.bootstrap .mx-md-n1{margin-right:-.25rem!important}.bootstrap .mb-md-n1,.bootstrap .my-md-n1{margin-bottom:-.25rem!important}.bootstrap .ml-md-n1,.bootstrap .mx-md-n1{margin-left:-.25rem!important}.bootstrap .m-md-n2{margin:-.5rem!important}.bootstrap .mt-md-n2,.bootstrap .my-md-n2{margin-top:-.5rem!important}.bootstrap .mr-md-n2,.bootstrap .mx-md-n2{margin-right:-.5rem!important}.bootstrap .mb-md-n2,.bootstrap .my-md-n2{margin-bottom:-.5rem!important}.bootstrap .ml-md-n2,.bootstrap .mx-md-n2{margin-left:-.5rem!important}.bootstrap .m-md-n3{margin:-1rem!important}.bootstrap .mt-md-n3,.bootstrap .my-md-n3{margin-top:-1rem!important}.bootstrap .mr-md-n3,.bootstrap .mx-md-n3{margin-right:-1rem!important}.bootstrap .mb-md-n3,.bootstrap .my-md-n3{margin-bottom:-1rem!important}.bootstrap .ml-md-n3,.bootstrap .mx-md-n3{margin-left:-1rem!important}.bootstrap .m-md-n4{margin:-1.5rem!important}.bootstrap .mt-md-n4,.bootstrap .my-md-n4{margin-top:-1.5rem!important}.bootstrap .mr-md-n4,.bootstrap .mx-md-n4{margin-right:-1.5rem!important}.bootstrap .mb-md-n4,.bootstrap .my-md-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-md-n4,.bootstrap .mx-md-n4{margin-left:-1.5rem!important}.bootstrap .m-md-n5{margin:-3rem!important}.bootstrap .mt-md-n5,.bootstrap .my-md-n5{margin-top:-3rem!important}.bootstrap .mr-md-n5,.bootstrap .mx-md-n5{margin-right:-3rem!important}.bootstrap .mb-md-n5,.bootstrap .my-md-n5{margin-bottom:-3rem!important}.bootstrap .ml-md-n5,.bootstrap .mx-md-n5{margin-left:-3rem!important}.bootstrap .m-md-auto{margin:auto!important}.bootstrap .mt-md-auto,.bootstrap .my-md-auto{margin-top:auto!important}.bootstrap .mr-md-auto,.bootstrap .mx-md-auto{margin-right:auto!important}.bootstrap .mb-md-auto,.bootstrap .my-md-auto{margin-bottom:auto!important}.bootstrap .ml-md-auto,.bootstrap .mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.bootstrap .m-lg-0{margin:0!important}.bootstrap .mt-lg-0,.bootstrap .my-lg-0{margin-top:0!important}.bootstrap .mr-lg-0,.bootstrap .mx-lg-0{margin-right:0!important}.bootstrap .mb-lg-0,.bootstrap .my-lg-0{margin-bottom:0!important}.bootstrap .ml-lg-0,.bootstrap .mx-lg-0{margin-left:0!important}.bootstrap .m-lg-1{margin:.25rem!important}.bootstrap .mt-lg-1,.bootstrap .my-lg-1{margin-top:.25rem!important}.bootstrap .mr-lg-1,.bootstrap .mx-lg-1{margin-right:.25rem!important}.bootstrap .mb-lg-1,.bootstrap .my-lg-1{margin-bottom:.25rem!important}.bootstrap .ml-lg-1,.bootstrap .mx-lg-1{margin-left:.25rem!important}.bootstrap .m-lg-2{margin:.5rem!important}.bootstrap .mt-lg-2,.bootstrap .my-lg-2{margin-top:.5rem!important}.bootstrap .mr-lg-2,.bootstrap .mx-lg-2{margin-right:.5rem!important}.bootstrap .mb-lg-2,.bootstrap .my-lg-2{margin-bottom:.5rem!important}.bootstrap .ml-lg-2,.bootstrap .mx-lg-2{margin-left:.5rem!important}.bootstrap .m-lg-3{margin:1rem!important}.bootstrap .mt-lg-3,.bootstrap .my-lg-3{margin-top:1rem!important}.bootstrap .mr-lg-3,.bootstrap .mx-lg-3{margin-right:1rem!important}.bootstrap .mb-lg-3,.bootstrap .my-lg-3{margin-bottom:1rem!important}.bootstrap .ml-lg-3,.bootstrap .mx-lg-3{margin-left:1rem!important}.bootstrap .m-lg-4{margin:1.5rem!important}.bootstrap .mt-lg-4,.bootstrap .my-lg-4{margin-top:1.5rem!important}.bootstrap .mr-lg-4,.bootstrap .mx-lg-4{margin-right:1.5rem!important}.bootstrap .mb-lg-4,.bootstrap .my-lg-4{margin-bottom:1.5rem!important}.bootstrap .ml-lg-4,.bootstrap .mx-lg-4{margin-left:1.5rem!important}.bootstrap .m-lg-5{margin:3rem!important}.bootstrap .mt-lg-5,.bootstrap .my-lg-5{margin-top:3rem!important}.bootstrap .mr-lg-5,.bootstrap .mx-lg-5{margin-right:3rem!important}.bootstrap .mb-lg-5,.bootstrap .my-lg-5{margin-bottom:3rem!important}.bootstrap .ml-lg-5,.bootstrap .mx-lg-5{margin-left:3rem!important}.bootstrap .p-lg-0{padding:0!important}.bootstrap .pt-lg-0,.bootstrap .py-lg-0{padding-top:0!important}.bootstrap .pr-lg-0,.bootstrap .px-lg-0{padding-right:0!important}.bootstrap .pb-lg-0,.bootstrap .py-lg-0{padding-bottom:0!important}.bootstrap .pl-lg-0,.bootstrap .px-lg-0{padding-left:0!important}.bootstrap .p-lg-1{padding:.25rem!important}.bootstrap .pt-lg-1,.bootstrap .py-lg-1{padding-top:.25rem!important}.bootstrap .pr-lg-1,.bootstrap .px-lg-1{padding-right:.25rem!important}.bootstrap .pb-lg-1,.bootstrap .py-lg-1{padding-bottom:.25rem!important}.bootstrap .pl-lg-1,.bootstrap .px-lg-1{padding-left:.25rem!important}.bootstrap .p-lg-2{padding:.5rem!important}.bootstrap .pt-lg-2,.bootstrap .py-lg-2{padding-top:.5rem!important}.bootstrap .pr-lg-2,.bootstrap .px-lg-2{padding-right:.5rem!important}.bootstrap .pb-lg-2,.bootstrap .py-lg-2{padding-bottom:.5rem!important}.bootstrap .pl-lg-2,.bootstrap .px-lg-2{padding-left:.5rem!important}.bootstrap .p-lg-3{padding:1rem!important}.bootstrap .pt-lg-3,.bootstrap .py-lg-3{padding-top:1rem!important}.bootstrap .pr-lg-3,.bootstrap .px-lg-3{padding-right:1rem!important}.bootstrap .pb-lg-3,.bootstrap .py-lg-3{padding-bottom:1rem!important}.bootstrap .pl-lg-3,.bootstrap .px-lg-3{padding-left:1rem!important}.bootstrap .p-lg-4{padding:1.5rem!important}.bootstrap .pt-lg-4,.bootstrap .py-lg-4{padding-top:1.5rem!important}.bootstrap .pr-lg-4,.bootstrap .px-lg-4{padding-right:1.5rem!important}.bootstrap .pb-lg-4,.bootstrap .py-lg-4{padding-bottom:1.5rem!important}.bootstrap .pl-lg-4,.bootstrap .px-lg-4{padding-left:1.5rem!important}.bootstrap .p-lg-5{padding:3rem!important}.bootstrap .pt-lg-5,.bootstrap .py-lg-5{padding-top:3rem!important}.bootstrap .pr-lg-5,.bootstrap .px-lg-5{padding-right:3rem!important}.bootstrap .pb-lg-5,.bootstrap .py-lg-5{padding-bottom:3rem!important}.bootstrap .pl-lg-5,.bootstrap .px-lg-5{padding-left:3rem!important}.bootstrap .m-lg-n1{margin:-.25rem!important}.bootstrap .mt-lg-n1,.bootstrap .my-lg-n1{margin-top:-.25rem!important}.bootstrap .mr-lg-n1,.bootstrap .mx-lg-n1{margin-right:-.25rem!important}.bootstrap .mb-lg-n1,.bootstrap .my-lg-n1{margin-bottom:-.25rem!important}.bootstrap .ml-lg-n1,.bootstrap .mx-lg-n1{margin-left:-.25rem!important}.bootstrap .m-lg-n2{margin:-.5rem!important}.bootstrap .mt-lg-n2,.bootstrap .my-lg-n2{margin-top:-.5rem!important}.bootstrap .mr-lg-n2,.bootstrap .mx-lg-n2{margin-right:-.5rem!important}.bootstrap .mb-lg-n2,.bootstrap .my-lg-n2{margin-bottom:-.5rem!important}.bootstrap .ml-lg-n2,.bootstrap .mx-lg-n2{margin-left:-.5rem!important}.bootstrap .m-lg-n3{margin:-1rem!important}.bootstrap .mt-lg-n3,.bootstrap .my-lg-n3{margin-top:-1rem!important}.bootstrap .mr-lg-n3,.bootstrap .mx-lg-n3{margin-right:-1rem!important}.bootstrap .mb-lg-n3,.bootstrap .my-lg-n3{margin-bottom:-1rem!important}.bootstrap .ml-lg-n3,.bootstrap .mx-lg-n3{margin-left:-1rem!important}.bootstrap .m-lg-n4{margin:-1.5rem!important}.bootstrap .mt-lg-n4,.bootstrap .my-lg-n4{margin-top:-1.5rem!important}.bootstrap .mr-lg-n4,.bootstrap .mx-lg-n4{margin-right:-1.5rem!important}.bootstrap .mb-lg-n4,.bootstrap .my-lg-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-lg-n4,.bootstrap .mx-lg-n4{margin-left:-1.5rem!important}.bootstrap .m-lg-n5{margin:-3rem!important}.bootstrap .mt-lg-n5,.bootstrap .my-lg-n5{margin-top:-3rem!important}.bootstrap .mr-lg-n5,.bootstrap .mx-lg-n5{margin-right:-3rem!important}.bootstrap .mb-lg-n5,.bootstrap .my-lg-n5{margin-bottom:-3rem!important}.bootstrap .ml-lg-n5,.bootstrap .mx-lg-n5{margin-left:-3rem!important}.bootstrap .m-lg-auto{margin:auto!important}.bootstrap .mt-lg-auto,.bootstrap .my-lg-auto{margin-top:auto!important}.bootstrap .mr-lg-auto,.bootstrap .mx-lg-auto{margin-right:auto!important}.bootstrap .mb-lg-auto,.bootstrap .my-lg-auto{margin-bottom:auto!important}.bootstrap .ml-lg-auto,.bootstrap .mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.bootstrap .m-xl-0{margin:0!important}.bootstrap .mt-xl-0,.bootstrap .my-xl-0{margin-top:0!important}.bootstrap .mr-xl-0,.bootstrap .mx-xl-0{margin-right:0!important}.bootstrap .mb-xl-0,.bootstrap .my-xl-0{margin-bottom:0!important}.bootstrap .ml-xl-0,.bootstrap .mx-xl-0{margin-left:0!important}.bootstrap .m-xl-1{margin:.25rem!important}.bootstrap .mt-xl-1,.bootstrap .my-xl-1{margin-top:.25rem!important}.bootstrap .mr-xl-1,.bootstrap .mx-xl-1{margin-right:.25rem!important}.bootstrap .mb-xl-1,.bootstrap .my-xl-1{margin-bottom:.25rem!important}.bootstrap .ml-xl-1,.bootstrap .mx-xl-1{margin-left:.25rem!important}.bootstrap .m-xl-2{margin:.5rem!important}.bootstrap .mt-xl-2,.bootstrap .my-xl-2{margin-top:.5rem!important}.bootstrap .mr-xl-2,.bootstrap .mx-xl-2{margin-right:.5rem!important}.bootstrap .mb-xl-2,.bootstrap .my-xl-2{margin-bottom:.5rem!important}.bootstrap .ml-xl-2,.bootstrap .mx-xl-2{margin-left:.5rem!important}.bootstrap .m-xl-3{margin:1rem!important}.bootstrap .mt-xl-3,.bootstrap .my-xl-3{margin-top:1rem!important}.bootstrap .mr-xl-3,.bootstrap .mx-xl-3{margin-right:1rem!important}.bootstrap .mb-xl-3,.bootstrap .my-xl-3{margin-bottom:1rem!important}.bootstrap .ml-xl-3,.bootstrap .mx-xl-3{margin-left:1rem!important}.bootstrap .m-xl-4{margin:1.5rem!important}.bootstrap .mt-xl-4,.bootstrap .my-xl-4{margin-top:1.5rem!important}.bootstrap .mr-xl-4,.bootstrap .mx-xl-4{margin-right:1.5rem!important}.bootstrap .mb-xl-4,.bootstrap .my-xl-4{margin-bottom:1.5rem!important}.bootstrap .ml-xl-4,.bootstrap .mx-xl-4{margin-left:1.5rem!important}.bootstrap .m-xl-5{margin:3rem!important}.bootstrap .mt-xl-5,.bootstrap .my-xl-5{margin-top:3rem!important}.bootstrap .mr-xl-5,.bootstrap .mx-xl-5{margin-right:3rem!important}.bootstrap .mb-xl-5,.bootstrap .my-xl-5{margin-bottom:3rem!important}.bootstrap .ml-xl-5,.bootstrap .mx-xl-5{margin-left:3rem!important}.bootstrap .p-xl-0{padding:0!important}.bootstrap .pt-xl-0,.bootstrap .py-xl-0{padding-top:0!important}.bootstrap .pr-xl-0,.bootstrap .px-xl-0{padding-right:0!important}.bootstrap .pb-xl-0,.bootstrap .py-xl-0{padding-bottom:0!important}.bootstrap .pl-xl-0,.bootstrap .px-xl-0{padding-left:0!important}.bootstrap .p-xl-1{padding:.25rem!important}.bootstrap .pt-xl-1,.bootstrap .py-xl-1{padding-top:.25rem!important}.bootstrap .pr-xl-1,.bootstrap .px-xl-1{padding-right:.25rem!important}.bootstrap .pb-xl-1,.bootstrap .py-xl-1{padding-bottom:.25rem!important}.bootstrap .pl-xl-1,.bootstrap .px-xl-1{padding-left:.25rem!important}.bootstrap .p-xl-2{padding:.5rem!important}.bootstrap .pt-xl-2,.bootstrap .py-xl-2{padding-top:.5rem!important}.bootstrap .pr-xl-2,.bootstrap .px-xl-2{padding-right:.5rem!important}.bootstrap .pb-xl-2,.bootstrap .py-xl-2{padding-bottom:.5rem!important}.bootstrap .pl-xl-2,.bootstrap .px-xl-2{padding-left:.5rem!important}.bootstrap .p-xl-3{padding:1rem!important}.bootstrap .pt-xl-3,.bootstrap .py-xl-3{padding-top:1rem!important}.bootstrap .pr-xl-3,.bootstrap .px-xl-3{padding-right:1rem!important}.bootstrap .pb-xl-3,.bootstrap .py-xl-3{padding-bottom:1rem!important}.bootstrap .pl-xl-3,.bootstrap .px-xl-3{padding-left:1rem!important}.bootstrap .p-xl-4{padding:1.5rem!important}.bootstrap .pt-xl-4,.bootstrap .py-xl-4{padding-top:1.5rem!important}.bootstrap .pr-xl-4,.bootstrap .px-xl-4{padding-right:1.5rem!important}.bootstrap .pb-xl-4,.bootstrap .py-xl-4{padding-bottom:1.5rem!important}.bootstrap .pl-xl-4,.bootstrap .px-xl-4{padding-left:1.5rem!important}.bootstrap .p-xl-5{padding:3rem!important}.bootstrap .pt-xl-5,.bootstrap .py-xl-5{padding-top:3rem!important}.bootstrap .pr-xl-5,.bootstrap .px-xl-5{padding-right:3rem!important}.bootstrap .pb-xl-5,.bootstrap .py-xl-5{padding-bottom:3rem!important}.bootstrap .pl-xl-5,.bootstrap .px-xl-5{padding-left:3rem!important}.bootstrap .m-xl-n1{margin:-.25rem!important}.bootstrap .mt-xl-n1,.bootstrap .my-xl-n1{margin-top:-.25rem!important}.bootstrap .mr-xl-n1,.bootstrap .mx-xl-n1{margin-right:-.25rem!important}.bootstrap .mb-xl-n1,.bootstrap .my-xl-n1{margin-bottom:-.25rem!important}.bootstrap .ml-xl-n1,.bootstrap .mx-xl-n1{margin-left:-.25rem!important}.bootstrap .m-xl-n2{margin:-.5rem!important}.bootstrap .mt-xl-n2,.bootstrap .my-xl-n2{margin-top:-.5rem!important}.bootstrap .mr-xl-n2,.bootstrap .mx-xl-n2{margin-right:-.5rem!important}.bootstrap .mb-xl-n2,.bootstrap .my-xl-n2{margin-bottom:-.5rem!important}.bootstrap .ml-xl-n2,.bootstrap .mx-xl-n2{margin-left:-.5rem!important}.bootstrap .m-xl-n3{margin:-1rem!important}.bootstrap .mt-xl-n3,.bootstrap .my-xl-n3{margin-top:-1rem!important}.bootstrap .mr-xl-n3,.bootstrap .mx-xl-n3{margin-right:-1rem!important}.bootstrap .mb-xl-n3,.bootstrap .my-xl-n3{margin-bottom:-1rem!important}.bootstrap .ml-xl-n3,.bootstrap .mx-xl-n3{margin-left:-1rem!important}.bootstrap .m-xl-n4{margin:-1.5rem!important}.bootstrap .mt-xl-n4,.bootstrap .my-xl-n4{margin-top:-1.5rem!important}.bootstrap .mr-xl-n4,.bootstrap .mx-xl-n4{margin-right:-1.5rem!important}.bootstrap .mb-xl-n4,.bootstrap .my-xl-n4{margin-bottom:-1.5rem!important}.bootstrap .ml-xl-n4,.bootstrap .mx-xl-n4{margin-left:-1.5rem!important}.bootstrap .m-xl-n5{margin:-3rem!important}.bootstrap .mt-xl-n5,.bootstrap .my-xl-n5{margin-top:-3rem!important}.bootstrap .mr-xl-n5,.bootstrap .mx-xl-n5{margin-right:-3rem!important}.bootstrap .mb-xl-n5,.bootstrap .my-xl-n5{margin-bottom:-3rem!important}.bootstrap .ml-xl-n5,.bootstrap .mx-xl-n5{margin-left:-3rem!important}.bootstrap .m-xl-auto{margin:auto!important}.bootstrap .mt-xl-auto,.bootstrap .my-xl-auto{margin-top:auto!important}.bootstrap .mr-xl-auto,.bootstrap .mx-xl-auto{margin-right:auto!important}.bootstrap .mb-xl-auto,.bootstrap .my-xl-auto{margin-bottom:auto!important}.bootstrap .ml-xl-auto,.bootstrap .mx-xl-auto{margin-left:auto!important}}.bootstrap .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.bootstrap .text-justify{text-align:justify!important}.bootstrap .text-wrap{white-space:normal!important}.bootstrap .text-nowrap{white-space:nowrap!important}.bootstrap .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap .text-left{text-align:left!important}.bootstrap .text-right{text-align:right!important}.bootstrap .text-center{text-align:center!important}@media (min-width:576px){.bootstrap .text-sm-left{text-align:left!important}.bootstrap .text-sm-right{text-align:right!important}.bootstrap .text-sm-center{text-align:center!important}}@media (min-width:768px){.bootstrap .text-md-left{text-align:left!important}.bootstrap .text-md-right{text-align:right!important}.bootstrap .text-md-center{text-align:center!important}}@media (min-width:992px){.bootstrap .text-lg-left{text-align:left!important}.bootstrap .text-lg-right{text-align:right!important}.bootstrap .text-lg-center{text-align:center!important}}@media (min-width:1200px){.bootstrap .text-xl-left{text-align:left!important}.bootstrap .text-xl-right{text-align:right!important}.bootstrap .text-xl-center{text-align:center!important}}.bootstrap .text-lowercase{text-transform:lowercase!important}.bootstrap .text-uppercase{text-transform:uppercase!important}.bootstrap .text-capitalize{text-transform:capitalize!important}.bootstrap .font-weight-light{font-weight:300!important}.bootstrap .font-weight-lighter{font-weight:lighter!important}.bootstrap .font-weight-normal{font-weight:400!important}.bootstrap .font-weight-bold{font-weight:700!important}.bootstrap .font-weight-bolder{font-weight:bolder!important}.bootstrap .font-italic{font-style:italic!important}.bootstrap .text-white{color:#fff!important}.bootstrap .text-primary{color:#007bff!important}.bootstrap a.text-primary:focus,.bootstrap a.text-primary:hover{color:#0056b3!important}.bootstrap .text-secondary{color:#6c757d!important}.bootstrap a.text-secondary:focus,.bootstrap a.text-secondary:hover{color:#494f54!important}.bootstrap .text-success{color:#28a745!important}.bootstrap a.text-success:focus,.bootstrap a.text-success:hover{color:#19692c!important}.bootstrap .text-info{color:#17a2b8!important}.bootstrap a.text-info:focus,.bootstrap a.text-info:hover{color:#0f6674!important}.bootstrap .text-warning{color:#ffc107!important}.bootstrap a.text-warning:focus,.bootstrap a.text-warning:hover{color:#ba8b00!important}.bootstrap .text-danger{color:#dc3545!important}.bootstrap a.text-danger:focus,.bootstrap a.text-danger:hover{color:#a71d2a!important}.bootstrap .text-light{color:#f8f9fa!important}.bootstrap a.text-light:focus,.bootstrap a.text-light:hover{color:#cbd3da!important}.bootstrap .text-dark{color:#343a40!important}.bootstrap a.text-dark:focus,.bootstrap a.text-dark:hover{color:#121416!important}.bootstrap .text-body{color:#212529!important}.bootstrap .text-muted{color:#6c757d!important}.bootstrap .text-black-50{color:rgba(0,0,0,.5)!important}.bootstrap .text-white-50{color:rgba(255,255,255,.5)!important}.bootstrap .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.bootstrap .text-decoration-none{text-decoration:none!important}.bootstrap .text-break{word-break:break-word!important;overflow-wrap:break-word!important}.bootstrap .text-reset{color:inherit!important}.bootstrap .visible{visibility:visible!important}.bootstrap .invisible{visibility:hidden!important} diff --git a/docsSrc/index.md b/docsSrc/index.md index f597bcd..ce99e50 100644 --- a/docsSrc/index.md +++ b/docsSrc/index.md @@ -22,7 +22,7 @@ This provides support for code-first and database-first use of EF Core in F#, in

    The basics of getting started with EFCore.FSharp.

    @@ -33,11 +33,11 @@ This provides support for code-first and database-first use of EF Core in F#, in

    Guides you through the steps involved in addressing key problems and use-cases.

    @@ -48,7 +48,7 @@ This provides support for code-first and database-first use of EF Core in F#, in

    Discusses key topics and concepts at a fairly high level and provide useful background information and explanation..

    @@ -59,7 +59,7 @@ This provides support for code-first and database-first use of EF Core in F#, in

    Contain technical reference for APIs.

    diff --git a/docsTool/CLI.fs b/docsTool/CLI.fs deleted file mode 100644 index 1864267..0000000 --- a/docsTool/CLI.fs +++ /dev/null @@ -1,48 +0,0 @@ -namespace DocsTool - -module CLIArgs = - open Argu - open Fake.IO.Globbing.Operators - - type WatchArgs = - | ProjectGlob of string - | DocsSourceDirectory of string - | GitHubRepoUrl of string - | ProjectName of string - | ReleaseVersion of string - interface IArgParserTemplate with - member this.Usage = - match this with - | ProjectGlob _ -> "The glob for the dlls to generate API documentation." - | DocsSourceDirectory _ -> "The docs source directory." - | GitHubRepoUrl _ -> "The GitHub repository url." - | ProjectName _ -> "The project name." - | ReleaseVersion _ -> "The project's Release Version name." - - type BuildArgs = - | SiteBaseUrl of string - | ProjectGlob of string - | DocsOutputDirectory of string - | DocsSourceDirectory of string - | GitHubRepoUrl of string - | ProjectName of string - | ReleaseVersion of string - interface IArgParserTemplate with - member this.Usage = - match this with - | SiteBaseUrl _ -> "The public site's base url." - | ProjectGlob _ -> "The glob for the dlls to generate API documentation" - | DocsOutputDirectory _ -> "The docs output directory." - | DocsSourceDirectory _ -> "The docs source directory." - | GitHubRepoUrl _ -> "The GitHub repository url." - | ProjectName _ -> "The project name." - | ReleaseVersion _ -> "The project's Release Version name." - - type CLIArguments = - | [] Watch of ParseResults - | [] Build of ParseResults - interface IArgParserTemplate with - member this.Usage = - match this with - | Watch _ -> "Builds the docs, serves the content, and watches for changes to the content." - | Build _ -> "Builds the docs" diff --git a/docsTool/Prelude.fs b/docsTool/Prelude.fs deleted file mode 100644 index a81c062..0000000 --- a/docsTool/Prelude.fs +++ /dev/null @@ -1,47 +0,0 @@ -namespace DocsTool - -module Uri = - open System - - let simpleCombine (slug: string) (baseUri: Uri) = - sprintf "%s/%s" (baseUri.AbsoluteUri.TrimEnd('/')) (slug.TrimStart('/')) - - let create (url: string) = - match Uri.TryCreate(url, UriKind.Absolute) with - | (true, v) -> v - | _ -> failwithf "Bad url %s" url - - - -module Diposeable = - open System - open Fake.Core - - let dispose (d: #IDisposable) = d.Dispose() - - type DisposableList = - { Disposables: IDisposable list } - interface IDisposable with - member x.Dispose() = x.Disposables |> List.iter (dispose) - - static member Create(disposables) = - { Disposables = disposables } :> IDisposable - - type DisposableDirectory(directory: string) = - do Trace.tracefn "Created disposable directory %s" directory - - static member Create() = - let tempPath = - IO.Path.Combine(IO.Path.GetTempPath(), Guid.NewGuid().ToString("n")) - - IO.Directory.CreateDirectory tempPath |> ignore - - new DisposableDirectory(tempPath) - - member x.Directory = directory - member x.DirectoryInfo = IO.DirectoryInfo(directory) - - interface IDisposable with - member x.Dispose() = - Trace.tracefn "Deleting directory %s" directory - IO.Directory.Delete(x.Directory, true) diff --git a/docsTool/Program.fs b/docsTool/Program.fs deleted file mode 100644 index 53ecf3c..0000000 --- a/docsTool/Program.fs +++ /dev/null @@ -1,538 +0,0 @@ -open System -open Fake.IO.FileSystemOperators -open Fake.IO -open Fake.Core - -type Configuration = - { SiteBaseUrl: Uri - GitHubRepoUrl: Uri - RepositoryRoot: IO.DirectoryInfo - DocsOutputDirectory: IO.DirectoryInfo - DocsSourceDirectory: IO.DirectoryInfo - ProjectName: string - ProjectFilesGlob: IGlobbingPattern - ReleaseVersion: string - PublishPath: IO.DirectoryInfo } - -module GenerateDocs = - open DocsTool - open Fake.IO.Globbing.Operators - open Fable.React - open FSharp.Literate - open System.IO - open FSharp.MetadataFormat - - let docsApiDir docsDir = docsDir @@ "Api_Reference" - - type GeneratedDoc = - { SourcePath: FileInfo option - OutputPath: FileInfo - Content: ReactElement list - Title: string } - - let docsFileGlob docsSrcDir = - !!(docsSrcDir @@ "**/*.fsx") - ++ (docsSrcDir @@ "**/*.md") - - let render html = - fragment [] [ - RawText "" - RawText "\n" - html - ] - |> Fable.ReactServer.renderToString - - let renderWithMasterTemplate masterCfg navBar titletext bodytext pageSource = - Master.masterTemplate masterCfg navBar titletext bodytext pageSource - |> render - - let renderWithMasterAndWrite masterCfg (outPath: FileInfo) navBar titletext bodytext pageSource = - let contents = - renderWithMasterTemplate masterCfg navBar titletext bodytext pageSource - - IO.Directory.CreateDirectory(outPath.DirectoryName) - |> ignore - - IO.File.WriteAllText(outPath.FullName, contents) - Fake.Core.Trace.tracefn "Rendered to %s" outPath.FullName - - let generateNav (cfg: Configuration) (generatedDocs: GeneratedDoc list) = - let docsDir = cfg.DocsOutputDirectory.FullName - - let pages = - generatedDocs - |> List.map (fun gd -> gd.OutputPath) - |> List.filter - (fun f -> - f.FullName.StartsWith(docsDir "content") - |> not) - |> List.filter (fun f -> f.FullName.StartsWith(docsDir "files") |> not) - |> List.filter - (fun f -> - f.FullName.StartsWith(docsDir "index.html") - |> not) - - let topLevelNavs: Nav.TopLevelNav = - { DocsRoot = IO.DirectoryInfo docsDir - DocsPages = pages } - - let navCfg: Nav.NavConfig = - { SiteBaseUrl = cfg.SiteBaseUrl - GitHubRepoUrl = cfg.GitHubRepoUrl - ProjectName = cfg.ProjectName - TopLevelNav = topLevelNavs } - - Nav.generateNav navCfg - - let renderGeneratedDocs isWatchMode (cfg: Configuration) (generatedDocs: GeneratedDoc list) = - let nav = generateNav cfg generatedDocs - - let masterCfg: Master.MasterTemplateConfig = - { SiteBaseUrl = cfg.SiteBaseUrl - GitHubRepoUrl = cfg.GitHubRepoUrl - ProjectName = cfg.ProjectName - ReleaseVersion = cfg.ReleaseVersion - ReleaseDate = DateTimeOffset.Now - RepositoryRoot = cfg.RepositoryRoot - IsWatchMode = isWatchMode } - - generatedDocs - |> Seq.iter - (fun gd -> - let pageSource = - gd.SourcePath - |> Option.map - (fun sp -> - sp - .FullName - .Replace(cfg.RepositoryRoot.FullName, "") - .Replace("\\", "/")) - - renderWithMasterAndWrite masterCfg gd.OutputPath nav gd.Title gd.Content pageSource) - - - let copyAssets (cfg: Configuration) = - Shell.copyDir - (cfg.DocsOutputDirectory.FullName "content") - (cfg.DocsSourceDirectory.FullName "content") - (fun _ -> true) - - Shell.copyDir - (cfg.DocsOutputDirectory.FullName "files") - (cfg.DocsSourceDirectory.FullName "files") - (fun _ -> true) - - - let regexReplace (cfg: Configuration) source = - let replacements = - [ "{{siteBaseUrl}}", (cfg.SiteBaseUrl.ToString().TrimEnd('/')) ] - - (source, replacements) - ||> List.fold - (fun state (pattern, replacement) -> Text.RegularExpressions.Regex.Replace(state, pattern, replacement)) - - let stringContainsInsenstive (filter: string) (textToSearch: string) = - textToSearch.IndexOf(filter, StringComparison.CurrentCultureIgnoreCase) - >= 0 - - let generateDocs (docSourcePaths: IGlobbingPattern) (cfg: Configuration) = - let parse (fileName: string) source = - let doc = - let fsiArgs = - [| yield "--noframework" // error FS1222: When mscorlib.dll or FSharp.Core.dll is explicitly referenced the --noframework option must also be passed - yield sprintf "-I:\"%s\"" cfg.PublishPath.FullName |] - - let dlls = - cfg.PublishPath.EnumerateFiles() - |> Seq.map (fun fi -> fi.FullName) - |> Seq.filter (fun f -> f.EndsWith(".dll")) - |> Seq.map (sprintf "-r:%s") - - let compilerOptions = - [| yield "--targetprofile:netstandard" - yield! dlls |] - - let fsiEvaluator = FSharp.Literate.FsiEvaluator(fsiArgs) - - match Path.GetExtension fileName with - | ".fsx" -> - Literate.ParseScriptString( - source, - path = fileName, - compilerOptions = (compilerOptions |> String.concat " "), - fsiEvaluator = fsiEvaluator - ) - | ".md" -> - let source = regexReplace cfg source - - Literate.ParseMarkdownString( - source, - path = fileName, - compilerOptions = (compilerOptions |> String.concat " "), - fsiEvaluator = fsiEvaluator - ) - | others -> failwithf "FSharp.Literal does not support %s file extensions" others - - FSharp.Literate.Literate.FormatLiterateNodes(doc, OutputKind.Html, "", true, true) - - let format (doc: LiterateDocument) = - if not <| Seq.isEmpty doc.Errors then - failwithf "error while formatting file %s. Errors are:\n%A" doc.SourceFile doc.Errors - else - Formatting.format doc.MarkdownDocument true OutputKind.Html - + doc.FormattedTips - - - - docSourcePaths - |> Array.ofSeq - |> Seq.map - (fun filePath -> - - Fake.Core.Trace.tracefn "Rendering %s" filePath - let file = IO.File.ReadAllText filePath - - let outPath = - let changeExtension ext path = IO.Path.ChangeExtension(path, ext) - - filePath.Replace(cfg.DocsSourceDirectory.FullName, cfg.DocsOutputDirectory.FullName) - |> changeExtension ".html" - |> FileInfo - - let fs = file |> parse filePath |> format - let contents = [ div [] [ fs |> RawText ] ] - - { SourcePath = FileInfo filePath |> Some - OutputPath = outPath - Content = contents - Title = sprintf "%s-%s" outPath.Name cfg.ProjectName }) - |> Seq.toList - - /// The reason we do dotnet publish is because it will put all the referenced dlls into one folder. This makes it easy for tools to find the reference and we don't have to use FCS or any dotnet tools to try to analyze the project file and find where all the references are. - let dotnetPublish (cfg: Configuration) = - cfg.ProjectFilesGlob - |> Seq.iter - (fun p -> - Fake.DotNet.DotNet.publish - (fun opts -> - { opts with - OutputPath = Some cfg.PublishPath.FullName - Framework = Some "net10.0" }) - p) - - let generateAPI (cfg: Configuration) = - - let generate (projInfo: string) = - Trace.tracefn "Generating API Docs for %s" projInfo - let libDirs = [ cfg.PublishPath.FullName ] - - let projName = - IO.Path.GetFileNameWithoutExtension(projInfo) - - let targetApiDir = - docsApiDir cfg.DocsOutputDirectory.FullName - @@ projName - - let projDll = - cfg.PublishPath.FullName - @@ sprintf "%s.dll" projName - - let generatorOutput = - MetadataFormat.Generate( - projDll, - libDirs = libDirs, - sourceFolder = cfg.RepositoryRoot.FullName, - sourceRepo = - (cfg.GitHubRepoUrl - |> Uri.simpleCombine "tree/master" - |> string), - markDownComments = false, - parameters = [ ("project-name", projName) ] - ) - - let fi = - FileInfo - <| targetApiDir - @@ (sprintf "%s.html" generatorOutput.AssemblyGroup.Name) - - let indexDoc = - { SourcePath = None - OutputPath = fi - Content = - [ Namespaces.generateNamespaceDocs generatorOutput.AssemblyGroup generatorOutput.Properties ] - Title = sprintf "%s-%s" fi.Name cfg.ProjectName } - - let moduleDocs = - generatorOutput.ModuleInfos - |> List.map - (fun m -> - let fi = - FileInfo - <| targetApiDir - @@ (sprintf "%s.html" m.Module.UrlName) - - let content = - Modules.generateModuleDocs m generatorOutput.Properties - - { SourcePath = None - OutputPath = fi - Content = content - Title = sprintf "%s-%s" m.Module.Name cfg.ProjectName }) - - let typeDocs = - generatorOutput.TypesInfos - |> List.map - (fun m -> - let fi = - FileInfo - <| targetApiDir @@ (sprintf "%s.html" m.Type.UrlName) - - let content = - Types.generateTypeDocs m generatorOutput.Properties - - { SourcePath = None - OutputPath = fi - Content = content - Title = sprintf "%s-%s" m.Type.Name cfg.ProjectName }) - - [ indexDoc ] @ moduleDocs @ typeDocs - - cfg.ProjectFilesGlob - |> Seq.toArray - |> Array.Parallel.collect (generate >> List.toArray) - |> Array.toList - - let renderDocs (cfg: Configuration) = - copyAssets cfg - - let generateDocs = - async { - try - return generateDocs (docsFileGlob cfg.DocsSourceDirectory.FullName) cfg - with - | e -> - eprintfn "generateDocs failure %A" e - return raise e - } - - let generateAPI = async { return generateAPI cfg } - - dotnetPublish cfg - - Async.Parallel [ generateDocs - generateAPI ] - |> Async.RunSynchronously - |> Array.toList - |> List.collect id - - let buildDocs (cfg: Configuration) = - renderDocs cfg |> renderGeneratedDocs false cfg - - let watchDocs (refreshWebpageEvent: Event<_>) (cfg: Configuration) = - let initialDocs = renderDocs cfg - let renderGeneratedDocs = renderGeneratedDocs true - initialDocs |> renderGeneratedDocs cfg - - let docsSrcWatcher = - docsFileGlob cfg.DocsSourceDirectory.FullName - |> ChangeWatcher.run - (fun changes -> - printfn "changes %A" changes - - changes - |> Seq.iter - (fun m -> - printfn "watching %s" m.FullPath - let generated = generateDocs (!!m.FullPath) cfg - - initialDocs - |> List.filter - (fun x -> - generated - |> List.exists (fun y -> y.OutputPath = x.OutputPath) - |> not) - |> List.append generated - |> List.distinctBy (fun gd -> gd.OutputPath.FullName) - |> renderGeneratedDocs cfg) - - refreshWebpageEvent.Trigger "m.FullPath") - - let contentWatcher = - !!(cfg.DocsSourceDirectory.FullName - "content" - "**/*") - ++ (cfg.DocsSourceDirectory.FullName - "files" - "**/*") - |> ChangeWatcher.run - (fun changes -> - printfn "changes %A" changes - copyAssets cfg - refreshWebpageEvent.Trigger "Assets") - - let typesToWatch = [ ".fs"; ".fsx"; ".fsproj" ] - - let apiDocsWatcher = - // NOTE: ChangeWatch doesn't seem to like globs in some case and wants full paths - let glob = - cfg.ProjectFilesGlob // Get all src projects - |> Seq.map (fun p -> (FileInfo p).Directory.FullName "**") // Create glob for all files in fsproj folder - |> Seq.fold ((++)) (!! "") // Expand to get all files - |> Seq.filter (fun file -> typesToWatch |> Seq.exists file.EndsWith) // Filter for only F# style files - |> Seq.fold ((++)) (!! "") // Turn into glob for ChangeWatcher - - glob - |> ChangeWatcher.run - (fun changes -> - changes - |> Seq.iter (fun c -> Trace.logf "Regenerating API docs due to %s" c.FullPath) - - dotnetPublish cfg - let generated = generateAPI cfg - - initialDocs - |> List.filter - (fun x -> - generated - |> List.exists (fun y -> y.OutputPath = x.OutputPath) - |> not) - |> List.append generated - |> List.distinctBy (fun gd -> gd.OutputPath.FullName) - |> renderGeneratedDocs cfg - - refreshWebpageEvent.Trigger "Api") - - [ docsSrcWatcher - contentWatcher - apiDocsWatcher ] - |> Diposeable.DisposableList.Create - - -open FSharp.Formatting.Common -open System.Diagnostics - -let setupFsharpFormattingLogging () = - let setupListener listener = - [ FSharp.Formatting.Common.Log.source - Yaaf.FSharp.Scripting.Log.source ] - |> Seq.iter - (fun source -> - source.Switch.Level <- System.Diagnostics.SourceLevels.All - Log.AddListener listener source) - - let noTraceOptions = TraceOptions.None - - Log.ConsoleListener() - |> Log.SetupListener noTraceOptions System.Diagnostics.SourceLevels.Verbose - |> setupListener - - - -let refreshWebpageEvent = new Event() - -open Argu -open Fake.IO.Globbing.Operators -open DocsTool -open DocsTool.CLIArgs -open DocsTool.Diposeable - -[] -let main argv = - try - use tempDocsOutDir = DisposableDirectory.Create() - use publishPath = DisposableDirectory.Create() - - use __ = - AppDomain.CurrentDomain.ProcessExit.Subscribe - (fun _ -> - dispose tempDocsOutDir - dispose publishPath) - - use __ = - Console.CancelKeyPress.Subscribe - (fun _ -> - dispose tempDocsOutDir - dispose publishPath) - - let defaultConfig = - { SiteBaseUrl = Uri(sprintf "http://%s:%d/" WebServer.hostname WebServer.port) - GitHubRepoUrl = Uri "https://github.com" - RepositoryRoot = IO.DirectoryInfo(__SOURCE_DIRECTORY__ @@ "..") - DocsOutputDirectory = tempDocsOutDir.DirectoryInfo - DocsSourceDirectory = IO.DirectoryInfo "docsSrc" - ProjectName = "" - ProjectFilesGlob = !! "" - PublishPath = publishPath.DirectoryInfo - ReleaseVersion = "0.1.0" } - - let errorHandler = - ProcessExiter( - colorizer = - function - | ErrorCode.HelpText -> None - | _ -> Some ConsoleColor.Red - ) - - let programName = - let name = - System - .Reflection - .Assembly - .GetExecutingAssembly() - .GetName() - .Name - - if Environment.isWindows then - sprintf "%s.exe" name - else - name - - let parser = - ArgumentParser.Create(programName = programName, errorHandler = errorHandler) - - let parsedArgs = parser.Parse argv - - match parsedArgs.GetSubCommand() with - | Build args -> - let config = - (defaultConfig, args.GetAllResults()) - ||> List.fold - (fun state next -> - match next with - | BuildArgs.SiteBaseUrl url -> { state with SiteBaseUrl = Uri url } - | BuildArgs.ProjectGlob glob -> { state with ProjectFilesGlob = !!glob } - | BuildArgs.DocsOutputDirectory outdir -> - { state with - DocsOutputDirectory = IO.DirectoryInfo outdir } - | BuildArgs.DocsSourceDirectory srcdir -> - { state with - DocsSourceDirectory = IO.DirectoryInfo srcdir } - | BuildArgs.GitHubRepoUrl url -> { state with GitHubRepoUrl = Uri url } - | BuildArgs.ProjectName repo -> { state with ProjectName = repo } - | BuildArgs.ReleaseVersion version -> { state with ReleaseVersion = version }) - - GenerateDocs.buildDocs config - | Watch args -> - let config = - (defaultConfig, args.GetAllResults()) - ||> List.fold - (fun state next -> - match next with - | WatchArgs.ProjectGlob glob -> { state with ProjectFilesGlob = !!glob } - | WatchArgs.DocsSourceDirectory srcdir -> - { state with - DocsSourceDirectory = IO.DirectoryInfo srcdir } - | WatchArgs.GitHubRepoUrl url -> { state with GitHubRepoUrl = Uri url } - | WatchArgs.ProjectName repo -> { state with ProjectName = repo } - | WatchArgs.ReleaseVersion version -> { state with ReleaseVersion = version }) - - use ds = - GenerateDocs.watchDocs refreshWebpageEvent config - - WebServer.serveDocs refreshWebpageEvent config.DocsOutputDirectory.FullName - - 0 - with - | e -> - eprintfn "Fatal error: %A" e - 1 diff --git a/docsTool/Properties/launchSettings.json b/docsTool/Properties/launchSettings.json deleted file mode 100644 index b652c20..0000000 --- a/docsTool/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:53237/", - "sslPort": 44367 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "docsTool": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:5001;http://localhost:5000" - } - } -} \ No newline at end of file diff --git a/docsTool/README.md b/docsTool/README.md deleted file mode 100644 index 064e868..0000000 --- a/docsTool/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# Docs Tool - -## Example -[MiniScaffold docs example](https://www.jimmybyrd.me/miniscaffold-docs-test/) - -## Docs High Level Design - -This template is based heavily on [What nobody tells you about documentation](https://www.divio.com/blog/documentation/). In `docsSrc` folder you'll see a similar structure to what is described below: - -- **Tutorials** - - is learning-oriented - - allows the newcomer to get started - - is a lesson - - Analogy: teaching a small child how to cook -- **How-To Guides** - - is goal-oriented - - shows how to solve a specific problem - - is a series of steps - - Analogy: a recipe in a cookery book -- **Explanation** - - is understanding-oriented - - explains - - provides background and context - - Analogy: an article on culinary social history -- **Reference** - - is information-oriented - - describes the machinery - - is accurate and complete - - Analogy: a reference encyclopedia article - - -The folders in `docsSrc` are: - -- `content` - custom css, javascript, and similar go here. -- `Explanations` - A content section as defined above. -- `files` - extra files like screenshots, images, videos. -- `How_Tos` - A content section as defined above. -- `Tutorials` - A content section as defined above. -- `index.md` - The entry page to your documentation - -The navbar is generated by the folders in docsSrc, excluding `content` and `files` folders. Looking at the [example](https://www.jimmybyrd.me/miniscaffold-docs-test/) we can the navbar containing: - -- `Api References` -- `Explanations` -- `How Tos` -- `Tutorials` - -The odd one not generated from the convention of your folders in docsSrc is Api References. This is generated by the [XML Doc Comments](https://docs.microsoft.com/en-us/dotnet/csharp/codedoc) in your libraries under the `src` folder. - - -## Running docs tool - -``` -USAGE: docsTool [--help] [ []] - -SUBCOMMANDS: - - watch Builds the docs, serves the content, and watches for changes to the content. - build Builds the docs - - Use 'docsTool --help' for additional information. -``` - -### build - -Builds the docs - -``` -USAGE: docsTool build [--help] [--sitebaseurl ] [--projectglob ] [--docsoutputdirectory ] [--docssourcedirectory ] [--githubrepourl ] [--projectname ] - [--releaseversion ] - -OPTIONS: - - --sitebaseurl - The public site's base url. - --projectglob - The glob for the dlls to generate API documentation - --docsoutputdirectory - The docs output directory. - --docssourcedirectory - The docs source directory. - --githubrepourl - The GitHub repository url. - --projectname - The project name. - --releaseversion - The project's Release Version name. - --help display this list of options. - -``` - - -### watch - -Builds the docs, serves the content, and watches for changes to the content. - -``` - -USAGE: docsTool watch [--help] [--projectglob ] [--docsoutputdirectory ] [--docssourcedirectory ] [--githubrepourl ] [--projectname ] [--releaseversion ] - -OPTIONS: - - --projectglob - The glob for the dlls to generate API documentation. - --docsoutputdirectory - The docs output directory. - --docssourcedirectory - The docs source directory. - --githubrepourl - The GitHub repository url. - --projectname - The project name. - --releaseversion - The project's Release Version name. - --help display this list of options. -``` - diff --git a/docsTool/WebServer.fs b/docsTool/WebServer.fs deleted file mode 100644 index 559ce8b..0000000 --- a/docsTool/WebServer.fs +++ /dev/null @@ -1,125 +0,0 @@ -namespace DocsTool - -module WebServer = - open Microsoft.AspNetCore.Hosting - open Microsoft.AspNetCore.Builder - open Microsoft.Extensions.FileProviders - open Microsoft.AspNetCore.Http - open System - open System.Net.WebSockets - open System.Diagnostics - open System.Runtime.InteropServices - - let hostname = "localhost" - let port = 5000 - - /// Helper to determine if port is in use - let waitForPortInUse (hostname: string) port = - let mutable portInUse = false - - while not portInUse do - Async.Sleep(10) |> Async.RunSynchronously - use client = new Net.Sockets.TcpClient() - - try - client.Connect(hostname, port) - portInUse <- client.Connected - client.Close() - with - | e -> client.Close() - - /// Async version of IApplicationBuilder.Use - let useAsync (middlware: HttpContext -> (unit -> Async) -> Async) (app: IApplicationBuilder) = - app.Use - (fun env (next: Func) -> - middlware env (next.Invoke >> Async.AwaitTask) - |> Async.StartAsTask - :> System.Threading.Tasks.Task) - - let createWebsocketForLiveReload - (refreshWebpageEvent: Event) - (httpContext: HttpContext) - (next: unit -> Async) - = - async { - if httpContext.WebSockets.IsWebSocketRequest then - let! websocket = - httpContext.WebSockets.AcceptWebSocketAsync() - |> Async.AwaitTask - - use d = - refreshWebpageEvent.Publish - |> Observable.subscribe - (fun m -> - let segment = - ArraySegment(m |> Text.Encoding.UTF8.GetBytes) - - websocket.SendAsync(segment, WebSocketMessageType.Text, true, httpContext.RequestAborted) - |> Async.AwaitTask - |> Async.Start - - ) - - while websocket.State <> WebSocketState.Closed do - do! Async.Sleep(1000) - else - do! next () - } - - let configureWebsocket (refreshWebpageEvent: Event) (appBuilder: IApplicationBuilder) = - appBuilder.UseWebSockets() - |> useAsync (createWebsocketForLiveReload refreshWebpageEvent) - |> ignore - - let startWebserver (refreshWebpageEvent: Event) docsDir (url: string) = - WebHostBuilder() - .UseKestrel() - .UseUrls(url) - .Configure(fun app -> - let opts = - StaticFileOptions(FileProvider = new PhysicalFileProvider(docsDir)) - - app.UseStaticFiles(opts) |> ignore - configureWebsocket refreshWebpageEvent app) - .Build() - .Run() - - let openBrowser url = - let waitForExit (proc: Process) = - proc.WaitForExit() - - if proc.ExitCode <> 0 then - eprintf "opening browser failed, open your browser and navigate to url to see the docs site." - - try - let psi = - ProcessStartInfo(FileName = url, UseShellExecute = true) - - Process.Start psi |> waitForExit - with - | e -> - //https://github.com/dotnet/corefx/issues/10361 - if RuntimeInformation.IsOSPlatform(OSPlatform.Windows) then - let url = url.Replace("&", "&^") - - let psi = - ProcessStartInfo("cmd", (sprintf "/c %s" url), CreateNoWindow = true) - - Process.Start psi |> waitForExit - elif RuntimeInformation.IsOSPlatform(OSPlatform.Linux) then - Process.Start("xdg-open", url) |> waitForExit - elif RuntimeInformation.IsOSPlatform(OSPlatform.OSX) then - Process.Start("open", url) |> waitForExit - else - failwithf "failed to open browser on current OS" - - let serveDocs refreshEvent docsDir = - async { - waitForPortInUse hostname port - - sprintf "http://%s:%d/index.html" hostname port - |> openBrowser - } - |> Async.Start - - startWebserver refreshEvent docsDir (sprintf "http://%s:%d" hostname port) diff --git a/docsTool/docsTool.fsproj b/docsTool/docsTool.fsproj deleted file mode 100644 index eab38de..0000000 --- a/docsTool/docsTool.fsproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - Exe - net10.0 - false - - - - - - - - - - - - - - - - - - - - diff --git a/docsTool/paket.references b/docsTool/paket.references deleted file mode 100644 index ea043de..0000000 --- a/docsTool/paket.references +++ /dev/null @@ -1,9 +0,0 @@ -group Docs -Argu -FSharp.Core -Fake.IO.FileSystem -Fake.DotNet.Cli -FSharp.Formatting -FSharp.Literate -Fable.React -Microsoft.EntityFrameworkCore.Sqlite diff --git a/docsTool/templates/helpers.fs b/docsTool/templates/helpers.fs deleted file mode 100644 index 79d663b..0000000 --- a/docsTool/templates/helpers.fs +++ /dev/null @@ -1,48 +0,0 @@ -module Helpers - -open System -open Fable.React -open Fable.React.Props -open FSharp.MetadataFormat - - -let createAnchorIcon name = - let normalized = name - let href = sprintf "#%s" normalized - - a [ Href href; Id normalized ] [ - str "#" - ] - -let createAnchor fullName name = - let fullNameNormalize = fullName - - a [ Name fullNameNormalize - Href(sprintf "#%s" fullNameNormalize) - Class "anchor" ] [ - str name - ] - -let renderNamespace (ns: Namespace) = - [ h3 [] [ str "Namespace" ] - str ns.Name ] - -let inline isObsolete< ^t when ^t: (member IsObsolete: bool)> t = (^t: (member IsObsolete: bool) (t)) - -let inline obsoleteMessage< ^t when ^t: (member ObsoleteMessage: string)> t = - (^t: (member ObsoleteMessage: string) (t)) - -let inline renderObsoleteMessage item = - if isObsolete item then - let text = - match obsoleteMessage item with - | "" - | null -> "This member is obsolete" - | s -> s - - [ div [ Class "alert alert-warning" ] [ - strong [] [ str "OBSOLETE: " ] - str text - ] ] - else - [] diff --git a/docsTool/templates/master.fs b/docsTool/templates/master.fs deleted file mode 100644 index ca9126f..0000000 --- a/docsTool/templates/master.fs +++ /dev/null @@ -1,209 +0,0 @@ -module Master - -open System -open Fable.React -open Fable.React.Props -open DocsTool - -type MasterTemplateConfig = - { SiteBaseUrl: Uri - GitHubRepoUrl: Uri - ProjectName: string - ReleaseVersion: string - ReleaseDate: DateTimeOffset - RepositoryRoot: IO.DirectoryInfo - IsWatchMode: bool } - -type FAIcon = - | Solid of name: string - | Brand of name: string - -let footerLink uri image linkText = - let faClass, img = - match image with - | Solid name -> "fas", name - | Brand name -> "fab", name - - a [ Href uri; Class "text-white" ] [ - i [ Class(sprintf "%s fa-%s fa-fw mr-2" faClass img) ] [] - str linkText - ] - -let repoFileLink repoUrl filePathFromRepoRoot = - let link = - repoUrl - |> Uri.simpleCombine (sprintf "blob/master/%s" filePathFromRepoRoot) - - footerLink link - -let linkColumn headerTitle items = - div [ Class "col-12 col-md-4 mb-4 mb-md-0" ] [ - div [ Class "text-light" ] [ - h2 [ Class "h5" ] [ str headerTitle ] - ul - [ Class "list-group list-group-flush" ] - (items - |> List.choose - (function - | [] -> None - | items -> Some(li [ Class "list-group-item bg-dark ml-0 pl-0" ] items))) - ] - ] - -let renderFooter (cfg: MasterTemplateConfig) (pageSource: string option) = - let hasFile relPath = - match cfg.RepositoryRoot.GetFiles(relPath) with - | [||] -> false - | [| file |] -> true - | files -> false - - let repoFileLink relPath image title = - if hasFile relPath then - [ repoFileLink cfg.GitHubRepoUrl relPath image title ] - else - [] - - footer [ Class "footer font-small m-0 py-4 bg-dark" ] [ - div [ Class "container" ] [ - div [ Class "row" ] [ - linkColumn - "Project Resources" - [ repoFileLink "README.md" (Solid "book-reader") "README" - repoFileLink "CHANGELOG.md" (Solid "sticky-note") "Release Notes / Changelog" - repoFileLink "LICENSE.md" (Solid "id-card") "License" - repoFileLink "CONTRIBUTING.md" (Solid "directions") "Contributing" - repoFileLink "CODE_OF_CONDUCT.md" (Solid "users") "Code of Conduct" ] - linkColumn - "Other Links" - [ [ footerLink - "https://docs.microsoft.com/en-us/dotnet/fsharp/" - (Brand "microsoft") - "F# Documentation" ] - [ footerLink "https://fsharp.org/guides/slack/" (Brand "slack") "F# Slack" ] - [ a [ Href "http://foundation.fsharp.org/" - Class "text-white" ] [ - img [ Class "fsharp-footer-logo mr-2" - Src "https://fsharp.org/img/logo/fsharp.svg" - Alt "FSharp Logo" ] - str "F# Software Foundation" - ] ] ] - linkColumn - "Metadata" - [ [ str "Generated for version " - a [ Class "text-white" - Href( - cfg.GitHubRepoUrl - |> Uri.simpleCombine (sprintf "releases/tag/%s" cfg.ReleaseVersion) - ) ] [ - str cfg.ReleaseVersion - ] - str (sprintf " on %s" (cfg.ReleaseDate.ToString("yyyy/MM/dd"))) ] - match pageSource with - | Some p -> - let page = - cfg.GitHubRepoUrl - |> Uri.simpleCombine "edit/master" - |> Uri - |> Uri.simpleCombine p - - [ str "Found an issue? " - a [ Class "text-white" - Href(page |> string) ] [ - str "Edit this page." - ] ] - | None -> () ] - ] - div [ Class "row" ] [ - div [ Class "col text-center" ] [ - small [ Class "text-light" ] [ - i [ Class "fas fa-copyright mr-1" ] [] - str (sprintf "%s EFCore.FSharp, All rights reserved" (DateTimeOffset.UtcNow.ToString("yyyy"))) - ] - ] - ] - ] - ] - -let masterTemplate (cfg: MasterTemplateConfig) navBar titletext bodyText pageSource = - html [ Lang "en" ] [ - head [] [ - title [] [ - str (sprintf "%s docs / %s" cfg.ProjectName titletext) - ] - meta [ Name "viewport" - HTMLAttr.Content "width=device-width, initial-scale=1" ] - link [ Href( - cfg.SiteBaseUrl - |> Uri.simpleCombine ( - sprintf "/content/toggle-bootstrap.min.css?version=%i" cfg.ReleaseDate.Ticks - ) - ) - Type "text/css" - Rel "stylesheet" ] - link [ Href( - cfg.SiteBaseUrl - |> Uri.simpleCombine ( - sprintf "/content/toggle-bootstrap-dark.min.css?version=%i" cfg.ReleaseDate.Ticks - ) - ) - Type "text/css" - Rel "stylesheet" ] - link [ Href "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css" - Rel "stylesheet" - Integrity "sha384-KA6wR/X5RY4zFAHpv/CnoG2UW1uogYfdnP67Uv7eULvTveboZJg0qUpmJZb5VqzN" - CrossOrigin "anonymous" ] - link [ Href( - cfg.SiteBaseUrl - |> Uri.simpleCombine (sprintf "/content/style.css?version=%i" cfg.ReleaseDate.Ticks) - ) - Type "text/css" - Rel "stylesheet" ] - - ] - body [] [ - yield navBar - yield - div [ Class "wrapper d-flex flex-column justify-content-between min-vh-100" ] [ - main [ Class "container main mb-4" ] bodyText - renderFooter cfg pageSource - ] - yield - script [ Src( - cfg.SiteBaseUrl - |> Uri.simpleCombine (sprintf "/content/themes.js?version=%i" cfg.ReleaseDate.Ticks) - ) ] [] - yield - script [ Src "https://code.jquery.com/jquery-3.4.1.slim.min.js" - Integrity "sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" - CrossOrigin "anonymous" ] [] - yield - script [ Src "https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" - Integrity "sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" - CrossOrigin "anonymous" ] [] - yield - script [ Src "https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" - Integrity "sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" - CrossOrigin "anonymous" ] [] - yield - script [ Src( - cfg.SiteBaseUrl - |> Uri.simpleCombine (sprintf "/content/tips.js?version=%i" cfg.ReleaseDate.Ticks) - ) ] [] - if cfg.IsWatchMode then - yield - script [ Src( - cfg.SiteBaseUrl - |> Uri.simpleCombine (sprintf "/content/hotload.js?version=%i" cfg.ReleaseDate.Ticks) - ) ] [] - yield - script [ Src( - cfg.SiteBaseUrl - |> Uri.simpleCombine (sprintf "/content/submenu.js?version=%i" cfg.ReleaseDate.Ticks) - ) ] [] - yield - script [ Src( - cfg.SiteBaseUrl - |> Uri.simpleCombine (sprintf "/content/cleanups.js?version=%i" cfg.ReleaseDate.Ticks) - ) ] [] - ] - ] diff --git a/docsTool/templates/modules.fs b/docsTool/templates/modules.fs deleted file mode 100644 index cd8789d..0000000 --- a/docsTool/templates/modules.fs +++ /dev/null @@ -1,147 +0,0 @@ -module Modules - -open System -open Fable.React -open Fable.React.Props -open FSharp.MetadataFormat -open PartNested -open PartMembers -open Helpers - - -let generateModuleDocs (moduleInfo: ModuleInfo) (props) = - let members = moduleInfo.Module.AllMembers - let comment = moduleInfo.Module.Comment - - let byCategory = - members - |> List.groupBy (fun m -> m.Category) - |> List.sortBy - (fun (g, v) -> - if String.IsNullOrEmpty g then - "ZZZ" - else - g) - |> List.mapi - (fun i (key, value) -> - { Index = i - GroupKey = key - Members = value |> List.sortBy (fun m -> m.Name) - Name = - if String.IsNullOrEmpty key then - "Other module members" - else - key }) - - let nestModules = moduleInfo.Module.NestedModules - let nestTypes = moduleInfo.Module.NestedTypes - - [ yield - div [ Class "container-fluid py-3" ] [ - yield - div [ Class "row" ] [ - yield - div [ Class "col-12" ] [ - yield h1 [] [ str moduleInfo.Module.Name ] - yield! renderObsoleteMessage moduleInfo.Module - yield! renderNamespace moduleInfo.Namespace - yield - dl [] [ - if moduleInfo.ParentModule.IsSome then - yield dt [] [ str "Parent Module" ] - - yield - dd [] [ - a [ Href(sprintf "%s.html" moduleInfo.ParentModule.Value.UrlName) ] [ - str moduleInfo.ParentModule.Value.Name - ] - ] - if moduleInfo.Module.Attributes |> Seq.isEmpty |> not then - yield dt [] [ str "Attributes" ] - - yield - dd [] [ - for attr in moduleInfo.Module.Attributes do - yield str (attr.Format()) - yield br [] - ] - ] - - yield - div [ Class "xmldoc" ] [ - for sec in comment.Sections do - if byCategory - |> Seq.exists (fun g -> g.GroupKey = sec.Key) - |> not then - if sec.Key <> "" then - yield h2 [] [ RawText sec.Key ] - - yield RawText sec.Value - ] - - - if byCategory |> Seq.length > 1 then - yield h2 [] [ str "Table of contents" ] - - yield - ul [] [ - for g in byCategory do - yield - li [] [ - a [ Href(g.Index.ToString() |> sprintf "#section%s") ] [ - str g.Name - ] - ] - ] - - if (nestTypes |> Seq.length) - + (nestModules |> Seq.length) > 0 then - yield h2 [] [ str "Nested types and modules" ] - - yield! (partNested (nestTypes |> Seq.toArray) (nestModules |> Seq.toArray)) - - for g in byCategory do - if byCategory |> Seq.length > 1 then - yield - h2 [] [ - str g.Name - a [ Name(sprintf "section%d" g.Index) ] [ - str " " - ] - ] - - let info = - comment.Sections - |> Seq.tryFind (fun kvp -> kvp.Key = g.GroupKey) - - match info with - | Some info -> - yield - div [ Class "xmldoc" ] [ - str info.Value - ] - | None -> yield nothing - - yield! - partMembers - "Functions and values" - "Function or value" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.ValueOrFunction)) - - yield! - partMembers - "Type extensions" - "Type extension" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.TypeExtension)) - - yield! - partMembers - "Active patterns" - "Active pattern" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.ActivePattern)) - ] - ] - ] ] diff --git a/docsTool/templates/namespaces.fs b/docsTool/templates/namespaces.fs deleted file mode 100644 index bf635b8..0000000 --- a/docsTool/templates/namespaces.fs +++ /dev/null @@ -1,91 +0,0 @@ -module Namespaces - -open System -open Fable.React -open Fable.React.Props -open FSharp.MetadataFormat - - -type ByCategory = - { Name: string - Index: string - Types: Type array - Modules: Module array } - -let generateNamespaceDocs (asm: AssemblyGroup) (props) = - let parts = - asm.Namespaces - |> Seq.mapi - (fun nsi ns -> - let allByCategories = - ns.Types - |> Seq.map (fun t -> t.Category) - |> Seq.append (ns.Modules |> Seq.map (fun m -> m.Category)) - |> Seq.distinct - |> Seq.sortBy - (fun s -> - if String.IsNullOrEmpty(s) then - "ZZZ" - else - s) - |> Seq.mapi - (fun ci c -> - { Name = - if String.IsNullOrEmpty(c) then - "Other namespace members" - else - c - Index = sprintf "%d_%d" nsi ci - Types = - ns.Types - |> Seq.filter (fun t -> t.Category = c) - |> Seq.toArray - Modules = - ns.Modules - |> Seq.filter (fun m -> m.Category = c) - |> Seq.toArray }) - |> Seq.filter (fun c -> c.Types.Length + c.Modules.Length > 0) - |> Seq.toArray - - [ yield - h2 [] [ - Helpers.createAnchor ns.Name ns.Name - ] - if allByCategories.Length > 1 then - yield - ul [] [ - for c in allByCategories do - yield - li [] [ - a [ Href(sprintf "#section%s" c.Index) ] [ - str c.Name - ] - ] - ] - - - for c in allByCategories do - if allByCategories.Length > 1 then - yield - h3 [] [ - a [ Class "anchor" - Name(sprintf "section%s" c.Index) - Href(sprintf "#section%s" c.Index) ] [ - str c.Name - ] - ] - - yield! PartNested.partNested c.Types c.Modules ]) - |> Seq.collect id - - div [ Class "container-fluid py-3" ] [ - div [ Class "row" ] [ - div [ Class "col-12" ] [ - yield - h1 [] [ - Helpers.createAnchor asm.Name asm.Name - ] - yield! parts - ] - ] - ] diff --git a/docsTool/templates/nav.fs b/docsTool/templates/nav.fs deleted file mode 100644 index 2a8f2f8..0000000 --- a/docsTool/templates/nav.fs +++ /dev/null @@ -1,190 +0,0 @@ -module Nav - -open System -open DocsTool -open Fable.React -open Fable.React.Props - -type NameOfArticle = string -type UrlPath = string - -type TopLevelNav = - { DocsRoot: IO.DirectoryInfo - DocsPages: IO.FileInfo list } - -type NavConfig = - { SiteBaseUrl: Uri - GitHubRepoUrl: Uri - ProjectName: string - TopLevelNav: TopLevelNav } - -let normalizeText text = - System.Text.RegularExpressions.Regex.Replace(text, @"[^0-9a-zA-Z\.]+", " ") - -let normalizeStr = normalizeText >> str - -let navItem link inner = - li [ Class "nav-item" ] [ - a [ Class "nav-link"; Href link ] inner - ] - -let navItemText text link = navItem link [ normalizeStr text ] - -let navItemIconOnly link ariaLabel inner = - li [ Class "nav-item" ] [ - a - [ Class "nav-link" - HTMLAttr.Custom("aria-label", ariaLabel) - Href link ] - inner - ] - -let dropDownNavMenu text items = - li [ Class "nav-item dropdown" ] [ - a [ Id(sprintf "navbarDropdown-%s" text) - Href "#" - DataToggle "dropdown" - AriaHasPopup true - AriaExpanded false - Class "nav-link dropdown-toggle" ] [ - normalizeStr text - ] - ul - [ HTMLAttr.Custom("aria-labelledby", "dropdownMenu1") - Class "dropdown-menu border-0 shadow" ] - items - ] - -let dropDownNavItem text link = - li [ Class "nav-item" ] [ - a [ Class "dropdown-item"; Href link ] [ - normalizeStr text - ] - ] - -let dropdownSubMenu text items = - li [ Class "dropdown-submenu" ] [ - a [ Id(sprintf "navbarDropdown-%s" text) - Href "#" - Role "button" - DataToggle "dropdown" - AriaHasPopup true - AriaExpanded false - Class "dropdown-item dropdown-toggle" ] [ - normalizeStr text - ] - ul - [ HTMLAttr.Custom("aria-labelledby", "dropdownMenu2") - Class "dropdown-menu border-0 shadow" ] - items - ] - -type NavTree = - | File of title: string * link: string - | Folder of title: string * NavTree list - -let rec sortNavTree (navtree: NavTree list) = - navtree - |> List.map - (fun navTree -> - match navTree with - | File (t, l) -> File(t, l) - | Folder (title, nodes) -> Folder(title, sortNavTree nodes)) - |> List.sortBy - (fun navtree -> - match navtree with - | File (title, _) -> title - | Folder (title, _) -> title) - -let navTreeFromPaths (rootPath: IO.DirectoryInfo) (files: IO.FileInfo list) = - let rec addPath subFilePath parts nodes = - match parts with - | [] -> nodes - | hp :: tp -> addHeadPath subFilePath hp tp nodes - - and addHeadPath subFilePath (part: string) remainingParts (nodes: NavTree list) = - match nodes with - | [] -> - if part.EndsWith("html") then - File(IO.Path.GetFileNameWithoutExtension part, subFilePath) - else - Folder(part, addPath subFilePath remainingParts []) - |> List.singleton - | Folder (title, subnodes) :: nodes when title = part -> - Folder(title, addPath subFilePath remainingParts subnodes) - :: nodes - | hn :: tn -> - hn - :: addHeadPath subFilePath part remainingParts tn - - ([], files) - ||> List.fold - (fun state file -> - let subFilePath = - file.FullName.Replace(rootPath.FullName, "") - - let pathParts = - subFilePath.Split(IO.Path.DirectorySeparatorChar, StringSplitOptions.RemoveEmptyEntries) - |> Array.toList - - addPath subFilePath pathParts state) - - - -let generateNavMenus siteBaseUrl (navTree: NavTree list) = - let rec innerDo depth (navTree: NavTree list) = - navTree - |> List.map - (fun nav -> - match nav with - | File (title, link) when depth = 0 -> navItemText title (siteBaseUrl |> Uri.simpleCombine link) - | File (title, link) -> dropDownNavItem title (siteBaseUrl |> Uri.simpleCombine link) - | Folder (title, subtree) when depth = 0 -> - innerDo (depth + 1) subtree - |> dropDownNavMenu title - | Folder (title, subtree) -> - innerDo (depth + 1) subtree - |> dropdownSubMenu title) - - innerDo 0 navTree - - - -let generateNav (navCfg: NavConfig) = - nav [ Class "navbar navbar-expand-md sticky-top navbar-dark bg-dark" ] [ - a [ Class "navbar-brand" - Href( - navCfg.SiteBaseUrl - |> Uri.simpleCombine "/index.html" - ) ] [ - i [ Class "fa fa-car text-white mr-2" ] [] - str (navCfg.ProjectName) - ] - button [ Class "navbar-toggler" - Type "button" - DataToggle "collapse" - HTMLAttr.Custom("data-target", "#navbarNav") - HTMLAttr.Custom("aria-controls", "navbarNav") - HTMLAttr.Custom("aria-expanded", "false") - HTMLAttr.Custom("aria-label", "Toggle navigation") ] [ - span [ Class "navbar-toggler-icon" ] [] - ] - div [ Class "collapse navbar-collapse" - Id "navbarNav" ] [ - ul [ Class "navbar-nav mr-auto" ] [ - yield! - navTreeFromPaths navCfg.TopLevelNav.DocsRoot navCfg.TopLevelNav.DocsPages - |> sortNavTree - |> generateNavMenus navCfg.SiteBaseUrl - ] - ul [ Class "navbar-nav" ] [ - button [ Id "theme-toggle"; Class "" ] [ - str "" - ] - navItemIconOnly - (string navCfg.GitHubRepoUrl) - (sprintf "%s Repository on Github" navCfg.ProjectName) - [ i [ Class "fab fa-github fa-lg fa-fw text-light" ] [] ] - ] - ] - ] diff --git a/docsTool/templates/partMembers.fs b/docsTool/templates/partMembers.fs deleted file mode 100644 index dc42760..0000000 --- a/docsTool/templates/partMembers.fs +++ /dev/null @@ -1,127 +0,0 @@ -module PartMembers - -open System -open Fable.React -open Fable.React.Props -open FSharp.MetadataFormat -open System.Collections.Generic -open Helpers - -type ModuleByCategory = - { Index: int - GroupKey: string - Members: list - Name: string } - - -let signature (m: Member) = - seq { - if m.Details.Signature |> String.IsNullOrEmpty |> not then - yield - code [ Class "function-or-value" ] [ - str m.Details.Signature - ] - } - -let repoSourceLink (m: Member) = - seq { - if m.Details.FormatSourceLocation - |> String.IsNullOrEmpty - |> not then - yield - a [ Href m.Details.FormatSourceLocation - Class "float-right" - HTMLAttr.Custom("aria-label", "View source on GitHub") ] [ - yield i [ Class "fab fa-github text-dark" ] [] - ] - } - -let replaceh2withh5 (content: string) = - content.Replace("

    ", "

    ") - - -let normalize (content: string) = content |> replaceh2withh5 - - - -let commentBlock (c: Comment) = - let (|EmptyDefaultBlock|NonEmptyDefaultBlock|Section|) (KeyValue (section, content)) = - match section, content with - | "", c when String.IsNullOrEmpty c -> EmptyDefaultBlock - | "", c -> NonEmptyDefaultBlock c - | section, content -> Section(section, content) - - let renderSection (s: KeyValuePair) : Fable.React.ReactElement list = - match s with - | EmptyDefaultBlock -> [] - | NonEmptyDefaultBlock content -> - [ div [ Class "comment-block" ] [ - RawText(normalize content) - ] ] - | Section (name, content) -> - [ h5 [] [ str name ] // h2 is obnoxiously large for this context, go with the smaller h5 - RawText(normalize content) ] - - c.Sections |> List.collect renderSection - -let compiledName (m: Member) = - seq { - if m.Details.FormatCompiledName - |> String.IsNullOrEmpty - |> not then - yield - p [] [ - strong [] [ str "CompiledName:" ] - code [] [ - str m.Details.FormatCompiledName - ] - ] - } - -let partMembers (header: string) (tableHeader: string) (members: #seq) = - [ if members |> Seq.length > 0 then - yield h3 [] [ str header ] - - yield - table [ Class "table" ] [ - thead [] [ - - tr [] [ - th [ Class "fit" ] [ - - ] - th [] [ str tableHeader ] - - th [] [ str "Signature" ] - - th [] [ str "Description" ] - ] - ] - tbody [] [ - for it in members do - let id = Guid.NewGuid().ToString() - - yield - tr [] [ - td [] [ - Helpers.createAnchorIcon (it.Details.FormatUsage(40)) - ] - td [ Class "member-name" ] [ - code [ Class "function-or-value" - HTMLAttr.Custom("data-guid", id) ] [ - str (it.Details.FormatUsage(40)) - ] - ] - td [ Class "member-name" ] [ - yield! signature it - ] - - td [ Class "xmldoc" ] [ - yield! renderObsoleteMessage it - yield! repoSourceLink it - yield! commentBlock it.Comment - yield! compiledName it - ] - ] - ] - ] ] diff --git a/docsTool/templates/partNested.fs b/docsTool/templates/partNested.fs deleted file mode 100644 index 9b64fcf..0000000 --- a/docsTool/templates/partNested.fs +++ /dev/null @@ -1,71 +0,0 @@ -module PartNested - -open System -open Fable.React -open Fable.React.Props -open FSharp.MetadataFormat -open Helpers - -let partNested (types: Type array) (modules: Module array) = - [ if types.Length > 0 then - yield - table [ Class "table" ] [ - thead [] [ - tr [] [ - th [ Class "fit" ] [ - - ] - th [] [ str "Type" ] - th [] [ str "Description" ] - ] - ] - tbody [] [ - for t in types do - yield - tr [] [ - td [] [ - Helpers.createAnchorIcon t.Name - ] - td [ Class "type-name" ] [ - a [ Href(sprintf "%s.html" t.UrlName) ] [ - str t.Name - ] - ] - td [ Class "xmldoc" ] [ - yield! renderObsoleteMessage t - yield RawText t.Comment.Blurb - ] - ] - ] - ] - if modules.Length > 0 then - yield - table [ Class "table" ] [ - thead [] [ - tr [] [ - th [ Class "fit" ] [ - - ] - th [] [ str "Module" ] - th [] [ str "Description" ] - ] - ] - tbody [] [ - for t in modules do - yield - tr [] [ - td [] [ - Helpers.createAnchorIcon t.Name - ] - td [ Class "Modules-name" ] [ - a [ Href(sprintf "%s.html" t.UrlName) ] [ - str t.Name - ] - ] - td [ Class "xmldoc" ] [ - yield! renderObsoleteMessage t - yield RawText t.Comment.Blurb - ] - ] - ] - ] ] diff --git a/docsTool/templates/types.fs b/docsTool/templates/types.fs deleted file mode 100644 index c8d5df9..0000000 --- a/docsTool/templates/types.fs +++ /dev/null @@ -1,163 +0,0 @@ -module Types - -open System -open Fable.React -open Fable.React.Props -open FSharp.MetadataFormat -open PartMembers -open Helpers - -let generateTypeDocs (model: TypeInfo) (props) = - let members = model.Type.AllMembers - let comment = model.Type.Comment - let ``type`` = model.Type - - let byCategory = - members - |> List.groupBy (fun m -> m.Category) - |> List.sortBy - (fun (k, v) -> - if String.IsNullOrEmpty(k) then - "ZZZ" - else - k) - |> List.mapi - (fun i (k, v) -> - { Index = i - GroupKey = k - Members = - v - |> List.sortBy - (fun m -> - if m.Kind = MemberKind.StaticParameter then - "" - else - m.Name) - Name = - if String.IsNullOrEmpty(k) then - "Other type members" - else - k }) - - [ yield h1 [] [ str model.Type.Name ] - - yield - p [] [ - yield! renderObsoleteMessage model.Type - yield! renderNamespace model.Namespace - if model.HasParentModule then - yield br [] - - yield - span [] [ - str "Parent Module: " - - a [ Href(sprintf "%s.html" model.ParentModule.Value.UrlName) ] [ - str model.ParentModule.Value.Name - ] - ] - - - if ``type``.Attributes |> Seq.isEmpty |> not then - yield br [] - - yield - span [] [ - yield str "Attributes: " - - yield br [] - - for attr in ``type``.Attributes do - yield str (attr.Format()) - yield br [] - ] - ] - - yield - div [ Class "xmldoc" ] [ - for sec in comment.Sections do - if byCategory - |> Seq.exists (fun m -> m.GroupKey = sec.Key) - |> not then - if sec.Key <> "" then - yield h2 [] [ str sec.Key ] - - yield RawText sec.Value - ] - - if byCategory |> Seq.length > 1 then - yield h2 [] [ str "Table of contents" ] - - yield - ul [] [ - for g in byCategory do - yield - li [] [ - a [ Href(sprintf "#section%d" g.Index) ] [ - str g.Name - ] - ] - ] - - for g in byCategory do - if byCategory |> Seq.length > 1 then - yield - h2 [] [ - str g.Name - - a [ Name(sprintf "section%d" g.Index) ] [ - str " " - ] - ] - - match comment.Sections - |> Seq.tryFind (fun kvp -> kvp.Key = g.GroupKey) - with - | Some info -> - yield - div [ Class "xmldoc" ] [ - str info.Value - ] - | None -> yield nothing - - yield! - partMembers - "Union Cases" - "Union Case" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.UnionCase)) - - yield! - partMembers - "Record Fields" - "Record Field" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.RecordField)) - - yield! - partMembers - "Static parameters" - "Static parameters" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.StaticParameter)) - - yield! - partMembers - "Contructors" - "Constructor" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.Constructor)) - - yield! - partMembers - "Instance members" - "Instance member" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.InstanceMember)) - - yield! - partMembers - "Static members" - "Static member" - (g.Members - |> Seq.filter (fun m -> m.Kind = MemberKind.StaticMember)) ] diff --git a/global.json b/global.json index 1e7fdfa..75a166b 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { - "sdk": { - "version": "10.0.100", - "rollForward": "latestMinor" - } + "sdk": { + "version": "10.0.100", + "rollForward": "feature" + } } diff --git a/paket.dependencies b/paket.dependencies deleted file mode 100644 index ecfade6..0000000 --- a/paket.dependencies +++ /dev/null @@ -1,73 +0,0 @@ -group Src - source https://www.nuget.org/api/v2 - source https://api.nuget.org/v3/index.json - storage: none - - nuget FSharp.Core >= 9.0.100 - nuget Microsoft.SourceLink.GitHub 1.0.0 copy_local: true - nuget Microsoft.EntityFrameworkCore.Design ~> 10.0.0 - -group Tests - source https://www.nuget.org/api/v2 - source https://api.nuget.org/v3/index.json - storage: none - - nuget System.Collections.Immutable >= 10.0.0 - - nuget FSharp.Core >= 9.0.100 - nuget Microsoft.SourceLink.GitHub 1.0.0 copy_local: true - nuget Expecto 9.0.2 - nuget YoloDev.Expecto.TestSdk 0.12.10 - nuget Microsoft.NET.Test.Sdk 17.12.0 - nuget altcover ~> 8.2.828 - - nuget Microsoft.EntityFrameworkCore.Design ~> 10.0.0 - nuget Microsoft.EntityFrameworkCore.InMemory ~> 10.0.0 - nuget Microsoft.EntityFrameworkCore.Relational ~> 10.0.0 - nuget Microsoft.EntityFrameworkCore.Sqlite ~> 10.0.0 - nuget Microsoft.EntityFrameworkCore.SqlServer ~> 10.0.0 - nuget Microsoft.EntityFrameworkCore.Specification.Tests ~> 10.0.0 - nuget FSharp.Compiler.Service 43.9.100 - nuget Microsoft.CodeAnalysis >= 3.8.0 - nuget NetTopologySuite.IO.SqlServerBytes 2.0.0 - nuget System.Runtime.Numerics - nuget System.ComponentModel.Primitives - -// [ FAKE GROUP ] -group Build - storage: none - source https://www.nuget.org/api/v2 - source https://api.nuget.org/v3/index.json - nuget Fake.IO.FileSystem 6.1.4 - nuget Fake.Core.Target 6.1.4 - nuget Fake.Core.ReleaseNotes 6.1.4 - nuget FAKE.Core.Environment 6.1.4 - nuget Fake.DotNet.Cli 6.1.4 - nuget FAKE.Core.Process 6.1.4 - nuget Fake.DotNet.AssemblyInfoFile 6.1.4 - nuget Fake.Tools.Git 6.1.4 - nuget Fake.DotNet.Paket 6.1.4 - nuget Fake.Api.GitHub 6.1.4 - nuget Fake.BuildServer.GitHubActions 6.1.4 - nuget Argu - nuget Octokit >= 13.0.1 - -group Docs - storage: none - source https://www.nuget.org/api/v2 - source https://api.nuget.org/v3/index.json - nuget Argu - nuget FSharp.Compiler.Service 43.9.100 - nuget FSharp.Core ~> 9.0 - nuget Fake.IO.FileSystem 6.1.4 - nuget FAKE.Core.Environment 6.1.4 - nuget Fake.DotNet.Cli 6.1.4 - nuget FSharp.Formatting 4.0.0-rc1 - nuget FSharp.Literate 4.0.0-rc1 - nuget Fable.React - nuget Microsoft.EntityFrameworkCore.Sqlite ~> 10.0.0 - -group Analyzers - source https://www.nuget.org/api/v2 - source https://api.nuget.org/v3/index.json - nuget BinaryDefense.FSharp.Analyzers.Hashing 0.2.2 diff --git a/paket.lock b/paket.lock deleted file mode 100644 index 2db4f74..0000000 --- a/paket.lock +++ /dev/null @@ -1,1134 +0,0 @@ - - -GROUP Analyzers -NUGET - remote: https://www.nuget.org/api/v2 - BinaryDefense.FSharp.Analyzers.Hashing (0.2.2) - FSharp.Analyzers.SDK (>= 0.8) - restriction: >= net5.0 - FSharp.Core (>= 5.0.1) - restriction: >= net5.0 - FSharp.Analyzers.SDK (0.16) - restriction: >= net5.0 - FSharp.Compiler.Service (>= 43.7.400) - restriction: >= net6.0 - FSharp.Core (>= 7.0.400) - restriction: >= net6.0 - McMaster.NETCore.Plugins (>= 1.4) - restriction: >= net6.0 - FSharp.Compiler.Service (43.12.201) - restriction: >= net6.0 - FSharp.Core (10.1.201) - restriction: >= netstandard2.0 - System.Buffers (>= 4.6) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 9.0) - restriction: >= netstandard2.0 - System.Diagnostics.DiagnosticSource (>= 9.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.6) - restriction: >= netstandard2.0 - System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 9.0) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: >= netstandard2.0 - FSharp.Core (10.1.201) - restriction: >= net5.0 - McMaster.NETCore.Plugins (2.0) - restriction: >= net6.0 - System.Buffers (4.6.1) - restriction: >= net6.0 - System.Collections.Immutable (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net6.0) (&& (>= net8.0) (< net9.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Diagnostics.DiagnosticSource (10.0.5) - restriction: >= net6.0 - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (4.6.3) - restriction: >= net6.0 - System.Reflection.Emit (4.7) - restriction: >= net6.0 - System.Reflection.Metadata (10.0.5) - restriction: >= net6.0 - System.Collections.Immutable (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: >= net6.0 - -GROUP Build -STORAGE: NONE -NUGET - remote: https://www.nuget.org/api/v2 - Argu (6.2.5) - FSharp.Core (>= 6.0) - restriction: >= netstandard2.0 - System.Configuration.ConfigurationManager (>= 4.4) - restriction: >= netstandard2.0 - BlackFox.VsWhere (1.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.0.0.1) - restriction: >= net45 - FSharp.Core (>= 4.2.3) - restriction: && (< net45) (>= netstandard2.0) - Microsoft.Win32.Registry (>= 4.7) - restriction: && (< net45) (>= netstandard2.0) - Fake.Api.GitHub (6.1.4) - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Octokit (>= 13.0.1) - restriction: >= netstandard2.0 - Fake.BuildServer.GitHubActions (6.1.4) - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.CommandLineParsing (6.1.4) - restriction: >= netstandard2.0 - FParsec (>= 1.1.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Context (6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Environment (6.1.4) - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Process (6.1.4) - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 - Fake.Core.ReleaseNotes (6.1.4) - Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.SemVer (6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.String (6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Target (6.1.4) - Fake.Core.CommandLineParsing (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Control.Reactive (>= 5.0.2) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Tasks (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Trace (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Xml (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.DotNet.AssemblyInfoFile (6.1.4) - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (6.1.4) - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Mono.Posix.NETStandard (>= 1.0) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (6.1.4) - restriction: >= netstandard2.0 - BlackFox.VsWhere (>= 1.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (>= 2.1.815) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Tasks (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Xml (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Net.Http (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 13.0.3) - restriction: >= netstandard2.0 - NuGet.Protocol (>= 6.12.4) - restriction: >= netstandard2.0 - Fake.DotNet.Paket (6.1.4) - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (6.1.4) - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Net.Http (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Tools.Git (6.1.4) - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - FParsec (1.1.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.3.4) - restriction: || (>= net45) (>= netstandard2.0) - System.ValueTuple (>= 4.4) - restriction: >= net45 - FSharp.Control.Reactive (6.1.2) - restriction: >= netstandard2.0 - FSharp.Core (>= 6.0.7) - restriction: >= netstandard2.0 - System.Reactive (>= 6.0.1) - restriction: >= netstandard2.0 - FSharp.Core (10.1.201) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (10.0.5) - restriction: >= net472 - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Bcl.Cryptography (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) - System.Formats.Asn1 (>= 10.0.5) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Build.Framework (18.4) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 - System.Memory (>= 4.6.3) - restriction: >= net472 - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 - System.Text.Json (>= 10.0.1) - restriction: >= net472 - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 - System.ValueTuple (>= 4.6.1) - restriction: >= net472 - Microsoft.Build.Utilities.Core (18.4) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 18.4) - restriction: >= netstandard2.0 - Microsoft.IO.Redist (>= 6.1) - restriction: >= net472 - Microsoft.NET.StringTools (>= 18.4) - restriction: || (>= net10.0) (>= net472) - System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 - System.Configuration.ConfigurationManager (>= 10.0.1) - restriction: || (>= net10.0) (>= net472) - System.Diagnostics.EventLog (>= 10.0.1) - restriction: >= net10.0 - System.Memory (>= 4.6.3) - restriction: >= net472 - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 - System.Security.Cryptography.ProtectedData (>= 10.0.1) - restriction: >= net10.0 - System.Text.Json (>= 10.0.1) - restriction: >= net472 - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 - System.ValueTuple (>= 4.6.1) - restriction: >= net472 - Microsoft.IO.Redist (6.1.3) - restriction: >= net472 - System.Buffers (>= 4.6.1) - restriction: >= net472 - System.Memory (>= 4.6.3) - restriction: >= net472 - Microsoft.NET.StringTools (18.4) - restriction: || (>= net10.0) (>= net472) - System.Memory (>= 4.6.3) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) - Microsoft.NETCore.Platforms (7.0.4) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) - Microsoft.Win32.Registry (5.0) - restriction: && (< net45) (>= netstandard2.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (2.3.154) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.5) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 17.5) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 8.0) - restriction: && (< net10.0) (>= netstandard2.0) - System.Memory (>= 4.6) - restriction: && (< net10.0) (>= netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net10.0) (>= netstandard2.0) - Newtonsoft.Json (13.0.4) - restriction: >= netstandard2.0 - NuGet.Common (7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Frameworks (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Collections.Immutable (>= 8.0) - restriction: >= net472 - NuGet.Configuration (7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Common (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Security.Cryptography.ProtectedData (>= 8.0) - restriction: >= net8.0 - NuGet.Frameworks (7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Packaging (7.3) - restriction: || (>= net472) (>= net8.0) - Newtonsoft.Json (>= 13.0.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Configuration (>= 7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Versioning (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Security.Cryptography.Pkcs (>= 8.0.1) - restriction: >= net8.0 - System.Text.Json (>= 8.0.5) - restriction: >= net472 - NuGet.Protocol (7.3) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Text.Json (>= 8.0.5) - restriction: >= net472 - NuGet.Versioning (7.3) - restriction: || (>= net472) (>= net8.0) - Octokit (14.0) - System.Buffers (4.6.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net462) (>= netstandard2.0)) (>= net472) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Collections.Immutable (10.0.5) - restriction: >= netstandard2.0 - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Configuration.ConfigurationManager (10.0.5) - restriction: >= netstandard2.0 - System.Diagnostics.EventLog (>= 10.0.5) - restriction: >= net8.0 - System.Security.Cryptography.ProtectedData (>= 10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) - System.Diagnostics.EventLog (10.0.5) - restriction: >= net8.0 - System.Formats.Asn1 (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net462) (>= net9.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (>= net9.0) (< netstandard2.1)) - System.IO.Pipelines (10.0.5) - restriction: >= net472 - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (4.6.3) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net10.0) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net462) (>= netstandard2.0)) (>= net472) (&& (< net8.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (4.6.1) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Reactive (6.1) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< net6.0) (>= netstandard2.0)) (>= uap10.1) - System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (&& (>= net462) (>= netstandard2.0)) (>= net472) (&& (< net8.0) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Security.AccessControl (6.0.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) - System.Security.Cryptography.Pkcs (10.0.5) - restriction: >= net8.0 - Microsoft.Bcl.Cryptography (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - System.Formats.Asn1 (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) - System.Security.Cryptography.ProtectedData (10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) - System.Memory (>= 4.6.3) - restriction: && (< net462) (< net8.0) (>= netstandard2.0) - System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Text.Encodings.Web (10.0.5) - restriction: >= net472 - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Json (10.0.5) - restriction: >= net472 - Microsoft.Bcl.AsyncInterfaces (>= 10.0.5) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.IO.Pipelines (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Encodings.Web (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.ValueTuple (>= 4.6.1) - restriction: >= net462 - System.Threading.Tasks.Extensions (4.6.3) - restriction: || (>= net472) (&& (< net6.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.ValueTuple (4.6.2) - restriction: || (&& (>= net45) (>= netstandard2.0)) (>= net472) - -GROUP Docs -STORAGE: NONE -NUGET - remote: https://www.nuget.org/api/v2 - Argu (6.2.5) - FSharp.Core (>= 6.0) - restriction: >= netstandard2.0 - System.Configuration.ConfigurationManager (>= 4.4) - restriction: >= netstandard2.0 - BlackFox.VsWhere (1.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.0.0.1) - restriction: >= net45 - FSharp.Core (>= 4.2.3) - restriction: && (< net45) (>= netstandard2.0) - Microsoft.Win32.Registry (>= 4.7) - restriction: && (< net45) (>= netstandard2.0) - Fable.Browser.Blob (1.4) - restriction: >= netstandard2.0 - Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Browser.Dom (2.20) - restriction: >= netstandard2.0 - Fable.Browser.Blob (>= 1.4) - restriction: >= netstandard2.0 - Fable.Browser.Event (>= 1.7) - restriction: >= netstandard2.0 - Fable.Browser.WebStorage (>= 1.3) - restriction: >= netstandard2.0 - Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Browser.Event (1.7) - restriction: >= netstandard2.0 - Fable.Browser.Gamepad (>= 1.3) - restriction: >= netstandard2.0 - Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Browser.Gamepad (1.3) - restriction: >= netstandard2.0 - Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Browser.WebStorage (1.3) - restriction: >= netstandard2.0 - Fable.Browser.Event (>= 1.6) - restriction: >= netstandard2.0 - Fable.Core (>= 3.2.8) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.Core (4.5) - restriction: >= netstandard2.0 - Fable.React (9.4) - Fable.React.Types (>= 18.3) - restriction: >= netstandard2.0 - Fable.ReactDom.Types (>= 18.2) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.React.Types (18.4) - restriction: >= netstandard2.0 - Fable.Browser.Dom (>= 2.4.4) - restriction: >= netstandard2.0 - Fable.Core (>= 3.2.7) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fable.ReactDom.Types (18.2) - restriction: >= netstandard2.0 - Fable.React.Types (>= 18.3) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7.2) - restriction: >= netstandard2.0 - Fake.Core.Context (6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Environment (6.1.4) - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Context (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Process (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 - Fake.Core.SemVer (6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.String (6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Tasks (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Trace (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.FakeVar (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Core.Xml (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.DotNet.Cli (6.1.4) - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Mono.Posix.NETStandard (>= 1.0) - restriction: >= netstandard2.0 - Fake.DotNet.MSBuild (6.1.4) - restriction: >= netstandard2.0 - BlackFox.VsWhere (>= 1.1) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (>= 2.1.815) - restriction: >= netstandard2.0 - Fake.DotNet.NuGet (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Environment (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Process (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.SemVer (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Tasks (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Xml (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Net.Http (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 13.0.3) - restriction: >= netstandard2.0 - NuGet.Protocol (>= 6.12.4) - restriction: >= netstandard2.0 - Fake.IO.FileSystem (6.1.4) - Fake.Core.String (>= 6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - Fake.Net.Http (6.1.4) - restriction: >= netstandard2.0 - Fake.Core.Trace (>= 6.1.4) - restriction: >= netstandard2.0 - FSharp.Core (>= 8.0.400) - restriction: >= netstandard2.0 - FSharp.Compiler.Service (43.9.100) - FSharp.Core (9.0.100) - restriction: >= netstandard2.0 - System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 - System.Diagnostics.DiagnosticSource (>= 8.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.5) - restriction: >= netstandard2.0 - System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 8.0) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: >= netstandard2.0 - FSharp.Core (9.0.100) - FSharp.Formatting (4.0.0-rc1) - FSharp.Compiler.Service (>= 34.1) - restriction: >= netstandard2.0 - FSharp.Literate (4.0.0-rc1) - FSharp.Compiler.Service (>= 34.1) - restriction: >= netstandard2.0 - FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (10.0.5) - restriction: >= net472 - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Bcl.Cryptography (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) - System.Formats.Asn1 (>= 10.0.5) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Build.Framework (18.4) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 - System.Memory (>= 4.6.3) - restriction: >= net472 - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 - System.Text.Json (>= 10.0.1) - restriction: >= net472 - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 - System.ValueTuple (>= 4.6.1) - restriction: >= net472 - Microsoft.Build.Utilities.Core (18.4) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 18.4) - restriction: >= netstandard2.0 - Microsoft.IO.Redist (>= 6.1) - restriction: >= net472 - Microsoft.NET.StringTools (>= 18.4) - restriction: || (>= net10.0) (>= net472) - System.Collections.Immutable (>= 10.0.1) - restriction: >= net472 - System.Configuration.ConfigurationManager (>= 10.0.1) - restriction: || (>= net10.0) (>= net472) - System.Diagnostics.EventLog (>= 10.0.1) - restriction: >= net10.0 - System.Memory (>= 4.6.3) - restriction: >= net472 - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: >= net472 - System.Security.Cryptography.ProtectedData (>= 10.0.1) - restriction: >= net10.0 - System.Text.Json (>= 10.0.1) - restriction: >= net472 - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: >= net472 - System.ValueTuple (>= 4.6.1) - restriction: >= net472 - Microsoft.Data.Sqlite.Core (10.0.5) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Analyzers (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Sqlite (10.0.5) - Microsoft.EntityFrameworkCore.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - SQLitePCLRaw.bundle_e_sqlite3 (>= 2.1.11) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Sqlite.Core (10.0.5) - restriction: >= net10.0 - Microsoft.Data.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Caching.Memory (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (10.0.5) - restriction: >= net10.0 - Microsoft.IO.Redist (6.1.3) - restriction: >= net472 - System.Buffers (>= 4.6.1) - restriction: >= net472 - System.Memory (>= 4.6.3) - restriction: >= net472 - Microsoft.NET.StringTools (18.4) - restriction: || (>= net10.0) (>= net472) - System.Memory (>= 4.6.3) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (&& (< net10.0) (>= netstandard2.0)) (>= net472) - Microsoft.NETCore.Platforms (7.0.4) - restriction: || (&& (>= monoandroid) (>= netcoreapp2.0) (< netstandard1.3)) (&& (>= monoandroid) (>= netcoreapp2.1) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= monotouch) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netcoreapp2.1)) (&& (>= net461) (>= netcoreapp2.0)) (&& (>= net461) (>= netcoreapp2.1)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinios)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinmac)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarintvos)) (&& (>= netcoreapp2.0) (< netcoreapp2.1) (>= xamarinwatchos)) (&& (>= netcoreapp2.0) (>= uap10.1)) (&& (< netcoreapp2.0) (>= netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) (&& (>= netcoreapp2.1) (>= uap10.1)) - Microsoft.Win32.Registry (5.0) - restriction: && (< net45) (>= netstandard2.0) - System.Buffers (>= 4.5.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Memory (>= 4.5.4) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= uap10.1) - System.Security.AccessControl (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3)) (&& (< monoandroid) (>= netcoreapp2.0)) (>= monotouch) (&& (< net46) (< netcoreapp2.0) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.1) (>= uap10.1) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Mono.Posix.NETStandard (1.0) - restriction: >= netstandard2.0 - MSBuild.StructuredLogger (2.3.154) - restriction: >= netstandard2.0 - Microsoft.Build.Framework (>= 17.5) - restriction: >= netstandard2.0 - Microsoft.Build.Utilities.Core (>= 17.5) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 8.0) - restriction: && (< net10.0) (>= netstandard2.0) - System.Memory (>= 4.6) - restriction: && (< net10.0) (>= netstandard2.0) - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net10.0) (>= netstandard2.0) - Newtonsoft.Json (13.0.4) - restriction: >= netstandard2.0 - NuGet.Common (7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Frameworks (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Collections.Immutable (>= 8.0) - restriction: >= net472 - NuGet.Configuration (7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Common (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Security.Cryptography.ProtectedData (>= 8.0) - restriction: >= net8.0 - NuGet.Frameworks (7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Packaging (7.3) - restriction: || (>= net472) (>= net8.0) - Newtonsoft.Json (>= 13.0.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Configuration (>= 7.3) - restriction: || (>= net472) (>= net8.0) - NuGet.Versioning (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Security.Cryptography.Pkcs (>= 8.0.1) - restriction: >= net8.0 - System.Text.Json (>= 8.0.5) - restriction: >= net472 - NuGet.Protocol (7.3) - restriction: >= netstandard2.0 - NuGet.Packaging (>= 7.3) - restriction: || (>= net472) (>= net8.0) - System.Text.Json (>= 8.0.5) - restriction: >= net472 - NuGet.Versioning (7.3) - restriction: || (>= net472) (>= net8.0) - SourceGear.sqlite3 (3.50.4.5) - restriction: >= net10.0 - SQLitePCLRaw.bundle_e_sqlite3 (3.0.2) - restriction: >= net10.0 - SourceGear.sqlite3 (>= 3.50.4.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (>= 3.0.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (3.0.2) - restriction: >= net10.0 - SQLitePCLRaw.provider.e_sqlite3 (>= 3.0.2) - restriction: || (>= net471) (&& (>= net8.0) (< net8.0-ios) (< net8.0-tvos)) (&& (< net8.0) (>= netstandard2.0)) - SQLitePCLRaw.core (3.0.2) - restriction: >= net10.0 - System.Memory (>= 4.6.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.provider.e_sqlite3 (3.0.2) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 3.0.2) - restriction: >= netstandard2.0 - System.Buffers (4.6.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Configuration.ConfigurationManager (10.0.5) - restriction: >= netstandard2.0 - System.Diagnostics.EventLog (>= 10.0.5) - restriction: >= net8.0 - System.Security.Cryptography.ProtectedData (>= 10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) - System.Diagnostics.DiagnosticSource (10.0.5) - restriction: >= netstandard2.0 - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Diagnostics.EventLog (10.0.5) - restriction: >= net8.0 - System.Formats.Asn1 (10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net462) (>= net8.0)) (&& (>= net462) (>= net9.0)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (>= net9.0) (< netstandard2.1)) - System.IO.Pipelines (10.0.5) - restriction: >= net472 - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (4.6.3) - restriction: || (&& (< monoandroid) (>= netcoreapp2.0) (< netcoreapp2.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= netstandard2.0) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (4.6.1) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Reflection.Emit (4.7) - restriction: >= netstandard2.0 - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reflection.Metadata (10.0.5) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: >= netstandard2.0 - System.Security.AccessControl (6.0.1) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - System.Security.Principal.Windows (>= 5.0) - restriction: || (>= net461) (&& (< net6.0) (>= netstandard2.0)) - System.Security.Cryptography.Pkcs (10.0.5) - restriction: >= net8.0 - Microsoft.Bcl.Cryptography (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - System.Formats.Asn1 (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) - System.Security.Cryptography.ProtectedData (10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) - System.Memory (>= 4.6.3) - restriction: && (< net462) (< net8.0) (>= netstandard2.0) - System.Security.Principal.Windows (5.0) - restriction: || (&& (>= monoandroid) (< netstandard1.3) (>= netstandard2.0)) (&& (< monoandroid) (>= netcoreapp2.0)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net45) (>= net461) (>= netstandard2.0)) (&& (< net45) (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= net461) (>= netcoreapp2.0)) (>= netcoreapp2.1) (&& (>= netstandard2.0) (>= uap10.1)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) (>= xamarinios) (>= xamarinmac) - Microsoft.NETCore.Platforms (>= 5.0) - restriction: || (&& (>= netcoreapp2.0) (< netcoreapp2.1)) (&& (>= netcoreapp2.1) (< netcoreapp3.0)) - System.Text.Encodings.Web (10.0.5) - restriction: >= net472 - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Json (10.0.5) - restriction: >= net472 - Microsoft.Bcl.AsyncInterfaces (>= 10.0.5) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.IO.Pipelines (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Encodings.Web (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.ValueTuple (>= 4.6.1) - restriction: >= net462 - System.Threading.Tasks.Extensions (4.6.3) - restriction: >= net472 - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.ValueTuple (4.6.2) - restriction: >= net472 - -GROUP Src -STORAGE: NONE -NUGET - remote: https://www.nuget.org/api/v2 - FSharp.Core (9.0.100) - Humanizer.Core (3.0.10) - restriction: >= net10.0 - Microsoft.Build.Framework (18.4) - restriction: >= net10.0 - Microsoft.Build.Tasks.Git (10.0.201) - copy_local: true - System.IO.Hashing (>= 10.0.5) - restriction: || (>= net472) (>= net8.0) - Microsoft.CodeAnalysis.Analyzers (5.3) - restriction: >= net10.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= net10.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= net10.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (5.3) - restriction: >= net10.0 - Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 - System.Composition (>= 9.0) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= net10.0 - Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - System.Composition (>= 9.0) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.MSBuild (5.3) - restriction: >= net10.0 - Humanizer.Core (>= 2.14.1) - restriction: || (>= net472) (>= net8.0) - Microsoft.Build.Framework (>= 17.11.48) - restriction: >= net8.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: || (>= net472) (>= net8.0) - Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.DependencyInjection (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Logging (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Logging.Abstractions (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Options (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Primitives (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.VisualStudio.SolutionPersistence (>= 1.0.52) - restriction: || (>= net472) (>= net8.0) - System.Composition (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.EntityFrameworkCore (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Analyzers (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Design (10.0.5) - Humanizer.Core (>= 2.14.1) - restriction: >= net10.0 - Microsoft.Build.Framework (>= 18.0.2) - restriction: >= net10.0 - Microsoft.CodeAnalysis.CSharp (>= 5.0) - restriction: >= net10.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (>= 5.0) - restriction: >= net10.0 - Microsoft.CodeAnalysis.Workspaces.MSBuild (>= 5.0) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Mono.TextTemplating (>= 3.0) - restriction: >= net10.0 - Newtonsoft.Json (>= 13.0.3) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Caching.Memory (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (10.0.5) - restriction: >= net10.0 - Microsoft.SourceLink.Common (10.0.201) - copy_local: true - Microsoft.SourceLink.GitHub (1.0) - copy_local: true - Microsoft.Build.Tasks.Git (>= 1.0) - Microsoft.SourceLink.Common (>= 1.0) - Microsoft.VisualStudio.SolutionPersistence (1.0.52) - restriction: >= net10.0 - Mono.TextTemplating (3.0) - restriction: >= net10.0 - System.CodeDom (>= 6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) - Newtonsoft.Json (13.0.4) - restriction: >= net10.0 - System.Buffers (4.6.1) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) - System.CodeDom (10.0.5) - restriction: >= net10.0 - System.Composition (10.0.5) - restriction: >= net10.0 - System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Convention (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.TypedParts (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.AttributedModel (10.0.5) - restriction: >= net10.0 - System.Composition.Convention (10.0.5) - restriction: >= net10.0 - System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Hosting (10.0.5) - restriction: >= net10.0 - System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Runtime (10.0.5) - restriction: >= net10.0 - System.Composition.TypedParts (10.0.5) - restriction: >= net10.0 - System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.IO.Hashing (10.0.5) - copy_local: true, restriction: || (>= net472) (>= net8.0) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (4.6.3) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (4.6.1) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) - System.Runtime.CompilerServices.Unsafe (6.1.2) - copy_local: true, restriction: || (&& (>= net462) (>= net8.0)) (>= net472) - -GROUP Tests -STORAGE: NONE -NUGET - remote: https://www.nuget.org/api/v2 - altcover (8.2.828) - Castle.Core (5.2.1) - restriction: >= net10.0 - System.Diagnostics.EventLog (>= 6.0) - restriction: >= net6.0 - Expecto (9.0.2) - FSharp.Core (>= 4.6) - restriction: || (>= net461) (>= netstandard2.0) - Mono.Cecil (>= 0.11.2) - restriction: || (>= net461) (>= netstandard2.0) - FSharp.Compiler.Service (43.9.100) - FSharp.Core (9.0.100) - restriction: >= netstandard2.0 - System.Buffers (>= 4.5.1) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 8.0) - restriction: >= netstandard2.0 - System.Diagnostics.DiagnosticSource (>= 8.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.5.5) - restriction: >= netstandard2.0 - System.Reflection.Emit (>= 4.7) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 8.0) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 6.0) - restriction: >= netstandard2.0 - FSharp.Core (9.0.100) - Humanizer.Core (3.0.10) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 9.0.10) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) - System.ComponentModel.Annotations (>= 5.0) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) - Microsoft.Bcl.AsyncInterfaces (10.0.5) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Bcl.Cryptography (10.0.5) - restriction: >= net10.0 - Microsoft.Build.Framework (18.4) - restriction: >= net10.0 - Microsoft.Build.Tasks.Git (10.0.201) - copy_local: true - System.IO.Hashing (>= 10.0.5) - restriction: || (>= net472) (>= net8.0) - Microsoft.CodeAnalysis (5.3) - Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic.Workspaces (5.3) - restriction: >= netstandard2.0 - System.Buffers (>= 4.6) - restriction: >= netstandard2.0 - System.Collections.Immutable (>= 9.0) - restriction: >= netstandard2.0 - System.Composition (>= 9.0) - restriction: >= netstandard2.0 - System.IO.Pipelines (>= 9.0) - restriction: >= netstandard2.0 - System.Memory (>= 4.6) - restriction: >= netstandard2.0 - System.Numerics.Vectors (>= 4.6) - restriction: >= netstandard2.0 - System.Reflection.Metadata (>= 9.0) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: >= netstandard2.0 - System.Text.Encoding.CodePages (>= 8.0) - restriction: >= netstandard2.0 - System.Threading.Channels (>= 8.0) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.6) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (5.3) - restriction: >= netstandard2.0 - Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: && (< net8.0) (>= netstandard2.0) - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.CSharp (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 - System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Composition (>= 9.0) - restriction: >= netstandard2.0 - System.IO.Pipelines (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) - System.Threading.Channels (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - Microsoft.CodeAnalysis.VisualBasic (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - Microsoft.CodeAnalysis.VisualBasic.Workspaces (5.3) - restriction: >= netstandard2.0 - Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: && (< net8.0) (>= netstandard2.0) - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.VisualBasic (5.3) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 - System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Composition (>= 9.0) - restriction: >= netstandard2.0 - System.IO.Pipelines (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) - System.Threading.Channels (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: >= netstandard2.0 - Humanizer.Core (>= 2.14.1) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 9.0) - restriction: && (< net8.0) (>= netstandard2.0) - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: >= netstandard2.0 - Microsoft.CodeAnalysis.Common (5.3) - restriction: >= netstandard2.0 - System.Buffers (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Collections.Immutable (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Composition (>= 9.0) - restriction: >= netstandard2.0 - System.IO.Pipelines (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Numerics.Vectors (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - System.Reflection.Metadata (>= 9.0) - restriction: || (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1) - restriction: && (< net8.0) (>= netstandard2.0) - System.Text.Encoding.CodePages (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) - System.Threading.Channels (>= 8.0) - restriction: && (< net8.0) (>= netstandard2.0) - System.Threading.Tasks.Extensions (>= 4.6) - restriction: && (< net8.0) (>= netstandard2.0) - Microsoft.CodeAnalysis.Workspaces.MSBuild (5.3) - restriction: >= net10.0 - Humanizer.Core (>= 2.14.1) - restriction: || (>= net472) (>= net8.0) - Microsoft.Build.Framework (>= 17.11.48) - restriction: >= net8.0 - Microsoft.CodeAnalysis.Analyzers (>= 5.3.0-2.25625.1) - restriction: || (>= net472) (>= net8.0) - Microsoft.CodeAnalysis.Workspaces.Common (5.3) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.DependencyInjection (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Logging (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Logging.Abstractions (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Options (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.Extensions.Primitives (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.VisualStudio.SolutionPersistence (>= 1.0.52) - restriction: || (>= net472) (>= net8.0) - System.Composition (>= 9.0) - restriction: || (>= net472) (>= net8.0) - Microsoft.CodeCoverage (18.3) - restriction: || (>= net462) (>= netcoreapp3.1) - Microsoft.Data.SqlClient (7.0) - restriction: >= net10.0 - Microsoft.Bcl.Cryptography (>= 9.0.13) - restriction: >= net9.0 - Microsoft.Data.SqlClient.Extensions.Abstractions (>= 1.0) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Data.SqlClient.Internal.Logging (>= 1.0) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Data.SqlClient.SNI.runtime (>= 6.0.2) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) - Microsoft.Extensions.Caching.Memory (>= 9.0.13) - restriction: >= net9.0 - Microsoft.IdentityModel.JsonWebTokens (>= 8.16) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 8.16) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.SqlServer.Server (>= 1.0) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) - System.Configuration.ConfigurationManager (>= 9.0.13) - restriction: >= net9.0 - System.Security.Cryptography.Pkcs (>= 9.0.13) - restriction: >= net9.0 - Microsoft.Data.SqlClient.Extensions.Abstractions (1.0) - restriction: >= net10.0 - Microsoft.Data.SqlClient.Internal.Logging (>= 1.0) - restriction: >= netstandard2.0 - Microsoft.Data.SqlClient.Internal.Logging (1.0) - restriction: >= net10.0 - Microsoft.Data.SqlClient.SNI.runtime (6.0.2) - restriction: >= net10.0 - Microsoft.Data.Sqlite.Core (10.0.5) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 - Microsoft.EntityFrameworkCore (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Analyzers (10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Design (10.0.5) - Humanizer.Core (>= 2.14.1) - restriction: >= net10.0 - Microsoft.Build.Framework (>= 18.0.2) - restriction: >= net10.0 - Microsoft.CodeAnalysis.CSharp (>= 5.0) - restriction: >= net10.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (>= 5.0) - restriction: >= net10.0 - Microsoft.CodeAnalysis.Workspaces.MSBuild (>= 5.0) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Mono.TextTemplating (>= 3.0) - restriction: >= net10.0 - Newtonsoft.Json (>= 13.0.3) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.InMemory (10.0.5) - Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Proxies (10.0.5) - restriction: >= net10.0 - Castle.Core (>= 5.2.1) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (10.0.5) - Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Specification.Tests (10.0.5) - Castle.Core (>= 5.2.1) - restriction: >= net10.0 - Humanizer.Core (>= 2.14.1) - restriction: >= net10.0 - Microsoft.Build.Framework (>= 18.0.2) - restriction: >= net10.0 - Microsoft.CodeAnalysis.CSharp (>= 5.0) - restriction: >= net10.0 - Microsoft.CodeAnalysis.CSharp.Workspaces (>= 5.0) - restriction: >= net10.0 - Microsoft.CodeAnalysis.Workspaces.MSBuild (>= 5.0) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Analyzers (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Design (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Proxies (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Mono.TextTemplating (>= 3.0) - restriction: >= net10.0 - NetTopologySuite (>= 2.6) - restriction: >= net10.0 - NetTopologySuite.IO.GeoJSON (>= 4.0) - restriction: >= net10.0 - Newtonsoft.Json (>= 13.0.3) - restriction: >= net10.0 - xunit.assert (>= 2.9.3) - restriction: >= net10.0 - xunit.core (>= 2.9.3) - restriction: >= net10.0 - xunit.runner.visualstudio (>= 3.1.3) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Sqlite (10.0.5) - Microsoft.EntityFrameworkCore.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - SQLitePCLRaw.bundle_e_sqlite3 (>= 2.1.11) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Sqlite.Core (10.0.5) - restriction: >= net10.0 - Microsoft.Data.Sqlite.Core (>= 10.0.5) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.SqlServer (10.0.5) - Microsoft.Data.SqlClient (>= 6.1.1) - restriction: >= net10.0 - Microsoft.EntityFrameworkCore.Relational (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Memory (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (>= 10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Caching.Memory (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Caching.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyModel (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.Logging (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (10.0.5) - restriction: >= net10.0 - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (10.0.5) - restriction: >= net10.0 - Microsoft.IdentityModel.Abstractions (8.17) - restriction: >= net10.0 - Microsoft.IdentityModel.JsonWebTokens (8.17) - restriction: >= net10.0 - Microsoft.IdentityModel.Tokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.IdentityModel.Logging (8.17) - restriction: >= net10.0 - Microsoft.IdentityModel.Abstractions (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.IdentityModel.Protocols (8.17) - restriction: >= net10.0 - Microsoft.IdentityModel.Tokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.IdentityModel.Protocols.OpenIdConnect (8.17) - restriction: >= net10.0 - Microsoft.IdentityModel.Protocols (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - System.IdentityModel.Tokens.Jwt (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.IdentityModel.Tokens (8.17) - restriction: >= net10.0 - Microsoft.Extensions.Logging.Abstractions (>= 8.0) - restriction: >= net8.0 - Microsoft.IdentityModel.Logging (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.NET.Test.Sdk (17.12) - Microsoft.CodeCoverage (>= 17.12) - restriction: || (>= net462) (>= netcoreapp3.1) - Microsoft.TestPlatform.TestHost (>= 17.12) - restriction: >= netcoreapp3.1 - Microsoft.NETCore.Platforms (7.0.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Targets (5.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.SourceLink.Common (10.0.201) - copy_local: true - Microsoft.SourceLink.GitHub (1.0) - copy_local: true - Microsoft.Build.Tasks.Git (>= 1.0) - Microsoft.SourceLink.Common (>= 1.0) - Microsoft.SqlServer.Server (1.0) - restriction: >= net10.0 - Microsoft.TestPlatform.ObjectModel (18.3) - restriction: >= net8.0 - System.Reflection.Metadata (>= 8.0) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.TestPlatform.TestHost (18.3) - restriction: >= netcoreapp3.1 - Microsoft.TestPlatform.ObjectModel (>= 18.3) - restriction: >= net8.0 - Newtonsoft.Json (>= 13.0.3) - restriction: >= net8.0 - Microsoft.VisualStudio.SolutionPersistence (1.0.52) - restriction: >= net10.0 - Mono.Cecil (0.11.6) - restriction: || (>= net461) (>= netstandard2.0) - Mono.TextTemplating (3.0) - restriction: >= net10.0 - System.CodeDom (>= 6.0) - restriction: || (&& (< net472) (>= netstandard2.0)) (>= net6.0) - NetTopologySuite (2.6) - restriction: >= netstandard2.0 - System.Memory (>= 4.6) - restriction: && (>= netstandard2.0) (< netstandard2.1) - NetTopologySuite.Features (2.2) - restriction: >= net10.0 - NetTopologySuite (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 - NetTopologySuite.IO.GeoJSON (4.0) - restriction: >= net10.0 - NetTopologySuite (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 - NetTopologySuite.Features (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 - Newtonsoft.Json (>= 13.0.1) - restriction: >= netstandard2.0 - NetTopologySuite.IO.SqlServerBytes (2.0) - NetTopologySuite (>= 2.0 < 3.0.0-A) - restriction: >= netstandard2.0 - Newtonsoft.Json (13.0.4) - restriction: >= net8.0 - SourceGear.sqlite3 (3.50.4.5) - restriction: >= net10.0 - SQLitePCLRaw.bundle_e_sqlite3 (3.0.2) - restriction: >= net10.0 - SourceGear.sqlite3 (>= 3.50.4.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (>= 3.0.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (3.0.2) - restriction: >= net10.0 - SQLitePCLRaw.provider.e_sqlite3 (>= 3.0.2) - restriction: || (>= net471) (&& (>= net8.0) (< net8.0-ios) (< net8.0-tvos)) (&& (< net8.0) (>= netstandard2.0)) - SQLitePCLRaw.core (3.0.2) - restriction: >= net10.0 - System.Memory (>= 4.6.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.provider.e_sqlite3 (3.0.2) - restriction: >= net10.0 - SQLitePCLRaw.core (>= 3.0.2) - restriction: >= netstandard2.0 - System.Buffers (4.6.1) - restriction: || (>= net462) (>= netstandard2.0) - System.CodeDom (10.0.5) - restriction: >= net10.0 - System.Collections.Immutable (10.0.5) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.ComponentModel (4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.ComponentModel.Annotations (5.0) - restriction: || (>= net48) (&& (< net8.0) (>= netstandard2.0)) - System.ComponentModel.Primitives (4.3) - System.ComponentModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Composition (10.0.5) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Convention (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.TypedParts (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.AttributedModel (10.0.5) - restriction: >= netstandard2.0 - System.Composition.Convention (10.0.5) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Hosting (10.0.5) - restriction: >= netstandard2.0 - System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Runtime (10.0.5) - restriction: >= netstandard2.0 - System.Composition.TypedParts (10.0.5) - restriction: >= netstandard2.0 - System.Composition.AttributedModel (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Hosting (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Composition.Runtime (>= 10.0.5) - restriction: || (>= net462) (>= netstandard2.0) - System.Configuration.ConfigurationManager (10.0.5) - restriction: >= net10.0 - System.Diagnostics.EventLog (>= 10.0.5) - restriction: >= net8.0 - System.Security.Cryptography.ProtectedData (>= 10.0.5) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net8.0) - System.Diagnostics.DiagnosticSource (10.0.5) - restriction: >= netstandard2.0 - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Diagnostics.EventLog (10.0.5) - restriction: >= net10.0 - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.IdentityModel.Tokens.Jwt (8.17) - restriction: >= net10.0 - Microsoft.IdentityModel.JsonWebTokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.IdentityModel.Tokens (>= 8.17) - restriction: || (>= net462) (>= netstandard2.0) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO.Hashing (10.0.5) - copy_local: true, restriction: || (>= net472) (>= net8.0) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.IO.Pipelines (10.0.5) - restriction: || (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (4.6.3) - restriction: || (>= net462) (>= netstandard2.0) - System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Numerics.Vectors (4.6.1) - restriction: || (>= net462) (>= netstandard2.0) - System.Reflection (4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Reflection.Emit (4.7) - restriction: >= netstandard2.0 - System.Reflection.Emit.ILGeneration (>= 4.7) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< netstandard2.0) (< win8) (< wpa81) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= portable-net45+win8+wpa81) (< win8)) (&& (< netstandard1.1) (>= win8)) (&& (< netstandard2.0) (>= wpa81)) (>= uap10.1) - System.Reflection.Emit.ILGeneration (4.7) - restriction: || (&& (< monoandroid) (< net45) (< netcoreapp2.0) (>= netstandard2.0) (< netstandard2.1) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (>= netstandard2.0) (< win8)) (&& (< netstandard1.1) (>= netstandard2.0) (>= win8)) (&& (>= netstandard2.0) (>= uap10.1)) - System.Reflection.Metadata (10.0.5) - restriction: || (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) - System.Collections.Immutable (>= 10.0.5) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (>= net462) (>= netstandard2.0) - System.Runtime.Extensions (4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - System.Runtime.Numerics (4.3) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Pkcs (10.0.5) - restriction: >= net10.0 - System.Security.Cryptography.ProtectedData (10.0.5) - restriction: >= net10.0 - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Text.Encoding.CodePages (10.0.5) - restriction: >= netstandard2.0 - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.ValueTuple (>= 4.6.1) - restriction: >= net462 - System.Threading.Channels (10.0.5) - restriction: >= netstandard2.0 - Microsoft.Bcl.AsyncInterfaces (>= 10.0.5) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (< netstandard1.3) (>= netstandard1.5) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) - System.Threading.Tasks.Extensions (4.6.3) - restriction: >= netstandard2.0 - System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.ValueTuple (4.6.2) - restriction: && (>= net462) (>= netstandard2.0) - xunit.abstractions (2.0.3) - restriction: >= net10.0 - xunit.assert (2.9.3) - restriction: >= net10.0 - xunit.core (2.9.3) - restriction: >= net10.0 - xunit.extensibility.core (2.9.3) - xunit.extensibility.execution (2.9.3) - xunit.extensibility.core (2.9.3) - restriction: >= net10.0 - xunit.abstractions (>= 2.0.3) - restriction: >= netstandard1.1 - xunit.extensibility.execution (2.9.3) - restriction: >= net10.0 - xunit.extensibility.core (2.9.3) - restriction: >= netstandard1.1 - xunit.runner.visualstudio (3.1.5) - restriction: >= net10.0 - YoloDev.Expecto.TestSdk (0.12.10) - Expecto (>= 9.0 < 10.0) - restriction: >= netcoreapp2.1 - FSharp.Core (>= 4.6) - restriction: >= netcoreapp2.1 - System.Collections.Immutable (>= 1.5) - restriction: >= netcoreapp2.1 diff --git a/src/EFCore.FSharp/AssemblyInfo.fs b/src/EFCore.FSharp/AssemblyInfo.fs index 349e388..cc12f2c 100644 --- a/src/EFCore.FSharp/AssemblyInfo.fs +++ b/src/EFCore.FSharp/AssemblyInfo.fs @@ -1,23 +1,40 @@ // Auto-Generated by FAKE; do not edit namespace System + open System.Reflection [] [] [] -[] +[] [] [] -[] -[] +[] +[] do () module internal AssemblyVersionInformation = - let [] AssemblyTitle = "EFCore.FSharp" - let [] AssemblyProduct = "EFCore.FSharp" - let [] AssemblyVersion = "10.0.0" - let [] AssemblyMetadata_ReleaseDate = "2026-10-27T00:00:00.0000000+00:00" - let [] AssemblyFileVersion = "10.0.0" - let [] AssemblyInformationalVersion = "10.0.0" - let [] AssemblyMetadata_ReleaseChannel = "release" - let [] AssemblyMetadata_GitHash = "421530178dc789efca8d310c044405822a5d2e77" + [] + let AssemblyTitle = "EFCore.FSharp" + + [] + let AssemblyProduct = "EFCore.FSharp" + + [] + let AssemblyVersion = "10.0.0" + + [] + let AssemblyMetadata_ReleaseDate = "2026-10-27T00:00:00.0000000+00:00" + + [] + let AssemblyFileVersion = "10.0.0" + + [] + let AssemblyInformationalVersion = "10.0.0" + + [] + let AssemblyMetadata_ReleaseChannel = "release" + + [] + let AssemblyMetadata_GitHash = + "421530178dc789efca8d310c044405822a5d2e77" diff --git a/src/EFCore.FSharp/DbContextHelpers.fs b/src/EFCore.FSharp/DbContextHelpers.fs index 53f3576..04815e7 100644 --- a/src/EFCore.FSharp/DbContextHelpers.fs +++ b/src/EFCore.FSharp/DbContextHelpers.fs @@ -69,7 +69,8 @@ let tryFindEntityTaskAsync<'a when 'a: not struct> (ctx: DbContext) (key: obj) : if isNull (box t.Result) then None else - Some t.Result) + Some t.Result + ) /// Helper method for saving an updated record type @@ -94,35 +95,54 @@ let updateEntityRangeAsync (ctx: DbContext) (key: 'a -> 'b) (entities: 'a seq wh let saveChanges' (ctx: #DbContext) = ctx.SaveChanges() -let saveChanges ctx = saveChanges' ctx |> ignore +let saveChanges ctx = + saveChanges' ctx + |> ignore let saveChangesAsync' (ctx: #DbContext) = - async { return! ctx.SaveChangesAsync() |> Async.AwaitTask } + async { + return! + ctx.SaveChangesAsync() + |> Async.AwaitTask + } -let saveChangesAsync ctx = saveChangesAsync' ctx |> Async.Ignore +let saveChangesAsync ctx = + saveChangesAsync' ctx + |> Async.Ignore let saveChangesTaskAsync' (ctx: #DbContext) = ctx.SaveChangesAsync() let saveChangesTaskAsync ctx = saveChangesTaskAsync' ctx :> Task let addEntity' (ctx: #DbContext) (entity: 'a when 'a: not struct) = ctx.Set<'a>().Add entity -let addEntity ctx entity = addEntity' ctx entity |> ignore +let addEntity ctx entity = + addEntity' ctx entity + |> ignore let addEntityAsync' (ctx: #DbContext) (entity: 'a when 'a: not struct) = - async { return! ctx.Set<'a>().AddAsync(entity) |> awaitValueTask } + async { + return! + ctx.Set<'a>().AddAsync(entity) + |> awaitValueTask + } let addEntityAsync ctx entity = - addEntityAsync' ctx entity |> Async.Ignore + addEntityAsync' ctx entity + |> Async.Ignore -let addEntityTaskAsync' (ctx: #DbContext) (entity: 'a when 'a: not struct) = ctx.Set<'a>().AddAsync(entity).AsTask() +let addEntityTaskAsync' (ctx: #DbContext) (entity: 'a when 'a: not struct) = + ctx.Set<'a>().AddAsync(entity).AsTask() let addEntityTaskAsync ctx entity = (addEntityTaskAsync' ctx entity) :> Task -let addEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = ctx.Set<'a>().AddRange entities +let addEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = + ctx.Set<'a>().AddRange entities -let addEntityRange (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = addEntityRange' ctx entities |> ignore +let addEntityRange (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = + addEntityRange' ctx entities + |> ignore let addEntityRangeAsync' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = async { @@ -132,28 +152,44 @@ let addEntityRangeAsync' (ctx: #DbContext) (entities: 'a seq when 'a: not struct } let addEntityRangeAsync (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = - addEntityRangeAsync' ctx entities |> Async.Ignore + addEntityRangeAsync' ctx entities + |> Async.Ignore let attachEntity' (ctx: #DbContext) (entity: 'a when 'a: not struct) = ctx.Set<'a>().Attach entity -let attachEntity (ctx: #DbContext) (entity: 'a when 'a: not struct) = attachEntity' ctx entity |> ignore -let attachEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = ctx.Set<'a>().AttachRange(entities) +let attachEntity (ctx: #DbContext) (entity: 'a when 'a: not struct) = + attachEntity' ctx entity + |> ignore + +let attachEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = + ctx.Set<'a>().AttachRange(entities) let attachEntityRange (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = - attachEntityRange' ctx entities |> ignore + attachEntityRange' ctx entities + |> ignore let removeEntity' (ctx: #DbContext) (entity: 'a when 'a: not struct) = ctx.Set<'a>().Remove entity -let removeEntity (ctx: #DbContext) (entity: 'a when 'a: not struct) = removeEntity' ctx entity |> ignore -let removeEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = ctx.Set<'a>().RemoveRange(entities) +let removeEntity (ctx: #DbContext) (entity: 'a when 'a: not struct) = + removeEntity' ctx entity + |> ignore + +let removeEntityRange' (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = + ctx.Set<'a>().RemoveRange(entities) let removeEntityRange (ctx: #DbContext) (entities: 'a seq when 'a: not struct) = - removeEntityRange' ctx entities |> ignore + removeEntityRange' ctx entities + |> ignore let toListAsync (dbset: #IQueryable<_>) = async { - let! list = dbset.ToListAsync() |> Async.AwaitTask - return list |> List.ofSeq + let! list = + dbset.ToListAsync() + |> Async.AwaitTask + + return + list + |> List.ofSeq } let toListTaskAsync (dbset: #IQueryable<_>) = dbset.ToListAsync() @@ -161,12 +197,16 @@ let toListTaskAsync (dbset: #IQueryable<_>) = dbset.ToListAsync() let tryFirstAsync (dbset: #IQueryable<_>) = async { - let! ret = dbset.FirstOrDefaultAsync() |> Async.AwaitTask + let! ret = + dbset.FirstOrDefaultAsync() + |> Async.AwaitTask + return FSharpUtilities.OptionOfNullableObj ret } let tryFirstTaskAsync dbset = - tryFirstAsync dbset |> Async.StartAsTask + tryFirstAsync dbset + |> Async.StartAsTask let tryFirst (dbset: #IQueryable<_>) = @@ -194,9 +234,17 @@ let tryFilterFirst predicate (dbSet: #IQueryable<_>) = FSharpUtilities.OptionOfNullableObj ret type IQueryable<'T> with - member this.TryFirstAsync() = this |> tryFirstAsync - member this.TryFirstTaskAsync() = this |> tryFirstTaskAsync - member this.TryFirst() = this |> tryFirst + member this.TryFirstAsync() = + this + |> tryFirstAsync + + member this.TryFirstTaskAsync() = + this + |> tryFirstTaskAsync + + member this.TryFirst() = + this + |> tryFirst member this.TryFirstAsync expr = async { @@ -208,7 +256,8 @@ type IQueryable<'T> with } member this.TryFirstTaskAsync expr = - this.TryFirstAsync(expr) |> Async.StartAsTask + this.TryFirstAsync(expr) + |> Async.StartAsTask member this.TryFirst expr = this.FirstOrDefault(predicate = expr) diff --git a/src/EFCore.FSharp/EFCore.FSharp.fsproj b/src/EFCore.FSharp/EFCore.FSharp.fsproj index 66cbbc9..098ba04 100644 --- a/src/EFCore.FSharp/EFCore.FSharp.fsproj +++ b/src/EFCore.FSharp/EFCore.FSharp.fsproj @@ -48,5 +48,9 @@ - + + + + + diff --git a/src/EFCore.FSharp/packages.lock.json b/src/EFCore.FSharp/packages.lock.json new file mode 100644 index 0000000..a514dd6 --- /dev/null +++ b/src/EFCore.FSharp/packages.lock.json @@ -0,0 +1,310 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "FSharp.Core": { + "type": "Direct", + "requested": "[10.0.102, )", + "resolved": "10.0.102", + "contentHash": "umz5pbtOvL/F9U5sibhREzZT2ewAs//nRTMwj8XcOOjMdOP828tipLpEhb2fZNijhiyikJ6Nr/dsMc/lj58W9w==" + }, + "Microsoft.EntityFrameworkCore.Design": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "gm6f0cC2w/2tcd4GeZJqEMruTercpIJfO5sSAFLtqTqblDBHgAFk70xwshUIUVX4I6sZwdEUSd1YxoKFk1AL0w==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "18.0.2", + "Microsoft.CodeAnalysis.CSharp": "5.0.0", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "5.0.0", + "Microsoft.CodeAnalysis.Workspaces.MSBuild": "5.0.0", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Mono.TextTemplating": "3.0.0", + "Newtonsoft.Json": "13.0.3" + } + }, + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[1.1.0, )", + "resolved": "1.1.0", + "contentHash": "DD/LF81k5ODHCfPnBCds97N6KKSS1X1NiDcJYUUpiTu5mmuPktZplhYFrAPQPktMBKvNMdwFrwJ7Fqa3tyTIuA==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "1.1.0", + "Microsoft.SourceLink.Common": "1.1.0" + } + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "Microsoft.Build.Framework": { + "type": "Transitive", + "resolved": "18.0.2", + "contentHash": "sOSb+0J4G/jCBW/YqmRuL0eOMXgfw1KQLdC9TkbvfA5xs7uNm+PBQXJCOzSJGXtZcZrtXozcwxPmUiRUbmd7FA==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "DD84CsvKf+hfDBbYXIvBXeY7JGfbtoIMMjlPGVaKIp6aWoIdL5EJbWvk+skGkM7/Weezj3q1a89nTPAcGlGcpw==" + }, + "Microsoft.CodeAnalysis.Analyzers": { + "type": "Transitive", + "resolved": "3.11.0", + "contentHash": "v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==" + }, + "Microsoft.CodeAnalysis.Common": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZXRAdvH6GiDeHRyd3q/km8Z44RoM6FBWHd+gen/la81mVnAdHTEsEkO5J0TCNXBymAcx5UYKt5TvgKBhaLJEow==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0" + } + }, + "Microsoft.CodeAnalysis.CSharp": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "5DSyJ9bk+ATuDy7fp2Zt0mJStDVKbBoiz1DyfAwSa+k4H4IwykAUcV3URelw5b8/iVbfSaOwkwmPUZH6opZKCw==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]" + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "Al/Q8B+yO8odSqGVpSvrShMFDvlQdIBU//F3E6Rb0YdiLSALE9wh/pvozPNnfmh5HDnvU+mkmSjpz4hQO++jaA==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.CSharp": "[5.0.0]", + "Microsoft.CodeAnalysis.Common": "[5.0.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[5.0.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZbUmIvT6lqTNKiv06Jl5wf0MTMi1vQ1oH7ou4CLcs2C/no/L7EhP3T8y3XXvn9VbqMcJaJnEsNA1jwYUMgc5jg==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "[5.0.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "/G+LVoAGMz6Ae8nm+PGLxSw+F5RjYx/J7irbTO5uKAPw1bxHyQJLc/YOnpDxt+EpPtYxvC9wvBsg/kETZp1F9Q==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "17.11.31", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "[5.0.0]", + "Microsoft.Extensions.DependencyInjection": "9.0.0", + "Microsoft.Extensions.Logging": "9.0.0", + "Microsoft.Extensions.Logging.Abstractions": "9.0.0", + "Microsoft.Extensions.Options": "9.0.0", + "Microsoft.Extensions.Primitives": "9.0.0", + "Microsoft.VisualStudio.SolutionPersistence": "1.0.52", + "Newtonsoft.Json": "13.0.3", + "System.Composition": "9.0.0" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "TyGnSaCanfxunClp2af9jpXY127q7g5tiOv0XN/JGcalyKwYusYp06BUGSmCopg/GhmJJSiR/9PS0suXHCGxtw==" + }, + "Microsoft.VisualStudio.SolutionPersistence": { + "type": "Transitive", + "resolved": "1.0.52", + "contentHash": "oNv2JtYXhpdJrX63nibx1JT3uCESOBQ1LAk7Dtz/sr0+laW0KRM6eKp4CZ3MHDR2siIkKsY8MmUkeP5DKkQQ5w==" + }, + "Mono.TextTemplating": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "YqueG52R/Xej4VVbKuRIodjiAhV0HR/XVbLbNrJhCZnzjnSjgMJ/dCdV0akQQxavX6hp/LC6rqLGLcXeQYU7XA==", + "dependencies": { + "System.CodeDom": "6.0.0" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==" + }, + "System.Composition": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "3Djj70fFTraOarSKmRnmRy/zm4YurICm+kiCtI0dYRqGJnLX6nJ+G3WYuFJ173cAPax/gh96REcbNiVqcrypFQ==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Convention": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0", + "System.Composition.TypedParts": "9.0.0" + } + }, + "System.Composition.AttributedModel": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "iri00l/zIX9g4lHMY+Nz0qV1n40+jFYAmgsaiNn16xvt2RDwlqByNG4wgblagnDYxm3YSQQ0jLlC/7Xlk9CzyA==" + }, + "System.Composition.Convention": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "+vuqVP6xpi582XIjJi6OCsIxuoTZfR0M7WWufk3uGDeCl3wGW6KnpylUJ3iiXdPByPE0vR5TjJgR6hDLez4FQg==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0" + } + }, + "System.Composition.Hosting": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "OFqSeFeJYr7kHxDfaViGM1ymk7d4JxK//VSoNF9Ux0gpqkLsauDZpu89kTHHNdCWfSljbFcvAafGyBoY094btQ==", + "dependencies": { + "System.Composition.Runtime": "9.0.0" + } + }, + "System.Composition.Runtime": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "w1HOlQY1zsOWYussjFGZCEYF2UZXgvoYnS94NIu2CBnAGMbXFAX8PY8c92KwUItPmowal68jnVLBCzdrWLeEKA==" + }, + "System.Composition.TypedParts": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "aRZlojCCGEHDKqh43jaDgaVpYETsgd7Nx4g1zwLKMtv4iTo0627715ajEFNpEEBTgLmvZuv8K0EVxc3sM4NWJA==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0" + } + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + } + } + } +} \ No newline at end of file diff --git a/src/EFCore.FSharp/paket.references b/src/EFCore.FSharp/paket.references deleted file mode 100644 index 93f9e3c..0000000 --- a/src/EFCore.FSharp/paket.references +++ /dev/null @@ -1,4 +0,0 @@ -group Src -FSharp.Core -Microsoft.SourceLink.GitHub -Microsoft.EntityFrameworkCore.Design diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj index f1a2ae2..1fb2331 100644 --- a/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj +++ b/tests/EFCore.FSharp.Tests.CSharpInterop/EFCore.FSharp.Tests.CSharpInterop.csproj @@ -5,5 +5,7 @@ false false - + + + \ No newline at end of file diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/packages.lock.json b/tests/EFCore.FSharp.Tests.CSharpInterop/packages.lock.json new file mode 100644 index 0000000..21c0317 --- /dev/null +++ b/tests/EFCore.FSharp.Tests.CSharpInterop/packages.lock.json @@ -0,0 +1,113 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" + } + } + } +} \ No newline at end of file diff --git a/tests/EFCore.FSharp.Tests.CSharpInterop/paket.references b/tests/EFCore.FSharp.Tests.CSharpInterop/paket.references deleted file mode 100644 index f61e6bc..0000000 --- a/tests/EFCore.FSharp.Tests.CSharpInterop/paket.references +++ /dev/null @@ -1,2 +0,0 @@ -group Tests -Microsoft.EntityFrameworkCore.Relational diff --git a/tests/EFCore.FSharp.Tests/AssemblyInfo.fs b/tests/EFCore.FSharp.Tests/AssemblyInfo.fs index ee9057b..1b37a55 100644 --- a/tests/EFCore.FSharp.Tests/AssemblyInfo.fs +++ b/tests/EFCore.FSharp.Tests/AssemblyInfo.fs @@ -1,23 +1,40 @@ // Auto-Generated by FAKE; do not edit namespace System + open System.Reflection [] [] [] -[] +[] [] [] -[] -[] +[] +[] do () module internal AssemblyVersionInformation = - let [] AssemblyTitle = "EFCore.FSharp.Tests" - let [] AssemblyProduct = "EFCore.FSharp" - let [] AssemblyVersion = "10.0.0" - let [] AssemblyMetadata_ReleaseDate = "2026-10-27T00:00:00.0000000+00:00" - let [] AssemblyFileVersion = "10.0.0" - let [] AssemblyInformationalVersion = "10.0.0" - let [] AssemblyMetadata_ReleaseChannel = "release" - let [] AssemblyMetadata_GitHash = "421530178dc789efca8d310c044405822a5d2e77" + [] + let AssemblyTitle = "EFCore.FSharp.Tests" + + [] + let AssemblyProduct = "EFCore.FSharp" + + [] + let AssemblyVersion = "10.0.0" + + [] + let AssemblyMetadata_ReleaseDate = "2026-10-27T00:00:00.0000000+00:00" + + [] + let AssemblyFileVersion = "10.0.0" + + [] + let AssemblyInformationalVersion = "10.0.0" + + [] + let AssemblyMetadata_ReleaseChannel = "release" + + [] + let AssemblyMetadata_GitHash = + "421530178dc789efca8d310c044405822a5d2e77" diff --git a/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs index 706b680..e14462d 100644 --- a/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs +++ b/tests/EFCore.FSharp.Tests/DbContextHelperTests.fs @@ -40,14 +40,20 @@ type MyContext() = override __.OnModelCreating(modelBuilder) = modelBuilder .Entity() - .HasKey([| "Key1"; "Key2" |]) + .HasKey( + [| "Key1" + "Key2" |] + ) |> ignore let createContext () = let ctx = new MyContext() - ctx.Database.EnsureDeleted() |> ignore - ctx.Database.EnsureCreated() |> ignore + ctx.Database.EnsureDeleted() + |> ignore + + ctx.Database.EnsureCreated() + |> ignore ctx @@ -103,7 +109,13 @@ let DbContextHelperTests = { original with Value = "My New Content" } - updateEntity ctx (fun b -> [ box b.Key1; box b.Key2 ]) modified + updateEntity + ctx + (fun b -> + [ box b.Key1 + box b.Key2 ] + ) + modified |> ignore let expected = @@ -111,7 +123,9 @@ let DbContextHelperTests = Key2 = 2 Value = "My New Content" } - let key: obj [] = [| original.Key1; original.Key2 |] + let key: obj [] = + [| original.Key1 + original.Key2 |] let found = tryFindEntity ctx key @@ -170,8 +184,13 @@ let DbContextHelperTests = let found = async { - do! addEntityTaskAsync ctx original |> Async.AwaitTask - do! saveChangesTaskAsync ctx |> Async.AwaitTask + do! + addEntityTaskAsync ctx original + |> Async.AwaitTask + + do! + saveChangesTaskAsync ctx + |> Async.AwaitTask let modified = { original with Title = "My New Title" } @@ -225,7 +244,8 @@ let DbSetTests = saveChanges ctx let result = - toListAsync ctx.Blogs |> Async.RunSynchronously + toListAsync ctx.Blogs + |> Async.RunSynchronously Expect.equal [ blog ] result "Should be same" } @@ -243,7 +263,8 @@ let DbSetTests = saveChanges ctx let result = - tryFirstAsync ctx.Blogs |> Async.RunSynchronously + tryFirstAsync ctx.Blogs + |> Async.RunSynchronously let actual = Expect.wantSome result "should have one" Expect.equal blog actual "Should be same" @@ -253,7 +274,8 @@ let DbSetTests = use ctx = createContext () let result = - tryFirstAsync ctx.Blogs |> Async.RunSynchronously + tryFirstAsync ctx.Blogs + |> Async.RunSynchronously Expect.isNone result "should have none" } diff --git a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj index 76de2ca..7740f24 100644 --- a/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj +++ b/tests/EFCore.FSharp.Tests/EFCore.FSharp.Tests.fsproj @@ -40,6 +40,21 @@ - + + + + + + + + + + + + + + + + + - diff --git a/tests/EFCore.FSharp.Tests/Main.fs b/tests/EFCore.FSharp.Tests/Main.fs index 91782c9..f51f474 100644 --- a/tests/EFCore.FSharp.Tests/Main.fs +++ b/tests/EFCore.FSharp.Tests/Main.fs @@ -1,7 +1,9 @@ -module ExpectoTemplate +namespace EFCore.FSharp.Tests -open Expecto +module ExpectoTemplate = -[] -let main argv = - Tests.runTestsInAssembly defaultConfig argv + open Expecto + + [] + let main argv = + Tests.runTestsInAssemblyWithCLIArgs [] argv diff --git a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs index 539276c..a631534 100644 --- a/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs +++ b/tests/EFCore.FSharp.Tests/TestUtilities/BuildReference.fs @@ -89,7 +89,7 @@ type BuildSource = let errors, exitCode = lock compilerLock (fun () -> checker.Compile(args) |> Async.RunSynchronously) - if exitCode <> 0 then + if errors.Length <> 0 then let messages = errors |> Seq.map (fun e -> e.Message + Environment.NewLine) diff --git a/tests/EFCore.FSharp.Tests/packages.lock.json b/tests/EFCore.FSharp.Tests/packages.lock.json new file mode 100644 index 0000000..278f474 --- /dev/null +++ b/tests/EFCore.FSharp.Tests/packages.lock.json @@ -0,0 +1,844 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "altcover": { + "type": "Direct", + "requested": "[8.2.825, )", + "resolved": "8.2.825", + "contentHash": "psfxIpui+qVybAVcM4kWA1f8aJsuE71r2XnZ/ZsGVbasIoFktWfGoU+XZvHyIrafYngCodP/7HxK6WG6nOeFNw==" + }, + "Expecto": { + "type": "Direct", + "requested": "[10.2.2, )", + "resolved": "10.2.2", + "contentHash": "Ul1wNnvM4sugoP5toPmYNwOJgj7fb0MhbEtTXOz/Z68oiUeLWRHdt1+KGQaseENbt8fnJfiK3zfef+/2dTL8Jg==", + "dependencies": { + "FSharp.Core": "7.0.200", + "Mono.Cecil": "[0.11.4, 1.0.0)" + } + }, + "FSharp.Compiler.Service": { + "type": "Direct", + "requested": "[43.12.201, )", + "resolved": "43.12.201", + "contentHash": "FkAR8qjDeOCPke7+JNKnrWrglmuM1CeSVyzfsgmRGZv4C1/VMWzDF5IweLRyN64s0HyHSq61d8JIfVNGyciwCA==", + "dependencies": { + "FSharp.Core": "[10.1.201]" + } + }, + "FSharp.Core": { + "type": "Direct", + "requested": "[10.0.102, )", + "resolved": "10.0.102", + "contentHash": "umz5pbtOvL/F9U5sibhREzZT2ewAs//nRTMwj8XcOOjMdOP828tipLpEhb2fZNijhiyikJ6Nr/dsMc/lj58W9w==" + }, + "Microsoft.CodeAnalysis": { + "type": "Direct", + "requested": "[5.3.0, )", + "resolved": "5.3.0", + "contentHash": "NbiM4E4SVlQq8e6rc3TyFpe9ljqCqbmuJZtNliJINpApuGdSoDstRg1NExUjhVs/4vI/ijTDBM5dpeGIwmG0ww==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "9.0.0", + "Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "[5.3.0]", + "Microsoft.CodeAnalysis.VisualBasic.Workspaces": "[5.3.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.EntityFrameworkCore.InMemory": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "zz4THzlDOrJ7fKU2YUOzQFs2LJ9DgOSr5xFXcDdoD59el73MTQLtQQOAJxQ94F4XDegyL9+2sePSQGdcU25ZxQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Relational": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "uxmFjZEAB/KbsgWFSS4lLqkEHCfXxB2x0UcbiO4e5fCRpFFeTMSx/me6009nYJLu5IKlDwO1POh++P6RilFTDw==", + "dependencies": { + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Specification.Tests": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "2oHpzMQox3UNNisZUZczm/ii8x/S9JAm7fVOmIFC4Ou36KS+gYZOFGPNkBqcNLZ6UQrARBVvyBpVrzL0/b/AVQ==", + "dependencies": { + "Castle.Core": "5.2.1", + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "18.0.2", + "Microsoft.CodeAnalysis.CSharp": "5.0.0", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "5.0.0", + "Microsoft.CodeAnalysis.Workspaces.MSBuild": "5.0.0", + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.EntityFrameworkCore.Design": "10.0.5", + "Microsoft.EntityFrameworkCore.Proxies": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Mono.TextTemplating": "3.0.0", + "NetTopologySuite": "2.6.0", + "NetTopologySuite.IO.GeoJSON": "4.0.0", + "Newtonsoft.Json": "13.0.3", + "xunit.assert": "2.9.3", + "xunit.core": "2.9.3", + "xunit.runner.visualstudio": "3.1.3" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "lxeRviglTkkmzYJVJ600yb6gJjnf5za9v7uH+0byuSXTGv7U8cT6hz7qRTmiGSOfLcl86QFdy2BBKaUFd6NQug==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.11", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.EntityFrameworkCore.SqlServer": { + "type": "Direct", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "/3Ault1Ay6OIEp3ZGGVem4mSWyEOX9e5leUMalGV9aFM57e0xFHAnlhmNaBHYtILkbtkaAErikQuaLqMQb4fww==", + "dependencies": { + "Microsoft.Data.SqlClient": "6.1.1", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.NET.Test.Sdk": { + "type": "Direct", + "requested": "[17.13.0, )", + "resolved": "17.13.0", + "contentHash": "W19wCPizaIC9Zh47w8wWI/yxuqR7/dtABwOrc8r2jX/8mUNxM2vw4fXDh+DJTeogxV+KzKwg5jNNGQVwf3LXyA==", + "dependencies": { + "Microsoft.CodeCoverage": "17.13.0", + "Microsoft.TestPlatform.TestHost": "17.13.0" + } + }, + "NetTopologySuite.IO.SqlServerBytes": { + "type": "Direct", + "requested": "[2.0.0, )", + "resolved": "2.0.0", + "contentHash": "TuyMB0VSlRJx86UrWeQ+SGgOMudvhIL1qJJdWJw78nWsXIzKRP4ooQAhhhCCH7n8q1lvd0/NW3ByaLlHxxNSPQ==", + "dependencies": { + "NetTopologySuite": "[2.0.0, 3.0.0-A)" + } + }, + "System.ComponentModel.Primitives": { + "type": "Direct", + "requested": "[4.3.0, )", + "resolved": "4.3.0", + "contentHash": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==" + }, + "System.Runtime.Numerics": { + "type": "Direct", + "requested": "[4.3.0, )", + "resolved": "4.3.0", + "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==" + }, + "YoloDev.Expecto.TestSdk": { + "type": "Direct", + "requested": "[0.15.3, )", + "resolved": "0.15.3", + "contentHash": "fpHXx4+RD8HrLsxg/NhP+uvqIPzFfoLNoPZ3F8Yi+Nv8DPTHqwdnDyPW9MD+036icExUYiv/qc/rOuSfE0TIOA==", + "dependencies": { + "Expecto": "[10.2.2, 11.0.0)", + "FSharp.Core": "7.0.200", + "Microsoft.Testing.Extensions.VSTestBridge": "1.6.2", + "Microsoft.Testing.Platform.MSBuild": "1.6.2" + } + }, + "Azure.Core": { + "type": "Transitive", + "resolved": "1.47.1", + "contentHash": "oPcncSsDHuxB8SC522z47xbp2+ttkcKv2YZ90KXhRKN0YQd2+7l1UURT9EBzUNEXtkLZUOAB5xbByMTrYRh3yA==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.ClientModel": "1.5.1", + "System.Memory.Data": "8.0.1" + } + }, + "Azure.Identity": { + "type": "Transitive", + "resolved": "1.14.2", + "contentHash": "YhNMwOTwT+I2wIcJKSdP0ADyB2aK+JaYWZxO8LSRDm5w77LFr0ykR9xmt2ZV5T1gaI7xU6iNFIh/yW1dAlpddQ==", + "dependencies": { + "Azure.Core": "1.46.1", + "Microsoft.Identity.Client": "4.73.1", + "Microsoft.Identity.Client.Extensions.Msal": "4.73.1" + } + }, + "Castle.Core": { + "type": "Transitive", + "resolved": "5.2.1", + "contentHash": "wHARzQA695jwwKreOzNsq54KiGqKP38tv8hi8e2FXDEC/sA6BtrX90tVPDkOfVu13PbEzr00TCV8coikl+D1Iw==", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + } + }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, + "Microsoft.ApplicationInsights": { + "type": "Transitive", + "resolved": "2.22.0", + "contentHash": "3AOM9bZtku7RQwHyMEY3tQMrHIgjcfRDa6YQpd/QG2LDGvMydSlL9Di+8LLMt7J2RDdfJ7/2jdYv6yHcMJAnNw==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "owmu2Cr3IQ8yQiBleBHlGk8dSQ12oaF2e7TpzwJKEl4m84kkZJjEY1n33L67Y3zM5jPOjmmbdHjbfiL0RqcMRQ==" + }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "YgZYAWzyNuPVtPq6WNm0bqOWNjYaWgl5mBWTGZyNoXitYBUYSp6iUB9AwK0V1mo793qRJUXz2t6UZrWITZSvuQ==" + }, + "Microsoft.Build.Framework": { + "type": "Transitive", + "resolved": "18.0.2", + "contentHash": "sOSb+0J4G/jCBW/YqmRuL0eOMXgfw1KQLdC9TkbvfA5xs7uNm+PBQXJCOzSJGXtZcZrtXozcwxPmUiRUbmd7FA==" + }, + "Microsoft.CodeAnalysis.Analyzers": { + "type": "Transitive", + "resolved": "5.3.0-2.25625.1", + "contentHash": "4Yhh2fnu3G+J0J1lDc8WZVgMjgbynSeTfkl5IFJMFrmiIO0sc7Tjx+f3sFVV8Sd35PrIUWfof0RWc3lAMl7Azg==" + }, + "Microsoft.CodeAnalysis.Common": { + "type": "Transitive", + "resolved": "5.3.0", + "contentHash": "uC0qk3jzTQY7i90ehfnCqaOZpBUGJyPMiHJ3c0jOb8yaPBjWzIhVdNxPbeVzI74DB0C+YgBKPLqUkgFZzua5Mg==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1" + } + }, + "Microsoft.CodeAnalysis.CSharp": { + "type": "Transitive", + "resolved": "5.3.0", + "contentHash": "SQFNGQF4f7UfDXKxMzzGNMr3fjrPDIjLfmRvvVgDCw+dyvEHDaRfHuKA5q0Pr0/JW0Gcw89TxrxrS/MjwBvluQ==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1", + "Microsoft.CodeAnalysis.Common": "[5.3.0]" + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces": { + "type": "Transitive", + "resolved": "5.3.0", + "contentHash": "mRwxchBs3ewXK4dqK4R/eVCx99VIq1k/lhwArlu+fJuV0uzmbkTTRw4jR9gN9sOcAQfX0uV9KQlmCk1yC0JNog==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1", + "Microsoft.CodeAnalysis.CSharp": "[5.3.0]", + "Microsoft.CodeAnalysis.Common": "[5.3.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[5.3.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.VisualBasic": { + "type": "Transitive", + "resolved": "5.3.0", + "contentHash": "AJxddsIOmfimuihaLuSAm4c/zskHoL1ypAjIpSOZqHlNm2iuw0twsB8nbKczJyfClqD7+iYjdIeE5EV8WAyxRA==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1", + "Microsoft.CodeAnalysis.Common": "[5.3.0]" + } + }, + "Microsoft.CodeAnalysis.VisualBasic.Workspaces": { + "type": "Transitive", + "resolved": "5.3.0", + "contentHash": "pAGdr4qs7+v287DPiiM8px1cBXnhe8LxymkVGTnCwv2OEjCk5HO2zIoFvype4ivKJTRW3aTUUV8ab+915wbv+w==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1", + "Microsoft.CodeAnalysis.Common": "[5.3.0]", + "Microsoft.CodeAnalysis.VisualBasic": "[5.3.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[5.3.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common": { + "type": "Transitive", + "resolved": "5.3.0", + "contentHash": "QSf1ge9A+XFZbGL+gIqXYBIKlm8QdQVLvHDPZiydG11W6mJY7XBMusrsgIEz6L8GYMzGJKTM78m9icliGMF7NA==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1", + "Microsoft.CodeAnalysis.Common": "[5.3.0]", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "/G+LVoAGMz6Ae8nm+PGLxSw+F5RjYx/J7irbTO5uKAPw1bxHyQJLc/YOnpDxt+EpPtYxvC9wvBsg/kETZp1F9Q==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "17.11.31", + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "[5.0.0]", + "Microsoft.Extensions.DependencyInjection": "9.0.0", + "Microsoft.Extensions.Logging": "9.0.0", + "Microsoft.Extensions.Logging.Abstractions": "9.0.0", + "Microsoft.Extensions.Options": "9.0.0", + "Microsoft.Extensions.Primitives": "9.0.0", + "Microsoft.VisualStudio.SolutionPersistence": "1.0.52", + "Newtonsoft.Json": "13.0.3", + "System.Composition": "9.0.0" + } + }, + "Microsoft.CodeCoverage": { + "type": "Transitive", + "resolved": "17.13.0", + "contentHash": "9LIUy0y+DvUmEPtbRDw6Bay3rzwqFV8P4efTrK4CZhQle3M/QwLPjISghfcolmEGAPWxuJi6m98ZEfk4VR4Lfg==" + }, + "Microsoft.Data.SqlClient": { + "type": "Transitive", + "resolved": "6.1.1", + "contentHash": "syGQmIUPAYYHAHyTD8FCkTNThpQWvoA7crnIQRMfp8dyB5A2cWU3fQexlRTFkVmV7S0TjVmthi0LJEFVjHo8AQ==", + "dependencies": { + "Azure.Core": "1.47.1", + "Azure.Identity": "1.14.2", + "Microsoft.Bcl.Cryptography": "9.0.4", + "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", + "Microsoft.Extensions.Caching.Memory": "9.0.4", + "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", + "Microsoft.SqlServer.Server": "1.0.0", + "System.Configuration.ConfigurationManager": "9.0.4", + "System.Security.Cryptography.Pkcs": "9.0.4" + } + }, + "Microsoft.Data.SqlClient.SNI.runtime": { + "type": "Transitive", + "resolved": "6.0.2", + "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jFYXnh7s0RShCw6Vkf+ReGCw+mVi7ISg1YaEzYCJcXnUifmbW+aqvCsRJuSRj2ZuQ+oqetpjxlZtbpMmk5FKqQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.EntityFrameworkCore": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9tNBmK3EpYVGRQLiqP+bqK2m+TD0Gv//4vCzR7ZOgl4FWzCFyOpYdIVka13M4kcBdPdSJcs3wbHr3rmzOqbIMA==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "10.0.5", + "Microsoft.EntityFrameworkCore.Analyzers": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "32c58Rnm47Qvhimawf67KO9PytgPz3QoWye7Abapt0Yocw/JnzMiSNj/pRoIKyn8Jxypkv86zxKD4Q/zNTc0Ag==" + }, + "Microsoft.EntityFrameworkCore.Analyzers": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ipC4u1VojgEfoIZhtbS2Sx5IluJTP/Jf1hz3yGsxGBgSukYY/CquI6rAjxn5H58CZgVn36qcuPPtNMwZ0AUzMg==" + }, + "Microsoft.EntityFrameworkCore.Proxies": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "ADoXceIHRqoIWTTM8WKoCMkWRieq9qh9RLEgAj1AWYHyJu2Zn5M0a97k2gDHI9l+uXc+UxRd8e2TwmWe3Pyqhg==", + "dependencies": { + "Castle.Core": "5.2.1", + "Microsoft.EntityFrameworkCore": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5" + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "rVH43bcUyZiMn0SnCpVnvFpl4PFxT4GwmuVVLcT4JL0NtzuHY9ymKV+Llb5cjuJ+6+gEl4eixy2rE8nxOPcBSA==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "10.0.5", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "SQLitePCLRaw.core": "2.1.11" + } + }, + "Microsoft.Extensions.Caching.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "k/QDdQ94/0Shi0KfU+e12m73jfQo+3JpErTtgpZfsCIqkvdEEO0XIx6R+iTbN55rNPaNhOqNY4/sB+jZ8XxVPw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Caching.Memory": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "jUEXmkBUPdOS/MP9areK/sbKhdklq9+tEhvwfxGalZVnmyLUO5rrheNNutUBtvbZ7J8ECkG7/r2KXi/IFC06cA==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "P09QpTHjqHmCLQOTC+WyLkoRNxek4NIvfWt+TnU0etoDUSRxcltyd6+j/ouRbMdLR0j44GqGO+lhI2M4fAHG4g==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "v1SVsowG6YE1YnHVGmLWz57YTRCQRx9pH5ebIESXfm5isI9gA3QaMyg/oMTzPpXYZwSAVDzYItGJKfmV+pqXkQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "iVMtq9eRvzyhx8949EGT0OCYJfXi737SbRVzWXE5GrOgGj5AaZ9eUuxA/BSUfmOMALKn/g8KfFaNQw0eiB3lyA==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "xA4kkL+QS6KCAOKz/O0oquHs44Ob8J7zpBCNt3wjkBWDg5aCqfwG8rWWLsg5V86AM0sB849g9JjPjIdksTCIKg==" + }, + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "+XTMKQyDWg4ODoNHU/BN3BaI1jhGO7VCS+BnzT/4IauiG6y2iPAte7MyD7rHKS+hNP0TkFkjrae8DFjDUxtcxg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "10.0.5", + "Microsoft.Extensions.Logging.Abstractions": "10.0.5", + "Microsoft.Extensions.Options": "10.0.5" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "9HOdqlDtPptVcmKAjsQ/Nr5Rxfq6FMYLdhvZh1lVmeKR738qeYecQD7+ldooXf+u2KzzR1kafSphWngIM3C6ug==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5" + } + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "MDaQMdUplw0AIRhWWmbLA7yQEXaLIHb+9CTroTiNS8OlI0LMXS4LCxtopqauiqGCWlRgJ+xyraVD8t6veRAFbw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.5", + "Microsoft.Extensions.Primitives": "10.0.5" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.5", + "contentHash": "/HUHJ0tw/LQvD0DZrz50eQy/3z7PfX7WWEaXnjKTV9/TNdcgFlNTZGo49QhS7PTmhDqMyHRMqAXSBxLh0vso4g==" + }, + "Microsoft.Identity.Client": { + "type": "Transitive", + "resolved": "4.73.1", + "contentHash": "NnDLS8QwYqO5ZZecL2oioi1LUqjh5Ewk4bMLzbgiXJbQmZhDLtKwLxL3DpGMlQAJ2G4KgEnvGPKa+OOgffeJbw==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "6.35.0" + } + }, + "Microsoft.Identity.Client.Extensions.Msal": { + "type": "Transitive", + "resolved": "4.73.1", + "contentHash": "xDztAiV2F0wI0W8FLKv5cbaBefyLD6JVaAsvgSN7bjWNCzGYzHbcOEIP5s4TJXUpQzMfUyBsFl1mC6Zmgpz0PQ==", + "dependencies": { + "Microsoft.Identity.Client": "4.73.1", + "System.Security.Cryptography.ProtectedData": "4.5.0" + } + }, + "Microsoft.IdentityModel.Abstractions": { + "type": "Transitive", + "resolved": "7.7.1", + "contentHash": "S7sHg6gLg7oFqNGLwN1qSbJDI+QcRRj8SuJ1jHyCmKSipnF6ZQL+tFV2NzVfGj/xmGT9TykQdQiBN+p5Idl4TA==" + }, + "Microsoft.IdentityModel.JsonWebTokens": { + "type": "Transitive", + "resolved": "7.7.1", + "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.7.1" + } + }, + "Microsoft.IdentityModel.Logging": { + "type": "Transitive", + "resolved": "7.7.1", + "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "7.7.1" + } + }, + "Microsoft.IdentityModel.Protocols": { + "type": "Transitive", + "resolved": "7.7.1", + "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.7.1" + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect": { + "type": "Transitive", + "resolved": "7.7.1", + "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "7.7.1", + "System.IdentityModel.Tokens.Jwt": "7.7.1" + } + }, + "Microsoft.IdentityModel.Tokens": { + "type": "Transitive", + "resolved": "7.7.1", + "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.7.1" + } + }, + "Microsoft.SqlServer.Server": { + "type": "Transitive", + "resolved": "1.0.0", + "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" + }, + "Microsoft.Testing.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "1.6.2", + "contentHash": "40oMlQzyey4jOihY0IpUufSoMYeijYgvrtIxuYmuVx1k5xl271XlP0gwD2DwAKnvmmP0cocou531d6/CB3cCIA==", + "dependencies": { + "Microsoft.ApplicationInsights": "2.22.0", + "Microsoft.Testing.Platform": "1.6.2" + } + }, + "Microsoft.Testing.Extensions.TrxReport.Abstractions": { + "type": "Transitive", + "resolved": "1.6.2", + "contentHash": "EE4PoYoRtrTKE0R22bXuBguVgdEeepImy0S8xHaZOcGz5AuahB2i+0CV4UTefLqO1dtbA4APfumpP1la+Yn3SA==", + "dependencies": { + "Microsoft.Testing.Platform": "1.6.2" + } + }, + "Microsoft.Testing.Extensions.VSTestBridge": { + "type": "Transitive", + "resolved": "1.6.2", + "contentHash": "ZvYa+VDuk39EIqyOZ/IMFSRd/N54zFBnDFmDagFBJt21vZZnSG6l/3CkJX3DvmYmuf5Byj9w7Xf46mkWuur4LQ==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.13.0", + "Microsoft.Testing.Extensions.Telemetry": "1.6.2", + "Microsoft.Testing.Extensions.TrxReport.Abstractions": "1.6.2", + "Microsoft.Testing.Platform": "1.6.2" + } + }, + "Microsoft.Testing.Platform": { + "type": "Transitive", + "resolved": "1.6.2", + "contentHash": "7CFJKN3An5Ra6YOrTCAi7VldSRTxGGokqC0NSNrpKTKO6NJJby10EWwnqV/v2tawcRzfSbLpKNpvBv7s7ZoD3Q==" + }, + "Microsoft.Testing.Platform.MSBuild": { + "type": "Transitive", + "resolved": "1.6.2", + "contentHash": "tF5UgrXh0b0F8N11uWfaZT91v5QvuTZDwWP19GDMHPalWFKfmlix92xExo7cotJDoAK+bzljLK0S0XJuigYLbA==", + "dependencies": { + "Microsoft.Testing.Platform": "1.6.2" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", + "resolved": "17.13.0", + "contentHash": "bt0E0Dx+iqW97o4A59RCmUmz/5NarJ7LRL+jXbSHod72ibL5XdNm1Ke+UO5tFhBG4VwHLcSjqq9BUSblGNWamw==" + }, + "Microsoft.TestPlatform.TestHost": { + "type": "Transitive", + "resolved": "17.13.0", + "contentHash": "9GGw08Dc3AXspjekdyTdZ/wYWFlxbgcF0s7BKxzVX+hzAwpifDOdxM+ceVaaJSQOwqt3jtuNlHn3XTpKUS9x9Q==", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.13.0", + "Newtonsoft.Json": "13.0.1" + } + }, + "Microsoft.VisualStudio.SolutionPersistence": { + "type": "Transitive", + "resolved": "1.0.52", + "contentHash": "oNv2JtYXhpdJrX63nibx1JT3uCESOBQ1LAk7Dtz/sr0+laW0KRM6eKp4CZ3MHDR2siIkKsY8MmUkeP5DKkQQ5w==" + }, + "Mono.Cecil": { + "type": "Transitive", + "resolved": "0.11.4", + "contentHash": "IC1h5g0NeJGHIUgzM1P82ld57knhP0IcQfrYITDPXlNpMYGUrsG5TxuaWTjaeqDNQMBDNZkB8L0rBnwsY6JHuQ==" + }, + "Mono.TextTemplating": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "YqueG52R/Xej4VVbKuRIodjiAhV0HR/XVbLbNrJhCZnzjnSjgMJ/dCdV0akQQxavX6hp/LC6rqLGLcXeQYU7XA==", + "dependencies": { + "System.CodeDom": "6.0.0" + } + }, + "NetTopologySuite": { + "type": "Transitive", + "resolved": "2.6.0", + "contentHash": "1B1OTacTd4QtFyBeuIOcThwSSLUdRZU3bSFIwM8vk36XiZlBMi3K36u74e4OqwwHRHUuJC1PhbDx4hyI266X1Q==" + }, + "NetTopologySuite.Features": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "RDbEpujDL0bsAyTMHlbKj36KIPhUrtSGUaO/jUjMnsLcixrJFwoDJ8p717FdgMHpQDrcEJAKF+QsAlYsSULkew==", + "dependencies": { + "NetTopologySuite": "[2.0.0, 3.0.0-A)" + } + }, + "NetTopologySuite.IO.GeoJSON": { + "type": "Transitive", + "resolved": "4.0.0", + "contentHash": "AWpcRwPAIrUZfghQat7bXK9dAckhuAxKF/Yvp+DoctLpct7pilj0Y+VCiof/8NlaclGlrISSfgnu3Tbvq6T2ug==", + "dependencies": { + "NetTopologySuite": "[2.0.0, 3.0.0-A)", + "NetTopologySuite.Features": "[2.0.0, 3.0.0-A)", + "Newtonsoft.Json": "13.0.1" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.3", + "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "DC4nA7yWnf4UZdgJDF+9Mus4/cb0Y3Sfgi3gDnAoKNAIBwzkskNAbNbyu+u4atT0ruVlZNJfwZmwiEwE5oz9LQ==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.11", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.11" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "PK0GLFkfhZzLQeR3PJf71FmhtHox+U3vcY6ZtswoMjrefkB9k6ErNJEnwXqc5KgXDSjige2XXrezqS39gkpQKA==" + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Ev2ytaXiOlWZ4b3R67GZBsemTINslLD1DCJr2xiacpn4tbapu0Q4dHEzSvZSMnVWeE5nlObU3VZN2p81q3XOYQ==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.11", + "contentHash": "Y/0ZkR+r0Cg3DQFuCl1RBnv/tmxpIZRU3HUvelPw6MVaKHwYYR8YNvgs0vuNuXCMvlyJ+Fh88U1D4tah1tt6qw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.11" + } + }, + "System.ClientModel": { + "type": "Transitive", + "resolved": "1.5.1", + "contentHash": "k2jKSO0X45IqhVOT9iQB4xralNN9foRQsRvXBTyRpAVxyzCJlG895T9qYrQWbcJ6OQXxOouJQ37x5nZH5XKK+A==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.3", + "System.Memory.Data": "8.0.1" + } + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==" + }, + "System.Composition": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "3Djj70fFTraOarSKmRnmRy/zm4YurICm+kiCtI0dYRqGJnLX6nJ+G3WYuFJ173cAPax/gh96REcbNiVqcrypFQ==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Convention": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0", + "System.Composition.TypedParts": "9.0.0" + } + }, + "System.Composition.AttributedModel": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "iri00l/zIX9g4lHMY+Nz0qV1n40+jFYAmgsaiNn16xvt2RDwlqByNG4wgblagnDYxm3YSQQ0jLlC/7Xlk9CzyA==" + }, + "System.Composition.Convention": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "+vuqVP6xpi582XIjJi6OCsIxuoTZfR0M7WWufk3uGDeCl3wGW6KnpylUJ3iiXdPByPE0vR5TjJgR6hDLez4FQg==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0" + } + }, + "System.Composition.Hosting": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "OFqSeFeJYr7kHxDfaViGM1ymk7d4JxK//VSoNF9Ux0gpqkLsauDZpu89kTHHNdCWfSljbFcvAafGyBoY094btQ==", + "dependencies": { + "System.Composition.Runtime": "9.0.0" + } + }, + "System.Composition.Runtime": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "w1HOlQY1zsOWYussjFGZCEYF2UZXgvoYnS94NIu2CBnAGMbXFAX8PY8c92KwUItPmowal68jnVLBCzdrWLeEKA==" + }, + "System.Composition.TypedParts": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "aRZlojCCGEHDKqh43jaDgaVpYETsgd7Nx4g1zwLKMtv4iTo0627715ajEFNpEEBTgLmvZuv8K0EVxc3sM4NWJA==", + "dependencies": { + "System.Composition.AttributedModel": "9.0.0", + "System.Composition.Hosting": "9.0.0", + "System.Composition.Runtime": "9.0.0" + } + }, + "System.Configuration.ConfigurationManager": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "dvjqKp+2LpGid6phzrdrS/2mmEPxFl3jE1+L7614q4ZChKbLJCpHXg6sBILlCCED1t//EE+un/UdAetzIMpqnw==", + "dependencies": { + "System.Diagnostics.EventLog": "9.0.4", + "System.Security.Cryptography.ProtectedData": "9.0.4" + } + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "getRQEXD8idlpb1KW56XuxImMy0FKp2WJPDf3Qr0kI/QKxxJSftqfDFVo0DZ3HCJRLU73qHSruv5q2l5O47jQQ==" + }, + "System.IdentityModel.Tokens.Jwt": { + "type": "Transitive", + "resolved": "7.7.1", + "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", + "Microsoft.IdentityModel.Tokens": "7.7.1" + } + }, + "System.Memory.Data": { + "type": "Transitive", + "resolved": "8.0.1", + "contentHash": "BVYuec3jV23EMRDeR7Dr1/qhx7369dZzJ9IWy2xylvb4YfXsrUxspWc4UWYid/tj4zZK58uGZqn2WQiaDMhmAg==" + }, + "System.Security.Cryptography.Pkcs": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "cUFTcMlz/Qw9s90b2wnWSCvHdjv51Bau9FQqhsr4TlwSe1OX+7SoXUqphis5G74MLOvMOCghxPPlEqOdCrVVGA==" + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "9.0.4", + "contentHash": "o94k2RKuAce3GeDMlUvIXlhVa1kWpJw95E6C9LwW0KlG0nj5+SgCiIxJ2Eroqb9sLtG1mEMbFttZIBZ13EJPvQ==" + }, + "xunit.abstractions": { + "type": "Transitive", + "resolved": "2.0.3", + "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==" + }, + "xunit.assert": { + "type": "Transitive", + "resolved": "2.9.3", + "contentHash": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==" + }, + "xunit.core": { + "type": "Transitive", + "resolved": "2.9.3", + "contentHash": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]", + "xunit.extensibility.execution": "[2.9.3]" + } + }, + "xunit.extensibility.core": { + "type": "Transitive", + "resolved": "2.9.3", + "contentHash": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", + "dependencies": { + "xunit.abstractions": "2.0.3" + } + }, + "xunit.extensibility.execution": { + "type": "Transitive", + "resolved": "2.9.3", + "contentHash": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]" + } + }, + "xunit.runner.visualstudio": { + "type": "Transitive", + "resolved": "3.1.3", + "contentHash": "go7e81n/UI3LeNqoJIJ3thkS4JfJtiQnDbAxLh09JkJqoHthnfbLS5p68s4/Bm12B9umkoYSB5SaDr68hZNleg==" + }, + "efcore.fsharp.tests.csharpinterop": { + "type": "Project", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "[10.0.5, )" + } + }, + "EntityFrameworkCore.FSharp": { + "type": "Project", + "dependencies": { + "FSharp.Core": "[10.0.102, )", + "Microsoft.EntityFrameworkCore.Design": "[10.0.5, )" + } + }, + "Microsoft.EntityFrameworkCore.Design": { + "type": "CentralTransitive", + "requested": "[10.0.5, )", + "resolved": "10.0.5", + "contentHash": "gm6f0cC2w/2tcd4GeZJqEMruTercpIJfO5sSAFLtqTqblDBHgAFk70xwshUIUVX4I6sZwdEUSd1YxoKFk1AL0w==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "18.0.2", + "Microsoft.CodeAnalysis.CSharp": "5.0.0", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "5.0.0", + "Microsoft.CodeAnalysis.Workspaces.MSBuild": "5.0.0", + "Microsoft.EntityFrameworkCore.Relational": "10.0.5", + "Microsoft.Extensions.Caching.Memory": "10.0.5", + "Microsoft.Extensions.Configuration.Abstractions": "10.0.5", + "Microsoft.Extensions.DependencyModel": "10.0.5", + "Microsoft.Extensions.Logging": "10.0.5", + "Mono.TextTemplating": "3.0.0", + "Newtonsoft.Json": "13.0.3" + } + } + } + } +} \ No newline at end of file diff --git a/tests/EFCore.FSharp.Tests/paket.references b/tests/EFCore.FSharp.Tests/paket.references deleted file mode 100644 index 5869986..0000000 --- a/tests/EFCore.FSharp.Tests/paket.references +++ /dev/null @@ -1,16 +0,0 @@ -group Tests -Expecto -FSharp.Core -Microsoft.NET.Test.Sdk -altcover -System.Runtime.Numerics -System.ComponentModel.Primitives -Microsoft.EntityFrameworkCore.Relational -Microsoft.EntityFrameworkCore.Sqlite -Microsoft.EntityFrameworkCore.SqlServer -Microsoft.EntityFrameworkCore.Specification.Tests -NetTopologySuite.IO.SqlServerBytes -FSharp.Compiler.Service -Microsoft.CodeAnalysis -Microsoft.EntityFrameworkCore.InMemory -YoloDev.Expecto.TestSdk